<?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>Fork Followers</title><link>https://www.loverslab.com/blogs/entry/26243-fork-followers/</link><description><![CDATA[<p>
	Same premise as the other 'Forks' - Single user facing surface that plugs into several popular follower frameworks providing normalized functions. <br>
	<br>
	Supports: <br>
	AFT, <br>
	EFF, <br>
	NFF, <br>
	UFO,<br>
	Vanilla. <br>
	<br>
	Functions: <br>
	GetFollowers()<br>
	GetFollowerCount()<br>
	GetMaxFollowerCount()
</p>

<p>
	IsFollower()<br>
	AddFollower()<br>
	RemoveFollower()<br>
	CanRecruit()<br>
	GetExtendedInventory()<br>
	<br>
	See also 'Events' entry for '<span style="background-color:#1c1c1c; color:#bcbcbc; font-size:14px; text-align:start">Follower Change Event'. </span><br>
	<br>
	_MGF_ForkFollowers: 
</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_5824_8" style=""><span class="typ">Scriptname</span><span class="pln"> _MGF_ForkFollowers 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 follower framework is
</span><span class="pun">;</span><span class="pln"> installed and 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">Extensible</span><span class="pln"> </span><span class="typ">Follower</span><span class="pln"> </span><span class="typ">Framework</span><span class="pln"> </span><span class="pun">(</span><span class="pln">EFF</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">Amazing</span><span class="pln"> </span><span class="typ">Follower</span><span class="pln"> </span><span class="typ">Tweaks</span><span class="pln"> </span><span class="pun">(</span><span class="pln">AFT</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">Ultimate</span><span class="pln"> </span><span class="typ">Follower</span><span class="pln"> </span><span class="typ">Overhaul</span><span class="pln"> </span><span class="pun">(</span><span class="pln">UFO</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">Nether</span><span class="str">'</span><span class="pln">s </span><span class="typ">Follower</span><span class="pln"> </span><span class="typ">Framework</span><span class="pln"> </span><span class="pun">(</span><span class="pln">NFF</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">Vanilla</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Skyrim</span><span class="pun">.</span><span class="pln">esm</span><span class="str">'</span><span class="pln">s own single</span><span class="pun">-</span><span class="pln">follower system</span><span class="pun">)</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> always available</span><span class="pun">.</span><span class="pln"> 

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Follower</span><span class="pln"> framework 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_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">"EFFCore.esm"</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">"AmazingFollowerTweaks.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">"UFO - Ultimate Follower Overhaul.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">"nwsFollowerFramework.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"> EFF
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Eff"</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"> AFT
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Aft"</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"> UFO
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Ufo"</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"> NFF
		</span><span class="typ">GoToState</span><span class="pun">(</span><span class="str">"Nff"</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">"Vanilla"</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> always</span><span class="pun">-</span><span class="pln">available fallback</span><span class="pun">,</span><span class="pln"> not mod</span><span class="pun">-</span><span class="pln">gated
	</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">Eff</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> plugin filename currently in control</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">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">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="typ">Every</span><span class="pln"> actor currently following</span><span class="pun">,</span><span class="pln"> per </span><span class="kwd">this</span><span class="pln"> framework</span><span class="str">'</span><span class="pln">s own bookkeeping</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">GetFollowers</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">GetFollowers</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">How</span><span class="pln"> many followers are currently active</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">GetFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">GetFollowerCount</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">The</span><span class="pln"> current follower cap</span><span class="pun">,</span><span class="pln"> however </span><span class="kwd">this</span><span class="pln"> framework defines it</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">GetMaxFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">GetMaxFollowerCount</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">Is</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> specific actor currently following</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">IsFollower</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">Return</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akActor</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">Recruits</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally also registers them </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</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">AddFollower</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">Bool</span><span class="pln"> </span><span class="typ">AddAsDfFollower</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">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">AddFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Result</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">AddAsDfFollower</span><span class="pln">
			</span><span class="typ">Df</span><span class="pun">.</span><span class="typ">AddDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</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="lit">1.0</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="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="typ">Dismisses</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally routes through </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</span><span class="pln"> first</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">RemoveFollower</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"> iMessage </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"> iSayLine </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">AlsoRemoveDfFollower</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">If</span><span class="pln"> </span><span class="typ">AlsoRemoveDfFollower</span><span class="pln">
			</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Df</span><span class="pun">.</span><span class="typ">RemoveDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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="typ">Eff</span><span class="pun">.</span><span class="typ">RemoveFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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">Is</span><span class="pln"> there a free follower slot right now</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">CanRecruit</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">CanRecruit</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">The</span><span class="pln"> follower</span><span class="str">'</span><span class="pln">s separate</span><span class="pun">/</span><span class="pln">hidden inventory container</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> framework has one</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetExtendedInventory</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">Return</span><span class="pln"> </span><span class="typ">Eff</span><span class="pun">.</span><span class="typ">GetExtendedInventory</span><span class="pun">(</span><span class="pln">akActor</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">Aft</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> plugin filename currently in control</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">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="typ">Every</span><span class="pln"> actor currently following</span><span class="pun">,</span><span class="pln"> per </span><span class="kwd">this</span><span class="pln"> framework</span><span class="str">'</span><span class="pln">s own bookkeeping</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">GetFollowers</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">GetFollowers</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">How</span><span class="pln"> many followers are currently active</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">GetFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">GetFollowerCount</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">The</span><span class="pln"> current follower cap</span><span class="pun">,</span><span class="pln"> however </span><span class="kwd">this</span><span class="pln"> framework defines it</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">GetMaxFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">GetMaxFollowerCount</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">Is</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> specific actor currently following</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">IsFollower</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">Return</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akActor</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">Recruits</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally also registers them </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</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">AddFollower</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">Bool</span><span class="pln"> </span><span class="typ">AddAsDfFollower</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">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">AddFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Result</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">AddAsDfFollower</span><span class="pln">
			</span><span class="typ">Df</span><span class="pun">.</span><span class="typ">AddDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</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="lit">1.0</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="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="typ">Dismisses</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally routes through </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</span><span class="pln"> first</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">RemoveFollower</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"> iMessage </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"> iSayLine </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">AlsoRemoveDfFollower</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">If</span><span class="pln"> </span><span class="typ">AlsoRemoveDfFollower</span><span class="pln">
			</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Df</span><span class="pun">.</span><span class="typ">RemoveDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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="typ">Aft</span><span class="pun">.</span><span class="typ">RemoveFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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">Is</span><span class="pln"> there a free follower slot right now</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">CanRecruit</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">CanRecruit</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">The</span><span class="pln"> follower</span><span class="str">'</span><span class="pln">s separate</span><span class="pun">/</span><span class="pln">hidden inventory container</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> framework has one</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetExtendedInventory</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">Return</span><span class="pln"> </span><span class="typ">Aft</span><span class="pun">.</span><span class="typ">GetExtendedInventory</span><span class="pun">(</span><span class="pln">akActor</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">Ufo</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> plugin filename currently in control</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">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="typ">Every</span><span class="pln"> actor currently following</span><span class="pun">,</span><span class="pln"> per </span><span class="kwd">this</span><span class="pln"> framework</span><span class="str">'</span><span class="pln">s own bookkeeping</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">GetFollowers</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pun">.</span><span class="typ">GetFollowers</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">How</span><span class="pln"> many followers are currently active</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">GetFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pun">.</span><span class="typ">GetFollowerCount</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">The</span><span class="pln"> current follower cap</span><span class="pun">,</span><span class="pln"> however </span><span class="kwd">this</span><span class="pln"> framework defines it</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">GetMaxFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pun">.</span><span class="typ">GetMaxFollowerCount</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">Is</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> specific actor currently following</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">IsFollower</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">Return</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pun">.</span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akActor</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">Recruits</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally also registers them </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</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">AddFollower</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">Bool</span><span class="pln"> </span><span class="typ">AddAsDfFollower</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">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pun">.</span><span class="typ">AddFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Result</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">AddAsDfFollower</span><span class="pln">
			</span><span class="typ">Df</span><span class="pun">.</span><span class="typ">AddDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</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="lit">1.0</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="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="typ">Dismisses</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally routes through </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</span><span class="pln"> first</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">RemoveFollower</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"> iMessage </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"> iSayLine </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">AlsoRemoveDfFollower</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">If</span><span class="pln"> </span><span class="typ">AlsoRemoveDfFollower</span><span class="pln">
			</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Df</span><span class="pun">.</span><span class="typ">RemoveDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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="typ">Ufo</span><span class="pun">.</span><span class="typ">RemoveFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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">Is</span><span class="pln"> there a free follower slot right now</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">CanRecruit</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pun">.</span><span class="typ">CanRecruit</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">Nff</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> plugin filename currently in control</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">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="typ">Every</span><span class="pln"> actor currently following</span><span class="pun">,</span><span class="pln"> per </span><span class="kwd">this</span><span class="pln"> framework</span><span class="str">'</span><span class="pln">s own bookkeeping</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">GetFollowers</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">GetFollowers</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">How</span><span class="pln"> many followers are currently active</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">GetFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">GetFollowerCount</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">The</span><span class="pln"> current follower cap</span><span class="pun">,</span><span class="pln"> however </span><span class="kwd">this</span><span class="pln"> framework defines it</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">GetMaxFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">GetMaxFollowerCount</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">Is</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> specific actor currently following</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">IsFollower</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">Return</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akActor</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">Recruits</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally also registers them </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</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">AddFollower</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">Bool</span><span class="pln"> </span><span class="typ">AddAsDfFollower</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">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">AddFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Result</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">AddAsDfFollower</span><span class="pln">
			</span><span class="typ">Df</span><span class="pun">.</span><span class="typ">AddDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</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="lit">1.0</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="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="typ">Dismisses</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally routes through </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</span><span class="pln"> first</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">RemoveFollower</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"> iMessage </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"> iSayLine </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">AlsoRemoveDfFollower</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">If</span><span class="pln"> </span><span class="typ">AlsoRemoveDfFollower</span><span class="pln">
			</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Df</span><span class="pun">.</span><span class="typ">RemoveDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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="typ">Nff</span><span class="pun">.</span><span class="typ">RemoveFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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">Is</span><span class="pln"> there a free follower slot right now</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">CanRecruit</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">CanRecruit</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">The</span><span class="pln"> follower</span><span class="str">'</span><span class="pln">s separate</span><span class="pun">/</span><span class="pln">hidden inventory container</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> framework has one</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetExtendedInventory</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">Return</span><span class="pln"> </span><span class="typ">Nff</span><span class="pun">.</span><span class="typ">GetExtendedInventory</span><span class="pun">(</span><span class="pln">akActor</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">Vanilla</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> plugin filename currently in control </span><span class="pun">(</span><span class="typ">Vanilla</span><span class="pln"> has none</span><span class="pun">,</span><span class="pln"> so </span><span class="kwd">this</span><span class="pln"> is a stand</span><span class="pun">-</span><span class="pln">in</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">GetActiveMod</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="str">"Skyrim.esm"</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> not mod</span><span class="pun">-</span><span class="pln">gated </span><span class="pun">-</span><span class="pln"> always the fallback when nothing </span><span class="kwd">else</span><span class="pln"> is active
	</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"> actor currently following</span><span class="pun">,</span><span class="pln"> per </span><span class="kwd">this</span><span class="pln"> framework</span><span class="str">'</span><span class="pln">s own bookkeeping</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">GetFollowers</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pun">.</span><span class="typ">GetFollowers</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">How</span><span class="pln"> many followers are currently active</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">GetFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pun">.</span><span class="typ">GetFollowerCount</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">The</span><span class="pln"> current follower cap</span><span class="pun">,</span><span class="pln"> however </span><span class="kwd">this</span><span class="pln"> framework defines it</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">GetMaxFollowerCount</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pun">.</span><span class="typ">GetMaxFollowerCount</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">Is</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> specific actor currently following</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">IsFollower</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">Return</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pun">.</span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akActor</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">Recruits</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally also registers them </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</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">AddFollower</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">Bool</span><span class="pln"> </span><span class="typ">AddAsDfFollower</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">Result</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pun">.</span><span class="typ">AddFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">If</span><span class="pln"> </span><span class="typ">Result</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="typ">AddAsDfFollower</span><span class="pln">
			</span><span class="typ">Df</span><span class="pun">.</span><span class="typ">AddDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</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="lit">1.0</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="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="typ">Dismisses</span><span class="pln"> the actor</span><span class="pun">;</span><span class="pln"> optionally routes through </span><span class="typ">Devious</span><span class="pln"> </span><span class="typ">Followers</span><span class="pln"> first</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">RemoveFollower</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"> iMessage </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"> iSayLine </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">AlsoRemoveDfFollower</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">If</span><span class="pln"> </span><span class="typ">AlsoRemoveDfFollower</span><span class="pln">
			</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Df</span><span class="pun">.</span><span class="typ">RemoveDfFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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="typ">Vanilla</span><span class="pun">.</span><span class="typ">RemoveFollower</span><span class="pun">(</span><span class="pln">akActor</span><span class="pun">,</span><span class="pln"> iMessage</span><span class="pun">,</span><span class="pln"> iSayLine</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">Is</span><span class="pln"> there a free follower slot right now</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">CanRecruit</span><span class="pun">()</span><span class="pln">
		</span><span class="typ">Return</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pun">.</span><span class="typ">CanRecruit</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="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFollowers</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">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFollowerCount</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">GetMaxFollowerCount</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">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsFollower</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">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">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">AddFollower</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">Bool</span><span class="pln"> </span><span class="typ">AddAsDfFollower</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">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">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">RemoveFollower</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"> iMessage </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"> iSayLine </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">AlsoRemoveDfFollower</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">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">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">CanRecruit</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">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetExtendedInventory</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="pun">;</span><span class="pln"> </span><span class="typ">Fallback</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> UFO </span><span class="pun">+</span><span class="pln"> </span><span class="typ">Vanilla</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">Function</span><span class="pln"> </span><span class="typ">Test</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> akTestActor </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">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkFollowers: 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_ForkFollowers: 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_ForkFollowers: GetFollowerCount(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFollowerCount</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_ForkFollowers: GetMaxFollowerCount(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetMaxFollowerCount</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_ForkFollowers: CanRecruit(): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">CanRecruit</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">CurrentFollowers</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetFollowers</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_ForkFollowers: GetFollowers() count: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">CurrentFollowers</span><span class="pun">.</span><span class="typ">Length</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">CurrentFollowers</span><span class="pun">.</span><span class="typ">Length</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_ForkFollowers: Follower "</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">CurrentFollowers</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">If</span><span class="pln"> akTestActor
		</span><span class="typ">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkFollowers: IsFollower(akTestActor) before: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akTestActor</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">AddResult</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">AddFollower</span><span class="pun">(</span><span class="pln">akTestActor</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">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkFollowers: AddFollower(akTestActor, AddAsDfFollower=true): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">AddResult</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_ForkFollowers: IsFollower(akTestActor) after add: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akTestActor</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_ForkFollowers: GetFollowerCount() while following: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFollowerCount</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">FollowersWhileActive</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">GetFollowers</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_ForkFollowers: GetFollowers() count while following: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">FollowersWhileActive</span><span class="pun">.</span><span class="typ">Length</span><span class="pun">)</span><span class="pln">
		</span><span class="typ">Int</span><span class="pln"> j </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"> j </span><span class="pun">&lt;</span><span class="pln"> </span><span class="typ">FollowersWhileActive</span><span class="pun">.</span><span class="typ">Length</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_ForkFollowers: Follower "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> j </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">FollowersWhileActive</span><span class="pun">[</span><span class="pln">j</span><span class="pun">])</span><span class="pln">
			j </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_ForkFollowers: GetExtendedInventory(akTestActor): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetExtendedInventory</span><span class="pun">(</span><span class="pln">akTestActor</span><span class="pun">))</span><span class="pln">
		</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveResult</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">RemoveFollower</span><span class="pun">(</span><span class="pln">akTestActor</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</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">Debug</span><span class="pun">.</span><span class="typ">Trace</span><span class="pun">(</span><span class="str">"_MGF_ForkFollowers: RemoveFollower(akTestActor, AlsoRemoveDfFollower=true): "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">RemoveResult</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_ForkFollowers: IsFollower(akTestActor) after remove: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">IsFollower</span><span class="pun">(</span><span class="pln">akTestActor</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_ForkFollowers: GetFollowerCount() after remove: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">GetFollowerCount</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_ForkFollowers: No test actor provided - skipping Add/Remove/IsFollower checks"</span><span class="pun">)</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_ForkFollowers: 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_InterfaceEff </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Eff</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceAft </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Aft</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceUfo </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Ufo</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceNff </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Nff</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceVanilla </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Vanilla</span><span class="pln"> </span><span class="typ">Auto</span><span class="pln">
_MGF_InterfaceDf </span><span class="typ">Property</span><span class="pln"> </span><span class="typ">Df</span><span class="pln"> </span><span class="typ">Auto</span></pre>

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

<p>
	 
</p>
]]></description><guid isPermaLink="false">26243</guid><pubDate>Wed, 02 Sep 2026 17:53:34 +0000</pubDate></item><item><title>Misc</title><link>https://www.loverslab.com/blogs/entry/26228-misc/</link><description><![CDATA[<p>
	Grouping smaller misc stuff here. 
</p>

<p>
	 
</p>

<p>
	Utility: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_20" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the SKSE plugin version</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">GetVersion</span><span class="pun">()</span><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">Send</span><span class="pln"> a log line to the MGF log</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">LogLine</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Log</span><span class="pun">)</span><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">Clears</span><span class="pln"> the MGF SKSE log</span><span class="pun">.</span><span class="pln"> </span><span class="typ">For</span><span class="pln"> testing purposes</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">LogClear</span><span class="pun">()</span><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 current console target</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetConsoleTarget</span><span class="pun">()</span><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">Sets</span><span class="pln"> the console target to </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">Can</span><span class="pln"> </span><span class="kwd">do</span><span class="pln"> </span><span class="typ">SetConsoleTarget</span><span class="pun">(</span><span class="typ">None</span><span class="pun">)</span><span class="pln"> to clear the target</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetConsoleTarget</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"> akForm</span><span class="str">'</span><span class="pln">s dynamic flag is </span><span class="kwd">set</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">IsDynamicForm</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"> the </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"> position akRef was placed at in the editor</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">GetEditorPosition</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">Returns</span><span class="pln"> the cell where </span><span class="kwd">this</span><span class="pln"> reference was placed in the editor</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Cell</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetEditorCell</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">Teleports</span><span class="pln"> player to coordinates</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SetPosition</span><span class="pun">()</span><span class="pln"> resets the camera which is pretty jarring</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> doesn</span><span class="str">'</span><span class="pln">t</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">TeleportPlayerToCoords</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> x</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> y</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> z</span><span class="pun">)</span><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">Transitions</span><span class="pln"> the player to the coordinates rather than straight up teleporting them</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">TeleportPlayerToCoordsSmooth</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> x</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> y</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> z</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Speed</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">StealthMult</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">LandingProtectionSeconds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">ReleaseDistance</span><span class="pun">)</span><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 random value</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"> version just returns a random word</span><span class="pun">`</span><span class="pln">from a small repository</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Mostly</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> testing purposes</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">GetRandomBool</span><span class="pun">()</span><span 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">GetRandomInt</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Minimum</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">Maximum</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="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRandomFloat</span><span class="pun">(</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Minimum</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">Maximum</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="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetRandomString</span><span class="pun">()</span><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 to an integer</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the integer value or </span><span class="typ">Default</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> conversion fails</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Supports</span><span class="pun">:</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> 	</span><span class="typ">Decimal</span><span class="pun">:</span><span class="pln"> </span><span class="str">"123"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"-456"</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> 	</span><span class="typ">Hexadecimal</span><span class="pun">:</span><span class="pln"> </span><span class="str">"0x1A2B"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0X1a2b"</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> 	</span><span class="typ">Whitespace</span><span class="pln"> trimming
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">StringToInt</span><span class="pun">(</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">Int</span><span class="pln"> </span><span class="typ">Default</span><span class="pun">)</span><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 to a </span><span class="kwd">float</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the </span><span class="kwd">float</span><span class="pln"> value or </span><span class="typ">Default</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> the conversion fails</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Supports</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Decimal</span><span class="pun">:</span><span class="pln"> </span><span class="str">"123.45"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"-456.78"</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Scientific</span><span class="pln"> notation</span><span class="pun">:</span><span class="pln"> </span><span class="str">"1.23e5"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"4.56E-2"</span><span class="pln">
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Whitespace</span><span class="pln"> trimming
</span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">StringToFloat</span><span class="pun">(</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">Float</span><span class="pln"> </span><span class="typ">Default</span><span class="pun">)</span><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 </span><span class="lit">1</span><span class="pun">:</span><span class="lit">1</span><span class="pln"> count </span><span class="kwd">of</span><span class="pln"> akForms in </span><span class="typ">ObjRef</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">CountForms</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">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="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the boundary size </span><span class="kwd">of</span><span class="pln"> a reference as </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"> extents</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">GetObjectRef3DSize</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">Disable</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> object references instead </span><span class="kwd">of</span><span class="pln"> looping one by one</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">DisableObjRefs</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">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">Delete</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> object references instead </span><span class="kwd">of</span><span class="pln"> looping one by one</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">DeleteObjRefs</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">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 activator</span><span class="str">'</span><span class="pln">s </span><span class="typ">IsMarker</span><span class="pln"> flag is </span><span class="kwd">set</span><span class="pln"> </span><span class="pun">(</span><span class="pln">object has no visual presence in</span><span class="pun">-</span><span class="pln">game</span><span class="pun">)</span><span class="pln">
bool </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetIsMarkerFlag</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">Sets</span><span class="pln"> the form</span><span class="str">'</span><span class="pln">s </span><span class="typ">IsMarker</span><span class="pln"> flag</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Call</span><span class="pln"> </span><span class="typ">Disable</span><span class="pun">()/</span><span class="typ">Enable</span><span class="pun">()</span><span class="pln"> on all placed references afterwards to apply visually</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note1</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Flag</span><span class="pln"> change does not persist across game restarts</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note2</span><span class="pun">:</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> flag is on the BASE activator</span><span class="pun">.</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> all references </span><span class="kwd">of</span><span class="pln"> that activator are affected but currently loaded</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Note3</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Visibility</span><span class="pln"> in game is entirely dependent on the form actually having a model</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">References</span><span class="pln"> will not update their visual unless they are </span><span class="typ">Disable</span><span class="pun">()/</span><span class="typ">Enable</span><span class="pun">().</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Flag</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">IsMarker</span><span class="pln"> </span><span class="pun">(</span><span class="pln">invisible</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="typ">IsMarker</span><span class="pln"> </span><span class="pun">(</span><span class="pln">visible</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Primarily</span><span class="pln"> intended </span><span class="kwd">for</span><span class="pln"> debug purposes</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">SetIsMarkerFlag</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">Flag</span><span class="pun">)</span><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"> all actors in a json to a faction</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akFaction</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> faction to add actors to</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FileName</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Path</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> file name</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Relative</span><span class="pln"> to </span><span class="str">'Data/SKSE/Plugins/StorageUtilData'</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">FileName</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Mcgufin/HsgNpcs.json"</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="str">'Data/SKSE/Plugins/StorageUtilData/Mcgufin/HsgNpcs.json'</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">KeyName</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> json key name to parse</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">AddJsonActorsToFaction</span><span class="pun">(</span><span class="typ">Faction</span><span class="pln"> akFaction</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">String</span><span class="pln"> </span><span class="typ">KeyName</span><span class="pun">)</span><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">Experimental</span><span class="pun">:</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Even</span><span class="pln"> though </span><span class="kwd">this</span><span class="pln"> may fix your object reference name it may cause text elsewhere to have an upper </span><span class="kwd">case</span><span class="pln"> when it shouldn</span><span class="str">'</span><span class="pln">t </span><span class="pun">:</span><span class="pln">shrug</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"> it</span><span class="str">'</span><span class="pln">s an uncommon word </span><span class="pun">(</span><span class="pln">or better yet</span><span class="pun">,</span><span class="pln"> an amalgamation </span><span class="kwd">of</span><span class="pln"> words</span><span class="pun">)</span><span class="pln"> then I suppose the likelihood is low</span><span class="pun">?</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">SetDisplayNamePatchStringTable</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">String</span><span class="pln"> akName</span><span class="pun">)</span><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 </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Reference</span><span class="pln"> from a given </span><span class="typ">ActorBase</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Successfully</span><span class="pln"> retrieving a reference will depend on</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="pln"> </span><span class="typ">Reference</span><span class="pln"> persistence
</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">Whether</span><span class="pln"> the reference has actually been instantiated yet
</span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetActorRefFromBase</span><span class="pun">(</span><span class="typ">ActorBase</span><span class="pln"> akBase</span><span class="pun">)</span><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 matching magic effect on an actor</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"> none 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">FindFirstMatchMagicEffect</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">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="pun">;</span><span class="pln"> </span><span class="typ">Add</span><span class="pln"> one </span><span class="kwd">of</span><span class="pln"> each form in akForms to </span><span class="typ">ObjRef</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">AddFormsToObjRef</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">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="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the </span><span class="str">'Consume sound'</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> akPotion</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">GetAlchemyConsumeSound</span><span class="pun">(</span><span class="typ">Potion</span><span class="pln"> akPotion</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>
	UI / Menu / String Manipulation: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_22" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Splits</span><span class="pln"> a path </span><span class="pun">+</span><span class="pln"> filename </span><span class="pun">+</span><span class="pln"> extension into it</span><span class="str">'</span><span class="pln">s constructive parts</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Accepted</span><span class="pln"> folder separators </span><span class="pun">=</span><span class="pln"> </span><span class="str">'\', '</span><span class="pln">\\</span><span class="str">', '</span><span class="pun">/</span><span class="str">'</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="str">"\Textures\Actors\SomeMod\Body.dds"</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Textures"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Actors"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"SomeMod"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Body"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"dds"</span><span class="pun">]</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Filename</span><span class="pln"> is always the </span><span class="lit">2nd</span><span class="pln"> last element</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Extension</span><span class="pln"> is always the last element</span><span class="pun">,</span><span class="pln"> even </span><span class="kwd">if</span><span class="pln"> the file has no extension</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="str">"\Textures\Actors\SomeMod\Body"</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Textures"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Actors"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"SomeMod"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Body"</span><span class="pun">,</span><span class="pln"> </span><span class="str">""</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">FormatFilePathSplit</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">Path</span><span class="pun">)</span><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">FormatFilePathSplit</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Reconstruct</span><span class="pln"> parts into a single path </span><span class="pun">+</span><span class="pln"> filename </span><span class="pun">+</span><span class="pln"> extension string using
</span><span class="pun">;</span><span class="pln"> a custom 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">FormatFilePathJoin</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Parts</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">If</span><span class="pln"> </span><span class="typ">Str</span><span class="pln"> is longer than </span><span class="typ">Len</span><span class="pln"> then truncates a section </span><span class="kwd">of</span><span class="pln"> the string beginning at </span><span class="typ">HeadLen</span><span class="pln"> to fit </span><span class="typ">Len</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Replaces</span><span class="pln"> the truncated section </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">Fill</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> </span><span class="typ">Str</span><span class="pln"> is </span><span class="pun">&lt;=</span><span class="pln"> </span><span class="typ">Len</span><span class="pln"> then simply returns </span><span class="typ">Str</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">FormatMenuStringTruncate</span><span class="pun">(</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">String</span><span class="pln"> </span><span class="typ">Str</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">HeadLen</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">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">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">Format</span><span class="pln"> a string </span><span class="kwd">for</span><span class="pln"> a menu system into left</span><span class="pun">/</span><span class="pln">right</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Packs</span><span class="pln"> left</span><span class="pun">/</span><span class="pln">sep</span><span class="pun">/</span><span class="pln">right </span><span class="kwd">with</span><span class="pln"> a flexible gap</span><span class="pun">.</span><span class="pln"> </span><span class="typ">One</span><span class="pln"> side is preserved and the other clipped when space runs out</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Len</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> total desired length </span><span class="kwd">of</span><span class="pln"> the string</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Left</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">Right</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> strings to place on the left </span><span class="pun">/</span><span class="pln"> right</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Separator</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Optional</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Placed</span><span class="pln"> at the end </span><span class="kwd">of</span><span class="pln"> </span><span class="str">'Left'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Priority</span><span class="pun">:</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> the combined length exceeds </span><span class="typ">Len</span><span class="pln"> then</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">Preserve</span><span class="pln"> left</span><span class="pun">,</span><span class="pln"> clip </span><span class="typ">Right</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">Preserve</span><span class="pln"> right</span><span class="pun">,</span><span class="pln"> clip left</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Pad</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="str">'gap'</span><span class="pln"> required between left and right</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">Pad</span><span class="pln"> out the string to </span><span class="str">'Len'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Clip</span><span class="pun">:</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> a string is clipped in the center then place </span><span class="kwd">this</span><span class="pln"> string between</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">FormatMenuStringGap</span><span class="pun">(</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">String</span><span class="pln"> </span><span class="typ">Left</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Right</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">Int</span><span class="pln"> </span><span class="typ">Priority</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">Pad</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">String</span><span class="pln"> </span><span class="typ">Clip</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">Lays</span><span class="pln"> out left</span><span class="pun">/</span><span class="pln">sep</span><span class="pun">/</span><span class="pln">right in a fixed</span><span class="pun">-</span><span class="pln">width two</span><span class="pun">-</span><span class="pln">column grid</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Each</span><span class="pln"> side clips independently on overflow</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">FormatMenuStringGrid</span><span class="pun">(</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">String</span><span class="pln"> </span><span class="typ">Left</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> </span><span class="typ">Right</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">String</span><span class="pln"> </span><span class="typ">Clip</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">Trim</span><span class="pln"> a </span><span class="kwd">float</span><span class="pln"> to a number </span><span class="kwd">of</span><span class="pln"> decimal places </span><span class="kwd">with</span><span class="pln"> optional rounding</span><span class="pun">.</span><span class="pln"> </span><span class="typ">For</span><span class="pln"> display purposes mostly</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">SnipToDecimalPlaces</span><span class="pun">(</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">Int</span><span class="pln"> </span><span class="typ">Places</span><span class="pln"> </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">Bool</span><span class="pln"> </span><span class="typ">RoundUp</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">Quick</span><span class="pln"> </span><span class="str">'is any menu open'</span><span class="pln"> check</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"> mods that unpause menus</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">IsAnyMenuOpen</span><span class="pun">()</span><span 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="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsGamePaused</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>
	Naming / Identification: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_24" style=""><span class="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">EditorID</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">FormID</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 </span><span class="typ">EditorID</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> a form</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">GetEditorID</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"> a string array </span><span class="kwd">of</span><span class="pln"> the </span><span class="typ">EditorIDs</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> the form array</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"> menus</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">GetEditorIDsFromForms</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="pun">;</span><span class="pln"> </span><span class="typ">Gets</span><span class="pln"> a form by it</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">Requires</span><span class="pln"> PO3 </span><span class="typ">Extender</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">GetFormByEditorID</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> </span><span class="typ">EditorID</span><span class="pun">)</span><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"> version</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Input</span><span class="pln"> and output arrays are equal length</span><span class="pun">,</span><span class="pln"> even </span><span class="kwd">if</span><span class="pln"> an ID could not be resolved </span><span class="pun">(</span><span class="pln">none</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">GetFormsByEditorID</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">EditorIDs</span><span class="pun">)</span><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 representation </span><span class="kwd">of</span><span class="pln"> a form</span><span class="str">'</span><span class="pln">s formID</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">GetFormIDAsHex</span><span class="pun">(</span><span class="typ">Game</span><span class="pun">.</span><span class="typ">GetPlayer</span><span class="pun">())</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">'00000014'</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">GetFormIDAsHexString</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">Array</span><span class="pln"> version </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">GetFormIDAsHexString</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="str">'00000000'</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> any </span><span class="typ">None</span><span class="pln"> form</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">GetFormIDsAsHexStrings</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="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="typ">Mod</span><span class="pln"> </span><span class="pun">--</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Get</span><span class="pln"> the original mod that created the form</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"> references</span><span class="pun">,</span><span class="pln"> returns the base object</span><span class="str">'</span><span class="pln">s origin mod</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">GetFormOriginMod</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"> string array </span><span class="kwd">of</span><span class="pln"> the names </span><span class="kwd">of</span><span class="pln"> mods editing </span><span class="kwd">this</span><span class="pln"> form
</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"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Defining</span><span class="pln"> mod
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Last</span><span class="pln"> element </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Winning</span><span class="pln"> override
</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">GetModsAffectingForm</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="pun">--</span><span class="pln"> </span><span class="typ">Display</span><span class="pln"> </span><span class="typ">Name</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 best available name </span><span class="kwd">for</span><span class="pln"> a form</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Depth</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">Display</span><span class="pln"> name only</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">Form</span><span class="pln"> name</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">EditorID</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 depth </span><span class="lit">0</span><span class="pln"> here only works </span><span class="kwd">if</span><span class="pln"> the passed in forms are references</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Either</span><span class="pln"> actors or
</span><span class="pun">;</span><span class="pln"> object references</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Also</span><span class="pln"> some form types don</span><span class="str">'t have any '</span><span class="pln">name</span><span class="str">'</span><span class="pln"> field but depth </span><span class="lit">2</span><span class="pln"> should
</span><span class="pun">;</span><span class="pln"> cover these cases</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">GetFormName</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">Int</span><span class="pln"> </span><span class="typ">Depth</span><span class="pln"> </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">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"> version </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">GetFormName</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">GetFormNames</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">Int</span><span class="pln"> </span><span class="typ">Depth</span><span class="pln"> </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">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 best available name </span><span class="kwd">for</span><span class="pln"> an object reference</span><span class="pun">.</span><span class="pln">
</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"> preference</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">Display</span><span class="pln"> name</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">Base</span><span class="pln"> object name</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">Base</span><span class="pln"> </span><span class="typ">EditorID</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Depth</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">Display</span><span class="pln"> name only</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">Display</span><span class="pln"> name or base name</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">Display</span><span class="pln"> name or base name or editorID</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Depth</span><span class="pln"> is clamped to </span><span class="lit">0</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">String</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetObjRefName</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">Depth</span><span class="pln"> </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">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"> version </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">GetObjRefName</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> string </span><span class="kwd">for</span><span class="pln"> any </span><span class="typ">None</span><span class="pln"> or nameless ref </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">GetObjRefNames</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> akRefs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Depth</span><span class="pln"> </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">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">To</span><span class="pln"> save casting here</span><span class="str">'</span><span class="pln">s the actor versions</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">GetActorName</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">Depth</span><span class="pln"> </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">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">GetActorNames</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">Int</span><span class="pln"> </span><span class="typ">Depth</span><span class="pln"> </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">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="pun">[</span><span class="typ">RefName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RefEditorID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">RefFormID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BaseName</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BaseEditorID</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BaseFormID</span><span class="pun">]</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> a reference
string</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFullRefInfo</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">Convert</span><span class="pln"> the contents </span><span class="kwd">of</span><span class="pln"> a formlist into a string array </span><span class="kwd">of</span><span class="pln"> the names </span><span class="kwd">of</span><span class="pln"> the items in the list</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Primarily</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> menu display purposes</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> is massively faster than looping like</span><span class="pun">:</span><span class="pln"> </span><span class="typ">SomeList</span><span class="pun">.</span><span class="typ">GetAt</span><span class="pun">(</span><span class="pln">i</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="typ">If</span><span class="pln"> the form names are blank </span><span class="pun">(</span><span class="pln">like say </span><span class="kwd">for</span><span class="pln"> a formlist </span><span class="kwd">of</span><span class="pln"> formlists</span><span class="pun">)</span><span class="pln"> then falls back to getting the </span><span class="typ">EditorID</span><span class="pln"> instead</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RemoveString</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Optionally</span><span class="pln"> remove a string from each name</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">UseEditorID</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Override</span><span class="pln"> the </span><span class="kwd">default</span><span class="pln"> behavior and force </span><span class="kwd">return</span><span class="pln"> </span><span class="typ">EditorIDs</span><span class="pln"> instead </span><span class="kwd">of</span><span class="pln"> form names</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">GetFormListNames</span><span class="pun">(</span><span class="typ">FormList</span><span class="pln"> akList</span><span class="pun">,</span><span class="pln"> string </span><span class="typ">RemoveString</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">UseEditorID</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></pre>

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

<p>
	<br>
	Distance / Sorting: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_6" style=""><span class="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">Distance</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 distance between </span><span class="lit">2</span><span class="pln"> positions</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Points</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </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"> position array</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">GetDistanceBetweenPoints</span><span class="pun">(</span><span class="typ">Float</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Point1</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">Point2</span><span class="pun">)</span><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">If</span><span class="pln"> both refs are in the same cell or worldspace then returns a normal </span><span class="typ">GetDistance</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"> not then tries to give you an </span><span class="pun">(</span><span class="pln">VERY</span><span class="pun">)</span><span class="pln"> approximate distance using center</span><span class="pun">/</span><span class="pln">horse markers and load doors</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"> you require distance accuracy </span><span class="kwd">this</span><span class="pln"> isn</span><span class="str">'t the function for you. Think of it as more of a '</span><span class="pln">roughly how far away</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"> negative number means the result was ambigious and should be discarded</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Best</span><span class="pln"> used </span><span class="kwd">for</span><span class="pln"> very </span><span class="kwd">long</span><span class="pln"> distance estimates</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">GetAnchoredDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">RefA</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">RefB</span><span class="pun">)</span><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="pln"> version </span><span class="kwd">of</span><span class="pln"> </span><span class="typ">GetAnchoredDistance</span><span class="pun">:</span><span class="pln"> returns each akRefs</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="str">'s '</span><span class="pln">distance</span><span class="str">'</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">GetRefAnchoredDistances</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akOrigin</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"> </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">Actor</span><span class="pln"> version</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">GetActorAnchoredDistances</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akOrigin</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">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">Sorting</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"> approach as </span><span class="typ">GetAnchoredDistance</span><span class="pun">()</span><span class="pln"> but sorts akRefs array by distance to akOrigin</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Closest</span><span class="pln"> to furthest</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">DropUnknowns</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">Removes</span><span class="pln"> ambigious results</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"> ambigious results </span><span class="pun">(</span><span class="pln">but they are still 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="pun">;</span><span class="pln"> </span><span class="typ">Good</span><span class="pln"> way to find which ref is approximately closest</span><span class="pun">,</span><span class="pln"> regardless </span><span class="kwd">of</span><span class="pln"> where they are</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">SortRefsByAnchoredDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akOrigin</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"> bool </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">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">Actor</span><span class="pln"> version</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">SortActorsByAnchoredDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akOrigin</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">Bool</span><span class="pln"> </span><span class="typ">DropUnknowns</span><span class="pun">)</span><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">SortRefsByAnchoredDistance</span><span class="pln"> but returns the sorted INDEX order </span><span class="kwd">of</span><span class="pln"> akRefs by distance instead </span><span class="kwd">of</span><span class="pln"> reordering akRefs</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"> use </span><span class="kwd">with</span><span class="pln"> parallel arrays</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">Result</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">Index</span><span class="pln"> in akRefs </span><span class="kwd">of</span><span class="pln"> the closest ref</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Result</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">2nd</span><span class="pln"> closest</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Result</span><span class="pun">[</span><span class="typ">Result</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">The</span><span class="pln"> index </span><span class="kwd">of</span><span class="pln"> the most distance ref</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">SortRefIndicesByAnchoredDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akOrigin</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"> </span><span class="typ">Bool</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">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">Actor</span><span class="pln"> version</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">SortActorIndicesByAnchoredDistance</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akOrigin</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">Bool</span><span class="pln"> </span><span class="typ">DropUnknowns</span><span class="pun">)</span><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">Sort</span><span class="pln"> actors by the distance from their editor position to akRef</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"> prioritizing package data data that uses </span><span class="str">'Near Editor Location'</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">SortActorsByEditorDistance</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"> akRef</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>
	</div>
</div>

<p>
	 
</p>

<p>
	Keywords &amp; Inventory: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_8" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Count</span><span class="pln"> the number </span><span class="kwd">of</span><span class="pln"> items in an object reference </span><span class="kwd">with</span><span class="pln"> any keyword in akKeywords</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"> </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">Count</span><span class="pln"> any items </span><span class="kwd">with</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the supplied keywords</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"> </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">Count</span><span class="pln"> any items without any </span><span class="kwd">of</span><span class="pln"> the supplied keywords</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">Stacks</span><span class="pln"> count</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="kwd">if</span><span class="pln"> the player has </span><span class="lit">2x</span><span class="pln"> </span><span class="str">"Miner's Clothes"</span><span class="pln"> then</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">CountItemsWithKeywords</span><span class="pun">(</span><span class="typ">PlayerRef</span><span class="pun">,</span><span class="pln"> akKeywords </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="typ">ClothingBody</span><span class="pun">],</span><span class="pln"> </span><span class="typ">Reverse</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="pun">=</span><span class="pln"> </span><span class="lit">2</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">CountItemsWithKeywords</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">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">Reverse</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"> a form array </span><span class="kwd">of</span><span class="pln"> items in </span><span class="typ">ObjRef</span><span class="pln"> that have at least one </span><span class="kwd">of</span><span class="pln"> the supplied keywords</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"> </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">Get</span><span class="pln"> items in </span><span class="typ">ObjRef</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the supplied keywords</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"> </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">Get</span><span class="pln"> items in </span><span class="typ">ObjRef</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> none </span><span class="kwd">of</span><span class="pln"> the supplied keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returned</span><span class="pln"> forms are unique </span><span class="pun">-</span><span class="pln"> </span><span class="typ">No</span><span class="pln"> duplicates</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">GetItemsWithKeywords</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">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">Reverse</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"> a full list </span><span class="kwd">of</span><span class="pln"> keywords equipped on an actor</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Armor</span><span class="pln"> </span><span class="pun">&amp;</span><span class="pln"> weapons</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">GetAllWornKeywords</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"> abReverse </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">Returns</span><span class="pln"> every member </span><span class="kwd">of</span><span class="pln"> akKeywords that akActor has equipped</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> abReverse </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">Returns</span><span class="pln"> every member </span><span class="kwd">of</span><span class="pln"> akKeywords that akActor does not have equipped</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">Which</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> these keywords </span><span class="kwd">do</span><span class="pln"> they have equipped</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">Which</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> these keywords </span><span class="kwd">do</span><span class="pln"> they NOT have equipped</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">GetWornKeywords</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">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"> abReverse </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">Count</span><span class="pln"> the number </span><span class="kwd">of</span><span class="pln"> equipped items </span><span class="kwd">with</span><span class="pln"> any </span><span class="kwd">of</span><span class="pln"> the supplied keywords</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Items</span><span class="pln"> that cover multiple slots only count once</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Covers</span><span class="pln"> all armor slots </span><span class="pun">+</span><span class="pln"> left</span><span class="pun">/</span><span class="pln">right hands</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> abReverse</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">Count</span><span class="pln"> equipped keywords</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">-&gt;</span><span class="pln"> </span><span class="typ">Count</span><span class="pln"> keywords the actor doesn</span><span class="str">'</span><span class="pln">t have equipped</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">CountEquippedItemsWithKeywords</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">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">Reverse</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">Get</span><span class="pln"> a list </span><span class="kwd">of</span><span class="pln"> all equipped items on an actor matching at least one </span><span class="kwd">of</span><span class="pln"> the supplied keywords</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"> </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">Match</span><span class="pln"> to keywords</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"> </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 items that have none </span><span class="kwd">of</span><span class="pln"> the supplied keywords</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">GetEquippedItemsWithKeywords</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">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">Reverse</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></pre>
	</div>
</div>

<p>
	 
</p>

<p>
	Raycasting / Crosshair / Detection: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_10" style=""><span class="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">Crosshair</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 object reference under the crosshairs</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">Game</span><span class="pun">.</span><span class="typ">GetCurrentCrosshairRef</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> doesn</span><span class="str">'</span><span class="pln">t need to be very close to the player</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"> it also returns most objects </span><span class="pun">-</span><span class="pln"> not just actors or activatables</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetExtendedCrosshairRef</span><span class="pun">(</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">10000.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">Same</span><span class="pln"> as above but it just returns the distance to the object</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">GetExtendedCrosshairDistance</span><span class="pun">(</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">10000.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 x</span><span class="pun">,</span><span class="pln"> y</span><span class="pun">,</span><span class="pln"> z coordinates </span><span class="kwd">of</span><span class="pln"> where a ray cast collides </span><span class="kwd">with</span><span class="pln"> either a </span><span class="kwd">static</span><span class="pln"> or terrain</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">GetCrosshairGroundHit</span><span class="pun">(</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">10000.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">Casts</span><span class="pln"> a ray out maxDistance from the camera</span><span class="pun">.</span><span class="pln"> </span><span class="typ">At</span><span class="pln"> the end </span><span class="kwd">of</span><span class="pln"> that ray then casts another ray downwards </span><span class="typ">MaxDropDistance</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> at </span><span class="typ">SafetyAngle</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> either the coordinates </span><span class="kwd">of</span><span class="pln"> any collision along the way or the end coordinates
</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> the downward ray</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ActorOffsetMult</span><span class="pun">:</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> the crosshair ray hits an NPC</span><span class="pun">,</span><span class="pln"> how far behind them to place the target point</span><span class="pun">.</span><span class="pln">
</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"> at the hit point</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">128</span><span class="pln"> units behind</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">256</span><span class="pln"> units behind</span><span class="pun">.</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Mainly</span><span class="pln"> intended </span><span class="kwd">for</span><span class="pln"> my </span><span class="typ">Blink</span><span class="pln"> mod</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">GetCrosshairGroundBelow</span><span class="pun">(</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">512.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxDropDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">256.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">SafetyAngle</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">ActorOffsetMult</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="pun">--</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Raycasts</span><span class="pln"> </span><span class="pun">--</span><span class="pln">

</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Like</span><span class="pln"> </span><span class="typ">GetCrosshairGroundBelow</span><span class="pln"> but emits from an actor</span><span class="str">'</span><span class="pln">s position rather than the camera</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="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"> coordinates </span><span class="kwd">of</span><span class="pln"> ground below the endpoint</span><span class="pun">,</span><span class="pln"> or empty array </span><span class="kwd">if</span><span class="pln"> no ground found</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> actor</span><span class="pun">:</span><span class="pln">              </span><span class="typ">The</span><span class="pln"> actor to cast from</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CastHeightMult</span><span class="pun">:</span><span class="pln">     </span><span class="typ">Origin</span><span class="pln"> height as a fraction </span><span class="kwd">of</span><span class="pln"> actor height</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"> feet</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> top </span><span class="kwd">of</span><span class="pln"> head</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.8</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">~</span><span class="pln">eye height</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">How</span><span class="pln"> far forward to cast the ray</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MaxDropDistance</span><span class="pun">:</span><span class="pln">    </span><span class="typ">Max</span><span class="pln"> distance to drop downward to find ground </span><span class="pun">(</span><span class="lit">0.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> unlimited</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SafetyAngle</span><span class="pun">:</span><span class="pln">        </span><span class="typ">Angle</span><span class="pln"> in degrees </span><span class="kwd">for</span><span class="pln"> drop ray </span><span class="pun">(</span><span class="lit">0.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> straight down</span><span class="pun">,</span><span class="pln"> </span><span class="lit">45.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> angled back toward actor</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ActorOffsetMult</span><span class="pun">:</span><span class="pln">    </span><span class="typ">If</span><span class="pln"> the crosshair ray hits an NPC</span><span class="pun">,</span><span class="pln"> how far behind them to place the target point</span><span class="pun">.</span><span class="pln">
</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"> at the hit point</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">128</span><span class="pln"> units behind</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">256</span><span class="pln"> units behind</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="lit">0.0</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> you don</span><span class="str">'</span><span class="pln">t care about NPC avoidance</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">UseCameraDirection</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cast in the direction the camera is looking</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cast in the direction the actor is facing</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FlattenRay</span><span class="pun">:</span><span class="pln">         </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ignore vertical aim</span><span class="pun">,</span><span class="pln"> ray travels parallel to flat ground regardless </span><span class="kwd">of</span><span class="pln"> camera</span><span class="pun">/</span><span class="pln">actor pitch</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">GetActorGroundBelow</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">Float</span><span class="pln"> </span><span class="typ">CastHeightMult</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">512.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">MaxDropDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">256.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">SafetyAngle</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5.0</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">ActorOffsetMult</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">UseCameraDirection</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">FlattenRay</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">Uses</span><span class="pln"> </span><span class="str">'Ray Casts'</span><span class="pln"> between actors to determine </span><span class="kwd">if</span><span class="pln"> there is a clear path between them</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Specify</span><span class="pln"> how many ray casts you want to use</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Higher</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> better accuracy but increased cost</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Default</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">Rays</span><span class="pln"> are cast dynamically at various heights depending on the size </span><span class="kwd">of</span><span class="pln"> the actors but </span><span class="lit">20</span><span class="pun">%</span><span class="pln"> from the bottom to </span><span class="lit">10</span><span class="pun">%</span><span class="pln"> from the top</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Rays</span><span class="pln"> collide </span><span class="kwd">with</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> objects </span><span class="pun">(</span><span class="pln">like walls</span><span class="pun">,</span><span class="pln"> tables</span><span class="pun">,</span><span class="pln"> counters</span><span class="pun">)</span><span class="pln"> and other actors</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"> doesn</span><span class="str">'</span><span class="pln">t necessarily mean that there is a navigatable path between them but
</span><span class="pun">;</span><span class="pln"> only that there is probably a clear line </span><span class="kwd">of</span><span class="pln"> sight between them </span><span class="pun">(</span><span class="pln">navmeshes</span><span class="pun">!).</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">As</span><span class="pln"> I understand it</span><span class="pun">,</span><span class="pln"> traditional LOS checks check that LOS exists between eye nodes</span><span class="pun">.</span><span class="pln"> </span><span class="typ">So</span><span class="pln"> it usually will
</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">return</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> even </span><span class="kwd">if</span><span class="pln"> there</span><span class="str">'</span><span class="pln">s a table or counter etc in the way</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WidthCoverageMultiplier</span><span class="pun">:</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> offsets rays to the left and right horizontally to </span><span class="kwd">try</span><span class="pln"> to detect </span><span class="kwd">if</span><span class="pln"> there</span><span class="str">'s a clear '</span><span class="pln">tunnel</span><span class="str">'</span><span class="pln"> and
</span><span class="pun">;</span><span class="pln"> not just a clear straight line</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Rays</span><span class="pln"> are cast </span><span class="pun">(</span><span class="pln">from bottom to top</span><span class="pun">):</span><span class="pln"> center</span><span class="pun">,</span><span class="pln"> left</span><span class="pun">,</span><span class="pln"> right</span><span class="pun">,</span><span class="pln"> left</span><span class="pun">,</span><span class="pln"> right</span><span class="pun">,</span><span class="pln"> left
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WidthCoverageMultiplier</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.0</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Straight</span><span class="pln"> line detection only</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WidthCoverageMultiplier</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.5</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Rays</span><span class="pln"> span </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> actor width total</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WidthCoverageMultiplier</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="pun">-&gt;</span><span class="pln"> </span><span class="typ">Rays</span><span class="pln"> span </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> actor width total </span><span class="pun">(</span><span class="pln">covers the full actor</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">WidthCoverageMultiplier</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2.0</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Rays</span><span class="pln"> span </span><span class="lit">200</span><span class="pun">%</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> actor width total </span><span class="pun">(</span><span class="pln">extends beyond actor</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">You</span><span class="pln"> can decide yourself how strict the path check should be by</span><span class="pun">:</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetClearPathCountBetweenActors</span><span class="pun">(</span><span class="pln">akActorA</span><span class="pun">,</span><span class="pln"> akActorB</span><span class="pun">,</span><span class="pln"> </span><span class="lit">5</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="pun">==</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Should</span><span class="pln"> be fully clear
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetClearPathCountBetweenActors</span><span class="pun">(</span><span class="pln">akActorA</span><span class="pun">,</span><span class="pln"> akActorB</span><span class="pun">,</span><span class="pln"> </span><span class="lit">8</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.6</span><span class="pun">)</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="lit">7</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Might</span><span class="pln"> be clear
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">GetClearPathCountBetweenActors</span><span class="pun">(</span><span class="pln">akActorA</span><span class="pun">,</span><span class="pln"> akActorB</span><span class="pun">,</span><span class="pln"> </span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2.0</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">-&gt;</span><span class="pln"> </span><span class="typ">Definitely</span><span class="pln"> blocked
</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetClearPathCountBetweenActors</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> akActorA</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> akActorB</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">RayCount</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">WidthCoverageMultiplier</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.6</span><span class="pun">)</span><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"> two actors are facing each other</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Threshold</span><span class="pun">:</span><span class="pln"> </span><span class="typ">How</span><span class="pln"> narrowly the actors must be facing each other</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">-&gt;</span><span class="pln"> </span><span class="typ">Must</span><span class="pln"> be perfectly aligned </span><span class="pun">(</span><span class="typ">Probably</span><span class="pln"> never happen</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">45</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Within</span><span class="pln"> a </span><span class="lit">45</span><span class="pun">°</span><span class="pln"> cone </span><span class="pun">(</span><span class="pln">quite strict</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">90</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Within</span><span class="pln"> a </span><span class="lit">90</span><span class="pun">°</span><span class="pln"> cone </span><span class="pun">(</span><span class="pln">moderate</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">120</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Within</span><span class="pln"> a </span><span class="lit">120</span><span class="pun">°</span><span class="pln"> cone </span><span class="pun">(</span><span class="pln">generous</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="lit">180</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Any</span><span class="pln"> direction </span><span class="pun">(</span><span class="pln">always passes</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">How</span><span class="pln"> close the actors need to be to even qualify as facing</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">AreActorsFacing</span><span class="pun">(</span><span class="typ">Actor</span><span class="pln"> akActor1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> akActor2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">Threshold</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="lit">512.0</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>
	Location / Cell: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_12" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Whether</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> cell is loaded or not</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">IsCellLoaded</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">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">Moves</span><span class="pln"> the player to akCell</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">Debug</span><span class="pun">.</span><span class="typ">CenterOnCell</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> can move you to cells without any editor ID</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">for</span><span class="pln"> internal and external</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Though</span><span class="pln"> there</span><span class="str">'s no guarantee where exactly you'</span><span class="pln">ll be placed</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">MoveToCell</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">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">Papyrus</span><span class="pln"> </span><span class="typ">IsCleared</span><span class="pun">()</span><span class="pln"> resets</span><span class="pun">.</span><span class="pln"> </span><span class="typ">This</span><span class="pln"> doesn</span><span class="str">'</span><span class="pln">t</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">WasLocationEverCleared</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">)</span><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 location assigned to a cell</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Many</span><span class="pln"> cells </span><span class="pun">(</span><span class="pln">exterior wilderness in particular</span><span class="pun">)</span><span class="pln"> won</span><span class="str">'</span><span class="pln">t have any assigned location</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Most</span><span class="pln"> interior cell should have some location assigned</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetCellLocation</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">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="pun">[</span><span class="pln">x</span><span class="pun">,</span><span class="pln"> y</span><span class="pun">]</span><span class="pln"> grid coordinates </span><span class="kwd">of</span><span class="pln"> an exterior cell</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"> empty array </span><span class="kwd">for</span><span class="pln"> interior cells or </span><span class="kwd">if</span><span class="pln"> coordinates unavailable</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">GetCellCoords</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">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">Traverses</span><span class="pln"> parentLoc chain to find the top</span><span class="pun">-</span><span class="pln">level world location
</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"> akLoc is </span><span class="typ">None</span><span class="pln"> or a cycle is detected
</span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetWorldLocation</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">)</span><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"> all the cells that are assigned to </span><span class="kwd">this</span><span class="pln"> location</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">Function</span><span class="pln"> </span><span class="typ">GetLocationCells</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">)</span><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 location has a keyword matching the given editorID string
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">LocationHasKeywordString</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> asEditorID</span><span class="pun">)</span><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 keywords assigned to a location</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">GetLocationKeywords</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">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="str">'center'</span><span class="pln"> marker associated </span><span class="kwd">with</span><span class="pln"> a location</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 assigned to the location in the creation kit but it</span><span class="str">'s optional and can be '</span><span class="typ">None</span><span class="str">' - '</span><span class="pln">MNAM</span><span class="str">'</span><span class="pln"> field in </span><span class="typ">TesEdit</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ClimbParent</span><span class="pun">:</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> enabled and akLoc has no center marker then will </span><span class="kwd">continue</span><span class="pln"> getting parent locations until a center marker is found</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ClimbBackstop</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">FormList</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> locations climbing must not resolve into </span><span class="pun">(</span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Hold</span><span class="pun">-</span><span class="pln">level locations</span><span class="pun">).</span><span class="pln"> </span><span class="typ">Reaching</span><span class="pln"> one stops the climb and 
</span><span class="pun">;</span><span class="pln"> returns </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> that entry</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLocationCenterMarker</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ClimbToParent</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">ClimbBackstop</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="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> version
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">KeepNones</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">Discard</span><span class="pln"> locations where a center marker could not be resolved </span><span class="pun">(</span><span class="typ">Shorten</span><span class="pln"> returned array</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">Return</span><span class="pln"> a </span><span class="str">'None'</span><span class="pln"> at the array index where the location center could not be resolved </span><span class="pun">(</span><span class="pln">equal length array</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">GetLocationCenterMarkers</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> akLocs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">KeepNones</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">ClimbParents</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">ClimbBackstop</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="pun">;</span><span class="pln"> </span><span class="typ">Similar</span><span class="pln"> to </span><span class="typ">GetLocationCenters</span><span class="pln"> but customizable</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Checks</span><span class="pln"> akLocs </span><span class="typ">Editor</span><span class="pln"> </span><span class="typ">IDs</span><span class="pln"> against </span><span class="typ">CentersQuest</span><span class="pln"> alias names</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the reference </span><span class="kwd">for</span><span class="pln"> that alias </span><span class="kwd">if</span><span class="pln"> the names match</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"> quest serves both as a </span><span class="str">'lookup table'</span><span class="pln"> and to keep your marker refs persistent so they can always be resolved</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">GetMgfCenters</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> akLocs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Quest</span><span class="pln"> akCentersQuest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">KeepNones</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">ClimbParents</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">ClimbBackstop</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="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> the </span><span class="str">'Horse Marker'</span><span class="pln"> associated </span><span class="kwd">with</span><span class="pln"> akLoc</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Also</span><span class="pln"> optional and can be </span><span class="str">'None'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="str">'NAM0'</span><span class="pln"> field in </span><span class="typ">TesEdit</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLocationHorseMarker</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ClimbToParent</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">ClimbBackstop</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="pun">;</span><span class="pln"> </span><span class="typ">Array</span><span class="pln"> version</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">GetLocationHorseMarkers</span><span class="pun">(</span><span class="typ">Location</span><span class="pun">[]</span><span class="pln"> akLocs</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">KeepNones</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">ClimbParents</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">ClimbBackstop</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="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> all object references </span><span class="kwd">of</span><span class="pln"> a specific type assigned to a location </span><span class="pun">(</span><span class="typ">Eg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Boss</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BossContainer</span><span class="pun">,</span><span class="pln"> </span><span class="typ">JarlThrone</span><span class="pln"> etc</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Unloaded</span><span class="pln"> references may not be returned </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Best</span><span class="pln"> to be in the location when calling </span><span class="kwd">this</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akType </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"> </span><span class="typ">Return</span><span class="pln"> all references regardless </span><span class="kwd">of</span><span class="pln"> type</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">GetLocationRefsByType</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">,</span><span class="pln"> </span><span class="typ">LocationRefType</span><span class="pln"> akType</span><span class="pun">)</span><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">Sorts</span><span class="pln"> actors by confidence </span><span class="kwd">of</span><span class="pln"> name match against cell</span><span class="pun">/</span><span class="pln">location names</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExcludeNoMatch</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="kwd">return</span><span class="pln"> all actors</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">Remove</span><span class="pln"> non matches</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">ActorsByCellNameMatch</span><span class="pun">(</span><span class="typ">BelethorsGeneralGoodsCell</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="typ">Sigurd</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Belethor</span><span class="pun">]</span><span class="pln"> would </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">ExcludeNoMatch</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="pun">[</span><span class="typ">Belethor</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Sigurd</span><span class="pun">]</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="typ">Belethor</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">ActorsByCellNameMatch</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">Actor</span><span class="pun">[]</span><span class="pln"> akActors</span><span class="pun">,</span><span class="pln"> bool </span><span class="typ">ExcludeNoMatch</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>
	Crime: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_14" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Dumps</span><span class="pln"> debug info to the MGF log</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">DumpCrimeData</span><span class="pun">()</span><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 deduplicated list </span><span class="kwd">of</span><span class="pln"> all owners </span><span class="kwd">of</span><span class="pln"> stolen items in akRef</span><span class="str">'</span><span class="pln">s inventory</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Owner</span><span class="pln"> may be a </span><span class="typ">Faction</span><span class="pln"> or an </span><span class="typ">Actor</span><span class="pln"> base</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">GetAllStolenItemOwners</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">Returns</span><span class="pln"> stolen items from akRef</span><span class="str">'</span><span class="pln">s inventory</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akOwner</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> </span><span class="typ">Bases</span><span class="pln"> or </span><span class="typ">Factions</span><span class="pln"> you want to check </span><span class="kwd">for</span><span class="pln"> stolen forms</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">CountEach</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">One</span><span class="pln"> entry per individual item </span><span class="pun">(</span><span class="pln">stack expanded</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">Deduplicate</span><span class="pln"> 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">GetStolenItems</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"> akOwners</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">CountEach</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"> the value </span><span class="kwd">of</span><span class="pln"> stolen goods tracked by the engine </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="pln"> </span><span class="typ">This</span><span class="pln"> is the total lifetime value</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Not</span><span class="pln"> the value since the player was last arrested</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akFaction </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> sums across all factions</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Mode</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"> total</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"> witnessed </span><span class="pun">(</span><span class="pln">caught</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"> unwitnessed</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">GetTotalStolenValue</span><span class="pun">(</span><span class="typ">Faction</span><span class="pln"> akFaction</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">Mode</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">Returns</span><span class="pln"> factions the engine is tracking </span><span class="kwd">for</span><span class="pln"> stolen goods against</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">Function</span><span class="pln"> </span><span class="typ">GetFactionsWithStolenGoods</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>
	Doors: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_16" style=""><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"> akDoor is a load door </span><span class="pun">(</span><span class="pln">links to another cell</span><span class="pun">).</span><span class="pln"> 
bool </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsLoadDoor</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akDoor</span><span class="pun">)</span><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 paired door ref on the other side </span><span class="kwd">of</span><span class="pln"> a load door</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLinkedDoor</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akDoor</span><span class="pun">)</span><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 location that a load door leads to</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Location</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetLoadDoorDestinationLocation</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akDoor</span><span class="pun">)</span><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 arrival position </span><span class="pun">(</span><span class="kwd">this</span><span class="pln"> side</span><span class="pun">)</span><span class="pln"> </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"> when travelling through </span><span class="kwd">this</span><span class="pln"> door</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"> an empty array </span><span class="kwd">if</span><span class="pln"> akDoor is not a load door</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"> sure on practical use but it</span><span class="str">'s data you didn'</span><span class="pln">t have access to before</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">GetLoadDoorArrivalPos</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akDoor</span><span class="pun">)</span><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 arrival rotation </span><span class="pun">(</span><span class="kwd">this</span><span class="pln"> side</span><span class="pun">)</span><span class="pln"> </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"> when travelling through </span><span class="kwd">this</span><span class="pln"> door</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"> an empty array </span><span class="kwd">if</span><span class="pln"> akDoor is not a load door</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"> sure on practical use but it</span><span class="str">'s data you didn'</span><span class="pln">t have access to before</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">GetLoadDoorArrivalRot</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akDoor</span><span class="pun">)</span><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">Teleports</span><span class="pln"> akActor to the arrival marker position </span><span class="kwd">of</span><span class="pln"> akDoor</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akDoor must be a load door</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> it is not</span><span class="pun">,</span><span class="pln"> or </span><span class="kwd">if</span><span class="pln"> the destination cannot be resolved</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Does</span><span class="pln"> not fire activate events </span><span class="kwd">for</span><span class="pln"> the door</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Nor</span><span class="pln"> does the door need to be unlocked</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Probably</span><span class="pln"> more useful </span><span class="kwd">for</span><span class="pln"> moving</span><span class="pun">/</span><span class="pln">spawning actors at a cell entrance in a convincing manner than moving the player to a cell</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"> used on a door that is not currently loaded then you</span><span class="str">'</span><span class="pln">ll be placed inside the door because </span><span class="typ">SetPosition</span><span class="pln"> runs during the load screen</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"> you need to go to a door in another cell </span><span class="kwd">try</span><span class="pun">:</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">MoveTo</span><span class="pun">(</span><span class="typ">Door</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Put</span><span class="pln"> you in the right cell
</span><span class="pun">;</span><span class="pln">	</span><span class="typ">Utility</span><span class="pun">.</span><span class="typ">Wait</span><span class="pun">(</span><span class="lit">0.01</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Wait</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> load screen to finish
</span><span class="pun">;</span><span class="pln">	_MGF_Util</span><span class="pun">.</span><span class="typ">TeleportToDoorMarker</span><span class="pun">(</span><span class="typ">Door</span><span class="pun">)</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> now move to door marker
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">TeleportToDoorMarker</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">ObjectReference</span><span class="pln"> akDoor</span><span class="pun">)</span><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 persistent</span><span class="pun">/</span><span class="pln">loaded load door refs at the given location</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">IncludeChildLocs</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"> include doors in child locations</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ExternalDoors</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="pln"> load doors</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">External</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"> </span><span class="typ">Internal</span><span class="pln"> load doors only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">External</span><span class="pln"> is defined as the linked door being in a cell flagged as </span><span class="typ">External</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">GetLocationLoadDoors</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">,</span><span class="pln"> bool </span><span class="typ">IncludeChildLocs</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">ExternalDoors</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></pre>

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

<p>
	 
</p>

<p>
	Beds: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_799_18" style=""><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"> the kCanSleep flag is </span><span class="kwd">set</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">IsSleepFurniture</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akBed</span><span class="pun">)</span><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"> </span><span class="str">'slots'</span><span class="pln"> a furniture item has</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">Forge</span><span class="pun">,</span><span class="pln"> cooking pot</span><span class="pun">,</span><span class="pln"> single beds </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1.</span><span class="pln"> </span><span class="typ">Double</span><span class="pln"> beds</span><span class="pun">,</span><span class="pln"> wide benches </span><span class="pun">=</span><span class="pln"> </span><span class="lit">2</span><span class="pun">(+?)</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Extracts</span><span class="pln"> </span><span class="str">'Num Positions'</span><span class="pln"> from </span><span class="typ">BSFurnitureMarkerNode</span><span class="pln"> in the nif </span><span class="pun">(</span><span class="typ">Positions</span><span class="pln"> array size</span><span class="pun">).</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 </span><span class="lit">3D</span><span class="pln"> must be loaded </span><span class="kwd">for</span><span class="pln"> accurate results</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">GetFurnitureSlots</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"> either the </span><span class="typ">ActorBase</span><span class="pln"> </span><span class="pun">(</span><span class="pln">direct owner</span><span class="pun">)</span><span class="pln"> or </span><span class="typ">Faction</span><span class="pln"> </span><span class="pun">(</span><span class="pln">shared ownership</span><span class="pun">)</span><span class="pln"> that owns </span><span class="kwd">this</span><span class="pln"> bed</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">GetBedOwner</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akBed</span><span class="pun">)</span><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 actor currently using </span><span class="kwd">this</span><span class="pln"> furniture object</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">GetFurnitureOccupants</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pln"> akFurniture</span><span class="pun">)</span><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">Finds</span><span class="pln"> all </span><span class="str">'bed'</span><span class="pln"> furniture in the current cell</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">FindBedsInCell</span><span class="pun">()</span><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"> akActor has a sleep package that targets </span><span class="kwd">this</span><span class="pln"> bed</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Checks</span><span class="pln"> both base actor packages and alias packages</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">ActorSleepPackageTargetsBed</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">ObjectReference</span><span class="pln"> akBed</span><span class="pun">)</span><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">Attempt</span><span class="pln"> to trace through akActor</span><span class="str">'</span><span class="pln">s AI packages to find their assigned bed</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Searches</span><span class="pln"> both alias packages and actor base packages</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Bed</span><span class="pln"> persistence is </span><span class="kwd">this</span><span class="pln"> functions weakness</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">PlayerRef</span><span class="pun">.</span><span class="typ">GetParentCell</span><span class="pun">()</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> akActor</span><span class="pun">.</span><span class="typ">GetEditorCell</span><span class="pun">()</span><span class="pln"> is your best shot </span><span class="kwd">for</span><span class="pln"> an accurate read</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"> returns ALL beds from all packages</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Usually</span><span class="pln"> the first element is the best choice </span><span class="pun">(</span><span class="pln">alias package</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"> reverse </span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Bed</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">Actor</span><span class="pun">)</span><span class="pln"> is in _MGF_Main </span><span class="pun">-</span><span class="pln"> </span><span class="typ">GetBedUsers</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">GetActorBeds</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></pre>

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

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26228</guid><pubDate>Mon, 31 Aug 2026 22:27:23 +0000</pubDate></item><item><title>Aliases</title><link>https://www.loverslab.com/blogs/entry/26227-aliases/</link><description><![CDATA[<p>
	Alias Events:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4897_10" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Registers</span><span class="pln"> akForm to receive </span><span class="typ">On_MGF_AliasChange</span><span class="pln"> whenever </span><span class="typ">ForceRefTo</span><span class="pun">()</span><span class="pln"> or </span><span class="typ">Clear</span><span class="pun">()</span><span class="pln"> is called on an alias</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">	</span><span class="typ">RegisterForAliasChange</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">,</span><span class="pln"> akAlias</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_AliasChange</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"> akNewRef</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">"On_MGF_AliasChange: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nakAlias: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akAlias </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nakNewRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akNewRef</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"> </span><span class="typ">For</span><span class="pln"> full coverage </span><span class="kwd">of</span><span class="pln"> alias change events </span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Stop</span><span class="pun">/</span><span class="typ">Start</span><span class="pun">)</span><span class="pln">combine </span><span class="kwd">with</span><span class="pln"> PO3 papyrus extender</span><span class="str">'s '</span><span class="typ">RegisterForQuest</span><span class="str">'</span><span class="pln"> event</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">RegisterForAliasChange</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">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">)</span><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">True</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> akForm is currently registered </span><span class="kwd">for</span><span class="pln"> akAlias</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">IsRegisteredForAliasChange</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">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">)</span><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"> a prior registration </span><span class="kwd">for</span><span class="pln"> the same </span><span class="pun">(</span><span class="pln">akAlias</span><span class="pun">,</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> pair</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">UnregisterForAliasChange</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">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">)</span><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"> akForm from every alias it</span><span class="str">'</span><span class="pln">s currently registered against</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="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> anything was actually removed</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">UnregisterAllAliasChanges</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></pre>

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

<p>
	<br>
	Regular Alias functions: 
</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_4897_14" style=""><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"> a reference alias</span><span class="str">'s '</span><span class="pln">reserved</span><span class="str">'</span><span class="pln"> flag is enabled</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">IsReservedAlias</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">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"> an actor is in a reference alias that</span><span class="str">'</span><span class="pln">s flagged as reserved</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterReservedAlias</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"> exclude reserved</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"> only reserved
</span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">IsActorInAlias</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">FilterReservedAlias</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">Return</span><span class="pln"> all reference aliases that point to akRef</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">FilterReservedAlias</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"> exclude reserved</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"> only reserved
</span><span class="typ">ReferenceAlias</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FindAliasesWithObjRef</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">FilterReservedAlias</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">Return</span><span class="pln"> the index </span><span class="kwd">of</span><span class="pln"> the alias in akQuest that contains </span><span class="typ">ObjRef</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">GetAliasIndexWithObjRef</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</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="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 reference alias in akQuest that contains </span><span class="typ">ObjRef</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">ReferenceAlias</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetAliasWithObjRef</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</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">Gets</span><span class="pln"> all aliases in a quest</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Both</span><span class="pln"> reference and location</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Alias</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetQuestAliases</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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 aliases filtered by type</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"> </span><span class="typ">All</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">Reference</span><span class="pln"> aliases 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">Location</span><span class="pln"> aliases only</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Alias</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetQuestAliasesByType</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</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">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 reference aliases that hold a reference</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Empty</span><span class="pln"> aliases are ignored</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> aliases are not included</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Alias</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFilledAliases</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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"> ref aliases on akQuest</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">-</span><span class="pln">parallel by </span><span class="kwd">default</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RemoveUnfilled</span><span class="pln"> drops empty ones</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RemoveOtherType</span><span class="pln"> drops </span><span class="typ">LocationAlias</span><span class="pln"> entries instead </span><span class="kwd">of</span><span class="pln"> leaving </span><span class="typ">None</span><span class="pun">.</span><span class="pln">
</span><span class="typ">ReferenceAlias</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetQuestRefAliases</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveUnfilled</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">RemoveOtherType</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"> loc aliases on akQuest</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">-</span><span class="pln">parallel by </span><span class="kwd">default</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RemoveUnfilled</span><span class="pln"> drops empty ones</span><span class="pun">;</span><span class="pln"> </span><span class="typ">RemoveOtherType</span><span class="pln"> drops </span><span class="typ">ReferenceAlias</span><span class="pln"> entries instead </span><span class="kwd">of</span><span class="pln"> leaving </span><span class="typ">None</span><span class="pun">.</span><span class="pln">
</span><span class="typ">LocationAlias</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetQuestLocAliases</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveUnfilled</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">RemoveOtherType</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 index </span><span class="kwd">of</span><span class="pln"> the first empty alias in akQuest</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"> all aliases are filled</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">GetFirstEmptyAliasIndex</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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 first empty reference alias in akQuest</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> none </span><span class="kwd">if</span><span class="pln"> all aliases are filled</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ReferenceAlias</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">GetFirstEmptyAlias</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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"> all aliases in akQuest in order</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">AliasType</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="pln"> alias type</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">Reference</span><span class="pln"> aliases 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">Location</span><span class="pln"> aliases only</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SkipUnfilled</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 return unfilled aliases. False = Return alias name even if it'</span><span class="pln">s not filled</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">GetAliasNames</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> </span><span class="typ">AliasType</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">SkipUnfilled</span><span class="pun">)</span><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 references </span><span class="kwd">of</span><span class="pln"> every reference alias in akQuest in order</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="pun">:</span><span class="pln"> </span><span class="typ">Unfilled</span><span class="pln"> alias </span><span class="pun">=</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> in returned array</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">Skip</span><span class="pln"> unfilled alias</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ConvertLocAliasToNone</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">LocationAlias</span><span class="pln"> converts to </span><span class="typ">None</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">Skip</span><span class="pln"> location aliases</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</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">ConvertLocAliasToNone</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"> then returned array is the same length as the number </span><span class="kwd">of</span><span class="pln"> aliases</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</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">ConvertLocAliasToNone</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"> then no </span><span class="typ">Nones</span><span class="pln"> returned in array</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">GetAliasReferences</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</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">True</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ConvertLocAliasToNone</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"> references whose alias name matches any entry in </span><span class="typ">Names</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">case</span><span class="pun">-</span><span class="pln">insensitive</span><span class="pun">).</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SubstringMatch</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> exact match</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> substring match</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"> include </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> empty ref aliases that match by name</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ConvertLocAliasToNone</span><span class="pun">:</span><span class="pln"> include </span><span class="typ">None</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> matching location aliases instead </span><span class="kwd">of</span><span class="pln"> skipping them</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">GetAliasRefsByNames</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</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="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">SubstringMatch</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">True</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">ConvertLocAliasToNone</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">Converts</span><span class="pln"> </span><span class="typ">ReferenceAlias</span><span class="pun">[]</span><span class="pln"> to </span><span class="typ">ObjectReference</span><span class="pun">[].</span><span class="pln"> </span><span class="typ">Set</span><span class="pln"> removeNones to drop unfilled slots</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">GetRefsFromAliasArray</span><span class="pun">(</span><span class="typ">ReferenceAlias</span><span class="pun">[]</span><span class="pln"> akAliases</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">Converts</span><span class="pln"> </span><span class="typ">ReferenceAlias</span><span class="pun">[]</span><span class="pln"> to </span><span class="typ">Actor</span><span class="pun">[].</span><span class="pln"> </span><span class="typ">Non</span><span class="pun">-</span><span class="pln">actor refs count as unfilled</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Set</span><span class="pln"> removeNones to drop unfilled slots</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">GetActorsFromAliasArray</span><span class="pun">(</span><span class="typ">ReferenceAlias</span><span class="pun">[]</span><span class="pln"> akAliases</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">Converts</span><span class="pln"> </span><span class="typ">LocationAlias</span><span class="pun">[]</span><span class="pln"> to </span><span class="typ">Location</span><span class="pun">[].</span><span class="pln"> </span><span class="typ">Set</span><span class="pln"> removeNones to drop unfilled slots</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">GetLocationsFromAliasArray</span><span class="pun">(</span><span class="typ">LocationAlias</span><span class="pun">[]</span><span class="pln"> akAliases</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> removeNones </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></pre>

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

<p>
	<br>
	FIFO Aliases: <br>
	Fifo alias functions are a system of managing aliases on a First-In-First-Out basis. Initially the system will seek to fill all empty aliases on a quest. Once all aliases are filled the system will begin overwriting the oldest alias first. The primary function here is AliasFillFifoAuto()
</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_9897_8" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Fills</span><span class="pln"> an alias on akQuest in a FIFO manner</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Automatically</span><span class="pln"> mangages timestamps so you don</span><span class="str">'</span><span class="pln">t have to worry about it</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">FifoAliasFillAuto</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</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">Allows</span><span class="pln"> you to manually overwrite an alias index </span><span class="kwd">if</span><span class="pln"> you wish</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Automatically</span><span class="pln"> updates the alias timestamp to integrate </span><span class="kwd">with</span><span class="pln"> the system</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">FifoAliasFill</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </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">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"> the index </span><span class="kwd">of</span><span class="pln"> the alias </span><span class="kwd">with</span><span class="pln"> the oldest timestamp</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</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> no alias currently has a valid tracked timestamp</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">FifoAliasGetOldestIndex</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akquest</span><span class="pun">)</span><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 reference alias </span><span class="kwd">with</span><span class="pln"> the oldest timestamp</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="str">'None'</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> no alias currently has a valid tracked timestamp</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ReferenceAlias</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FifoAliasGetOldest</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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 alias </span><span class="kwd">with</span><span class="pln"> the newest timestamp</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</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> no alias currently has a valid tracked timestamp</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">FifoAliasGetNewestIndex</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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 reference alias </span><span class="kwd">with</span><span class="pln"> the newest timestamp
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Returns</span><span class="pln"> </span><span class="str">'None'</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> no alias currently has a valid tracked timestamp</span><span class="pun">.</span><span class="pln">
</span><span class="typ">ReferenceAlias</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FifoAliasGetNewest</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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 alias to use next</span><span class="pun">:</span><span class="pln"> prefers any alias without a tracked
</span><span class="pun">;</span><span class="pln"> timestamp</span><span class="pun">,</span><span class="pln"> then falls back to the oldest tracked timestamp</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Whether</span><span class="pln"> the alias is
</span><span class="pun">;</span><span class="pln"> currently filled is not considered</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Unlike</span><span class="pln"> </span><span class="typ">FifoAliasGetOldestIndex</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">this</span><span class="pln"> always
</span><span class="pun">;</span><span class="pln"> returns a valid index as </span><span class="kwd">long</span><span class="pln"> as the quest has at least one valid alias </span><span class="pun">-</span><span class="pln"> use </span><span class="kwd">this</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> FIFO assignment</span><span class="pun">/</span><span class="pln">eviction</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">FifoAliasGetNextIndex</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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"> policy as </span><span class="typ">FifoAliasGetNextIndex</span><span class="pun">()</span><span class="pln"> but returns the alias directly</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">ReferenceAlias</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FifoAliasGetNext</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">)</span><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">Updates</span><span class="pln"> the timestamp </span><span class="kwd">of</span><span class="pln"> a FIFO alias to now</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">FifoUpdateTimestamp</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> aliasIndex</span><span class="pun">)</span><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">Manually</span><span class="pln"> clear the timestamp data on an alias</span><span class="pun">.</span><span class="pln">
</span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FifoAliasClearTimestamp</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </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">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">Clear</span><span class="pln"> a FIFO alias and timestamp info</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">FifoAliasClear</span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> akQuest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Int</span><span class="pln"> aliasIndex</span><span class="pun">)</span><span class="pln"> </span><span class="typ">Global</span><span class="pln"> </span><span class="typ">Native</span></pre>
	</div>
</div>

<p>
	<br>
	PS: If anyone knows how to actually do a 'ForceRefTo' equivalent natively then get in touch please. I'm currently doing a dispatch to a simple papyrus wrapper...
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26227</guid><pubDate>Mon, 31 Aug 2026 17:39:50 +0000</pubDate></item><item><title>Events</title><link>https://www.loverslab.com/blogs/entry/26186-events/</link><description><![CDATA[<p>
	MGF broadcasts a number of useful events. 
</p>

<p>
	 
</p>

<p>
	Game Events: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Load Order Change: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event sent whenever there's been some modification to the game's load order since the last save. Full description in the 'Load Order Monitor' section of the blog. 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_Util<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_34" 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><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">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">String</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"> _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">ModRemoved</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">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ModModified</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">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">PrevOrder</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetPreviousLoadOrder</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">CurOrder</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetCurrentLoadOrder</span><span class="pun">()</span><span class="pln">
</span><span class="typ">EndFunction</span><span class="pln">
</span></pre>

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

		<p>
			 
		</p>

		<p>
			Player Load Game Event: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					This is just a simple relay of the vanilla OnPlayerLoadGame event. It's just for convenience - saves you setting up a player alias + script to do it yourself. 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_MainPlayerAlias
				</p>

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

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_20" 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_PlayerLoadsGame"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_PlayerLoadsGame"</span><span class="pun">)</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">On_MGF_PlayerLoadsGame</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">Game</span><span class="pln"> was loaded</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Do Once Per Game Session: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sometimes you want to do something only once per game load. This fires once on the first game load. After that, for the event to fire again the game must be exited and restarted. <br>
					<br>
					See script: _MGF_MainPlayerAlias<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_22" 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_DoOncePerGameSession"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_DoOncePerGameSession"</span><span class="pun">)</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">On_MGF_DoOncePerGameSession</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="typ">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"_MGF_DoOncePerGameSession"</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Game Time Updates Begin: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Due to an odd quirk in papyrus, RegisterForUpdateGameTime() will fail silently when quest MQ101 stage is &lt; 240. Use this event to begin your GameTime updates. <br>
					<br>
					See script: _MGF_MQ101Kicker<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_28" 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">If</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="pun">;</span><span class="pln"> MQ101 is already at or greater than stage </span><span class="lit">240</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Ok</span><span class="pln"> to begin updates</span><span class="pun">.</span><span class="pln"> 
        </span><span class="typ">RegisterForSingleUpdateGameTime</span><span class="pun">(</span><span class="lit">1.0</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">RegisterForUpdateGameTime</span><span class="pun">()</span><span class="pln"> will fail silently</span><span class="pun">.</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">EndEvent</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="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"> MQ101 has changed stage to </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"> </span><span class="typ">Ok</span><span class="pln"> to being game time updates</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="pun">;</span><span class="pln"> </span><span class="typ">Won</span><span class="str">'</span><span class="pln">t </span><span class="kwd">get</span><span class="pln"> the event again but in the interest </span><span class="kwd">of</span><span class="pln"> tidyness</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">RegisterForSingleUpdateGameTime</span><span class="pun">(</span><span class="lit">1.0</span><span class="pun">)</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">OnUpdateGameTime</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"> update stuff
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Player combat state change: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Just a standard player combat state change event using spell state detection. There must be a million mods doing this (= multiple spells/scripts doing the same thing). Maybe let's just do it once and relay to any mod that needs it...<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_30" 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_PlayerCombatState"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_PlayerCombatState"</span><span class="pun">)</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">On_MGF_PlayerCombatState</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="typ">If</span><span class="pln"> numArg </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1.0</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">"Combat start"</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">Messagebox</span><span class="pun">(</span><span class="str">"Combat ended"</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>
			</div>
		</div>

		<p>
			 
		</p>

		<p>
			Player Ragdoll Event:
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					While the player is in a ragdoll state doing certain things are pretty dangerous, especially playing animations etc. You can use this event to gate your own script. MGF also includes a built in global that's automatically updated with the player's ragdoll state if you need a CK condition: _MGF_PcIsRagDolled
				</p>

				<p>
					 
				</p>

				<p>
					See Script: _MGF_UnRagdoller
				</p>

				<p>
					 
				</p>

				<p>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_32" 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_RagDollEvent"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_RagDollEvent"</span><span class="pun">)</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">On_MGF_RagDollEvent</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="typ">If</span><span class="pln"> numArg </span><span class="pun">==</span><span class="pln"> </span><span class="lit">0.0</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">"Ragdoll begin"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">ElseIf</span><span class="pln"> numArg </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1.0</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">"Ragdoll end"</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>
			</div>
		</div>

		<p>
			 
		</p>

		<p>
			Thane Event:
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					MGF sends an event whenever the player becomes Thane of a hold. There's also a built in global that's automatically updated when you become Thane and as you travel between holds: _MGF_PcIsThaneHere. <br>
					<br>
					See script: _MGF_ForkThane<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_47" 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_PlayerBecameThane"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_PlayerBecameThane"</span><span class="pun">)</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">On_MGF_PlayerBecameThane</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">The</span><span class="pln"> hold name </span><span class="kwd">with</span><span class="pln"> any whitespace removed</span><span class="pun">.</span><span class="pln"> </span><span class="typ">These</span><span class="pln"> are the same as the </span><span class="typ">HoldState</span><span class="pln"> names that </span><span class="typ">LocOps</span><span class="pun">/</span><span class="typ">LocTrack</span><span class="pln"> uses</span><span class="pun">.</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"> hold index as defined in </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">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"Player became Thane of "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> strArg </span><span class="pun">+</span><span class="pln"> </span><span class="str">" - "</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">EndEvent</span></pre>

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

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

<p>
	<br>
	Location Events:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Room Change:
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<pre id="ips_uid_5645_15" style="border-bottom: 1px solid rgb(136, 136, 136); border-top: 1px solid rgb(136, 136, 136); border-right: 1px solid rgb(136, 136, 136); border-left-color: rgb(136, 136, 136); border-image: none; border-radius: 4px; border-left-style: solid; font-size: 14px; padding: 2px; text-align: start; border-left-width: 4px !important;"><font color="#cccccc">Event fired whenever ObjRef moves between rooms in an interior cell. </font>

<font color="#d9b180">;</font><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Register</span><span style="color: rgb(235, 231, 227);"> a form </span><span style="color: rgb(204, 204, 204);">for</span><span style="color: rgb(235, 231, 227);"> reference room change events</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Registrations</span><span style="color: rgb(235, 231, 227);"> survive save </span><span style="color: rgb(217, 177, 128);">+</span><span style="color: rgb(235, 231, 227);"> reload</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Event</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">On_MGF_ActorRoomChange</span><span style="color: rgb(217, 177, 128);">(</span><span style="color: rgb(204, 204, 204);">Actor</span><span style="color: rgb(235, 231, 227);"> akActor</span><span style="color: rgb(217, 177, 128);">,</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Int</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">OldRoom</span><span style="color: rgb(217, 177, 128);">,</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Int</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">NewRoom</span><span style="color: rgb(217, 177, 128);">)</span><span style="color: rgb(235, 231, 227);">
</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> akActor</span><span style="color: rgb(217, 177, 128);">:</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">The</span><span style="color: rgb(235, 231, 227);"> actor that changed room</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">OldRoom</span><span style="color: rgb(217, 177, 128);">:</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">The</span><span style="color: rgb(235, 231, 227);"> index </span><span style="color: rgb(204, 204, 204);">of</span><span style="color: rgb(235, 231, 227);"> the room akActor came from</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">NewRoom</span><span style="color: rgb(217, 177, 128);">:</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">The</span><span style="color: rgb(235, 231, 227);"> index </span><span style="color: rgb(204, 204, 204);">of</span><span style="color: rgb(235, 231, 227);"> the room akActor is now in</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(204, 204, 204);">Function</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">RoomTrackActor</span><span style="color: rgb(217, 177, 128);">(</span><span style="color: rgb(204, 204, 204);">Form</span><span style="color: rgb(235, 231, 227);"> akForm</span><span style="color: rgb(217, 177, 128);">,</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">ObjectReference</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">ObjRef</span><span style="color: rgb(217, 177, 128);">)</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Global</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Native</span><span style="color: rgb(235, 231, 227);">

</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Unregister</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">this</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">for</span><span style="color: rgb(235, 231, 227);"> reference </span><span style="color: rgb(204, 204, 204);">for</span><span style="color: rgb(235, 231, 227);"> room change events</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(204, 204, 204);">Function</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">RoomUntrackActor</span><span style="color: rgb(217, 177, 128);">(</span><span style="color: rgb(204, 204, 204);">Form</span><span style="color: rgb(235, 231, 227);"> akForm</span><span style="color: rgb(217, 177, 128);">,</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">ObjectReference</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">ObjRef</span><span style="color: rgb(217, 177, 128);">)</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Global</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Native</span><span style="color: rgb(235, 231, 227);">

</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Untrack</span><span style="color: rgb(235, 231, 227);"> all references</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(204, 204, 204);">Function</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">RoomUntrackAll</span><span style="color: rgb(217, 177, 128);">(</span><span style="color: rgb(204, 204, 204);">Form</span><span style="color: rgb(235, 231, 227);"> akForm</span><span style="color: rgb(217, 177, 128);">)</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Global</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Native</span><span style="color: rgb(235, 231, 227);">

</span><span style="color: rgb(217, 177, 128);">;</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Is</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">this</span><span style="color: rgb(235, 231, 227);"> reference registered </span><span style="color: rgb(204, 204, 204);">for</span><span style="color: rgb(235, 231, 227);"> room change events on </span><span style="color: rgb(204, 204, 204);">this</span><span style="color: rgb(235, 231, 227);"> form</span><span style="color: rgb(217, 177, 128);">.</span><span style="color: rgb(235, 231, 227);"> 
</span><span style="color: rgb(204, 204, 204);">Bool</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Function</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">RoomIsTrackedActor</span><span style="color: rgb(217, 177, 128);">(</span><span style="color: rgb(204, 204, 204);">Form</span><span style="color: rgb(235, 231, 227);"> akForm</span><span style="color: rgb(217, 177, 128);">,</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">ObjectReference</span><span style="color: rgb(235, 231, 227);"> akRef</span><span style="color: rgb(217, 177, 128);">)</span><span style="color: rgb(235, 231, 227);"> </span><span style="color: rgb(204, 204, 204);">Global<span style="color: rgb(235, 231, 227);"> </span>Native

</span>See script: _MGF_Util

<span style="color: rgb(204, 204, 204);">Usage:</span>
</pre>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_6" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInt</span><span class="pun">()</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RoomTrackActor</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">,</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pun">)</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">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="typ">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"Actor changed room. \nActor: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akActor</span><span class="pun">.</span><span class="typ">GetDisplayName</span><span class="pun">()</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> \
										</span><span class="str">"\nNewRoom: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">NewRoom</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> \
										</span><span class="str">"\nOldRoom: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">OldRoom</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> \
										</span><span class="str">"\n\nAdjacent Rooms: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">RoomGetAdjacentRooms</span><span class="pun">(</span><span class="typ">NewRoom</span><span class="pun">))</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Cell Change: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p style="background-color:#262626; color:#bcbcbc; font-size:14px; text-align:start">
					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 style="background-color:#262626; color:#bcbcbc; font-size:14px; text-align:start">
					 
				</p>

				<p style="background-color:#262626; color:#bcbcbc; font-size:14px; text-align:start">
					See script: _MGF_Util
				</p>

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

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

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_8" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
    _MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForCellChange</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</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">On_MGF_CellChange</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">Location</span><span class="pln"> akLocation</span><span class="pun">,</span><span class="pln"> </span><span class="typ">WorldSpace</span><span class="pln"> akWorldspace</span><span class="pun">,</span><span class="pln"> bool abInterior</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Cell</span><span class="pln"> changed</span><span class="pun">.</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			<br>
			Area Change: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event fired whenever the player changes area. Area here is defined as a logical group of locations. RiverwoodRiverwoodTrader, RiverwoodSleepingGiantInn, RiverwoodAlvorsHouse &amp; the exterior area surrounding Riverwood are all part of the 'RiverwoodLocation' area as far as MGF is concerned. So moving between these locations doesn't fire an event. But as soon as you wander off far enough down the road or teleport to a new location you'll get this event. <br>
					<br>
					See script: _MGF_LocTrack<br>
					<br>
					Usage:
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_10" 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="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"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Location</span><span class="pln"> index in </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json
	</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>
			</div>
		</div>

		<p>
			 
		</p>

		<p>
			Hold Change: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event fires whenever the player moves between the 9 different holds of Skyrim. Even works out in the wilderness (Requires XCLR region patch). The holds as I've mapped them don't extend to the far reaches of the map. So you can be in the Skyrim world and also not be in any of the nine holds. <br>
					<br>
					See script: _MGF_LocTrack<br>
					<br>
					Usage:
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_12" 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="pun">;</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">HoldStateName</span><span class="pln"> as defined in </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json
	</span><span class="pun">;</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Hold</span><span class="pln"> index as defined in </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json
	</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>
			</div>
		</div>

		<p>
			 
		</p>

		<p>
			World Change: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event fires whenever the player moves between worlds. MGF defines worlds in a more human geographical fashion. <br>
					<br>
					See script: _MGF_LocTrack<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_14" 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="pun">;</span><span class="pln"> strArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">WorldStateName</span><span class="pln"> as defined in </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json
	</span><span class="pun">;</span><span class="pln"> numArg </span><span class="pun">=</span><span class="pln"> </span><span class="typ">World</span><span class="pln"> index as defined in </span><span class="typ">LocationMap</span><span class="pun">.</span><span class="pln">json
	</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>

		<p>
			 
		</p>

		<p>
			Approaching Area: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event fires when a locations center marker has been attached to a cell. Note that I don't do any filtering on the distance to the marker so that you can decide the context of the event. But you probably don't want to accept this event if you're simply exiting from a building in the area so a sensible default filter is numArg &gt;= 8000.0. This typically means that you've walked into the area. <br>
					<br>
					See script: _MGF_LocTrack<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_16" 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>
					 
				</p>
			</div>
		</div>

		<p>
			 
		</p>

		<p>
			Departing Area: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event fires when an areas center marker has been unattached from a cell. <span style="background-color:#262626; color:#bcbcbc; font-size:14px; text-align:start">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.</span>
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_LocTrack<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_18" 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>
	</div>
</div>

<p>
	 
</p>

<p>
	Follower Change Event:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Event sent whenever the player adds or removes a follower. Natively hooks into SetPlayerTeammate() and sends the event any time it's used so it should be compatible with any follow framework that uses SetPlayerTeammate (which should be most of them). 
		</p>

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

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

</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_FollowerChanged</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">
	eventName</span><span class="pun">:</span><span class="pln"> </span><span class="str">"_MGF_FollowerChanged"</span><span class="pun">.</span><span class="pln">
	strArg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> follower</span><span class="str">'</span><span class="pln">s display name</span><span class="pun">.</span><span class="pln"> 
	numArg</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">Dismissed</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">Follow</span><span class="pun">.</span><span class="pln"> 
	sender</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Reference</span><span class="pln"> ID </span><span class="kwd">of</span><span class="pln"> the follower</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">EndEvent</span></pre>

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

<p>
	 
</p>

<p>
	Collision Events:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			 
		</p>

		<p>
			Knock:
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event sent when the player collides with a physics object. Vanilla has a version of this but the exact conditions/reset are a mystery. 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_Util
				</p>

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

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_36" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForKnockOver</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</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">On_MGF_KnockOver</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="kwd">float</span><span class="pln"> afForce</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afSpeed</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afMass</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln">	akRef	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> object collided </span><span class="kwd">with</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afForce	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Physics</span><span class="pln"> impulse magnitude</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afSpeed	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Player</span><span class="str">'</span><span class="pln">s speed at moment </span><span class="kwd">of</span><span class="pln"> collision</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afMass	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Base</span><span class="pln"> object weight </span><span class="pun">(</span><span class="lit">0</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> weightless</span><span class="pun">/</span><span class="kwd">static</span><span class="pln"> objects</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">"On_MGF_KnockOver\nakRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akRef </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafForce: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afForce </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafSpeed: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afSpeed </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nWeight: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afMass</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Actor: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event sent when the player makes contact with another actor. Again vanilla has a version of this but the internals are super opaque. Note that this is the sensitive version - Event is sent immediately on any contact! You may prefer the 'persist' event. 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_Util
				</p>

				<p>
					 
				</p>

				<p>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_38" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForActorCollide</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</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">On_MGF_ActorCollide</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="kwd">float</span><span class="pln"> afImpactSpeed</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afSpeed</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afHitAngle</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afFacingAngle</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln">	akRef			</span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> actor contacted</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afSpeed			</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Player</span><span class="str">'</span><span class="pln">s speed at collision</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afImpactSpeed	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> speed directed toward the actor</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Low</span><span class="pln"> impact speed vs afSpeed </span><span class="pun">=</span><span class="pln"> glancing collision</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afHitAngle		</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Where</span><span class="pln"> on actor contact was made</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"> face</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"> back</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"> side</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afFacingAngle	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Relative</span><span class="pln"> orientation</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"> face</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">face</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"> same direction</span><span class="pun">.</span><span class="pln"> 
    
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Quick</span><span class="pln"> approximate reference</span><span class="pun">:</span><span class="pln"> 
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">HitAngle</span><span class="pln">	</span><span class="typ">FacingAngle</span><span class="pln">		</span><span class="typ">Situation</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="pun">≈-</span><span class="lit">1</span><span class="pln">			</span><span class="typ">Face</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">face collision </span><span class="pun">-</span><span class="pln"> player hit actor</span><span class="str">'</span><span class="pln">s front</span><span class="pun">,</span><span class="pln"> both facing each other
	</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="lit">1</span><span class="pln">			</span><span class="typ">Player</span><span class="pln"> backed into actor</span><span class="str">'s face - player facing away, actor facing player'</span><span class="pln">s back
	</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="lit">1</span><span class="pln">			</span><span class="typ">Back</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">back </span><span class="pun">-</span><span class="pln"> player backed into actor</span><span class="str">'</span><span class="pln">s back</span><span class="pun">,</span><span class="pln"> both facing away from each other
	</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="lit">1</span><span class="pln">			</span><span class="typ">Player</span><span class="pln"> snuck up behind </span><span class="pun">-</span><span class="pln"> hit actor</span><span class="str">'</span><span class="pln">s back</span><span class="pun">,</span><span class="pln"> both facing same way
	</span><span class="pun">;</span><span class="pln">	</span><span class="pun">≈</span><span class="lit">0</span><span class="pln">			any			</span><span class="typ">Side</span><span class="pln"> collision </span><span class="pun">—</span><span class="pln"> player clipped past them</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">"On_MGF_ActorCollide\nakRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akRef </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafImpactSpeed: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afImpactSpeed </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafHitAngle: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afHitAngle </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafFacingAngle: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afFacingAngle</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Actor Persist: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event sent when the player 'pushes' against an actor. This requires the player to continuously push into the actor for a certain amount of time before the event fires. Less sensitive than the regular actor collision event. <br>
					<br>
					See script: _MGF_Util<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_40" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForActorPersist</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</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">On_MGF_ActorPersist</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="kwd">float</span><span class="pln"> afDuration</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afHitAngle</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afFacingAngle</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln">	akRef		</span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> actor being pushed against</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afDuration	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Seconds</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> sustained contact so far</span><span class="pun">.</span><span class="pln"> 
	</span><span class="pun">;</span><span class="pln">	afHitAngle		</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Where</span><span class="pln"> on actor contact was made</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"> face</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"> back</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"> side</span><span class="pun">.</span><span class="pln"> 
    </span><span class="pun">;</span><span class="pln">	afFacingAngle	</span><span class="pun">-</span><span class="pln"> </span><span class="typ">Relative</span><span class="pln"> orientation</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"> face</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">face</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"> same direction</span><span class="pun">.</span><span class="pln"> 
    
    </span><span class="pun">;</span><span class="pln"> </span><span class="typ">Quick</span><span class="pln"> approximate reference</span><span class="pun">:</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">HitAngle</span><span class="pln">	</span><span class="typ">FacingAngle</span><span class="pln">		</span><span class="typ">Situation</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="pun">≈-</span><span class="lit">1</span><span class="pln">			</span><span class="typ">Face</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">face collision </span><span class="pun">-</span><span class="pln"> player hit actor</span><span class="str">'</span><span class="pln">s front</span><span class="pun">,</span><span class="pln"> both facing each other
	</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="lit">1</span><span class="pln">			</span><span class="typ">Player</span><span class="pln"> backed into actor</span><span class="str">'s face - player facing away, actor facing player'</span><span class="pln">s back
	</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="lit">1</span><span class="pln">			</span><span class="typ">Back</span><span class="pun">-</span><span class="pln">to</span><span class="pun">-</span><span class="pln">back </span><span class="pun">-</span><span class="pln"> player backed into actor</span><span class="str">'</span><span class="pln">s back</span><span class="pun">,</span><span class="pln"> both facing away from each other
	</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="lit">1</span><span class="pln">			</span><span class="typ">Player</span><span class="pln"> snuck up behind </span><span class="pun">-</span><span class="pln"> hit actor</span><span class="str">'</span><span class="pln">s back</span><span class="pun">,</span><span class="pln"> both facing same way
	</span><span class="pun">;</span><span class="pln">	</span><span class="pun">≈</span><span class="lit">0</span><span class="pln">			any			</span><span class="typ">Side</span><span class="pln"> collision </span><span class="pun">—</span><span class="pln"> player clipped past them</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">"On_MGF_ActorPersist: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nakRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akRef </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafDuration: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afDuration </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafHitAngle: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afHitAngle </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafFacingAngle: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afFacingAngle</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Stand On Furniture: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event fires whenever the player stands on a furniture object. Again vanilla has a version of this that fires inconsistently. <br>
					<br>
					See script: _MGF_Util<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_42" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForStandOnFurniture</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</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">On_MGF_StandOnFurniture</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="pun">;</span><span class="pln"> akRef </span><span class="pun">-</span><span class="pln"> </span><span class="typ">What</span><span class="pln"> was stood on</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">"On_MGF_StandOnFurniture\nakRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akRef</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Wall Collision: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Event sent when the player collides with a wall. No vanilla equivalent. <br>
					 
				</p>

				<p>
					See script: _MGF_Util
				</p>

				<p>
					 
				</p>

				<p>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_45" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</span><span class="pun">()</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterForWallCollide</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">)</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">On_MGF_WallCollide</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="kwd">float</span><span class="pln"> afSpeed</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afImpactSpeed</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afObjectHeight</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> aiFormType</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afNormalX</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afNormalY</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pln"> afNormalZ</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln">   akRef          	</span><span class="pun">—</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> object hit
	</span><span class="pun">;</span><span class="pln">   afSpeed        	</span><span class="pun">—</span><span class="pln"> </span><span class="typ">Raw</span><span class="pln"> player speed
	</span><span class="pun">;</span><span class="pln">   afImpactSpeed  	</span><span class="pun">—</span><span class="pln"> </span><span class="typ">Speed</span><span class="pln"> directed into the surface </span><span class="pun">(</span><span class="pln">scale </span><span class="kwd">of</span><span class="pln"> impact</span><span class="pun">)</span><span class="pln">
	</span><span class="pun">;</span><span class="pln">   afObjectHeight 	</span><span class="pun">—</span><span class="pln"> </span><span class="typ">Top</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> object relative to player height</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="lit">0.5</span><span class="pun">=</span><span class="pln">low</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">=</span><span class="pln">head height</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2.0</span><span class="pun">+=</span><span class="pln">tall wall
	</span><span class="pun">;</span><span class="pln"> 	aiFormType 		</span><span class="pun">—</span><span class="pln"> </span><span class="typ">Base</span><span class="pln"> object form type as </span><span class="kwd">int</span><span class="pln">
	</span><span class="pun">;</span><span class="pln">   afNormalX</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="typ">Surface</span><span class="pln"> normal pointing away from wall </span><span class="pun">(</span><span class="pln">invert </span><span class="kwd">for</span><span class="pln"> push direction</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">"On_MGF_WallCollide\nakRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akRef </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafSpeed: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afSpeed </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafImpactSpeed: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afImpactSpeed </span><span class="pun">+</span><span class="pln"> \
					</span><span class="str">"\nafObjectHeight: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afObjectHeight </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\naiFormType: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> aiFormType </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafNormalX: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afNormalX </span><span class="pun">+</span><span class="pln"> \
					</span><span class="str">"\nafNormalY: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afNormalY </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nafNormalZ: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> afNormalZ</span><span class="pun">)</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

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

<p>
	 
</p>

<p>
	Actor Slope Event:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Sends a mod event whenever akActor ascends/descends &gt;= Threshold
		</p>

		<p>
			 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4439_8" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Register</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">RegisterActorSlope</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">Float</span><span class="pln"> </span><span class="typ">Threshold</span><span class="pun">)</span><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="typ">Bool</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">UnRegisterActorSlope</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></pre>

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

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_4439_10" style=""><span class="pln">_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterActorSlope</span><span class="pun">(</span><span class="pln">akActor </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PlayerRef</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Threshold</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">Event</span><span class="pln"> _MGF_ActorSlopeThreshold</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"> sender </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Actor</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">Slope</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">"Actor: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> sender </span><span class="pun">+</span><span class="pln"> </span><span class="str">" slope="</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">EndEvent</span></pre>

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

<p>
	<br>
	Pregnancy Event (See also blog section 'Pregnancy Fork'): 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			These events are fired for all supported pregnancy mods no matter which one is installed. As of writing, supported mods are: <br>
			Beeing Female NG. <br>
			Fertility Mode Tweaks &amp; Fixes. <br>
			Fertility Mode Reloaded. <br>
			(But not base BF or FM)
		</p>

		<p>
			 
		</p>

		<p>
			Conception Event: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sent whenever an actor has conceived. <br>
					<br>
					See script: _MGF_ForkPregnancy<br>
					<br>
					Usage: <br>
					 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_49" 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_Preg_Conceived"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_Preg_Conceived"</span><span class="pun">)</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">On_MGF_Preg_Conceived</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">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"On_MGF_Preg_Conceived: \nMother: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nFather: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Father</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nNumBabies: "</span><span class="pln"> </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">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Labor Event: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sent whenever an actor enters 'labor'
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_ForkPregnancy
				</p>

				<p>
					 
				</p>

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

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_51" 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_Preg_LaborStarted"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_Preg_LaborStarted"</span><span class="pun">)</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">On_MGF_Preg_LaborStarted</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">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"On_MGF_Preg_LaborStarted: \nMother: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nFather: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Father</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nNumBabies: "</span><span class="pln"> </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">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Birth Event: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sent whenever an actor 'gives birth'. <br>
					<br>
					See script: _MGF_ForkPregnancy<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_53" 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_Preg_Birthed"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_Preg_Birthed"</span><span class="pun">)</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">On_MGF_Preg_Birthed</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">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"On_MGF_Preg_Birthed: \nMother: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nFather: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Father</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nNumBabies: "</span><span class="pln"> </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">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			Abort event:
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sent whenever a pregnancy is aborted. Because most mods do not transmit abort events there may be a slight delay on this event (up to 1 game hour). 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_ForkPregnancy
				</p>

				<p>
					 
				</p>

				<p>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_55" 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_Preg_Aborted"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_Preg_Aborted"</span><span class="pun">)</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">On_MGF_Preg_Aborted</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">Debug</span><span class="pun">.</span><span class="typ">Messagebox</span><span class="pun">(</span><span class="str">"On_MGF_Preg_Aborted: \nMother: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Mother</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nFather: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> _MGF_Util</span><span class="pun">.</span><span class="typ">GetFormName</span><span class="pun">(</span><span class="typ">Father</span><span class="pun">))</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

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

<p>
	 
</p>

<p>
	Crafting:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Sent whenever the player crafts something. <br>
			<br>
			See script: _MGF_Util
		</p>

		<p>
			 
		</p>

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

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9209_6" style=""><span class="typ">Event</span><span class="pln"> </span><span class="typ">OnInit</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="typ">EndEvent</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="kwd">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">CreatedItem</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> item crafted by the player</span><span class="pun">.</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"> the actual recipe used to craft </span><span class="typ">CreatedItem</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"> </span><span class="str">'CreatedItem'</span><span class="pln">s crafted</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"> keyword assocaiated </span><span class="kwd">with</span><span class="pln"> the workbench used to craft the item </span><span class="pun">(</span><span class="str">'BNAM'</span><span class="pun">).</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

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

<p>
	 
</p>

<p>
	Alias Change:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix">
		<p>
			Receive an event whenever ForceRefTo() or Clear() is called on a reference alias. Handy if you want to hook into an external mods alias. There's a 'gap' here when quests are stopped/started. But combine with PO3's RegisterForQuest() to cover yourself there. 
		</p>

		<p>
			 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix">
				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7995_7" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Registers</span><span class="pln"> akForm to receive </span><span class="typ">On_MGF_AliasChange</span><span class="pln"> whenever </span><span class="typ">ForceRefTo</span><span class="pun">()</span><span class="pln"> or </span><span class="typ">Clear</span><span class="pun">()</span><span class="pln"> is called on an alias</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">	</span><span class="typ">RegisterForAliasChange</span><span class="pun">(</span><span class="typ">Self</span><span class="pun">,</span><span class="pln"> akAlias</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_AliasChange</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"> akNewRef</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">"On_MGF_AliasChange: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nakAlias: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akAlias </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\nakNewRef: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> akNewRef</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"> </span><span class="typ">For</span><span class="pln"> full coverage </span><span class="kwd">of</span><span class="pln"> alias change events </span><span class="pun">(</span><span class="typ">Quest</span><span class="pln"> </span><span class="typ">Stop</span><span class="pun">/</span><span class="typ">Start</span><span class="pun">)</span><span class="pln">combine </span><span class="kwd">with</span><span class="pln"> PO3 papyrus extender</span><span class="str">'s '</span><span class="typ">RegisterForQuest</span><span class="str">'</span><span class="pln"> event</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">RegisterForAliasChange</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">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">)</span><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">True</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> akForm is currently registered </span><span class="kwd">for</span><span class="pln"> akAlias</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">IsRegisteredForAliasChange</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">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">)</span><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"> a prior registration </span><span class="kwd">for</span><span class="pln"> the same </span><span class="pun">(</span><span class="pln">akAlias</span><span class="pun">,</span><span class="pln"> akForm</span><span class="pun">)</span><span class="pln"> pair</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">UnregisterForAliasChange</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">ReferenceAlias</span><span class="pln"> akAlias</span><span class="pun">)</span><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"> akForm from every alias it</span><span class="str">'</span><span class="pln">s currently registered against</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="kwd">true</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> anything was actually removed</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">UnregisterAllAliasChanges</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></pre>

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

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

<p>
	 
</p>

<p>
	Reference Load: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Register an ObjectReference for load/unload and/or CellAttach/CellDetach events without having to populate an alias with it. This is intended for lightweight, temporary, or sporadic tracking of references — not as a replacement for long-lived quest aliases. If you need to permanently monitor a fixed set of references for the lifetime of a quest, aliases are generally still the better choice. Unlike aliases there is nothing in here keeping your references 'alive' (persistent). 
		</p>

		<p>
			 
		</p>

		<p>
			Event names are automatically prefixed with "_MGF_RefLoad_". Dual event name registrations so you can decide if you want to handle both Load and Unload event separately or handle both via a single event. Empty strings are ignored (Eg: If you provide only a LoadEventName but no UnloadEventName then you'll only get load events &amp; vice versa). 
		</p>

		<p>
			 
		</p>

		<p>
			Multiple mods can register the same ref. Multiple references can be registered to the same event - You could register both Ulfberth and Adrianne to "_MGF_RefLoad_Warmaidens" and you'll get events for both refs with the one event handle. This is also a reason to keep your event handle unique! In this example it would probably be better to register your event as "_MGF_RefLoad_MyMod_Warmaidens" to avoid collisions with other registrations. 
		</p>

		<p>
			 
		</p>

		<p>
			Parameters:<br>
			 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_70" style=""><span class="pln">akRef           </span><span class="pun">-</span><span class="pln"> </span><span class="typ">ObjectReference</span><span class="pln"> to track
</span><span class="typ">LoadEventName</span><span class="pln">   </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Event</span><span class="pln"> suffix </span><span class="kwd">for</span><span class="pln"> the </span><span class="str">"entered"</span><span class="pln"> transition </span><span class="pun">(</span><span class="typ">Load</span><span class="pun">,</span><span class="pln"> or </span><span class="typ">CellAttach</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">TrackMode</span><span class="pln"> selects it</span><span class="pun">).</span><span class="pln">
</span><span class="typ">UnloadEventName</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Event</span><span class="pln"> suffix </span><span class="kwd">for</span><span class="pln"> the </span><span class="str">"left"</span><span class="pln"> transition </span><span class="pun">(</span><span class="typ">Unload</span><span class="pun">,</span><span class="pln"> or </span><span class="typ">CellDetach</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> </span><span class="typ">TrackMode</span><span class="pln"> selects it</span><span class="pun">).</span><span class="pln">
</span><span class="typ">TrackMode</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">Load</span><span class="pun">/</span><span class="typ">Unload</span><span class="pln"> </span><span class="pun">(</span><span class="lit">3D</span><span class="pln"> loaded</span><span class="pun">)</span><span class="pln"> events only </span><span class="pun">[</span><span class="kwd">default</span><span class="pun">].</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> ref is guaranteed to be fully loaded </span><span class="pun">-</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Get3D</span><span class="pun">(),</span><span class="pln"> position</span><span class="pun">,</span><span class="pln"> etc</span><span class="pun">.</span><span class="pln"> all valid</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">CellAttach</span><span class="pun">/</span><span class="typ">Detach</span><span class="pln"> events only</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Fires</span><span class="pln"> earlier than </span><span class="typ">Load</span><span class="pun">/</span><span class="typ">Unload</span><span class="pun">,</span><span class="pln"> but the ref</span><span class="str">'</span><span class="pln">s </span><span class="lit">3D</span><span class="pln"> may not exist yet at that point 
						don</span><span class="str">'</span><span class="pln">t rely on </span><span class="typ">Get3D</span><span class="pun">()/</span><span class="pln">position</span><span class="pun">/</span><span class="pln">animation state here</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">Both</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Same</span><span class="pln"> callback fires </span><span class="kwd">for</span><span class="pln"> all four transitions</span><span class="pun">;</span><span class="pln"> use strArg to tell them apart</span><span class="pun">.</span><span class="pln"> 
                  		I</span><span class="str">'m not sure why you would want this but the option is there. </span></pre>

		<p>
			 
		</p>

		<p>
			Event payload: 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_72" style=""><span class="pln">eventName</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Your</span><span class="pln"> registered event name</span><span class="pun">.</span><span class="pln"> 
strArg</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Event</span><span class="pln"> type </span><span class="pun">-</span><span class="pln"> </span><span class="str">"Load"</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="str">"Unload"</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="str">"CellAttach"</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="str">"CellDetach"</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="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Unload</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">CellDetach</span><span class="pun">.</span><span class="pln"> </span><span class="lit">1.0</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Load</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">CellAttach</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"> reference you registered</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Theoretically</span><span class="pln"> CAN BE NONE </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Unload</span><span class="pun">/</span><span class="typ">CellDetach</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> non</span><span class="pun">-</span><span class="pln">persistent refs</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">Though</span><span class="pln"> I have not yet seen that behavior</span><span class="pun">.</span><span class="pln"> </span></pre>

		<p>
			 
		</p>

		<p>
			 
		</p>

		<p>
			See script: _MGF_Util<br>
			<br>
			Usage (dual event handler): 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_74" style=""><span class="typ">Function</span><span class="pln"> </span><span class="typ">SomeFunction</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_RefLoad_MyMod_AdrianneLoad"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_RefLoad_MyMod_AdrianneLoad"</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_RefLoad_MyMod_AdrianneUnload"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_RefLoad_MyMod_AdrianneUnload"</span><span class="pun">)</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterRefLoadEvents</span><span class="pun">(</span><span class="typ">AdrianneRef</span><span class="pun">,</span><span class="pln"> </span><span class="str">"MyMod_AdrianneLoad"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"MyMod_AdrianneUnload"</span><span class="pun">)</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_RefLoad_MyMod_AdrianneLoad</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="typ">ObjectReference</span><span class="pln"> </span><span class="typ">AdrianneRef</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> sender as </span><span class="typ">ObjectReference</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Adrianne</span><span class="pln"> has loaded
</span><span class="typ">EndEvent</span><span class="pln">
		
</span><span class="typ">Event</span><span class="pln"> </span><span class="typ">On_MGF_RefLoad_MyMod_AdrianneUnload</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">Adrianne</span><span class="pln"> has unloaded </span><span class="pun">-</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">-</span><span class="pln">check sender before using it</span><span class="pun">,</span><span class="pln"> it can be </span><span class="typ">None</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> sender
		</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">AdrianneRef</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> sender as </span><span class="typ">ObjectReference</span><span class="pln">
	</span><span class="typ">EndIf</span><span class="pln">
</span><span class="typ">EndEvent</span></pre>

		<p>
			 
		</p>

		<p>
			Usage (single event handler)
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_76" style=""><span class="typ">Function</span><span class="pln"> </span><span class="typ">SomeFunction</span><span class="pun">()</span><span class="pln">
	</span><span class="typ">RegisterForModEvent</span><span class="pun">(</span><span class="str">"_MGF_RefLoad_MyMod_SomeContainer"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_RefLoad_MyMod_SomeContainer"</span><span class="pun">)</span><span class="pln">
	_MGF_Util</span><span class="pun">.</span><span class="typ">RegisterRefLoadEvents</span><span class="pun">(</span><span class="typ">SomeContainerRef</span><span class="pun">,</span><span class="pln"> </span><span class="str">"MyMod_SomeContainer"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"MyMod_SomeContainer"</span><span class="pun">)</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_RefLoad_MyMod_SomeContainer</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="typ">ObjectReference</span><span class="pln"> </span><span class="typ">SomeContainerRef</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> sender as </span><span class="typ">ObjectReference</span><span class="pln">
	</span><span class="typ">If</span><span class="pln"> numArg </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">SomeContainerRef</span><span class="pln"> has unloaded </span><span class="pun">-</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">-</span><span class="pln">check sender before using it
	</span><span class="typ">ElseIf</span><span class="pln"> numArg </span><span class="pun">==</span><span class="pln"> </span><span class="lit">1.0</span><span class="pln">
	</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SomeContainerRef</span><span class="pln"> has loaded
</span><span class="typ">EndIf</span><span class="pln">
		</span><span class="typ">EndEvent</span></pre>

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

<p>
	 
</p>

<p>
	Actors Meet Event:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			This event fires whenever two Npcs get close enough to each other. This is an Npc &lt;-&gt; Npc interaction (opportunity) event. 
		</p>

		<p>
			 
		</p>

		<p>
			Npcs that are dead, disabled, in combat or in scenes are filtered. There is a built in cooldown to greetings between Npcs. There is a longer cooldown on greetings between the same Npc pair. Creatures are NOT filtered. Use the MeetingType parameter if you require a particular pairing. In the case of MeetingType = 1 (Npc &lt;-&gt; Creature), the actors are sorted internally. Actor A1 is always the Npc and Actor A2 is always the creature. <br>
			<br>
			See script: _MGF_Util
		</p>

		<p>
			 
		</p>

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

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_78" 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_ActorsMeet"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_ActorsMeet"</span><span class="pun">)</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">On_MGF_ActorsMeet</span><span class="pun">(</span><span class="typ">Int</span><span class="pln"> </span><span class="typ">MeetingType</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> A1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Actor</span><span class="pln"> A2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">IsStationary1</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">IsStationary2</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">NpcDistance</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Float</span><span class="pln"> </span><span class="typ">PlayerDistance</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">NpcsAreFacing</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">PlayerHasLOS</span><span class="pun">)</span><span class="pln">
	</span><span class="typ">MeetingType</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">Npc</span><span class="pln"> </span><span class="pun">&lt;-&gt;</span><span class="pln"> </span><span class="typ">Npc</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">Npc</span><span class="pln"> </span><span class="pun">&lt;-&gt;</span><span class="pln"> </span><span class="typ">Creature</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"> </span><span class="pun">&lt;-&gt;</span><span class="pln"> </span><span class="typ">Creature</span><span class="pun">.</span><span class="pln"> 
	A1 </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Actor1</span><span class="pun">.</span><span class="pln"> 
	A2 </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Actor2</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">IsStationary1</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"> </span><span class="typ">Actor</span><span class="pln"> A1 is not moving</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">IsStationary2</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"> </span><span class="typ">Actor</span><span class="pln"> A2 is not moving</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">NpcDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> distance between the two </span><span class="typ">Npcs</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">PlayerDistance</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> distance between the player and </span><span class="typ">Actor1</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Just</span><span class="pln"> to give you an idea </span><span class="kwd">of</span><span class="pln"> how far away</span><span class="pun">.</span><span class="pln">
	</span><span class="typ">NpcsAreFacing</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Whether</span><span class="pln"> or not the two </span><span class="typ">Npcs</span><span class="pln"> are roughly facing each other</span><span class="pun">.</span><span class="pln"> 
	</span><span class="typ">PlayerHasLOS</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Player</span><span class="pln"> has line </span><span class="kwd">of</span><span class="pln"> sight to </span><span class="typ">Actor1</span><span class="pun">.</span><span class="pln"> 
</span><span class="typ">EndEvent</span></pre>

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

<p>
	 
</p>

<p>
	Keyword: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Monitor keywords either equipped or in an actor's inventory. 
		</p>

		<p>
			<br>
			akActor - Actor to monitor. Primarily intended for the player character but any unique actor can be registered (but no guarantees of reliability due to persistence).<br>
			akGlobal - A global variable you provide that the function will use to update with a count.<br>
			Keyword[] - Array of keywords to monitor for. <br>
			EquippedOnly - True: Only equipped items factor towards count. False: Any item in inventory matching keywords factor towards count.
		</p>

		<p>
			 
		</p>

		<p>
			FYI, Mcgufin comes with two working example uses of this: <br>
			1 - Global _MGF_PcDdCount_One keeps count of the number of equipped devious devices on the player. <br>
			2 - Global _MGF_PcInvCountBodySlot keeps count of the number of armor items in the player's inventory with either the ClothingBody or ArmorCuirass keywords.<br>
			One registration per global variable. If you call this function again on the same global it will update the registration with the new parameters. 
		</p>

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

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6718_10" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Register</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">RegisterActorWithKeywords</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">GlobalVariable</span><span class="pln"> akGlobal</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">EquippedOnly</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">Unregister</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">UnregisterActorWithKeywords</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">GlobalVariable</span><span class="pln"> akGlobal</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>
	Global Mirror: 
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			Mirror one global variable to another. Makes a global from an external mod be indirectly referenceable inside your mod for CK conditions etc. Circular mirrors are not permitted. <br>
			SendEvent should probably be set to false if the source variable changes rapidly. You don't want to get swamped in events. <br>
			<br>
			IMPORTANT: Make sure you get akSource and akDest correct. You don't want to be messing up other people's mod!
		</p>

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

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6718_18" style=""><span class="pun">;</span><span class="pln"> </span><span class="typ">Register</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akSource</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> global you want to mirror</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akDest</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> global that mirrors akSource</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">SendEvent</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="pln"> then MGF will send a standard mod event when the global changes value</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="kwd">false</span><span class="pln"> then the global will be mirrored but mod events won</span><span class="str">'</span><span class="pln">t be sent</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">MirrorGlobal</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pln"> akSource</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> akDest</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> sendEvent </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">Unregister</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">UnmirrorGlobal</span><span class="pun">(</span><span class="typ">GlobalVariable</span><span class="pln"> akSource</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GlobalVariable</span><span class="pln"> akDest</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: 
		</p>

		<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_6718_20" style=""><span class="pln">_MGF_Util</span><span class="pun">.</span><span class="typ">MirrorGlobal</span><span class="pun">(</span><span class="pln">_BIS_PlayerDirtiness</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MyGlobal</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">Event</span><span class="pln"> _MGF_GlobalChanged__BIS_PlayerDirtiness</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">EventName</span><span class="pun">:</span><span class="pln"> </span><span class="str">"_MGF_GlobalChanged_"</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> </span><span class="typ">EditorID</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> akSource global variable</span><span class="pun">.</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"> </span><span class="kwd">new</span><span class="pln"> value </span><span class="kwd">of</span><span class="pln"> the global variable</span><span class="pun">.</span><span class="pln"> 
	</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"> source </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="pun">(</span><span class="pln">akSource</span><span class="pun">)</span><span class="pln">

	sender as </span><span class="typ">GlobalVariable</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> akSource
	</span><span class="typ">If</span><span class="pln"> numArg </span><span class="pun">&gt;=</span><span class="pln"> </span><span class="lit">0.8</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">"Player is very smelly"</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>
	</div>
</div>

<p>
	 
</p>

<p>
	Service Events:
</p>

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

	<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
		<p>
			_MGF_PAE_State_Begin Event: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sent when the player enters a 'service' state. <br>
					 
				</p>

				<p>
					See script: _MGF_PlayerAnimEventsAlias<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_81" 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_PAE_State_Begin"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_PAE_State_Begin"</span><span class="pun">)</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">On_MGF_PAE_State_Begin</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"> the type </span><span class="kwd">of</span><span class="pln"> service</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">"_MGF_PAE_State_Begin: "</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">EndEvent</span></pre>

				<p>
					 
				</p>

				<p>
					Possible service states: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_83" style=""><span class="str">"Empty"</span><span class="pln">
</span><span class="str">"Tray"</span><span class="pln">
</span><span class="str">"ReturnTray"</span><span class="pln">
</span><span class="str">"WaterBucketFill"</span><span class="pln">
</span><span class="str">"WaterBucketPour"</span><span class="pln">
</span><span class="str">"WaterBucket"</span><span class="pln">
</span><span class="str">"DirtyWaterBucket"</span><span class="pln">
</span><span class="str">"CumBucket"</span><span class="pln">
</span><span class="str">"CumBucketHalf"</span><span class="pln">
</span><span class="str">"PoseHandsBehindBack"</span><span class="pln">
</span><span class="str">"PoseHandAboveHead"</span><span class="pln">
</span><span class="str">"PoseOnAllFours"</span><span class="pln">
</span><span class="str">"PlayDrum"</span><span class="pln">
</span><span class="str">"PlayLute"</span><span class="pln">
</span><span class="str">"PlayFlute"</span></pre>

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

		<p>
			 
		</p>

		<p>
			On_MGF_PAE_State_End:
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Sent when the player exits a 'service state'. 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_PlayerAnimEventsAlias<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_85" 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_PAE_State_End"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_PAE_State_End"</span><span class="pun">)</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">On_MGF_PAE_State_End</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">The</span><span class="pln"> service the player stopped doing</span><span class="pun">.</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">Whether</span><span class="pln"> it ended normally or not</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">Normal</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">Bad</span><span class="pln"> exit</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Dropped</span><span class="pln"> tray </span><span class="pun">/</span><span class="pln"> bucket etc</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">"_MGF_PAE_State_End: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> strArg </span><span class="pun">+</span><span class="pln"> </span><span class="str">" - "</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">EndEvent</span></pre>

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

		<p>
			 
		</p>

		<p>
			_MGF_PAE_EmptyBucket: 
		</p>

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

			<div class="ipsSpoiler_contents ipsClearfix" data-gramm="false">
				<p>
					Player emptied the contents of the bucket they were carrying. 
				</p>

				<p>
					 
				</p>

				<p>
					See script: _MGF_PlayerAnimEventsAlias<br>
					<br>
					Usage: 
				</p>

				<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_7878_87" 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_PAE_EmptyBucket"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"On_MGF_PAE_EmptyBucket"</span><span class="pun">)</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">On_MGF_PAE_EmptyBucket</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">The</span><span class="pln"> service state that</span><span class="str">'</span><span class="pln">s ending</span><span class="pun">.</span><span class="pln"> </span><span class="typ">You</span><span class="pln"> can determine the bucket being emptied by </span><span class="kwd">this</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">"_MGF_PAE_EmptyBucket: "</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">EndEvent</span></pre>

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

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

<p>
	 
</p>

<p>
	More....
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">26186</guid><pubDate>Fri, 21 Aug 2026 10:01:50 +0000</pubDate></item><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_1008_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"> 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="pun">;</span><span class="pln"> </span><span class="typ">RemoveNones</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">Removes</span><span class="pln"> any resultant </span><span class="str">'Nones'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Either</span><span class="pln"> forms that were none to begin </span><span class="kwd">with</span><span class="pln"> or that don</span><span class="str">'</span><span class="pln">t survive the cast</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">Doesn</span><span class="str">'t remove '</span><span class="typ">Nones</span><span class="str">'</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Also</span><span class="pln"> replaces disabled</span><span class="pun">/</span><span class="pln">dead actors</span><span class="pun">/</span><span class="pln">refs </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">None</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">if</span><span class="pln"> those options are enabled</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"> preserves the array length </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Intended</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> use </span><span class="kwd">with</span><span class="pln"> parallel arrays</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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">Bool</span><span class="pln"> </span><span class="typ">RemoveNones</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">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_1008_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">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="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRefPluck</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">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">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorPluck</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">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">ActorBase</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayActorBasePluck</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">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">Faction</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFactionPluck</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">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">Weapon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayWeaponPluck</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">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">Armor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorPluck</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">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">ArmorAddon</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayArmorAddonPluck</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">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">Spell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArraySpellPluck</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">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">MagicEffect</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMagicEffectPluck</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">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">Enchantment</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayEnchantmentPluck</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">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">Potion</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPotionPluck</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">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">Ingredient</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayIngredientPluck</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">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">Keyword</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayKeywordPluck</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">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">Location</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayLocationPluck</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">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">GlobalVariable</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayGlobalPluck</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">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">Book</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBookPluck</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">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">MiscObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayMiscObjectPluck</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">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">Ammo</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayAmmoPluck</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">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">Race</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayRacePluck</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">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">Quest</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayQuestPluck</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">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">Perk</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayPerkPluck</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">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">Cell</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCellPluck</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">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">ConstructibleObject</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayCobjPluck</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">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">FormList</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayFormListPluck</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">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_1008_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">Regular</span><span class="pln"> </span><span class="typ">Find</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Vanila</span><span class="pln"> papyrus </span><span class="typ">Find</span><span class="pln"> on primitives </span><span class="pun">(</span><span class="pln">bool</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">float</span><span class="pun">,</span><span class="pln"> string</span><span class="pun">,</span><span class="pln"> form</span><span class="pun">)</span><span class="pln"> cause log spam when
</span><span class="pun">;</span><span class="pln"> used on empty arrays</span><span class="pun">.</span><span class="pln"> </span><span class="typ">These</span><span class="pln"> don</span><span class="str">'</span><span class="pln">t which is why they exist </span><span class="pun">(</span><span class="typ">Also</span><span class="pln"> purely just </span><span class="kwd">for</span><span class="pln"> consistency</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"> match 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="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayBoolFind</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">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">ArrayIntFind</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">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">ArrayFloatFind</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">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">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="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ArrayStringFind</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">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">ArrayFormFind</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">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">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">String</span><span class="pln"> matching is </span><span class="kwd">case</span><span class="pln"> insensitive</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">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">FindLast</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_7319_6" style=""><span class="pun">;========================================================================================</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Find</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="typ">Filter</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">Actors</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"> 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">Filters</span><span class="pln"> the provided array </span><span class="kwd">of</span><span class="pln"> actors based on the provided parameters</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akActors</span><span class="pun">:</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> array </span><span class="kwd">of</span><span class="pln"> actors to be filtered</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="pln"> arrange returned actors by distance to the player </span><span class="pun">(</span><span class="pln">shortest to longest</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"> randomly</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">Max</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">Unlimited</span><span class="pun">.</span><span class="pln">
</span><span class="pun">;</span><span class="pln"> akFactions</span><span class="pun">;</span><span class="pln"> </span><span class="typ">The</span><span class="pln"> array </span><span class="kwd">of</span><span class="pln"> factions to filter </span><span class="kwd">with</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="kwd">false</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> actors in at least one </span><span class="kwd">of</span><span class="pln"> the factions</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 NOT in any </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">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">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">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">Creatures</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">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">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">Alive</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">Dead</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">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="typ">Actor</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">FilterActors</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">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"> akFactions</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"> filterHostileToPlayer </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"> filterCombatWithPlayer </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">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">If</span><span class="pln"> the actor exists</span><span class="pun">,</span><span class="pln"> isn</span><span class="str">'t disabled &amp; isn'</span><span class="pln">t dead then returns the actor</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> not then returns none</span><span class="pun">.</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">ValidateActor</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="typ">Removes</span><span class="pln"> any actors that are none</span><span class="pun">,</span><span class="pln"> disabled or dead from the input 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">ValidateActors</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="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">Object</span><span class="pln"> </span><span class="typ">References</span><span class="pln"> </span><span class="pun">--</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">Find</span><span class="pln"> all object references at </span><span class="kwd">this</span><span class="pln"> location whose base object matches any form in akForms</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akLoc </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Where</span><span class="pln"> to search</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> akForms </span><span class="pun">-</span><span class="pln"> A list </span><span class="kwd">of</span><span class="pln"> forms to match</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">IncludeChildLocs</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">Only</span><span class="pln"> objrefs from exactly akLoc only</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">Also</span><span class="pln"> check any sublocation</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">IncludeDisabled</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">Don</span><span class="str">'</span><span class="pln">t include disabled reference</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">References</span><span class="pln"> can be enabled or disabled</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">If</span><span class="pln"> checking a location that is unloaded then only persistent reference will be returned</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">FindAllObjRefsLikeAtLoc</span><span class="pun">(</span><span class="typ">Location</span><span class="pln"> akLoc</span><span class="pun">,</span><span class="pln"> </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">IncludeChildLocs</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="pun">)</span><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">If</span><span class="pln"> the reference exists</span><span class="pun">,</span><span class="pln"> isn</span><span class="str">'</span><span class="pln">t disabled or dead </span><span class="pun">(</span><span class="pln">actors only</span><span class="pun">),</span><span class="pln"> returns the actor</span><span class="pun">.</span><span class="pln"> </span><span class="typ">If</span><span class="pln"> not then returns none</span><span class="pun">.</span><span class="pln">
</span><span class="typ">ObjectReference</span><span class="pln"> </span><span class="typ">Function</span><span class="pln"> </span><span class="typ">ValidateRef</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">Removes</span><span class="pln"> any refs that are none</span><span class="pun">,</span><span class="pln"> disabled or dead </span><span class="pun">(</span><span class="pln">actors only</span><span class="pun">)</span><span class="pln"> from the input array</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">ValidateRefs</span><span class="pun">(</span><span class="typ">ObjectReference</span><span class="pun">[]</span><span class="pln"> akRefs</span><span class="pun">)</span><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">Forms</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Generic</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"> 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="pun">--</span><span class="pln"> </span><span class="typ">Armor</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"> 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"> \
								</span><span class="typ">Bool</span><span class="pln"> 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="pun">--</span><span class="pln"> </span><span class="typ">Locations</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"> 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><span class="pun">;</span><span class="pln"> </span><span class="pun">--</span><span class="pln"> </span><span class="typ">Food</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 list </span><span class="kwd">of</span><span class="pln"> food items that have </span><span class="str">'consume sound'</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> as any </span><span class="kwd">of</span><span class="pln"> </span><span class="str">'ConsumptionSounds'</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="str">'Potion'</span><span class="pln"> must have it</span><span class="str">'s '</span><span class="typ">Food</span><span class="pln"> flag</span><span class="str">'</span><span class="pln"> </span><span class="kwd">set</span><span class="pln"> to first be considered as a food item and not a potion</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">ConsumptionSounds</span><span class="pun">:</span><span class="pln"> A list </span><span class="kwd">of</span><span class="pln"> sounds the food must use to be returned</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"> forms from the listed 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="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Return</span><span class="pln"> only forms from </span><span class="typ">FilterMods</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 forms from mods that are NOT 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">IncludeNull</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">Include</span><span class="pln"> food items that have no consumption sound </span><span class="kwd">set</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 include items without a consumption sound </span><span class="kwd">set</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">GetFoodItems</span><span class="pun">(</span><span class="typ">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ConsumptionSounds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">IncludeNull</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">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">GetFoodItems</span><span class="pln"> but instead adds all found items to akList</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">Does</span><span class="pln"> not clear the list first </span><span class="pun">(</span><span class="typ">Results</span><span class="pln"> are 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">AddFoodItemsToList</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">Form</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">ConsumptionSounds</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">IncludeNull</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">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">Actor</span><span class="pln"> </span><span class="typ">Skeleton</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"> any nodes matching any string in </span><span class="typ">NodeNames</span><span class="pun">.</span><span class="pln"> 
</span><span class="pun">;</span><span class="pln"> </span><span class="typ">MatchSubstring</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"> exact matches 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"> partial matches</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">FindNodesWithNames</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">String</span><span class="pun">[]</span><span class="pln"> </span><span class="typ">NodeNames</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Bool</span><span class="pln"> </span><span class="typ">MatchSubstring</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"> a string list </span><span class="kwd">of</span><span class="pln"> all nodes in akActor</span><span class="str">'</span><span class="pln">s skeleton</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">GetAllNodeNames</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></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>
