<?xml version="1.0"?>
<rss version="2.0"><channel><title>Discussion Latest Topics</title><link>https://www.loverslab.com/forum/659-discussion/</link><description>Discussion Latest Topics</description><language>en</language><item><title>[Template] Perform action based on target's race</title><link>https://www.loverslab.com/topic/257349-template-perform-action-based-on-targets-race/</link><description><![CDATA[<pre class="ipsCode">set $actor_race resultfrom actor_race $system.self ""

if $actor_race &amp;= "High Elf"     [Altmer]
if $actor_race &amp;= "Argonian"     [Argonian]
if $actor_race &amp;= "Wood Elf"     [Bosmer]
if $actor_race &amp;= "Breton"       [Breton]
if $actor_race &amp;= "Dark Elf"     [Dunmer]
if $actor_race &amp;= "Imperial"     [Imperial]
if $actor_race &amp;= "Khajiit"      [Khajiit]
if $actor_race &amp;= "Nord"         [Nord]
if $actor_race &amp;= "Orc"          [Orsimer]
if $actor_race &amp;= "Redguard"     [Redguard]

msg_console $"{$system.currentScriptName}: unhandled race {$actor_race}"
goto [end]

[Altmer]
; do Altmer thing
goto [end] 
[Argonian]
; do Argonian thing
goto [end] 
[Bosmer]
; do Bosmer thing
goto [end]
[Breton]
; do Breton thing
goto [end]
[Dunmer]
; do Dunmer thing
goto [end]
[Imperial]
; do Imperial thing
goto [end]
[Khajiit]
; do Khajiit thing
goto [end]
[Nord]
; do Nord thing
goto [end]
[Orsimer]
; do Orsimer thing
goto [end]
[Redguard]
; do Redguard thing

[end]</pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">257349</guid><pubDate>Sat, 04 Oct 2025 11:25:36 +0000</pubDate></item><item><title>NFF Interactivity</title><link>https://www.loverslab.com/topic/262235-nff-interactivity/</link><description><![CDATA[<p>
	Just a couple of scripts I wrote today to test this mod out and to play around with Nether's Follower Framework (NFF) integration. I added new items for each to SLTR Core and used a Timer Based trigger.  If it's not too frequent (say every 60 mins with a 25% chance) then it's more immersive than you'd think.
</p>
<p>
<a class="ipsAttachLink" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=2510511&amp;key=375dfed3c5c45c67347eb444577a4b61" data-fileExt='zip' data-fileid='2510511' data-filekey='375dfed3c5c45c67347eb444577a4b61'>NFF Followers.zip</a></p>]]></description><guid isPermaLink="false">262235</guid><pubDate>Mon, 26 Jan 2026 02:20:32 +0000</pubDate></item><item><title>Autonomous Sex Framework (ASF) Integration</title><link>https://www.loverslab.com/topic/262325-autonomous-sex-framework-asf-integration/</link><description><![CDATA[<p>
	ASF - 
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="507821" data-embedcontent="" data-embedid="embed3091551980" src="https://www.loverslab.com/files/file/42977-asf-autonomous-sex-framework/?do=embed" style="height:503px;max-width:500px;"></iframe>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Among other things, when ASF determines the player, in particular, should be accosted, a popup will open, with 'Accept', 'Refuse', 'Cancel' as options by default with 'Acquiesce' and 'Decline' as optional choices you can enable in the MCM. Aside from having the choice of 'Accept' or 'Acquiesce' lead to a scene involving the requestor, by itself ASF doesn't do anything else. But what it does do is send a mod event out containing which choice the player made, whether they consented to have sex or not, and the requesting Actor.
</p>

<p>
	 
</p>

<p>
	So I added a new trigger, along with a new SLTriggers Redux MCM tab, Adult General, and in it have added the new 'ASF (Autonomous Sex Framework)' event option. You then have the filters you would expect and the option to run a trigger. Here's the MCM:
</p>

<p>
	<img alt="image.thumb.png.18ebc3d90a5827b7a55dd663499ec8a9.png" data-ratio="48.33" width="1920" data-fileid="2511842" src="https://www.loverslab.com/uploads/monthly_2026_01/image.thumb.png.18ebc3d90a5827b7a55dd663499ec8a9.png" />
</p>

<p>
	 
</p>

<p>
	And here is the ASFHandleRefusal.sltscript, which will move player gold to the requestor, with the amount determined by the requestor level:
</p>

<p>
	 
</p>

<pre style="border-color:rgba(84,84,84,0.15);border-style:solid;border-width:0px 0px 0px 4px;color:#bcbcbc;font-size:14px;padding:15px;">msg_console "ASFHandleRefusal start"

set $rname resultfrom actor_name $request.adult.asf.requestor
set $rlvl resultfrom actor_state $request.adult.asf.requestor "GetLevel"
set $steal resultfrom item_getcount $system.player $system.forms.gold
set $rlvl resultfrom rnd_int 1 $rlvl
set $steal $steal * $rlvl
set $steal $steal / 100
msg_notify $"{rname} takes {steal} gold since you refused them."
item_remove $system.player $system.forms.gold $steal false $request.adult.asf.requestor

msg_console "ASFHandleRefusal done"</pre>

<p>
	 
</p>

<p>
	Get it while it's hot. <span><img alt=":)" data-emoticon="" src="https://static.loverslab.com/resources/emoticons/smile.png" title=":)" /></span>
</p>
]]></description><guid isPermaLink="false">262325</guid><pubDate>Wed, 28 Jan 2026 18:04:46 +0000</pubDate></item><item><title>Toxic Relationship</title><link>https://www.loverslab.com/topic/262305-toxic-relationship/</link><description><![CDATA[<p>
	Been studying the code in GitHub and it's very well done. Totally backing this mod, cheers to hextun! Yes I'm completely mental with these two attached scripts but they were fun to write and playtest. This would be for a RP where the PC has a "toxic" relationship.
</p>

<p>
	 
</p>

<p>
	<strong>Drunk Boyfriend</strong>: If a male actor with relationship rank of 3 or greater is nearby he will rape the player.
</p>

<p>
	<strong>Disgusted Girlfriend:</strong> Taunts the boyfriend with random messages (e.g., "You're not done yet?"). Feel free to add your own. <span><img alt=":)" data-emoticon="" src="https://www.loverslab.com/resources/emoticons/smile.png" title=":)" /></span>
</p>

<p>
	 
</p>

<p>
	I tested with various follower mods. Boyfriend script should be configured as an event on a timer. Girlfriend can be on a SL Begin, End, Orgasm, or Separate Orgasm doesn't matter. There was a funny mod in FO4 called something like "Bad Boyfriend" or Harassment (?) that gave me the idea.
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink" data-fileext="zip" data-fileid="2511615" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=2511615&amp;key=a5b8aec82106a741f16ebf7c09975856" rel="">Toxic Relationship.zip</a>
</p>
]]></description><guid isPermaLink="false">262305</guid><pubDate>Wed, 28 Jan 2026 03:37:01 +0000</pubDate></item><item><title>SLTScript Documentation</title><link>https://www.loverslab.com/topic/262015-sltscript-documentation/</link><description><![CDATA[<p>
	The Wiki: <a href="https://github.com/sltriggersredux/sltriggersredux/wiki" rel="external nofollow">https://github.com/sltriggersredux/sltriggersredux/wiki</a>
</p>

<p>
	 
</p>

<p>
	SLTScript Function Library: <a href="https://github.com/sltriggersredux/sltriggersredux/wiki/Function-Libraries" rel="external nofollow">https://github.com/sltriggersredux/sltriggersredux/wiki/Function-Libraries</a>
</p>

<p>
	 
</p>

<p>
	SLTScript Scripting: <a href="https://github.com/sltriggersredux/sltriggersredux/wiki/Scripts" rel="external nofollow">https://github.com/sltriggersredux/sltriggersredux/wiki/Scripts</a>
</p>

<p>
	 
</p>

<p>
	A copy is also included in the download.
</p>
]]></description><guid isPermaLink="false">262015</guid><pubDate>Mon, 19 Jan 2026 21:45:42 +0000</pubDate></item><item><title>SexLab Disparity interactivity</title><link>https://www.loverslab.com/topic/262014-sexlab-disparity-interactivity/</link><description><![CDATA[<p>
	For those of you who have not use it before, <a href="https://www.loverslab.com/files/file/7589-sexlab-disparity/" rel="">SexLab Disparity</a> <span><span>:</span></span>
</p>

<p>
	 
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="2376447" data-embedcontent="" data-embedid="embed5412590178" src="https://www.loverslab.com/files/file/7589-sexlab-disparity/?do=embed" style="height:503px;max-width:500px;"></iframe>

<p>
	is a mod hosted here on LoversLab that allows you to configure buffs/debuffs for many game values (e.g. Health, Health Regen, skills like Conjuration, OneHanded, etc) as well as a variety of more adult themed values, based on a large number of monitored values related to items worn, the state of things such as MME, Apropros2 and so on, and then keep them updated by polling every so often, all configurable via MCM. It includes a "Limits" page where you can control the maximum amount of change SLD can apply (so even if multiple different buffs give +50, if you have a Limit of +50, it will never exceed +50 for that stat).
</p>

<p>
	 
</p>

<p>
	If you have used SimplyBalanced before, this is similar in that it applies a wide range of buffs, albeit scaled based on various inputs.
</p>

<p>
	 
</p>

<p>
	I just posted an update to SexLab Disparity, 14.5, that adds 10 new values to monitor: 5 GLOB (GlobalValue) records added via the SLD .ESP, and 5 StorageUtil keys that it will monitor.
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="10946802" data-embedcontent="" data-embedid="embed5436054212" src="https://www.loverslab.com/topic/111676-sexlab-disparity/page/42/?do=embed&amp;comment=7219793&amp;embedComment=7219793&amp;embedDo=findComment#findComment-7219793" style="height:303px;max-width:500px;"></iframe>

<p>
	 
</p>

<p>
	It's not an "officially supported" version, so I bear responsibility for it.
</p>

<p>
	 
</p>

<p>
	Using SLTScript functions like global_getvalue and global_setvalue, you can get and set the GLOB records using the editorIDs "_fwb_GLOBTracker0"-"_fwb_GLOBTracker4".
</p>

<p>
	Using the "storageutil" function you can do the same with the StorageUtil keys "_fwb_SUTracker0"-"_fwb_SUTracker4":
</p>

<p>
	  storageutil set none "_fwb_SUTracker0" float 33.3
</p>

<p>
	  storageutil get none "_fwb_SUTracker0" float
</p>

<p>
	 
</p>

<p>
	What this gets you? If you have wanted a way to, with SLTR, keep a set of buffs or debuffs going, but manipulate them from time to time, consider adding SLD to your modlist and using one of the trackers (GLOB or SU, whichever you're more comfortable with). Then you could remove all of the SLTR script you might have added for updating actor values (assuming they're values SLD handles currently) and just monitor and manipulate a single (or more if you're doing something complex) value, letting SLD handle updating the amount of buff/debuff to add.
</p>
]]></description><guid isPermaLink="false">262014</guid><pubDate>Mon, 19 Jan 2026 21:40:14 +0000</pubDate></item><item><title>[Template] Equip item to player, wait for OStim end, unequip item</title><link>https://www.loverslab.com/topic/259011-template-equip-item-to-player-wait-for-ostim-end-unequip-item/</link><description><![CDATA[<pre class="ipsCode">; change this to something other than $system.player (e.g. $system.ostim.partner) to target a different actor for some reason
set $target_actor $system.player

; if we are not in a scene, exit
ostim_isin $target_actor
if $$ == false
  return
endif

; change these two values appropriately to the formid and armor slot of the item to add/equip/unequip/remove
set $item_to_equip "modfile.esp:0xDEADBEEF"
set $item_slot 32

; add and equip
item_addex $target_actor $item_to_equip 1 true
item_equipex $target_actor $item_to_equip $item_slot false false

; wait til done
ostim_waitforend $target_actor

; unequip and remove
item_unequipex $target_actor $item_to_equip $item_slot
item_remove $target_actor $item_to_equip 1 true</pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">259011</guid><pubDate>Sun, 26 Oct 2025 12:05:36 +0000</pubDate></item><item><title>[Template] Equip item to player, wait for SL end, unequip item</title><link>https://www.loverslab.com/topic/258992-template-equip-item-to-player-wait-for-sl-end-unequip-item/</link><description><![CDATA[<pre class="ipsCode">; change this to something other than $system.player (e.g. $system.partner) to target a different actor for some reason
set $target_actor $system.player

; if we are not in a scene, exit
sl_isin $target_actor
if $$ == false
  return
endif

; change these two values appropriately to the formid and armor slot of the item to add/equip/unequip/remove
set $item_to_equip "modfile.esp:0xDEADBEEF"
set $item_slot 32

; add and equip
item_addex $target_actor $item_to_equip 1 true
item_equipex $target_actor $item_to_equip $item_slot false false

; wait til done
util_waitforend $target_actor

; unequip and remove
item_unequipex $target_actor $item_to_equip $item_slot
item_remove $target_actor $item_to_equip 1 true
</pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">258992</guid><pubDate>Sat, 25 Oct 2025 23:42:09 +0000</pubDate></item><item><title>Function Library Development</title><link>https://www.loverslab.com/topic/257199-function-library-development/</link><description><![CDATA[<p>
	First, the <a href="https://github.com/lynnpye/sl_triggers/wiki/Function-Library-Development" rel="external nofollow">wiki link for Function Library Development</a>.
</p>

<p>
	 
</p>

<p>
	This is, in my opinion, the single most important feature of SLTR; the ability for users (possibly mod authors if they were so inclined to provide SLTR support) to wrap up new functions as bindings for SLTScripts.
</p>

<p>
	 
</p>

<p>
	Since it involves Papyrus development, including needing things like "header only" .psc files for builds, I'm going to assume you have some idea of what you're doing in that regard. I can help perhaps with some guidance but by and large you'd need to setup and be at least a little comfortable with Papyrus development.
</p>

<p>
	 
</p>

<p>
	You'll want, at minimum, a header version of `sl_triggersCmd.psc`, so you have access to the required functions, but again, at minimum, it would need a definition for `CompleteOperationOnActor()`.
</p>

<p>
	 
</p>

<p>
	The general idea is this:
</p>

<p>
	- sl-triggers.dll, on game start, looks in 'SKSE/Plugins/sl_triggers/extensions/' for all '*-libraries.json' files, and parses them, looking for the Papyrus script names it needs to scan. It also notes their priorities. All function libraries are enabled by default.
</p>

<p>
	- For each Papyrus script name it finds, it checks the Skyrim Papyrus VM for that script type and then loops through all of the functions defined
</p>

<p>
	- It looks for functions matching the declaration (e.g. 'some_function' in this case): Function some_function(Actor CmdTargetActor, ActiveMagicEffect _CmdPrimary, string[] param) global
</p>

<p>
	- During SLTScript execution, when the parser determines that a token represents a function name to be called, the plugin is asked to call the appropriate function
</p>

<p>
	- The plugin finds the script where the function is defined via hash lookup and dispatches a static call to the VM with the parameters
</p>

<p>
	- At this point sl_triggersCmd is sitting in a loop waiting for completion
</p>

<p>
	- Calling sl_triggersCmd.CompleteOperationOnActor() at the end of your function notifies sl_triggersCmd to continue execution
</p>

<p>
	 
</p>

<p>
	So, by simply building your script with appropriately configured functions, and providing the -libraries.json file to point to it, you can add your own functions and even distribute your compiled .pex/-libraries.json combo to others.
</p>

<p>
	 
</p>

<p>
	By way of another example, if you install SLTR with OStim or SexLab selected, it also includes the adult-general library, with function libraries for OSLA and SLIF. The following files, which again would be installed with SLTR if you select OStim or SexLab, would constitute a function library and could have been shipped separately. Note that the *Adapter*.psc files are just helpers for the *CmdLib*.psc files.
</p>

<p>
	 
</p>

<p>
	- SKSE/Plugins/sl_triggers/extensions/sl_triggersCmdLibAdultGeneral-libraries.json
</p>

<p>
	- scripts/sl_triggersAdapterOSLA.pex
</p>

<p>
	- scripts/sl_triggersAdapterSLIF.pex
</p>

<p>
	- scripts/sl_triggersCmdLibOSLAroused.pex
</p>

<p>
	- scripts/sl_triggersCmdLibSLIF.pex
</p>

<p>
	 
</p>

<p>
	Put another way, I could fall of the face of the planet, and people could still add new function libraries to expand supported bindings for any mod or any other function you'd want to expose. <span><img alt=":)" data-emoticon="" src="https://static.loverslab.com/resources/emoticons/smile.png" title=":)" /></span>
</p>
]]></description><guid isPermaLink="false">257199</guid><pubDate>Tue, 30 Sep 2025 12:23:25 +0000</pubDate></item></channel></rss>
