<?xml version="1.0"?>
<rss version="2.0"><channel><title/><link>https://www.loverslab.com/blogs/blog/1264-the-lupine-collection/</link><description><![CDATA[<p>
	Development notes, mod ideas and other nonsense that I don't want to get buried and lost in the forums.
</p>

<p>
	Look here if you are interested in:
</p>

<p>
	SexLab Disparity (SLD), SexLab Aroused eXtended (SLAX), Devious Followers Continued (DFC)
</p>
]]></description><language>en</language><item><title>What do you want to see next in DFC?</title><link>https://www.loverslab.com/blogs/entry/13655-what-do-you-want-to-see-next-in-dfc/</link><description><![CDATA[<p>
	 
</p>

<p>
	<span style="color:#2ecc71;"><strong>Pick as many options as you like, but it counts less if you pick more things.</strong></span>
</p>

<p>
	 
</p>

<p>
	Currently a few voices on the forum tend to set the direction for development.
</p>

<p>
	What do people think is most important to do next?
</p>

<p>
	 
</p>

<p>
	You might want to look at the Roadmap for more detail on what these different things could look like.
</p>

<p>
	 
</p>

<p>
	The feature for letting followers push deals more aggressively is a "done deal", no point voting on that.
</p>
]]></description><guid isPermaLink="false">13655</guid><pubDate>Mon, 10 May 2021 02:52:00 +0000</pubDate></item><item><title>SexLab Aroused - eXtended - SLAX 2021</title><link>https://www.loverslab.com/blogs/entry/13581-sexlab-aroused-extended-slax-2021/</link><description><![CDATA[<p>
	<span style="font-size:22px;"><span style="color:#2ecc71;"><strong>SLAX development finally happening again!</strong></span></span>
</p>

<p>
	 
</p>

<p>
	Devious Followers Continued is finally in a place where I think I can take some time away from it, and so for May, I want to do some work on SLAX, and will finally get around to releasing various fixes and improvements.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#2ecc71;"><span style="font-size:18px;"><strong>The plan</strong></span></span>
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>May Release</strong></span>
</p>

<ul>
	<li>
		Known bug fixes - already done.
	</li>
	<li>
		Extend the keyword MCM to allow setting keywords on all slots.
	</li>
	<li>
		Extend the keyword MCM to support additional keywords.
	</li>
	<li>
		Add new factions and keywords to the ESP, so no need to hunt all over LL to find the latest ESP version - will also support new requests for SexLab Survival.
	</li>
	<li>
		API improvements to better support mods that make use of SLAX.
	</li>
</ul>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>June Release</strong></span>
</p>

<ul>
	<li>
		Update of SLSO integration to ensure up-to-date and also to add some functionality.
	</li>
	<li>
		Improved update system for more responsive handling of nearby actors.
	</li>
	<li>
		Rapid arousal and orgasm fatigue.
	</li>
	<li>
		Denial tracking.
	</li>
	<li>
		Handling for some of the fetish factions (bondage, anal and creature most likely).
	</li>
</ul>

<p>
	Given the list, it's expected that planned work will continue through June, but there should at least be a release later in May sometime with the bug fixes, ESP updates, and keyword MCM improvements. The June release will thus be near the end of the month, and bring some fresh features.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>And maybe for July...</strong></span>
</p>

<ul>
	<li>
		My own SSE release with full functionality.
	</li>
	<li>
		Sex addiction.
	</li>
	<li>
		Diagnostic MCM so you can see what NPCs are being updated (and updating you).
	</li>
	<li>
		More fetish faction support (oral, cum, boobs, huge cocks).
	</li>
</ul>

<p>
	 
</p>

<p>
	Depending on how things go, it might take longer than planned, or some things might be done quickly... But I also want to slot some SLD and DFC work in from June onwards, so I won't be totally focused on SLAX after end of May.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">13581</guid><pubDate>Wed, 28 Apr 2021 00:47:00 +0000</pubDate></item><item><title>Devious Followers Continued - Interfaces for Modders</title><link>https://www.loverslab.com/blogs/entry/12974-devious-followers-continued-interfaces-for-modders/</link><description><![CDATA[<p>
	The information here is for modders that want to interoperate with DFC. This information used to be on the main page of the mod, but space is at a premium there, and most users will never care about it, so I've moved it off.
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><span style="color:#16a085;"><strong>Mod Event Generation and Handling</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="color:#f1c40f;"><strong>DF listens for the following custom mod events:</strong></span>
		</p>

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

		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				"DF-Pause" - Pauses or unpauses DFC.
			</li>
			<li>
				"DFEnslave" - Enslaves the PC via DFC. Enslavement settings are respected.
			</li>
			<li>
				"AnimationEnd" - SexLab animation end - used to update status due to sex.
			</li>
			<li>
				"dhlp-Suspend" - Deviously Helpless event suspend - tells DF that it's unsafe to trigger scenes.
			</li>
			<li>
				"dhlp-Resume" - Deviously Helpless event resume - tells DF it's safe to trigger scenes again.
			</li>
			<li>
				"PlayerRefEnslaved" - tells DFC that another mod has enslaved the PC - it pauses itself.
			</li>
			<li>
				"PlayerRefFreed" - tells DF that the PC is free again - it unpauses itself.
			</li>
			<li>
				"SSLV Entry" - for telling DF that the PC is entering Simple Slavery  - it drops the devious follower and resets its state.
			</li>
			<li>
				"DF-ResistanceLoss" - removes some of the PC's resistance (willpower damage).
			</li>
			<li>
				"DF-ResistanceGain" - adds some resistance to the PC (willpower regain)
			</li>
			<li>
				"DF-ResistanceLossWithSeverity" - removes some of the PC's resistance, with a severity value that may limit lesser events from being over impactful.
			</li>
			<li>
				"DF-DebtAdjust" - adds debt to the PC.
			</li>
			<li>
				"DF-MinimumContractChange" - changes the minimum contract configuration.
			</li>
			<li>
				"DF-AddFollower" - adds a new DF - does nothing if PC is at their limit of followers - depends on follower framework being used (if any).
			</li>
			<li>
				"DF-RemoveFollower" - removes a follower - the follower is dismissed.
			</li>
			<li>
				"DF-Spank" - get spanked.
			</li>
		</ul>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			These are all registered in <span style="font-family:'Courier New', Courier, monospace;">_Dtick.psc</span>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			e.g. 
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="color:#f1c40f;"><strong>The following are vanilla-style mod events:</strong></span>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">SendModEvent("DF-ResistanceLoss", "", 3.0) ; take away three points of resistance.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">SendModEvent("DF-ResistanceGain", "", 1.0) ; add a point of resistance.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">SendModEvent("DF-ResistanceLossWithSeverity", "2", 10.0) ; a severity 2 event that removes 10 resistance.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">SendModEvent("DF-DebtAdjust", "", 550.0) ; Adds 550 gold debt to the PC. Send negative values to remove debt (add credit).</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">SendModEvent("DF-MinimumContractChange", "", 14.0) ; set minimum contract to 14 days.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">SendModEvent("DF-Spank", "123456789", 2.0) ; spank the PC</span>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			When spanking the PC, the string parameter is the integer FormID of the spanking NPC, converted to a string. 
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			The floating point parameter is the spanking severity. It should be an integer. Specify &lt; 0 for willpower-determined, or 0, 1, or 2 for explicit severity. Higher is more extreme.
		</p>

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

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="color:#f1c40f;"><strong>The following are custom mod events:</strong></span>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">Int eventHandle = ModEvent.Create("DF-AddFollower")</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">If eventHandle</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushForm(eventHandle, sender) ; The calling quest</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushForm(eventHandle, followerActor) ; The new follower</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushInt(eventHandle, 1000)  ; Additional debt</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushBool(eventHandle, False) ; Do not force the PC into gold control mode</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushFloat(eventHandle, 7.0) ; Set minimum contract days to 7 - use a -ve day count to leave the current contract setting unchanged.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.Send(eventHandle)</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">EndIf</span>
		</p>

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

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">Int eventHandle = ModEvent.Create("DF-RemoveFollower")</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">If eventHandle</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushForm(eventHandle, followerActor) ; The follower to dismiss</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.Send(eventHandle)</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">EndIf</span>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			Note that when you're calling DF-AddFollower, it works the same whether the follower is a hireling or not. You specify the debt explicitly, it doesn't automatically add an extra 500 debt for hirelings; you get exactly what you specify. Setting a high debt value may result in the follower immediately going into debt recovery mode on the PC.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">Int eventHandle = ModEvent.Create("DF-Pause")</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">If eventHandle</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushBool(eventHandle, pauseState) ; true if pausing, false if resuming.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.PushForm(eventHandle, sender) ; The form that is the event source - be consistent.</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">    ModEvent.Send(eventHandle)</span>
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="font-family:'Courier New', Courier, monospace;">EndIf</span>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			The form is added to a form list, and DFC will not resume until all pausing sources have unpaused, so consistent use of the form value is essential.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<span style="color:#f1c40f;"><strong>DF raises the following mod events:</strong></span>
		</p>

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

		<ul>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				DFEnslave - to enslave the player into DFC (from SS, for example).
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				PlayerRefEnslaved - when the player is enslaved into DFC enslavement.
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				PlayerRefFreed - when the player is released from DFC enslavement.
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				DF-RemoveFollower - fired on sending to Simple Slavery when Devious Follower is removed.
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				SSLV Entry - puts player into Simple Slavery - DFC listens so it can clean player, but also fires this event.
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				RapeTattoos_addTattoo - fired to add tattoos for punishment or on enslavement
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				<strong>DF-SceneStart</strong> - fired at the start of sex, and other scenes, BEFORE dhlp-Suspend
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				<strong>DF-SceneEnd</strong> - fired at the end of sex, and other scenes, BEFORE dhlp-Resume
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				dhlp-Suspend - fired at the start of sex, and other scenes
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				dhlp-Resume - fired at the end of sex, and other scenes
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				LDCAddExtraDevices - when LDC updates its device list
			</li>
		</ul>

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

		<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
			See the list of events DF listens to above.
		</p>

		<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
			DF-SceneStart and DF-SceneEnd or dhlp-Suspend and dhlp-Resume are events you should listen to so you can avoid running events on top of DF scenes and causing  chaos.
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><span style="font-size:16px;"><strong>Some Interesting Globals that DFC Uses</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul>
			<li>
				_DFBoredom - current follower boredom
			</li>
			<li>
				_DFDailyDealTimer - game time that daily deal timer will roll over
			</li>
			<li>
				_DFFatigue - current resistance fatigue
			</li>
			<li>
				_DFFollowerCount - current (devious) follower count
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DflowEDHalf - half enslavement debt
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DflowEnslaveDebt - enslavement debt
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DFlowSlaveDebt - debt given to slaves
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DFPunDebt - punishment debt amount
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DFResistanceBroken - resistance losses beyond will 0, resistance 0
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DFSexScanAllowFemale - can scanner find females?
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DFSexScanAllowMale - can scanner find males?
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DFStanding - is the PC standing when they should be crawling
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DResist - current resistance
			</li>
			<li style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
				_DWill - current willpower
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><span style="font-size:16px;"><strong>Devious Follower Data via StorageUtil</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			The following values may be present on followers or potential followers, depending on what the player has done.
		</p>

		<ul>
			<li>
				<span style="color:#2ecc71;">DF_FollowerNeverDevious</span> -<span style="color:#3498db;"> Int</span> value &gt;= 0 means DFC ignores this follower.
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerMaster</span> - <span style="color:#3498db;">Int</span> value &gt;= 0 means this is the current DFC master.
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerMasterDays</span> - <span style="color:#3498db;">Float</span> value &gt;= 0 is the completed days this follower was/has <em>previously</em> been a DFC master for. On current and dismissed followers. It doesn't include the current hire session; see below...
			</li>
			<li>
				<span style="color:#2ecc71;">DF_LastHireTime</span> - <span style="color:#3498db;">Float</span> value &gt;= 0 is the time in game days when the follower was last hired (if ever). Use this to find how long the current hire session has lasted.
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerBoredom</span> - <span style="color:#3498db;">Float</span> value &gt;= 0 is the boredom the follower was last set with. Remains on dismissed followers.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			The following <span style="color:#3498db;">Int</span> values may be present on followers or potential followers, depending on what the player has done.
		</p>

		<ul>
			<li>
				<span style="color:#2ecc71;">DF_FollowerPersonality</span> - 0 to 6 (see below)
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerAggression</span> - 1 to 100
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerGreed</span> - 1 to 100
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerHonor</span> - 1 to 100
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerLust</span> - 1 to 100
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerControl</span> - 1 to 100
			</li>
			<li>
				<span style="color:#2ecc71;">DF_FollowerPlayful</span> - 1 to 100
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			Personality values:
		</p>

		<ul>
			<li>
				<span style="color:#7f8c8d;">0 - default - pure random behavior - the baseline - exactly how DFC was prior to adding this feature</span>
			</li>
			<li>
				<span style="color:#7f8c8d;">1 - slaver - goal number one: enslave PC</span>
			</li>
			<li>
				<span style="color:#7f8c8d;">2 - profiteer - make more money, avoid things that interfere with money making</span>
			</li>
			<li>
				<span style="color:#7f8c8d;">3 - sexy - likes sex and bondage and also more sex</span>
			</li>
			<li>
				<span style="color:#7f8c8d;">4 - sadist - likes to make misery for the PC</span>
			</li>
			<li>
				<span style="color:#7f8c8d;">5 - moral - has a strict code, may be prudish or judgmental but more likely to be honest</span>
			</li>
			<li>
				<span style="color:#7f8c8d;">6 - nightmare - all the worst things, sometimes randomly</span><br />
				 
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><span style="color:#16a085;"><strong>Factions</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			The following factions are in the DFC ESP and are used as details:
		</p>

		<ul>
			<li>
				<span style="font-family:'Courier New', Courier, monospace;">_DFDisable          - 0xXX0B8A73</span> - add a follower to this faction to make them never be devious
			</li>
			<li>
				<span style="font-family:'Courier New', Courier, monospace;">_DFEnable           - 0xXX2D1109</span> - add a follower to this faction to cause them to be skipped by the bulk follower disable operation (will not make disabled followers devious though)
			</li>
			<li>
				<span style="font-family:'Courier New', Courier, monospace;">_DFJobPriestFaction - 0xXX234032</span> - add an NPC to this faction to make them accept temple donations that reduce willpower-resistance fatigue.
			</li>
			<li>
				<span style="font-family:'Courier New', Courier, monospace;">_DMaster            - 0xXX015712</span> - do not add anyone to this. Followers in this faction act as DFC masters, but in many cases a master also needs to be on the alias, so this is only useful in dialogs.
			</li>
			<li>
				<span style="font-family:'Courier New', Courier, monospace;">_DBuyer             - 0xXX058192</span> - NPCs in this faction are able to return the PC's stolen/hidden items.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><span style="font-size:16px;"><strong>Slavery Punishment Tracking via StorageUtil</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			Slave punishment counts are set on the Player object and the follower, as StorageUtil<span> </span><span style="color:#2ecc71;"><strong>Int</strong><span> </span></span>values.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			The values on the follower are specific to<span> </span><strong>that</strong><span> </span>follower. Modders will probably never need to care about these; DFC uses them internally when followers are changed.
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			The values on the player are for the<span> </span><strong>current</strong><span> </span>follower, and the global totals.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			They use the following keys:
		</p>

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

		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				<span style="color:#2ecc71;">DF_Enslaved_PunishCount</span><span> </span>- punishment value for this enslavement and this follower - if the player is not enslaved at this time, it will usually be zero.
			</li>
			<li>
				<span style="color:#2ecc71;">DF_Enslaved_TotalPunishCount</span><span> </span>- total punishment value for all enslavements with this follower - can be non zero, even though not enslaved at this time.
			</li>
			<li>
				<span style="color:#2ecc71;">DF_Enslaved_TotalPunishCount_AllFollowers</span><span> </span>- totalled punishment value for all enslavements and all followers - can be non zero, even though not enslaved at this time. This value is only on the player, it isn't stored on any followers as it would get stale.
			</li>
			<li>
				<span style="color:#2ecc71;">DF_Enslaved_Extreme_Punishment_Limit</span><span> </span>- on the player, the value at which DFC itself will administer an extreme punishment. If not set by DFC, the bad end mod can set this to any value it likes (though 250 is the suggested default).
			</li>
			<li>
				<span style="color:#2ecc71;">DF_Enslaved_Final_Punishment_Limit</span><span> </span>- on the player, the value at which the "bad end" mod kills the PC. If there is an extreme punishment limit, this value should be at least twice that, and never equal or less than it.<br />
				i.e.  assert <span style="color:#2ecc71;">DF_Enslaved_Final_Punishment_Limit</span><span> </span>&gt; <span style="color:#2ecc71;">DF_Enslaved_Extreme_Punishment_Limit</span>
			</li>
		</ul>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			DF may (one day) expose both these values in the MCM, but I have not done so yet, and will not do so until I implement something for an "extreme punishment" scenario.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			An external "bad end" mod may expose them in its MCM, and as they are StorageUtil values, there is no problem both mods having them in their MCM, but it should be understood that they can change at any time due to an external modification.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			The punishment value is not simply the count of punishments, but is more granular, so there's scope for light punishments and heavy ones.
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<em>I think this is better than using floats, as float comparison is full of traps.</em>
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			By default, a punishment (add debt) adds<span> </span><span style="color:#2ecc71;">10<span> </span></span>to the score.
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			By default, being gagged, silenced, and whored out adds<span> </span><span style="color:#2ecc71;">1</span><span> </span>to the score.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			Severe crimes, as judged by DFC will score<span> </span><span style="color:#2ecc71;">25<span> </span></span>points, and are:
		</p>

		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				not wearing part of your slave uniform in the required location.
			</li>
			<li>
				not having your arms bound when the follower has decided that's how you should be.
			</li>
			<li>
				losing your gag if you have been force-gagged and silenced.
			</li>
		</ul>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			Also, being abandoned by the follower for being a useless slave adds an instant<span> </span><span style="color:#2ecc71;">200<span> </span></span>points.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			I'd suggest that the PC needs to accumulate around<span> </span><span style="color:#2ecc71;">500<span> </span></span>points to get a game over, but if you like it hardcore, you could half that value. Seems reasonable the player should be able to set the threshold, but 500 might be a reasonable default.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			I'm also planning to add a native DF feature, so that around<span> </span><span style="color:#2ecc71;">250</span><span> </span>points the PC suffers some extreme punishment, with a warning that there will be no second chance...
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			I'm also thinking that the player should at least have an option for spanks that the PC begs for to reduce the value by 1, and whippings that the PC <em>begs for</em><span> </span>might reduce it by 3 or so, but I'm not implementing that yet. There needs to be some way to offset the fact that sometimes you will get punished unfairly, and it would suck to die because of an accumulation of bad luck with that.
		</p>

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

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			It makes sense for a<span> </span><strong>bad-end/death punishment mod</strong><span> </span>to not worry about that, and just deal with the <em>"end of game, you're dead, start a new one"</em> problem.
		</p>

		<p style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			Just check for <span style="color:#2ecc71;">DF_Enslaved_PunishCount</span><span> </span>&gt; <span style="color:#2ecc71;">DF_Enslaved_Final_Punishment_Limit</span><span> </span>, and if it is true, maybe you can plead your way out of it, and maybe you can't?
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">12974</guid><pubDate>Wed, 17 Feb 2021 01:22:00 +0000</pubDate></item><item><title>Devious Followers Complete Change List</title><link>https://www.loverslab.com/blogs/entry/12923-devious-followers-complete-change-list/</link><description><![CDATA[<p>
	This is the complete list of changes for Devious Followers, going back to the first <em>DFC </em>version. It doesn't have the change lists for the old Lozeak versions. I had to move this off the DF main page because LL reduced the limit for page size, and I was already at the limit before that. I'll update this post shortly after each new release, so you'll always be able to find up to date information here.
</p>

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>Changes in 2.14.4 (2021-06-01):</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul>
			<li>
				Fixed recognition of compatible versions of Submissive Lola the Resubmission.
			</li>
			<li>
				Fixed version numbering (incorrect in 2.14.3).
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>Changes for 2.14.3 (2021-05-27):</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			<li>
				Fixed modular deals not decrementing deal count on buyout
			</li>
			<li>
				Fixed deal buyouts reducing accumulated boredom fee penalty
			</li>
			<li>
				Fixed a buggy slut deal dialog that showed "22222"
			</li>
			<li>
				Improved checking for compatible version of Submissive Lola (if version is too old, Lola should not be shown as present)
			</li>
			<li>
				Added check for pre-existing Submissive Lola slavery before attempting Lola enslavement.
			</li>
			<li>
				Improved checking for licenses that only work in newer versions of SLS than actual release version (only work in latest betas) - these are supposed to be always off by default.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>Changes for 2.14.2 "Fixed" (2021-05-08):</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			<li>
				<span style="color:#f1c40f;">now has the correct ESP, not old 2.14.1 ESP!</span>
			</li>
			<li>
				removed several merge-annoyances
				<ul>
					<li>
						no longer has faction edits to NPC's - priest dialog uses a form list instead - no longer requires merge resolution against Bijin etc.
					</li>
					<li>
						removed multiple ITMs, some of which caused difficulties depending on whether you use USLEEP or not
					</li>
				</ul>
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>Changes for 2.14.2 (2021-05-04):</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			<li>
				Fix license status dialog giving slave variant when it should not
			</li>
			<li>
				Fix version number reporting
			</li>
			<li>
				Change: removed some ITM records in the ESP
			</li>
			<li>
				Add: optional download - awesome voice files from<span> </span><a contenteditable="false" data-ipshover="" data-ipshover-target="https://www.loverslab.com/profile/538-finalfrog/?do=hovercard" data-mentionid="538" href="https://www.loverslab.com/profile/538-finalfrog/" rel="" style="color:#ffffff;font-size:12.6px;padding:.1em .8em;">@finalfrog</a>
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	<strong>Changes for 2.14.1 (2021-04-30):</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				Fix: MCM option to enable/disable SLS license management is now less time-sensitive and should work reliably.
			</li>
			<li>
				Change: Forced start by guard arrest has slightly more generous worn-device conditions to trigger.
			</li>
			<li>
				Change: More quests have per-quest conditional logging system; you need to enable the log spam from the console. (Should reduce log spam for those that don't want it).
			</li>
			<li>
				Add: Can now tell the follower that you don't ever want licenses from them, but the dialog will come back if you hire a new one.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	<strong>Changes for 2.14.0 (2021-04-26):</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<ul>
			<li>
				Add: deal distribution slider - prefer classic deals of modular rules.
			</li>
			<li>
				Add: can set weights for enslavement destinations in other mods menu.
			</li>
			<li>
				Add: can be enslaved into Submissive Lola the Resubmission instead of DFC - uses follower personality to influence Lola duration and goals.
			</li>
			<li>
				Add: can set weights for endless mode sold/enslaved outcomes.
			</li>
			<li>
				Fix: deals are selected in a way that is safe for SE. The SE port should work reasonably well now.
			</li>
			<li>
				Fix: can now buy out of slavery again.
			</li>
			<li>
				Fix: license revokes now revoking licenses as intended.
			</li>
			<li>
				Fix: greed personality value now set correctly.
			</li>
			<li>
				Fix: sleep events prevented from occurring improperly during pause.
			</li>
			<li>
				Fix: handling of external events during pause now all pause aware.
			</li>
			<li>
				Fix: removed some unused (and effectively empty) script fragments that look like they were from Captured Dreams.
			</li>
			<li>
				Fix: improved tooltips for gold theft.
			</li>
			<li>
				Change: punishment now in two weight sets - regular (based on debt) and alternate (based on deals and with a time-delay).
			</li>
			<li>
				Change "sold" mechanic now a part of the alternate/additional punishment set.
			</li>
			<li>
				Change: event to add devious follower while paused will do nothing if paused.
			</li>
			<li>
				Change: being forced into gold control doesn't dump an unlimited amount of debt, it can only dump up to half of debt-per-day. PC may still have more things to "work" out as a result.
			</li>
			<li>
				Add: New MCM sub-menu - Punishments - for enslavements and related woes.
			</li>
			<li>
				Change: reworked MCM to organize new features better. Renamed up improved tooltips on most related items.
			</li>
			<li>
				Change: endless mode no longer exists, but you can still disable enslavement (same thing, new name).
			</li>
			<li>
				Fix: license provision now pauses with the pause function
			</li>
			<li>
				Change: slaves now pay half-price for their licenses.
			</li>
			<li>
				Fix: SS options cannot be set if SS not installed (mostly).
			</li>
			<li>
				Change: if normal enslavement disabled (or not), you can still get the full range of punishments via the alternate method that used to drive being sold.
			</li>
			<li>
				Add: you can set debt and deals to be removed by punishments (always lose at least enough debt not to be enslaved).
			</li>
			<li>
				Add: Configured debt and deals are removed on leaving various slavery scenarios.
			</li>
			<li>
				Fix: stopped some licensing dialogs showing up for slaves, and added some slave specific dialogs to fill their places.
			</li>
		</ul>

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

<p>
	 
</p>

<p>
	<strong>Changes for 2.13.5 (2021-03-30)</strong>
</p>

<p>
	 
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<ul>
			<li>
				Added support for management of your essential adventuring SLS licenses by your ever-helpful Devious Follower...
			</li>
			<li>
				Added many, many new slut deal lines and rewrote almost all of them to not be hesitant speech full of ellipses.
			</li>
			<li>
				Added ability to select restrictions on follower dismissal in the MCM.
			</li>
			<li>
				Added various StorageUtil values on the DF or for followers generally - see modder documentation for more info.
			</li>
			<li>
				Added extra mod-events for external mods to pause or resume DFC in a way that lets multiple mods  do this safely.
			</li>
			<li>
				Added willpower and collar requirements to forced version of weird potion.
			</li>
			<li>
				Taking weird potion now also clears (almost all) debt as well as deals.
			</li>
			<li>
				Dialog additions and improvements for weird potion requests.
			</li>
			<li>
				Individual followers remember their personal boredom level.
			</li>
			<li>
				Increases expected deal count when dismissing a follower. It now also persists across hires, so it's not tied to an individual follower.
			</li>
			<li>
				Changed mechanism for random determination of whether you get a hand on shoulder or offered as slave to fuck. Might work in SE, who knows? It seemed to fail in some LE games too, but not all - hopefully better now.
			</li>
			<li>
				The way slut deal texts are determined is now more complex, and can mean you could go a long time without seeing anything like all of them.
			</li>
			<li>
				Added a list of extra locations where you can dismiss the follower if you have location checks on.
			</li>
			<li>
				Improved handling of chastity when picking sex scenes.
			</li>
			<li>
				Fixed bra purchase providing a belt instead.
			</li>
			<li>
				Fixed missing simple slavery odds in _DFlow causing SSO to not get triggered.
			</li>
			<li>
				Fixed missing tats count in _DFlow causing tats to not get applied on enslavement.
			</li>
			<li>
				Fixed missing tooltips/hover-items for weird potion menu items.
			</li>
			<li>
				Fixed apparent zero defaults for weird potion min-max days settings.
			</li>
			<li>
				Fixed broken mechanic for punishing non-payment for weird potion drinks.
			</li>
			<li>
				Fixed oral sex scenes potentially selecting the wrong kind of sex with females.
			</li>
			<li>
				Fixed scenario where appropriate oral sex scenes don't exist in your setup during the weird potion quest.
			</li>
			<li>
				Fixed a missing delay from one path in Slut deal hand on shoulder.
			</li>
			<li>
				Fixed a missing deal condition on "follower offers her slave to fuck dialog"
			</li>
		</ul>

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

<p>
	 
</p>

<p>
	<strong>Changes in 2.13.4: (2021-03-11)</strong>
</p>

<p>
	 
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<ul>
			<li>
				Fixes an issue where you couldn't buy out of enslavement because the dialog for it wouldn't appear.
			</li>
			<li>
				Improved delays after slut-deal conversation interruptions. In some cases fixed delays that were completely missing.
			</li>
			<li>
				Fixed an issue where some sex events from slut-deal didn't update the interferences counter, potentially resulting in sex on any attempt to talk to an NPC.
			</li>
			<li>
				Enslavement now slightly less likely if you have over 6 willpower.
			</li>
			<li>
				Added new help items for gold control, deal configuration, and leaving enslavement.
			</li>
			<li>
				Probably fixed a theoretical issue where maybe you could get a negative punishment debt applied that would reset all your debt to zero. (Could never reproduce an actual occurrence of this).
			</li>
			<li>
				Some internal improvements to debt updates that<em> shouldn't</em> have any obvious consequence.
			</li>
			<li>
				Some internal improvements to enslavement that <em>shouldn't</em> have any obvious consequence.
			</li>
			<li>
				Tiny dialog and existing help text changes.
			</li>
			<li>
				Fixed some wild edits to race records in the ESP. Probably inconsequential, but one less bit of noise in merges.
			</li>
			<li>
				You can (now) only dismiss a devious follower in a city; dismissible dialog won't show up otherwise.
			</li>
		</ul>

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

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>Changes in 2.13.3: (2021-03-08)</strong>
</p>

<p>
	 
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<ul>
			<li>
				replaced all the sex partner scanners (this has a big impact on stability and was the biggest single remaining "bug" that could cause a lot of problems in games)
				<ul>
					<li>
						new general-purpose sex partner scanner - slavery sex should be reliable now.
					</li>
					<li>
						new horse scanner for pony game
					</li>
					<li>
						new guard scanner for Jarl game
					</li>
				</ul>
			</li>
			<li>
				can select sex preference for scanners.
			</li>
			<li>
				overhauled the Jarl game (bug fixes, better timing, new dialogs, new dialog choices, new guard scanner, handles missing NPCs, supports dialogs for male PC).
			</li>
			<li>
				fixed a bunch of buggy punishment conditions.
			</li>
			<li>
				fixed issue with a blocking dialog for hirelings improperly detecting non-zero followers when follower frameworks present.
			</li>
			<li>
				no strip keywords on the deal amulet, circlet and ring.
			</li>
			<li>
				minor overhaul to rape system - now supports five-ways and better time management for events, with less delays and better bounded events.
			</li>
			<li>
				fixed some script files that were missing from distribution.
			</li>
			<li>
				better mod events for sex scenes - should interoperate well with other mods more consistently.
			</li>
		</ul>

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

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>Changes in 2.13.2: (2021-02-21)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<ul>
			<li>
				Time for follower to become devious now bounded to around 20 seconds max.
			</li>
			<li>
				Fix for the follower framework integration dismissal issues in EFF and NFF.
			</li>
			<li>
				Handles case where you -legitimately- dismiss follower via the EFF command wheel not removing follower from DF.
			</li>
			<li>
				Regulates punishment debt intervals - can't be punished immediately after making a deal - and can't be punished very few seconds.
			</li>
			<li>
				If follower is bound, punishment is deferred indefinitely but all follower lives are lost.
			</li>
			<li>
				Rewrite of follower ignore/exclude system, better exclusion selection, with easy re-include, and an option to auto-exclude all the followers in the game, so you can enable only the ones you like for DF.
			</li>
			<li>
				Punishment tracking for slaves that external mods can inspect if they want, so they can apply extreme punishments. Like extreme snowboarding, but less painful.
			</li>
			<li>
				Fix for the Submissive Lola Resubmission forcegreet clash. Enslavement still overrides SLS enforcers forcegreeting. If this is an issue for you, please report.
			</li>
			<li>
				Improvements to pause/unpause - various bugs fixed, in particular gold control mode should properly adjust cash on pause and unpause.
			</li>
			<li>
				Fixed some issues with enslavement initiated by SS possibly not cleaning all old state before starting.
			</li>
			<li>
				Magic slave-mitt/glove swapping performance and responsiveness improved.
			</li>
			<li>
				Stopped repeatedly spamming "PlayerRefIsFree" ModEvent.
			</li>
			<li>
				Stops filling log with spam if MCM needs an update but you haven't opened it yet.
			</li>
			<li>
				Substantially reduces update load while paused. May avoid some issues with DF updates that shouldn't happen when paused anyway.
			</li>
			<li>
				Doesn't add full punishment debt for devices that request from the follower and it's not treated as a punishment. Only adds half debt per item.
			</li>
			<li>
				Fixed the 'skip to end' functionality and updated its text items so you can now see it's about making enslavement much easier to trigger.
			</li>
			<li>
				Not punished for ring/amulet/circlet while in heavy bondage.
			</li>
			<li>
				Fixed some flaky dialog conditions.
			</li>
			<li>
				If you use the latest MME release, you won't need the milking patch (this isn't my change, it's MME's change).
			</li>
			<li>
				Enslavement crawl boots now punish you with gradual health loss for standing (weapon drawn stance) outside of combat.
			</li>
			<li>
				Fixed payout of small debts below 100 gold when you're also holding less than 100 gold, but still enough to pay the debt.
			</li>
		</ul>

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

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.13.1 (2021-02-09)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				Fixes follower recruitment and dismissal. Look for the new "Can I rely on you?" dialog to speed up follower recognition.
			</li>
			<li>
				Specifically fixes vanilla mercenary handling. If rehiring a merc you may need to ask "Can I rely on you?" to trigger their deviousness.
			</li>
			<li>
				The follower now SAYS what modular deal you're being offered before you agree to it.
			</li>
			<li>
				Fixed the special quest cuffs left in inventory after forced start ends.
			</li>
			<li>
				Added a slider to set the limit of Resistance Fatigue.
			</li>
			<li>
				Added information about whether SLS is installed to MCM.
			</li>
			<li>
				Tracks resistance losses after you hit 0 will and 0 resistance (does nothing with it, but other mods could).
			</li>
			<li>
				Added an entire MCM page of help topics, with an explanation of all the mod fundamentals.
			</li>
			<li>
				Some changes to sleep handling, including instant recognition of lives restored so you can pay to remove BlockGeneric devices in inns/homes.
			</li>
			<li>
				You can now disable the forced start (where the guard cuffs you) in General. If you disable it while it's running, it will be cleanly terminated and restraints removed.
			</li>
			<li>
				Fixed a bug in the mod event handler for adding a follower with gold control. Needs a new game to work properly.
			</li>
			<li>
				Complete rewrite of deal making system so that modular and classic deals are fairly allocated. Should also prevent all seriously clashing deals. Post if you get one.
			</li>
			<li>
				Should be able to pay off willpower fatigue with priests properly.
			</li>
			<li>
				Boredom should be easier to gain and lose.
			</li>
			<li>
				Pausing shouldn't trash all your modular deals.
			</li>
			<li>
				Pausing should stop force starts from happening while the mod is paused.
			</li>
			<li>
				A number of dialog revisions and condition fixes.
			</li>
			<li>
				Fixed missing cuffs on adding Ownership deal.
			</li>
			<li>
				Follower should no longer offer to remove most devices that are required by deals - heavy bondage is a deliberate exception to this.
			</li>
			<li>
				You can now get the follower to remove devious gloves again.
			</li>
			<li>
				Improved dialog ordering in some cases - but some deal dialogs may be messed up unless you start a new game or clean-save.
			</li>
			<li>
				Modular deal configuration menu lets you disable as many rules as you like. You can disable any rule as long as it is not in use.
			</li>
			<li>
				Modular deal configuration menu lets you reduce the number of modular deals in play, even if you have modular deals, as long as you don't have an active rule in a deal that would be removed as a result. Deals are always added or removed in strict order (as shown in the status page of the MCM).
			</li>
			<li>
				Removed some rules/help popups and replaced them with follower dialog.
			</li>
			<li>
				Fixed some misleading or poorly written tooltips.
			</li>
			<li>
				Adds new deals:
				<ul>
					<li>
						Amulet Deal - wear an unhelpful amulet
					</li>
					<li>
						Ring Deal - wear a hindering ring
					</li>
					<li>
						Circlet Deal - wear a bothersome circlet
					</li>
					<li>
						Sex Deal - must offer sex to the follower.
					</li>
					<li>
						Skooma Deal - must ask follower for skooma to drink. Needs Skooma Whore.
					</li>
					<li>
						Lactacid Deal - must ask follower for lactacid to drink. Needs MME.
					</li>
					<li>
						Milking Deal - follower wants to drink your milk. Must pump it fresh. Needs MME.
					</li>
					<li>
						Key Deal - follower wants all your keys. Don't hold onto keys or you'll get in trouble.
					</li>
				</ul>
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

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

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.12.2 (2020-07-14)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				Differs from the beta version 2.12.2 uploaded in the forum, it has an extra fix, so spanking cooldown slider now works correctly.
			</li>
			<li>
				Changed level-one daily rate slider to use increments of 10.
			</li>
			<li>
				Added a slider to configure spanking cooldown.
			</li>
			<li>
				Added a cooldown to slut deal hand-on-shoulder (you can still get three together, but no more than three).
			</li>
			<li>
				Fixed some issues with debt early-payoff calculation.
			</li>
			<li>
				Fixed the cost value shown in the dialogue when the follower offers to remove a device.
			</li>
			<li>
				If you load saved settings from 2.11, the upgrade process will re-run to repair them.
			</li>
			<li>
				If you are punished for something, the spanking cooldown is immediately expired.
			</li>
			<li>
				MCM shows the version.
			</li>
			<li>
				Chaos mode deal multiplier does not multiply standard multiplier but replaces it, like lives.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.12 (2020-06-23)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				Major overhaul of MCM layouts so less scrolling is required and General page less crowded.
			</li>
			<li>
				Reworked willpower regain, especially in MCM - now a min and max regain slider, and no toggle boxes. Min regain is always regained, max regain possible if no devices or deals, get an amount in between based on how many deals and devices you have.
			</li>
			<li>
				Total rework of all costs and the level scaling system for costs:
			</li>
			<li>
				Daily follower cost is now determined by fixed "cost at level 1" and "cost at level 100" values, along with a difficulty curve (or line).
			</li>
			<li>
				You can choose from preset curves, or put in your own exponent value.
			</li>
			<li>
				See the main post above for details on the curves.
			</li>
			<li>
				Most other costs now scale off the cost per day, so you can set up "fair" scalings and tweak the overall mod difficulty by adjusting only the cost per day values.
			</li>
			<li>
				No more need to constantly tweak Enslavement Threshold or Maximum Debt (which now has a new, clearer name).
			</li>
			<li>
				Punishment Debt and Deal values are all based off the per-day cost.
			</li>
			<li>
				Total rework of Chaos system:
			</li>
			<li>
				Fixed Chaos updates to they don't only occur if you sleep 6+ hours, but instead occur on all debt updates sleeps.
			</li>
			<li>
				Chaos prices are now all scale values too, so your Chaos setup should work with almost any debt configuration.
			</li>
			<li>
				Chaos doesn't change or overwrite any of the main settings but is completely separate.
			</li>
			<li>
				If you disable Chaos, your regular settings should take over without having been altered or corrupted.
			</li>
			<li>
				Chaos settings that are multiplier ARE evenly distributed across the scale range you choose.
			</li>
			<li>
				The proportional weighted update of chaos values works properly, even for lives.
			</li>
			<li>
				Chaos does not restore follower lives every time you adjust a setting.
			</li>
			<li>
				Disable the re-enable Chaos will cause a complete (100%) re-randomization of chaos values.
			</li>
			<li>
				Updated old Chaos tooltips which were mainly useless placeholders.
			</li>
			<li>
				The hide values now only impacts the special chaos values display on the chaos page, and doesn't change or hide any settings in the main configuration - all those values will continue to work as normal; chaos is just a scale applied on top of them (lives and deal duration are an exception to this, in that either the chaos or the normal value is used, but the two do not interfere with each other).
			</li>
			<li>
				Added spanking mechanics:
			</li>
			<li>
				Added spanking mechanic, get spanked by your follower, if you are an STA masochist or the follower is bored.
			</li>
			<li>
				Added spanking mechanic, get spanked by a guard if you are an STA masochist or female.
			</li>
			<li>
				Added mod event to trigger spanking mechanic.
			</li>
			<li>
				Added spanking config display in 'other mods' to provide details on animations and patch status.
			</li>
			<li>
				Added DF Spank SLAL mini-pack - this is required for spanking animations to work.
			</li>
			<li>
				Rewrote code for the follower discarding/abandoning the PC:
			</li>
			<li>
				Now adds a belt and plugs in most cases.
			</li>
			<li>
				Adds bounties to all holds except one, the one with no bounty is chosen randomly.
			</li>
			<li>
				Bounties are additional, instead of forced to a set amount, so if you already have bounties, they may become high.
			</li>
			<li>
				When all your items are taken due to SS abandonment-in-lieu-of-enslavement, they aren't simply destroyed, but are put in the chest of the NPC used when the follower takes your items.
			</li>
			<li>
				If you refuse the SS slavery pact, you are abandoned with the additional bounties and belt+plugs that have been added for regular abandonment.
			</li>
			<li>
				When you are given deals due to SS enslavement, all the enabled classic deals should now be correctly set, and you only gain a limited number of modular deals on top of that. The deals you get from SS enslavement are still a crippling load. You might need to use weird potion to get out of them, but that's something you can only do once.
			</li>
			<li>
				The item-recovery container no longer respawns and erases your items, they should now be safe in there indefinitely.
			</li>
			<li>
				The default % of items taken has been raised to 50%, but the configured value isn't changed in existing games.
			</li>
			<li>
				Item theft code (follower takes your items) rewritten:
			</li>
			<li>
				No longer steals SLS licenses or map+compass.
			</li>
			<li>
				When you have a stack of items, it will steal a percentage of them, instead of just one.
			</li>
			<li>
				High value to weight ratio items are always taken, regardless of percentage.
			</li>
			<li>
				You can, on low willpower, pay your debts by asking the follower to take your items. You can still recover them from the khajiit for cheap, assuming you can be bothered to go and find her! The follower only credits you 1/10th of the item value though, so it's probably not a huge exploit. It also costs resistance. If you voluntarily offer your items, at least 50% will be taken, even if you configured the % to be lower than that in the MCM.
			</li>
			<li>
				The follower will no longer attempt to steal your items at all if you have set the theft % to zero (you may still offer them to reduce debt as noted above).
			</li>
			<li>
				Fixed quest objectives for the stolen item quest: can now reliably see the quest in the journal and find the khajiit trader on the map via quest journal (look in Misc quests).
			</li>
			<li>
				Added expensive modular "Deep Debt" deal - this is a seemingly harmless deal with a high buyout cost. It can be obtained multiple times, and as a level 1, 2 or 3 stage in any modular deal. The deep debt buyout cost is not impacted by early buyout scaling and depends on how many stages of deep debt you have in a deal, not what stage they appear at. Added slider to adjust scaling of the expensive "deep debt" deal in the modular deals page.
			</li>
			<li>
				Fixed poor/confusing wording in debug add follower dialogs.
			</li>
			<li>
				Debug add follower dialogs now only show up on PotentialFollower and PotentialHireling faction members.
			</li>
			<li>
				Fixed bug where MCM updates would lead to some MCM entries behaving as OTHER entries until you'd re-visisted every page.
			</li>
			<li>
				Fixed willpower-resistance fatigue removal by religious donation - priest dialogs should now show up on all priests.
			</li>
			<li>
				Fixed bogus log spam about none items, relating to worn item removal.
			</li>
			<li>
				Fixed forced follower start so it doesn't occur while mod is paused.
			</li>
			<li>
				Fixed the inappropriate enforcement of deals while enslaved.
			</li>
			<li>
				Added variant "debt added" follower announcements, depending on gold-control mode and willpower.
			</li>
			<li>
				Reworked device application system for enslavement events.
			</li>
			<li>
				Fixed various info/tooltip items that were not displaying, or had bad information, including labels and tooltips on main deals menu page.
			</li>
			<li>
				Improved data about debt/gold-control on stats page.
			</li>
			<li>
				Raised quest priorities, which should hopefully make more followers reliably devious without causing problems in other mods.
			</li>
			<li>
				Fixed broken slider for daily debt increase due to boredom.
			</li>
			<li>
				Fixed issue with main debt/deals dialog vanishing at certain willpower levels if you had no deals.
			</li>
			<li>
				Fixed issue with boredom, and debt penalties not being reset on enslavement via the "Enslave Me" MCM button.
			</li>
			<li>
				If you have no default SS "slaver", your first DF will be assigned to that role. If you set one yourself it always takes precedence.
			</li>
			<li>
				Added Simple Slavery enslavement button in Debug menu that works even if SS not present (sort of). Uses as much of the SS enslavement path as it can.
			</li>
			<li>
				Fixed display of boredom on main stats page not showing decimal place.
			</li>
			<li>
				Rewrote and extended male/female variants for innkeeper modular deal and vendor modular deal scenes.
			</li>
			<li>
				Fixed generic bug with foreplay and anal sex not selecting foreplay or anal.
			</li>
			<li>
				Improved sex animation selection with respect to devices, for almost all occasions sex is played by DF.
			</li>
			<li>
				Fixed merchant + innkeeper deals so that oral isn't used if gagged, vaginal isn't used if belted. (May need new game).
			</li>
			<li>
				Fixed equipment weights of whore armor.
			</li>
			<li>
				Weird potion now debuffs magic, increases stagger taken, reduces intimidate and has higher weight scaling for armor.
			</li>
			<li>
				Can toggle and configure custom whore armor in hardcore mode.
			</li>
			<li>
				"Other mods" settings no longer hidden in hardcore mode, so you can still configure/diagnose external feature linkages.
			</li>
			<li>
				Fixed walk away from deal dialog so you always get a deal at low willpower. (May need new game).
			</li>
			<li>
				Fixed looping dialogs on low will for modular deals.
			</li>
			<li>
				Fixed buggy walk away dialogs for modular deals, where the follower would say odd things if you walked away.
			</li>
			<li>
				Re-FNIS of animation behavior with latest FNIS-for-modders.
			</li>
			<li>
				Added some boredom relief from the denial scenes triggered by the Ownership Deal.
			</li>
			<li>
				Added longer delays when giving out multiple devices for a deal.
			</li>
			<li>
				Changed the details of penalties to max resistance from devices, if enabled. Removed heavy-bondage from the items that reduce max resistance. Added corset/harness to causes. Doubled the max resistance reduction from collars.
			</li>
			<li>
				The boredom interval can now be turned down to 0.25 of a day, and is adjustable in 0.25 increments.
			</li>
			<li>
				If you change the boredom interval to make it shorter, it can make the next boredom event occur sooner, instead of waiting for the original timer to elapse before changing the duration (which was causing confusion). Extending the duration will still wait for the current timer to elapse.
			</li>
			<li>
				Boredom can now increase even if you have very low willpower. Boredom increases are larger if you have a bigger deficit between actual and expected deals.
			</li>
			<li>
				Some notifications are shown about boredom and expected deal changes.
			</li>
			<li>
				If you walk away from the follower payment dialog, in most cases, you will pay some amount of cash, usually just 100.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.11 (2020-04-24)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				added a display in the MCM to show your "classic" deals, similar to the modular deals feature.
			</li>
			<li>
				added a button to restore player controls in the Debug menu.
			</li>
			<li>
				added additional dialog if you don't have enough money to impress a priest.
			</li>
			<li>
				added a way to get unbound without paying, if your follower bound you in town due to the slut deal.
			</li>
			<li>
				added a mechanism to stop classic deals conflicting with modular deals in problematic ways.
			</li>
			<li>
				fixed basic follower recruiting for players with no follower framework - DF should activate automatically again.
			</li>
			<li>
				fixed problems with excluding ex-followers - should now be able to exclude ex-followers from becoming devious.
			</li>
			<li>
				now able to pay priests as intended.
			</li>
			<li>
				fixed tape-gag and regular-gag conflict - you shouldn't get these deals together now.
			</li>
			<li>
				weird potion scenes made more robust - weird potion weakness should not kick in mid-scene, or while on a horse, or in other silly places.
			</li>
			<li>
				corruption of modular deal state - several fixes.
			</li>
			<li>
				modular deals - should not give modular crawl and bound in towns deal together.
			</li>
			<li>
				fixed processing for the add-follower mod-event - tested for vanilla scenario.
			</li>
			<li>
				taking deals now costs some resistance, proportional to deal stage.
			</li>
			<li>
				getting a "freebie" deal costs more resistance, to compensate for the freebie a little.
			</li>
			<li>
				gold mode now requires &gt; 0 willpower to ask for more gold and &gt; 1 willpower to ask to leave gold control.
			</li>
			<li>
				optimize deals tick-box is removed, as it is no longer relevant.
			</li>
			<li>
				some dialogue words were changed.
			</li>
			<li>
				how the follower speaks to you now depends more on willpower and less on deal count.
			</li>
			<li>
				modular deal configuration now allows you to make limited changes to configuration while you have deals.
			</li>
		</ul>
	</div>
</div>

<p>
	<br />
	<strong>Changes in 2.10 (2020-01-27)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				fixed some mod events that nobody is using yet
			</li>
			<li>
				fixed missing message box texts for load and save
			</li>
			<li>
				subtle change to what version of vanilla DialogueFollower quest that the mod is built against
			</li>
			<li>
				cleaned some ESP errors and wild-edits
			</li>
			<li>
				this version may fix problems for a small number of people who were having problems with no follower framework installed
			</li>
			<li>
				if you don't have problems recruiting or dismissing followers, no need to upgrade
			</li>
			<li>
				if you have a follower framework, no need to upgrade
			</li>
			<li>
				you might want to upgrade to this if SexLab Survival releases a version that says it needs 2.10+ for some feature
			</li>
		</ul>
	</div>
</div>

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

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.09 (2020-01-19)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				fixed pause mod now stops the guard arrest forced start scenario
			</li>
			<li>
				fixed any deal clears all debt
			</li>
			<li>
				fixed follower refuses to help remove gags or boots for made-up reasons
			</li>
			<li>
				fixed Ownership deal not giving you both sets of cuffs
			</li>
			<li>
				fixed enslavement gives you the correct boots and collar, even on old games
			</li>
			<li>
				fixed garbled explanation of deals reduce willpower
			</li>
			<li>
				added punishment for standing when crawling (if you use SD+)
			</li>
			<li>
				added quest device doesn't block all removal (done)
			</li>
			<li>
				added debt query dialog no longer has Goodbye flag
			</li>
			<li>
				added debug button to try and fix stuck scenes
			</li>
			<li>
				added debug button to immediately enslave PC
			</li>
			<li>
				added debug buttons to add devices
			</li>
			<li>
				added debug buttons to remove devices
			</li>
			<li>
				added debug button to repair follower
			</li>
			<li>
				added debug button to add 100 debt
			</li>
			<li>
				added debug button to reduce resistance
			</li>
			<li>
				did a first pass rebalance of resistance losses - you tend to lose a lot more now, but make SLS losses more proportionate
			</li>
			<li>
				added rape resistance loss now considers lots more devices
			</li>
			<li>
				added new mod event to consider "severity" when losing resistance (done)
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.08 (2020-01-14)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				you can set the expected deal limit setting in the MCM
			</li>
			<li>
				modders can detect the DF version with no dependency on DF required (for Monoman)
			</li>
			<li>
				a couple of little tweaks to games (Jarl game now has two endings, and some similar stuff)
			</li>
			<li>
				you can now get devices removed when you have a BlockGeneric device on, in exchange for deals
			</li>
			<li>
				collar removal mechanics completely redone
			</li>
			<li>
				fixed NFF mod detection info in MCM
			</li>
			<li>
				fixed not counting NFF followers
			</li>
			<li>
				fixed _df_global script missing from release zip that blocked follower dismissal
			</li>
			<li>
				fixed follower collar rage happening outside of towns
			</li>
			<li>
				sources for follower mod integration global shims also have developer dummies with _DEV on the end
			</li>
			<li>
				some games trigger on slightly higher willpower values than before (so games easier to get)
			</li>
			<li>
				very low willpower stops boredom accumulation
			</li>
			<li>
				playing games resets boredom and reduces expected deals
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.07 (2020-01-05)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				built-in support for EFF, AFT and NFF, there are no patches to install any more, FOMOD no longer needed
			</li>
			<li>
				added willpower fatigue system
			</li>
			<li>
				added follower boredom system
			</li>
			<li>
				BlockGeneric items now block all paid-for follower-based item removal (fixes mysterious device removal failures)
			</li>
			<li>
				fixed some missing scripts (source was missing from original DF)
			</li>
			<li>
				piercings should vibrate again
			</li>
			<li>
				should be possible to force forced follower start "pretend to be my master" to initiate
			</li>
			<li>
				attempted to fix some issues with forced follower start scenes - should be possible to rescue quest if scene fails
			</li>
			<li>
				shouldn't be challenged to show piercings while wearing warmer suit
			</li>
			<li>
				first pass on cleaning up the MCM layouts
			</li>
			<li>
				new mod event to add a follower and set various deal parameters
			</li>
			<li>
				new mod event to restore resistance
			</li>
			<li>
				should pick better oral animations
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.06 (2019-11-19)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				added minimum contract feature - lock in your follower for up to 120 days, defaults to 0.
			</li>
			<li>
				added various mod events that can be called to interact with DF.
			</li>
			<li>
				fixed weird potion in various ways - forced potion givers must now be members of PotentialFollower, so you can recruit them.
			</li>
			<li>
				fixed more issues with forced start where guard makes you pick a master - only triggers on low willpower and bondage combined
			</li>
			<li>
				fixed various missing scripts or scripts that were failing compilation
			</li>
			<li>
				fixed various enslavement related devices
			</li>
			<li>
				fixed various dialog conditions
			</li>
			<li>
				cleaned up some faulty dialogs that shouldn't exist any longer
			</li>
			<li>
				Thanks to @KLongad Sirtup who made a FOMOD installer. It will put AFT or EFF patch in for you. I'm not actually sure those patches work now. (They will not be needed in 2.07, which will have built-in soft-dep support for AFT, EFF and NFF).
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
	<strong>Changes in 2.05 (2019-10-13)</strong>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul style="background-color:#262626;color:#bcbcbc;font-size:14px;">
			<li>
				added new "retro" willpower regain mode, where willpower regained per sleep is limited, and based on deals and devices worn, rather than all regained at once.
			</li>
			<li>
				added mechanism to control how resistance is modified as you lose willpower (whether you get more, or less resistance each time you lose a point, and whether it just stays the same (the default)).
			</li>
			<li>
				made the feature where you get forced to have a follower by a guard a bit more likely to activate and work correctly (I haven't tested it at all though) but I made a lot of changes there.
			</li>
			<li>
				sleeping past six hours gives you willpower, even if you were woken up - what matters is how long you slept.
			</li>
			<li>
				if you're caught in the sleep-gag game, you don't regain any willpower.
			</li>
			<li>
				more tweaks to dialog and conditions, quite numerous.
			</li>
			<li>
				weird potion should be a little bit better.
			</li>
			<li>
				fixed (quite) a few device handling operations that trigger from dialog.
			</li>
			<li>
				some things that are supposed to help performance - you will never be able to tell, really - it should gradually add up to a slightly more responsive feel as I keep doing it.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	<strong>First release 2.04 (2019-09-27)</strong>
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">12923</guid><pubDate>Wed, 10 Feb 2021 01:52:00 +0000</pubDate></item><item><title>Introduction to Devious Followers</title><link>https://www.loverslab.com/blogs/entry/12922-introduction-to-devious-followers/</link><description><![CDATA[<p>
	This guide is for players who are trying Devious Followers Continued for the first time, and aren't sure what it does, and how it's going to change their game.
</p>

<p>
	I wanted to put this guide directly on the mod front page, but the LL page-size limit won't allow it.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Get a Follower</strong></span>
</p>

<p>
	 
</p>

<p>
	You will need a follower. Without a follower, DF won't do much.
</p>

<p>
	 
</p>

<p>
	A vanilla follower, such as Mjoll, or vanilla mercenary such as Janessa is fine, and the many hundreds of "standalone" follower mods you can find on LL or the Nexus will all work fine with DFC too.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Recruitment</strong></span>
</p>

<p>
	 
</p>

<p>
	Recruit the follower, and after a while they should say something like, "I hope you won't cheat me like other adventurers..."
</p>

<p>
	 
</p>

<p>
	After this, you can initiate a dialog and select the [Click Me] dialog. This will give you some DF tips and the mod will be enabled to work properly. After this you won't have to [Click Me] on any new followers. The [Click Me] is there so you know what you're getting into.
</p>

<p>
	 
</p>

<p>
	If a follower is slow to start, try talking to them. You should see a dialog like "Can I rely on you?" Clicking this will push follower registration along immediately.
</p>

<p>
	 
</p>

<p>
	Sometimes a follower just won't work. There is a feature in the MCM Debug menu to add reluctant followers. If a follower doesn't get the debug dialog after using the option to add followers in the debug menu, it's because they are not properly configured as a follower in Skyrim, and lack the vanilla follower factions. You can find how to fix this in any guide on how to make a follower.
</p>

<p>
	 
</p>

<p>
	You can also use an option in the Debug menu to stop a follower (under your crosshair) becoming devious. You can undo this just as easily if you change your mind. You can't stop a follower from being devious if they are already your follower though; you need to do that before you recruit them.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Pay per Day</strong></span>
</p>

<p>
	<br />
	Once your follower is recognized by the mod, they will periodically charge you money for their services. Their fees are priced "per day", but you can control how often they update what you owe in the MCM. That frequency won't change the costs (much), just how often they remind you about your debt and how incrementally it's added. Adding debt more often can result in slightly more interest accruing unless you are quick with making the payments. However, every time you pay your follower, you gain a little fatigue to your resistance, so paying less often may be better unless you want to end up under your follower's thumb faster.
</p>

<p>
	 
</p>

<p>
	Your devious follower is "essential" and cannot be killed. However, additional followers you hire are not. This is so you can't escape your debts through trivial murder - it would be far too easy.
</p>

<p>
	If you don't want to pay your follower manually, you can use the gold control mode, and the follower will look after your money. You might regret this. Nothing comes for free. In some cases the follower will force you into this mode because of debt and low willpower. You cannot dismiss your follower while it is active.
</p>

<p>
	 
</p>

<p>
	If you don't pay your follower enough money, you will accrue debt, and also interest on your debt, and the follower will happily let you do this ... up to a point. Once your debt gets too much, the follower will take action to make you reduce the debt. This might involve forcing you into deals, or they might take items from your inventory, or in extreme cases, they may enslave you. You can configure the worst outcomes in the Punishments section of the MCM. In most cases, you will simply get forced into deals without a chance to refuse them. It's better to take the deals yourself once your debt gets high. If you do it proactively, you can refuse the worst deals instead of taking them, though this adds even more debt.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Deal Basics</strong></span>
</p>

<p>
	 
</p>

<p>
	One way to reduce your debt is to agree to deals with the follower. Deals may also be forced if you have low Willpower, or you simply owe a huge amount. When you take a deal, your debt is reduced. You must then follow the terms of the deal until you can pay it off. Initially, new deals are very expensive to pay off, but as their 'duration' elapses, they go down in price - you can configure this. The prices for debt relief, duration, and payout cost are configurable in the MCM, along with the penalty for early payout.
</p>

<p>
	 
</p>

<p>
	Many deals will require you to wear a devious device. You do not have to lock the device; the follower just needs to see you are wearing it. You may even be able to remove it, briefly, without the follower noticing. This is one way that you may manage to eat or drink while wearing a gag. If the follower catches you breaking the terms of the deal, they will add more debt to punish you. The device you wear isn't usually specific either. If you need to wear a corset or harness, any corset or harness will do, it doesn't have to be the one the follower gave you. There are exceptions to this like the circlet, amulet and ring deals, along with the chastity belt, the tape gag, also the items required if you are enslaved, and some others.
</p>

<p>
	 
</p>

<p>
	Paying off a deal is initially very expensive. Depending on how you configure, it may be much more than your final deal buyout value. As time passes, the cost to buy out of the deal will decrease until it reaches the configured buyout cost. It will not drop below that. However, it's possible for deal durations to be extended in some cases, which makes buyout expensive again.
</p>

<p>
	You can configure it so that "punishment" will remove some deals, and it nearly always removes debt, but you can configure a minimum amount that is removed. The exact allowances will vary. If you're punished by being sold into Simple Slavery, all your deals and debt will be removed and your devious follower relationship is ended. If the follower sells you to another follower, it will use the configured values.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Dismissal</strong></span>
</p>

<p>
	 
</p>

<p>
	You should (only) be able to dismiss your follower if you pay off all your debt, have no deals, and are not in gold control mode. The exception to this is if you configure a minimum contract duration. If you do that you cannot dismiss your follower until you've been with the follower at least that long. If you use a follower framework, don't use its debug features to dismiss your DF - it will likely cause you problems. DFC tries to stop the follower frameworks from doing this, but it doesn't try too hard, as there are situations where you may need to do it to repair a broken game that the mod can't foresee. You can also set restrictions on dismissal, for example, so that it can only occur in sensible places and you can't dismiss a follower in a dungeon, or immediately after leaving town.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Willpower and Resistance</strong></span>
</p>

<p>
	 
</p>

<p>
	Willpower and Resistance measure how well you are able to resist the follower's demands and overbearing personality. Willpower directly determines how the follower treats you, and changes the responses and topics you have in dialogs. Willpower ranges from 10 (max) down to 0. If your willpower is below four or so, the follower will have considerable influence over your decisions, and you may have troubles refusing deals.
</p>

<p>
	 
</p>

<p>
	You regain willpower by sleeping at least six hours at a stretch. This also restores follower lives (see later). The more devices you are wearing when you sleep, the less willpower you recover. Having deals can also reduce willpower restoration. There are many options for willpower in the MCM.
</p>

<p>
	 
</p>

<p>
	Resistance is a value that is like lives for willpower. When distressing things happen, your resistance will be reduced. If it is reduced to zero, then you will lose a point of willpower, and then your resistance will be reset. How resistance varies with willpower can be configured in the MCM. You might want to stick with the defaults to start with, but if you use Spank that Ass or Sexlab Survival, those mods add many new ways to lose resistance, and you should probably increase the resistance per willpower value to about 30 to make up for it. You should probably also reduce the willpower lost in furniture a bit in the SLS MCM, especially if you have MME as well.
</p>

<p>
	 
</p>

<p>
	While SLS can quickly burn through your resistance if you end up being spanked in furniture, the fastest way to lose it is to be raped while wearing a lot of devices. This means that mods that set the victim flag when they should not make a lot of trouble for the player in DFC. It also means that deals that make you vulnerable to rapists you might have added via some other mod are especially dangerous.
</p>

<p>
	 
</p>

<p>
	With SLS, it's possible to lose a lot of willpower, and end up vulnerable to being forced to have a devious follower by a guard, if you're bound. Alternatively, SLS can inflict a devious follower on you if you're caught "without an escort". With SLS, a follower can be made mostly obligatory, and that will make it harder to avoid the complications that DF adds.
</p>

<p>
	Your devious follower can manage your SLS licenses for you, which does some of the pressure off, but you're basically trading an immediate cash problem for a long-term debt problem. Sure, you can get reliable and easy access to licenses, which makes having a devious follower quite useful, but they will be adding more debt than you'd otherwise get. If a lot of expensive licenses come due at once you could find yourself in a difficult debt situation quite suddenly.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Follower Lives</strong></span>
</p>

<p>
	 
</p>

<p>
	Every time your follower is knocked into bleedout they lose a 'life'.
</p>

<p>
	 
</p>

<p>
	Lives are restored when the follower sleeps, but it is always assumed that if you sleep, your devious follower also sleeps.
</p>

<p>
	 
</p>

<p>
	They do not need to have a bed for this, as long as you can sleep, they can. Maybe they find one once you are sleeping? You can buy a bed for only the follower in an inn, in which case you do not sleep, and do not regain willpower, and have some time to kill. Normally, you would only do this if you can't afford a bed for yourself but are desperate to restore your follower's lives.
</p>

<p>
	If you get a bed for yourself, you do not need to pay for the follower separately. The follower automatically sleeps when you sleep, even if you don't see it happen!
</p>

<p>
	 
</p>

<p>
	Followers who run out of lives don't die, but they do become grumpy and will not help you remove devices or play gambling games. They may be unhelpful in other ways too.
</p>

<p>
	Your follower offers various benefits in return for the fees, beyond their regular follower capabilities. If they run out of lives, you cannot access those benefits, or even pay debt. Your DF can remove devious devices that you get trapped in - for a fee, and they can play a gambling game in which you can win cash, and another to win keys of various kinds. These are very useful when your willpower is good and you have plenty of money. They may become a financial trap for a PC who doesn't have sufficient earning capacity.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Games</strong></span>
</p>

<p>
	 
</p>

<p>
	If you find yourself in some devices, and your willpower is not good, the follower may decide you are happy to play a "game".
</p>

<p>
	 
</p>

<p>
	By game, they mean some humiliating sexual task that could involve giving the entire clientele of a tavern a blowjob, or it might be worse. In most cases you can simply add debt and skip the game, if you really don't want to play.
</p>

<p>
	 
</p>

<p>
	You can set the minimum time between games in the MCM. Don't make it too short, or you could find the games become too frequent and intrusive.
</p>

<p>
	Most games won't activate unless you exceed at least half the configured enslavement debt.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Against Your Will</strong></span>
</p>

<p>
	 
</p>

<p>
	If you are without a follower, and your willpower is very low, and you are wearing devices, guards may decide you have the demeanor of a slave, and will demand you take them to your master. Pick a follower to "pretend" to be your master so the guard will release you. The follower will become a DF, with some debt added up-front as payment for helping your escape. You can disable this feature in the MCM if you don't want guards harassing you.
</p>

<p>
	 
</p>

<p>
	If your debt grows beyond a threshold you can set in the MCM, and your willpower is not high, you may be enslaved by the follower. In this case your deals are suspended. However, the follower will dress you in devices of their choosing, make you crawl, work as a cheap whore, and behave quite capriciously. You will need to pay off a certain amount of debt to escape slavery. It's also possible for the follower to sell you to other potential followers.
</p>

<p>
	 
</p>

<p>
	There is a mysterious "potion" deal you can configure in the MCM. Do not enable the forced version unless you know what you're doing. Normally, you can always refuse this deal. If you take it, all your deals will be paid off and your debt reset to zero, but the follower, or some random NPC, will have a lever to control you indefinitely. This doesn't mean you must do whatever they say, but ... don't mess with this deal unless you like to be inconvenienced for the rest of your game. Also, you can configure intervals between the bothersome parts of this, so it can be made relatively unobtrusive if you want, but it's still quite hazardous, as you'll see if you ever play with it.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>More about Deals</strong></span>
</p>

<p>
	 
</p>

<p>
	Various deals impose daily obligations, to drink skooma, lactacid, be milked, offer sex, get spanked, and so on. You need to push the follower to progress these deals. If you do nothing, you will simply default and the follower will laugh and increase your debt. For all these deals to be enabled you will need to have the required mods installed.
</p>

<p>
	 
</p>

<p>
	The "key" deal is also similar to the daily deals, in that you have to act to avoid penalties. You must quickly use, or offer the follower any keys you find. If you are too slow to hand them over, they will search you and find them. If you are caught with keys, you will be punished with more debt. You can still play the key gambling game and get keys, but you will have to use them quickly. If you take too long the follower will take them back, and charge you for the privilege. When the key deal ends, the follower returns all the keys that were taken. You can also hide keys in containers and other places to keep them from the follower - for now at least. In many ways the key deal is quite mild, but it can be expensive if you don't pay attention. If you think it's too easy, post on the forum and I'll find a way to toughen it up!
</p>

<p>
	 
</p>

<p>
	Some deals involve being bound in town. You can usually ask the follower to remove the bindings once you are out of the safe guarded areas.
</p>

<p>
	Over time, the follower may get bored with you, especially if you keep paying your debts on time and don't have lots of deals to keep them amused with your misfortunes. Follower boredom leads to them increasing their prices. Dismiss the follower and find a new one to reset boredom. If you take more deals, or play games, or suffer other indignities, the follower might stop being bored automatically.
</p>

<p>
	 
</p>

<p>
	When you pay your follower, it wears down your resistance. This manifests as resistance fatigue. this is an amount of resistance that is removed from you after you sleep and regain willpower (and resistance), effectively impairing your maximum resistance. If you have high resistance fatigue, it can exceed your natural willpower restoration from sleeping and start to destroy your willpower. You can get rid of it by making big donations to priests. It carries over between followers, so be careful. If you don't make enough donations to keep up your self-esteem, you will inevitably fall prey to your follower's schemes. Another way to remove fatigue is to pay off deals, and the longer you set deals to last for by default, the more effective this will be.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Multiple Followers</strong></span>
</p>

<p>
	 
</p>

<p>
	You can set up the additional cost for extra followers in the MCM. This is a simple percentage extra per follower after the first, which could be zero, or 100%, or even more if you like. This can dramatically increase your costs if you have a lot of followers, but you will need a follower framework installed to recruit them - DFC does not do that for you. It does patch the frameworks though, so make sure it's allowed to overwrite. Also, be wary of installing all the bells and whistles from NFF - only the more basic options have been tried and tested.
</p>

<p>
	If you have multiple followers, only one will be your devious follower. The others are just normal followers in most respects and do not have the special dialogs. I always thought it would be cool if there were group games and things, but never had time to add them.  Also, as noted earlier, additional followers are not made essential, and may be killed as per normal if they aren't made essential by Skyrim, or some other mod.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Pausing Devious Followers Functionality</strong></span>
</p>

<p>
	 
</p>

<p>
	If something is going on in your game that just doesn't work with DFC. Maybe a Deviously Cursed Loot quest, or a quest that requires a certain follower who shouldn't be devious, then you can "pause" DFC and it will stop messing with your followers or accumulating debt. All your deals will be suspended and your follower will go back to being a completely normal follower. This will continue until you unpause the mod, if you ever do.
</p>

<p>
	 
</p>

<p>
	If you are enslaved into SD+ or some other mods, DFC can be set to auto-pause and unpause when you get your freedom.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Boredom and Punishments</strong></span>
</p>

<p>
	 
</p>

<p>
	Boredom is (for now) a simple mechanic that is intended to encourage you to take deals periodically.
</p>

<p>
	 
</p>

<ul>
	<li>
		Boredom resets if you take a deal. (Follower likes this).
	</li>
	<li>
		Boredom is reset if you have more deals than expected deals. (Follower likes this).
	</li>
	<li>
		Boredom increases over time while you have less deals than expected deals.
	</li>
	<li>
		Also, it only increases (in most cases) if you have some amount of willpower left.
	</li>
	<li>
		Boredom means your daily rate is increased or your deal discount is offset (basically discount and boredom increase cost are combined and capped).
	</li>
	<li>
		The current caps are max discount 90% and max penalty 100%, so you won't be charged more than double due to boredom.
	</li>
</ul>

<p>
	 
</p>

<p>
	If you take even one deal, your boredom is reset to zero, and as long as you have enough deals, it won't go up, so it's easy to manage.
</p>

<p>
	 
</p>

<p>
	In future, it may become less generous, and the amount of boredom removed when you do something the follower likes could be limited and configurable.
</p>

<p>
	 
</p>

<p>
	The impact on your daily rate is already configurable. If you don't think it's severe enough, you can increase it in the MCM.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	You won't be enslaved due to boredom (directly).
</p>

<p>
	 
</p>

<p>
	The mechanic that triggers a follower to take direct action is debt. Purely debt.
</p>

<p>
	Boredom merely accelerates accrual of that debt.
</p>

<ul>
	<li>
		If you owe more than the debt limit, they will act to correct it.
	</li>
	<li>
		If you get too many deals they will enslave instead of adding more.
	</li>
	<li>
		If you owe more than half the debt limit, various games unlock.
	</li>
	<li>
		If you stay under half-debt-limit, the follower will not do much to trouble you.
	</li>
</ul>

<p>
	<br />
	However, there is also an enslavement mechanic based on having a lot of deals.
</p>

<p>
	Get too many deals and a timer starts for enslavement. Make sure you pay off some deals before it happens.
</p>

<p>
	 
</p>

<p>
	You can configure these behaviors in the Punishment page, or adjust the enslavement amount in the main config page.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">12922</guid><pubDate>Wed, 10 Feb 2021 01:39:00 +0000</pubDate></item><item><title>Performance Patterns for Safe Event Handling</title><link>https://www.loverslab.com/blogs/entry/12899-performance-patterns-for-safe-event-handling/</link><description><![CDATA[<p>
	It's often the case that you need to handle a "sensitive" event in some mod code. These events are things like <span style="font-family:'Courier New', Courier, monospace;"><em>OnHit</em></span>, <span style="font-family:'Courier New', Courier, monospace;"><em>OnAnimationEvent</em></span>, and <span style="font-family:'Courier New', Courier, monospace;"><em>OnItemAdded</em></span>. What these events have in common is that in some cases they can be produced in large busts.
</p>

<p>
	 
</p>

<p>
	An event handler that takes too long handling those events can result in an overloaded script system that overflows its stack and gets suspended, with unpleasant results for your game.
</p>

<p>
	 
</p>

<p>
	Another kind of event that exhibits this problem is one generated by a cloak, and it follows that trigger box events can also cause similar overloads.
</p>

<p>
	 
</p>

<p>
	In all cases, the problem is the same, efficient handling of the events. While some will say "don't use cloaks ever", that's a gross over-statement that takes a dogmatic approach to cloaks. Problems have arisen because the pattern shown in the CK cloak tutorial is quite bad, and adding scripts with cloaks is generally a bad idea, but cloaks in general are no worse than any other event that can fire rapidly in bursts - probably less bad than an OnItemAdded running on the player.
</p>

<p>
	 
</p>

<p>
	The central problem with script in these handlers is the basic problem of taking too long to execute. This is caused simply by doing too much in the handler script. Scripts that go off and potentially do heavy work are almost certain to cause an issue unless additional measures are taken.
</p>

<p>
	 
</p>

<p>
	A favorite pattern is the "busy state", which uses Papyrus built-in states to avoid overload. In this pattern, after a successful call to the event handler, additional calls to the handler will do nothing unless the first call has completed.
</p>

<p>
	 
</p>

<p>
	The code looks something like this:
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-family:'Courier New', Courier, monospace;"><span style="color:#16a085;">Event</span> OnItemAdded(<span style="color:#2980b9;">Form </span>addItemBase, <span style="color:#2980b9;">Int</span> itemCount, <span style="color:#2980b9;">ObjectReference </span>addItemReference, <span style="color:#2980b9;">ObjectReference </span>theSourceContainer)</span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    <span style="color:#2ecc71;">GoToState</span>(<span style="color:#9b59b6;">"Busy"</span>) <span style="color:#e74c3c;">; Enter busy state - any further calls will get the other event handler</span></span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    <span style="color:#7f8c8d;">... do some serious work ... could take a while ...</span></span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    <span style="color:#2ecc71;">GoToState</span>("") <span style="color:#e74c3c;">; Leave the busy state</span></span>
		</p>

		<p>
			<span style="color:#16a085;"><span style="font-family:'Courier New', Courier, monospace;">EndEvent</span></span>
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><span style="font-family:'Courier New', Courier, monospace;">State </span></span><span style="font-family:'Courier New', Courier, monospace;">Busy</span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    <span style="color:#16a085;">Event</span> OnItemAdded(<span style="color:#2980b9;">Form </span>addItemBase, <span style="color:#2980b9;">Int </span>itemCount, <span style="color:#2980b9;">ObjectReference </span>addItemReference, <span style="color:#2980b9;">ObjectReference </span>theSourceContainer)</span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">        <span style="color:#e74c3c;">; Empty function does nothing.</span></span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    <span style="color:#16a085;">EndEvent</span></span>
		</p>

		<p>
			<span style="color:#16a085;"><span style="font-family:'Courier New', Courier, monospace;">EndState</span></span>
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	This approach is fine is you just want to know the event is being hit by <em>something</em>. It's good for situations like an OnHit event where you want to know the player is being hit in combat, but you don't need to handle every hit, just as many as you can - and the player won't really notice those hits you didn't process.
</p>

<p>
	 
</p>

<p>
	But, quite frequently, the reason you're running an event handler is because you need to get all the events. You really don't want to miss any. This is most likely with an OnItemAdd, where you're looking for a particular item.
</p>

<p>
	 
</p>

<p>
	An appropriate filter is the recommended solution to OnItemAdd performance risks, and that's great if you know exactly what items you are interested in, and the list is small. If the list is huge, or you don't know the items but simply that they have a certain keyword, or came from a certain mod, then filtering is probably unsuitable.
</p>

<p>
	 
</p>

<p>
	Nevertheless, where you can use a filter, that should be your first approach, as filters are very good at reducing the number of event calls, so you don't have to run a lot of code on irrelevant items at all.
</p>

<p>
	 
</p>

<p>
	But let's suppose a filter is not going to cut it. Imagine you are doing what I wanted to do recently, which is to detect every DD key the player obtains.
</p>

<p>
	There are now many mods that create their own uniquely flavored DD keys, and so it's not enough just to check for the default DD keys any longer - if it ever was.
</p>

<p>
	 
</p>

<p>
	I could do this...
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-family:'Courier New', Courier, monospace;"><span style="color:#2980b9;">Keyword </span><span style="color:#3498db;">Property </span>ddRestraintsKey <span style="color:#3498db;">Auto</span><br />
			<span style="color:#2980b9;">Keyword </span><span style="color:#3498db;">Property </span>ddChastityKey <span style="color:#3498db;">Auto</span><br />
			<span style="color:#2980b9;">Keyword </span><span style="color:#3498db;">Property </span>ddPiercingKey <span style="color:#3498db;">Auto</span></span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;"><span style="color:#2980b9;">GlobalVariable </span><span style="color:#3498db;">Property </span>_DFKeyFound <span style="color:#3498db;">Auto</span></span>
		</p>

		<p>
			 
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;"><span style="color:#16a085;">Event </span>OnItemAdded(<span style="color:#2980b9;">Form </span>addItemBase, <span style="color:#2980b9;">Int </span>itemCount, <span style="color:#2980b9;">ObjectReference </span>addItemReference, <span style="color:#2980b9;">ObjectReference </span>theSourceContainer)</span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    <span style="color:#16a085;">If </span>_DFKeyFound.GetValue() &gt; 0.0<br />
			        Return<br />
			    <span style="color:#16a085;">EndIf</span><br />
			    <span style="color:#16a085;">If </span>addItemReference<br />
			        <span style="color:#16a085;">If </span>addItemReference.HasKeyword(ddRestraintsKey) || addItemReference.HasKeyword(ddChastityKey) || addItemReference.HasKeyword(ddPiercingKey)<br />
			            _DFKeyFound.SetValue(1.0)<br />
			        <span style="color:#16a085;">EndIf</span><br />
			    <span style="color:#16a085;">Else</span><br />
			        <span style="color:#16a085;">If </span>addItemBase.HasKeyword(ddRestraintsKey) || addItemBase.HasKeyword(ddChastityKey) || addItemBase.HasKeyword(ddPiercingKey)<br />
			            _DFKeyFound.SetValue(1.0)<br />
			        <span style="color:#16a085;">EndIf</span><br />
			    <span style="color:#16a085;">EndIf</span></span>
		</p>

		<p>
			<span style="color:#16a085;"><span style="font-family:'Courier New', Courier, monospace;">EndEvent</span></span>
		</p>
	</div>
</div>

<p>
	There are no states needed in this case. It's not ... <em>terrible</em> ... the work done in the handler is strictly bounded, and once the _DFKeyFound global gets set, further calls early-out and do nothing. Though, of course, a massive inventory flood coming from emptying Sanguine's chest in SD+, or the prison confiscation chest, or similar, probably wouldn't ever set that value, and the script would run a lot of times. Possibly a couple of hundred times in a single burst - but it's not such a huge script it would bring down your game - it would just take a while to clear. But ... if you then piled more load on top, it might become an issue.
</p>

<p>
	 
</p>

<p>
	So, the above code would probably be ok, but it's still a <em>little </em>worrying.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	It could be better. We could do less. What is the minimum we could do?
</p>

<p>
	One approach could be this:
</p>

<p>
	 
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-family:'Courier New', Courier, monospace;"><span style="color:#16a085;">Event </span>OnItemAdded(<span style="color:#2980b9;">Form </span>addItemBase, <span style="color:#2980b9;">Int </span>itemCount, <span style="color:#2980b9;">ObjectReference </span>addItemReference, <span style="color:#2980b9;">ObjectReference </span>theSourceContainer)</span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    StorageUtil.FormListAdd(Player, <span style="color:#8e44ad;">"DF_KeyRuleInventoryAddListItems"</span>, addItemReference)<br />
			    StorageUtil.FormListAdd(Player, <span style="color:#8e44ad;">"DF_KeyRuleInventoryAddListBases"</span>, addItemBase)<br />
			<span style="color:#16a085;">EndEvent</span></span>
		</p>
	</div>
</div>

<p>
	FormListAdd is for all intents instantaneous compared to any Papyrus execution; the cost is entirely dominated by the Papyrus overhead.
</p>

<p>
	 
</p>

<p>
	Somewhere else there is a regular service routine that pulls everything out of the lists and deals with it. How that's done properly is a topic of its own, and I don't want to get stuck in that, so let's just pretend it's easy to iterate over each list and process the items. One list is mostly going to be full of "None".
</p>

<p>
	 
</p>

<p>
	This is the least we could reasonably do in a handler, and it won't miss any items.
</p>

<p>
	The down side of this is that we absolutely must service those lists reliably or they will grow without bound, and probably cause a CTD.
</p>

<p>
	That is also probably an unacceptable risk. What if the Papyrus servicing the lists fails?
</p>

<p>
	 
</p>

<p>
	Here's the compromise I came up with for DF:
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<span style="font-family:'Courier New', Courier, monospace;"><span style="color:#16a085;">Event </span>OnItemAdded(<span style="color:#2980b9;">Form </span>addItemBase, <span style="color:#2980b9;">Int </span>itemCount, <span style="color:#2980b9;">ObjectReference </span>addItemReference, <span style="color:#2980b9;">ObjectReference </span>theSourceContainer)</span>
		</p>

		<p>
			<span style="font-family:'Courier New', Courier, monospace;">    ; The obvious risk here is that we don't service this list and it grows without bound...<br />
			    ; So don't allow that.<br />
			    <span style="color:#16a085;">If </span>StorageUtil.FormListCount(Player, <span style="color:#8e44ad;">"DF_KeyRuleInventoryAddList"</span>) &lt; 1000<br />
			        <span style="color:#16a085;">If </span>addItemReference<br />
			            StorageUtil.FormListAdd(Player, <span style="color:#8e44ad;">"DF_KeyRuleInventoryAddList"</span>, addItemReference)<br />
			        <span style="color:#16a085;">Else</span><br />
			            StorageUtil.FormListAdd(Player, <span style="color:#8e44ad;">"DF_KeyRuleInventoryAddList"</span>, addItemBase)<br />
			        <span style="color:#16a085;">EndIf</span><br />
			    <span style="color:#16a085;">EndIf</span></span>
		</p>

		<p>
			<span style="color:#16a085;"><span style="font-family:'Courier New', Courier, monospace;">EndEvent</span></span>
		</p>
	</div>
</div>

<p>
	In this case, if the list is overflowing, we back off and stop adding - items will be lost - but this is better than creating a massively bloated list that is going to lag in processing anyway.
</p>

<p>
	In fact, with a limit of 1000, if we are skipping filling the list, it's <em>almost certainly because the servicing routine has stopped running and is dead</em>.
</p>

<p>
	Also, I took a little Papyrus time to determine whether to handle as item or base. This is a less clear-cut whether it's the right approach, but it saves time later in processing the list later, that is for sure.
</p>

<p>
	 
</p>

<p>
	The alternative is to use the approach above and fill two lists (or the same list) with both inputs and discard all the None items later. Another approach is to discard non-uniques, which will filter out all the None items at the point of add - but those calls to StorageUtil are going to start using a bit more CPU if you do that. What's best? You'd need to profile in detail to know. I couldn't be bothered going that far this time.
</p>

<p>
	 
</p>

<p>
	So, there is no straight answer to any problem, and no perfect solution. But sometimes the "busy" state pattern is not going to do what you want, and you need something else.
</p>

<p>
	Busy state invariably discards a lot of calls when you get a burst. It maintains performance, but the cost is lots of lost events.
</p>

<p>
	 
</p>

<p>
	States can result in some hierarchic resolution of the state declarations, so they are more costly than they look, but I suspect it's still negligible. The problem is really losing all those calls that you made the handler to catch in the first place.
</p>

<p>
	 
</p>

<p>
	Without detailed profile results it's hard to say exactly what would be the absolute best approach here; but profiling this sort of scenario in a meaningful way is not trivial. I can easily imagine some garbage profile results, but a useful measure might be how often we get a suspended stack.
</p>
]]></description><guid isPermaLink="false">12899</guid><pubDate>Sun, 07 Feb 2021 07:13:00 +0000</pubDate></item><item><title>Devious Followers Continued - 2021 Roadmap</title><link>https://www.loverslab.com/blogs/entry/12761-devious-followers-continued-2021-roadmap/</link><description><![CDATA[<p>
	<span style="color:rgb(127,140,141);"><em>Note that I delete stuff from the roadmap if I notice it's already been done. A good amount has been done so far this year. These things are actually getting into the game!</em></span>
</p>

<p>
	 
</p>

<p>
	DFC development is mostly paused this month (just some urgent bug fixes), as work on SLAX is long, long overdue.
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><strong>2.14.3</strong></span>
</p>

<ul>
	<li>
		Reduce the number of licenses bought for slaves. (STARTED - just needs MCM?) Fix bugs around SLS enable/disable license options while licensing;
	</li>
	<li>
		Some kind of tweak to "follower sold my items" quest so it's not totally avoidable or exploitable. Possibly add a toggle to disable item removal entirely;
	</li>
	<li>
		Willpower-based payment reduction - the amount of debt reduction from paying the follower can be adjusted based on your willpower if it's low enough; configure max penalty at zero willpower in MCM; this means you must pay more gold to get the same debt reduction. Stacks with the slavery mechanic that reduces enslaved payment values;
	</li>
	<li>
		Eagerly forced deals mode - if you meet criteria (willpower, devices) then if debt exceeds deal value, you get a deal right away whether you want it or not (except in dungeons);
		<ul>
			<li>
				Refuse the deal and get two different deals instead?
			</li>
			<li>
				Set threshold willpower with MCM slider;
			</li>
			<li>
				Threshold adjustment for being naked (or equivalent);
			</li>
			<li>
				Devices such as collar or heavy bondage bypass willpower requirement;
			</li>
			<li>
				Boredom threshold + lack of expected deals may also trigger this;
			</li>
		</ul>
	</li>
</ul>

<p>
	 
</p>

<p>
	<span style="color:#2ecc71;"><strong>2.14.X</strong></span>
</p>

<ul>
	<li>
		Guided deal path - alternative deal allocation mechanic - based on personality - see below for details;
	</li>
	<li>
		As a slave, follower will take and sell items that you purposely give them. Cash goes directly towards your debt;
	</li>
	<li>
		Eagerly forced gold control mode - if you meet criteria (willpower, devices, debt) you get put into gold control mode without having to exceed slavery threshold, or ask for it.
	</li>
	<li>
		Detect SLTR status and behave sensibly if the PC is enslaved into SLTR when it's also a DFC enslavement outcome;
	</li>
	<li>
		Dialog to ask for SLTR slavery pre-emptively;
	</li>
</ul>

<p>
	 
</p>

<p>
	<span style="color:#16a085;">What happens after 2.14.X will depend on poll results.</span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><strong>Small Items</strong></span>
</p>

<ul>
	<li>
		Get fed and watered by the follower when wearing a gag;
	</li>
	<li>
		Follower will escape from DDs (using lives, your key, etc) and pause DFC if they can't;
	</li>
	<li>
		More external slavery such as SD+;
	</li>
	<li>
		An alternative to being made to crawl when enslaved. Pony outfit perhaps?
	</li>
	<li>
		More improvements to chastity handling in sex;
	</li>
	<li>
		Magic-license collar awareness for SLS. (Still waiting on a proper non-beta SLS release for this);
	</li>
	<li>
		Chaos Mode option to only randomize on hire of a new (different) follower; possibly remembers settings from old followers;
	</li>
</ul>

<ul>
	<li>
		Offer sex without a deal to reduce boredom;
	</li>
	<li>
		Offer sex without a deal and get a discount if you aren't horny when you do it;
	</li>
	<li>
		Offer deals of your own choosing if your willpower is high enough;
	</li>
	<li>
		Follower will sometimes comment on things you haven't done today but <em>should </em>- such as offer sex, drink skooma/lactacid, give milk, etc;
	</li>
	<li>
		Better sleeping - bed deal, sleeping on the floor, etc.
	</li>
	<li>
		Talk to follower to auto-fit any items you need to comply with your deal rules (and get charged for any items you didn't have in your inventory);
	</li>
	<li>
		Prevent multiple DFC events occurring at the same time - should already work - needs fixes? Hasn't been reported for a while, but needs checking for games;
	</li>
	<li>
		BiS Awareness (mainly for the cum deal, you might be punished if you wash);
	</li>
	<li>
		Take a break mode - time away from follower.
	</li>
</ul>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><strong>Big rocks to move...</strong></span>
</p>

<p>
	I don't know exactly where to fit these in, but some will probably replace other things in the lists, depending on what people most ask for and what's topical.
</p>

<ul>
	<li>
		See the big list of deals and other wish-list stuff below;
	</li>
	<li>
		Full DD5 support and LDC re-write;
	</li>
	<li>
		Ability for the follower to set (radiant) quest objectives for looting opportunities;
	</li>
	<li>
		Follower "familiarity";
	</li>
	<li>
		Better households.
	</li>
</ul>

<p>
	 
</p>

<p>
	New sex/bondage games are something that might be done in an external mod.
</p>

<p>
	Though, when I say "another mod" that may be misleading. It may be in DFC and share the same ESP and MCM, but will be totally new code that doesn't require a Devious Follower. Or might not.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>Guided Deal Path</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			I can now implement more complex mechanics to determine the order deals are offered, such as personality-driven deals.
		</p>

		<p>
			Instead of what deal you get being determined by the dialog system, the deals are determined by script.
		</p>

		<p>
			This means I can offer a "guided" path for deals, where you get sensible offers instead of random ones.
		</p>

		<p>
			There can still be some variation, but it would be more structured than now.
		</p>

		<p>
			<em>Probably </em>there will be a handful of "paths": slave path, denial path, whore path, cow path, and the path will determine the subset of deals you get - it's impossible to get all deals at once.
		</p>

		<p>
			 
		</p>

		<p>
			Totally random deals will always be an option, by picking "random path" or something like that.
		</p>

		<p>
			 
		</p>

		<p>
			Paths might be something you can set on a per follower basis, instead of just globally, giving the follower deals they prefer to offer over others.
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>Radiant Quests</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul>
			<li>
				Looting - go to a location with a chest and loot the chest. There will be a book with a joke title in the chest items. The follower will take the book. When you get to a town they will reward you with a "cut" - willpower dependent. The lower your willpower, the more aggressive the time limit. After the time limit the quest ends in failure. Depending on how much you owe, and whether you are enslaved, and your willpower, there will be a penalty for failure. For a PC in control, it will just be a lost life or two. For a PC enslaved, it will be extra debt, punishment events, etc
			</li>
			<li>
				Looting devious items - go to a location with a chest and loot the chest. There is a devious item inside. In most cases the item won't be too troublesome, something like a corset, a plug, piercings, a collar, cuffs, etc. The follower will ask you to wear the item. From now on, any time you wear the item, the follower will offer a discount. If you are enslaved, you *must* wear the item (except in dungeons) or be punished, unless if conflicts with a core slavery item. Wearing items helps stop boredom gain. Wear enough and boredom will reduce.
			</li>
			<li>
				In some cases the items will be harsh. These are much more effective in terms of reward, and can still be worn in town without too much trouble.
			</li>
			<li>
				Taking deals that match the items is advantageous, if you can arrange things that way.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>BiS Awareness</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			For all deals and games with cum, follower is aware of washing or removing cum by any means and will punish it with debt, probably also re-apply cum.
		</p>

		<p>
			Maybe follower confiscates soap?
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>Follower Familiarity</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			Gain benefits from keeping the same follower for longer (the following are just a list of ideas, not a clear plan):
		</p>

		<ul style="background-color:rgb(38,38,38);color:rgb(188,188,188);font-size:14px;">
			<li>
				sometimes reduce or skip a punishment debt (more chance if more familiar)
			</li>
			<li>
				sometimes allow daily deal chores to roll over to the next day
			</li>
			<li>
				let you sometimes refuse a specific deal offering for free, or more cheaply
			</li>
			<li>
				let you volunteer for modular deals of your choice - typically easier ones
			</li>
			<li>
				enable the time-off feature that is way down the track right now
			</li>
			<li>
				get bonus follower lives
			</li>
			<li>
				cheaper device removal
			</li>
			<li>
				bigger/better gambling outcomes
			</li>
			<li>
				better key-game terms
			</li>
			<li>
				less obstructive gold control
			</li>
			<li>
				increase resistance losses when the follower is near (because you're used to submitting to them) - or maybe just harder to lose resistance fatigue?
			</li>
			<li>
				unlock unique games/content
			</li>
			<li>
				follower becomes stronger in combat
			</li>
			<li>
				shorter deal duration
			</li>
			<li>
				higher or lower boredom accumulation rates
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			Also, over time, or as you gain levels, new followers are more reluctant to follow you and demand something in return before they'll do it...
		</p>

		<p>
			 
		</p>

		<p>
			New follower demands:
		</p>

		<ul>
			<li>
				minimum contract time / increased contract time
			</li>
			<li>
				starting debt
			</li>
			<li>
				starting deals - oriented around movement limitation
			</li>
			<li>
				cash up-front
			</li>
			<li>
				the right to put you straight into "eager forced deals mode"
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			But... familiarity can partially, or completely offset this. Familiar old followers will welcome you back with no special requirements.
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>Full DD5 support</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			Add new items to LDC.
		</p>

		<p>
			Device locking as part of punishments.
		</p>

		<p>
			Will probably rewrite the LDC at this point, to fix bugs and allow players to add new items that aren't hardcoded into it.
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>New deals and deal fixes</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<span style="color:rgb(22,160,133);"><strong>Rework "Slut" deal to remove blocking dialogs</strong></span>
		</p>

		<p>
			<s>"I'm a Slut" available in any dialog, until you've said it enough times.</s>
		</p>

		<p>
			<s>Player chooses to say it or not.</s>
		</p>

		<p>
			<s>If player has been in town and didn't say it enough times, they get punished later.</s>
		</p>

		<p>
			<s>If you say it to females, you gradually accumulate a bargaining penalty that only fades very slowly.</s>
		</p>

		<p>
			<s>If you say it to males, get a dialog tree where you negotiate the outcome - offer blowjob or other sex, or try to weasel out, willpower and arousal modify choices and outcomes.</s>
		</p>

		<p>
			(Maybe no need for this now. Let's see).
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Rework "Whore" deal to remove the HDT sign and level 3/4 plugging completely</strong></span>
		</p>

		<p>
			Probably replace with a slavetats solution.
		</p>

		<p>
			<s>Level 3/4 whoring should have a fixed scanner.</s> (DONE)
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Rubber Pet Deal</strong></span>
		</p>

		<p>
			Tier 1+2 - wear cat ears, follower will sometimes demand you "speak" with silly Meow noises in certain conversations, causing the NPC to think you are crazy.
		</p>

		<p>
			Tier 1+2 - wear a rubber cat suit, follower will give you one with armor on - for a price - but it will be locked on. Suit forces crawling in dwellings.
		</p>

		<p>
			Tier 3 - wear a special enclosing rubber hood except in dungeons, hood interferes with NPC interactions, reduces speech skill and trading results.
		</p>

		<p>
			Tier 3 alt - hood is required even in dungeons but has a protective effect. Must beg follower to be able to eat/drink.
		</p>

		<p>
			Both tier 3 also add a magic tail that isn't a plug but causes arousal.
		</p>

		<p>
			Blocks nakedness deals.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Maid Deal</strong></span>
		</p>

		<p>
			Tier 1+2 - must wear a maid outfit in towns and inns. Bondage items also acceptable with maid additions. Must address follower as Sir/Maam.
		</p>

		<p>
			Tier 1+2 - cook and clean for the follower, meals must be freshly cooked, sleeping areas freshly cleaned. Main follower interaction dialog replaced completely.
		</p>

		<p>
			Tier 3 - maid outfit adds bondage items, must offer sexual services to the follower in inns/homes. Follower gives you things to carry that must be produced on demand. Follower will not carry any of your items.
		</p>

		<p>
			Tier 3 alt - must wear maid outfit full time. Sexual services may be requested anywhere. Follower gives you things to carry that must be produced on demand. Follower will not carry any of your items.
		</p>

		<p>
			Blocks various filth/cum deals.
		</p>

		<p>
			Blocks nakedness deals.
		</p>

		<p>
			Ideally would have a few little sub-games and easter-eggs of its own.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Offer deals yourself if willpower high</strong></span>
		</p>

		<p>
			Instead of having one dumped on you, you can suggest a deal/rule - from a small selection of the less awkward deals - if your willpower is high enough and debt low enough.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Compatible Plug Rule</strong></span>
		</p>

		<p>
			Tier 1+2 - vaginal plug rule that causes constant arousal, but not a plug "graphic", possibly more like a piercing.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Chastity Bra Rule</strong></span>
		</p>

		<p>
			Tier 1+2 - chastity bra rule.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Kinky Heels Rule</strong></span>
		</p>

		<p>
			Tier 1+2 - heels rule - don't have to be slave boots, but extreme heels are required.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Bikini Rules</strong></span>
		</p>

		<p>
			Tier 1+2 - bikini top rule - wear no body-armor/clothes and must have a bikini top. (Possible variant of this with "slutty" required instead).
		</p>

		<p>
			Tier 1+2 - bikini bottom rule - wear no body-armor/clothes and must have a bikini bottom. (Possible variant of this with "slutty" required instead).
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Worn Items Upgrade Rules</strong></span>
		</p>

		<p>
			Tier 3 - worn items (amulet, circlet, ring) - much higher skill penalties and compounding trading penalties.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Exclusive Sex Rule</strong></span>
		</p>

		<p>
			Tier 3 - sex rule with more frequent sex and chastity belt for "exclusivity".
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Extreme Cuffs Rule</strong></span>
		</p>

		<p>
			Tier 3 - arm/leg cuffs with extra-heavy cuffs that also debuff carry capacity.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Orgasm Denial Rule</strong></span>
		</p>

		<p>
			Tier 3 - no orgasm rule - PC must not orgasm
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Aggressive Key Holder Rule</strong></span>
		</p>

		<p>
			Tier 3 - alternate key rule - harsher, with key game disabled and faster key confiscation.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:#16a085;"><strong>Eager Piercing Wearer Rule</strong></span>
		</p>

		<p>
			Tier 3 - piercing rule where you must show the piercings to NPCs, ask the follower to play with them, etc.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Cum Drinking Rule (T1+2)</strong></span>
		</p>

		<p>
			The follower expects you to drink cum every day for "vitality".
		</p>

		<p>
			<br />
			<span style="color:rgb(22,160,133);"><strong>Increased Fees Rule (T1+2)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The follower expects 20% extra pay per day.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Gouging Fees Rule (T3)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The follower expects 50% extra pay per day.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Contract Extension Rule (T1+2)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Only adds 1 extra day of contract, but contract does not go down while you have this rule. (Adds 5 days if taken as a T2 rule).
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Enslavement Rule</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			If this rule is enabled, you can't be enslaved/sold for debt unless you agree to this rule and "agree" to the possibility of enslavement.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Could be given in a situation where you pre-agreed the deal, or simply lack willpower though.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Self-restraint Rule (T1+2)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			No masturbation allowed. If you masturbate, you are punished.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The follower gives you a chastity belt when you take this rule, but there's no requirement to wear it, it's just a "helpful" suggestion.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			DFC gains an involuntary masturbation when excessively aroused feature to ensure this rule has some value, but other mods also do this so the feature will be optional.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Exclusivity Rule (T3)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			No consensual sex without the follower's approval.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			If the PC is in a sex-scene that wasn't triggered by DFC, and they aren't flagged victim, then they are punished.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The follower gives you a chastity belt when you take this rule, but the follower has the key. If you put on the belt, you cannot remove it and must ask the follower. There's no obligation to wear the belt, but as long as you have it on you won't be punished through this rule, even if you have oral or boob sex.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Naked Dungeons Rule (T3)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			You need to be naked. Always. Devious devices and follower donated adornments are the only things you can wear ... anywhere.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Chastity Deal (Sequence)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Stage 1 - wear an open belt (anal access) or be punished. Follower locks on the belt. PC cannot remove it.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Stage 2 - wear a closed belt with plugs and a bra. Plugs edge but Orgasms become impossible. All pieces are removable, but punished if they are missing.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Stage 3 - as stage 2, but also wear a heavy-gag that blocks sex, food, drink, cum, etc.  Pieces are all locked on. The PC must pay the follower for food/drink. The follower takes over all vendor negotiations. PC cannot buy or sell. Follower will sell items from a special inventory. Follower will provide - for a price - certain essentials like food, drink, lanterns, lantern oil, map+compass, etc. (items from a form list).
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			+ includes beg for release feature - you can be released from chastity, as long as you're blindfolded in an armbinder or yoke.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Mittens Rule (T3)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Must wear magic mittens at all times, no exceptions. Can only hold items during combat. (As suggested above).
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Beating Rule (T1+2)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Like the spanking rule, but with whipping. Adds more pain, damages willpower, otherwise similar.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Whipping Rule (T3)</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			As the T1+2 rule, but even more pain, and with additional whipping consequences (debuffs) and more willpower impact.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			If the PC doesn't meet expectations, the remedy is ... more whipping, but more extreme ... the extreme punishment beatings have significant consequences.
		</p>

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

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Lock In Rules</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Optionally - a new modular "deal" is added that is a lock-in deal. It begins fully open, but any deal that goes in there can't be bought off unless you also pay out and dismiss the follower, using a special payoff action.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Personality Linked Rules</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Based on personality, the follower will fill the lock-in rules.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The first rule is filled on hire, and gains you credit equal to (adjusted) daily debt, and a min-contract depending on personality.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The second slot is filled if you cross the half-enslavement-debt threshold, and double credit.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The third slot is filled if you cross the enslavement-debt threshold, and triple credit.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Gaining a lock-in rule also resets boredom to zero but increases expected deals by one.
		</p>

		<ul style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<li>
				Default - no contract - no rules - any rule that you keep too long has a chance to be transferred to lock-in if you meet the other criteria.
			</li>
			<li>
				Slaver  - 16 day contract - collar rule, boots rule, mittens rule.
			</li>
			<li>
				Profiteer - 14 day contract - increased fees, expensive rule, gouging fees.
			</li>
			<li>
				Sexy - 7 day contract - sex rule, (one of) naked/piercing/lactacid rule, exclusivity/milking rule.
			</li>
			<li>
				Sadist - 7 day contract - spanking rule, beating rule, whipping rule.
			</li>
			<li>
				Moral - 7 day contract - self-restraint rule, beating rule, exclusivity rule.
			</li>
			<li>
				Nightmare - 21 day contract - gag rule, (one of) collar/blindfold/boots/spank/lactacid rule, (one of) skooma/pet-suit rule.
			</li>
		</ul>

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

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

		<p>
			<span style="color:rgb(22,160,133);"><strong>Other deal enhancements</strong></span>
		</p>

		<p>
			Enhance existing belt deal.
		</p>

		<p>
			Rewrite the whoring deals so the follower can make more money, and you can't.
		</p>

		<p>
			Ask for follower for food or drink while gagged - for a price.
		</p>

		<p>
			 
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Contract Extension Punishment Option</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Optionally, any punishment you're given adds 1 day to your contract.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Brutal Punishment Option</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Optionally, followers will lose their cool and assault the PC with a whip.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			How easily this happens will depend on personality, PC willpower, debt, and the severity of infraction.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			The idea of the simple punishment mechanic being replaced with something more sophisticated has been raised, and I like the idea of it, but it's a big job. I'm not sure where it fits right now.
		</p>

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

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<span style="color:rgb(22,160,133);"><strong>Easy Gags Option</strong></span>
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Gags no longer result in gag-talk.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			If gag is blocking, you can ask the follower for food/drink and it's not over-priced.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			Gag is removed for sex.
		</p>

		<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			(This will simply use a special gag that isn't even a real devious device but will count as one).
		</p>
	</div>
</div>

<p>
	<br />
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><span style="font-size:16px;"><strong>Better Households - Houses, Spouses and Housecarls</strong></span></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			This is another area where I've cut back seriously from last year's hopes.
		</p>

		<p>
			The ideas that were slated for DF might reappear in a new mod, but on reflection they would be adding too much complexity to DF's code base if implemented there.
		</p>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Houses - this could actually be implemented in 2.X without too much pain</strong></span>
		</p>

		<ul>
			<li>
				Sell your house to the follower to reduce debt. Follower does extra fun things when you stay at their house. Furniture may be used if detected.
			</li>
			<li>
				Chests all locked (including contents, which is lost).
			</li>
			<li>
				Follower takes main bed.
			</li>
			<li>
				PC bed may be swapped for furniture that functions as a bed, bedroll+straw, stone bed, etc.
			</li>
			<li>
				Follower charges you rent if you sleep there, unless a spouse.
			</li>
			<li>
				Follower sometimes wakes you up and demands sex.
			</li>
			<li>
				Follower sometimes demands you wear devices in the house.
			</li>
			<li>
				Follower will let you access chests for a fee.
			</li>
			<li>
				You can buy the house back for an absurd sum.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Spouse Integration - the odds of this getting done in DFC 2.X are slim to none</strong></span>
		</p>

		<ul>
			<li>
				Links into house-related features - house now belongs to spouse follower.
			</li>
			<li>
				Spouse dialog: main follower interaction dialog replaced for spouses.
			</li>
			<li>
				<em>Follower no longer talks about your debt. Instead says "contribution"</em>. This would likely be restricted to only the most common dialogs. There are too many mentions of debt to cover them all.
			</li>
			<li>
				Spouse follower always in gold control. It's "our" money. You can <em>ask</em> for large amounts. You might have to take a deal to get anything.
			</li>
			<li>
				Follower will not show you gold control credit, just a vague description, such as, "We are short of cash," or "We have enough to be going on with."
			</li>
			<li>
				Spouse follower automatically "owns" your house as above, except chests not taken.
			</li>
			<li>
				Spouse follower houses use a shared bed. Alternate sleeping at foot of bed/in furniture.
			</li>
			<li>
				Spouse expects you to offer sex (offer sex deal, but no reward). Compatible with PC in chastity - so possibly only spouse gets to cum.
			</li>
			<li>
				Follower may offer to belt you, if not belted already. Belt will be removed for any games that need it. Ownership deal is blocked.
			</li>
			<li>
				Spouse overrides Housecarl, on multiple followers or same follower.
			</li>
			<li>
				Spouse punishment mode involves a lot of harsh devices that are locked on, but isn't slavery. Spouse does not enslave.
			</li>
			<li>
				Spouse can force weird potion on you if you run up too many deals and debts.
			</li>
			<li>
				Spouse doesn't refer to deals as deals, but promises.
			</li>
			<li>
				Spouse cannot be dismissed. Spouse can divorce you if they get disappointed enough. Consequences nasty.
			</li>
			<li>
				You never get your house back if you get divorced.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<span style="color:rgb(22,160,133);"><strong>Housecarl Integration - like the spouse problem, this has too many dialog changes to be practical in the 2.X code-base.</strong></span>
		</p>

		<ul>
			<li>
				Housecarl dialog: main follower interaction dialog replaced for housecarls.
			</li>
			<li>
				Follower no longer talks about your debt, instead talks about "duty" and "honor". Again, limited as with spouse. Impractical to fix all dialogs.
			</li>
			<li>
				Housecarls never go into gold control.
			</li>
			<li>
				You cannot sell your house to a housecarl.
			</li>
			<li>
				Housecarl rewards any quest that completes in the hold, or kills bandits, draugr, or Falmer.
			</li>
			<li>
				Housecarl possibly generates radiant quests to kill bandits.
			</li>
			<li>
				Housecarl gives you a hood to wear during enslavements.
			</li>
			<li>
				Housecarl cannot simply be dismissed. The only way to get rid of a housecarl is to take a spouse or hire a different housecarl; spouse overrides housecarl.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><strong>Take a break mode</strong></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<ul>
			<li>
				This is a tentative idea ... you can ask the follower to take a break.
			</li>
			<li>
				The follower kicks back at an inn while you can go off and do whatever you like without them.
			</li>
			<li>
				It will require you to have no deals or and not be in gold control to use it - but you may have debt.
			</li>
			<li>
				The follower will accept reduced pay as they're just 'on retainer'.
			</li>
			<li>
				May reduce follower boredom, or increase it, depending on how much you pay and where you leave them.
			</li>
			<li>
				The follower will not 'be' a follower in any Skyrim sense while you're on the break, so you can do quests and content that rely on manipulating your follower setup.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:rgb(46,204,113);"><strong>Anunya's List of Interesting Follower Dismissal Enhancements</strong></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			There's no concrete plan to add any of these things to dismissal, but their time may come... Let's see...
		</p>

		<p>
			 
		</p>

		<ul style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
			<li>
				"Sorry, only on Mondays or Tuesdays... you'll have to wait a few more days."
			</li>
			<li>
				"You're not ready to make it on your own as long as you're wearing devious devices...."
			</li>
			<li>
				"We're not parting ways until we're in [randomly selected walled city]..."
			</li>
			<li>
				"Sure we can part ways. As a parting gift, here wear this devious device as a souvenir of our good times together..."
			</li>
			<li>
				"When we part ways, we have to do it at one of the standing stones to formalize the ending of our relationship properly."
			</li>
			<li>
				"Okay, I'm not your follower anymore, bye bye" - "Oh, what is this? A tough levelled bandit encounter? And you don't have anyone to help you? I sure hope you win or at least don't have harsh defeat settings..."
			</li>
			<li>
				"Sure we can part ways. By the way, there's now a bounty on you in this hold for some shit I did and blamed on you..."
			</li>
			<li>
				"I expect a parting gift. How about [some item which is somewhat expensive and inconvenient, but not impossible to get]. Bring it to me in two hours." (bonus for having the item change from a random list each time the player asks). "If you can't, I'll add debt and you can ask again tomorrow."
			</li>
			<li>
				"We met [at location], we part at [location]. We have to go back."
			</li>
			<li>
				"At least give me a quick good-bye fuck... or maybe a gang-bang with a few other people..."
			</li>
			<li>
				"Let's play this gambling game that has 1/3 chance that you go, 1/3 chance that I add a bit of debt "for fun", and 1/3 chance you can try again tomorrow..."
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">12761</guid><pubDate>Tue, 19 Jan 2021 06:23:00 +0000</pubDate></item><item><title>The sadness of dead mods</title><link>https://www.loverslab.com/blogs/entry/12662-the-sadness-of-dead-mods/</link><description><![CDATA[<p>
	I was just reading the posts on Nexus for a rather well known mod.
</p>

<p>
	 
</p>

<p>
	I thought it was so well put that I'd quote it here as a reminder...
</p>

<p>
	 
</p>

<div style="border-bottom:1px solid #000000;color:#f1f1f1;font-size:14px;text-align:left;">
	<a href="https://www.nexusmods.com/skyrim/users/42416810" rel="external nofollow" style="background-color:transparent;"><img alt="Darklocq" data-ratio="100.00" height="55" style="border:0px;" title="Darklocq" width="55" src="https://secure.gravatar.com/avatar/a743a718a18d70934fce5b6cb1cbc539" /></a><a href="https://www.nexusmods.com/skyrim/users/42416810" rel="external nofollow" style="font-size:13px;">Darklocq</a> <span style="color:rgb(0,153,0);font-size:11px;">supporter </span><span style="font-size:11px;">1,799 posts </span><span style="font-size:11px;">56 kudos</span>
</div>

<div style="color:#c4c4c4;font-size:14px;padding:15px;text-align:left;">
	<a href="https://forums.nexusmods.com/index.php?showtopic=2083579/#entry79221343" rel="external nofollow" style="background-color:transparent;" title="View this post in the forum">08 April 2020, 7:16PM</a>

	<div>
		&gt; <span style="color:#999999;"><em>Modders for all games on Nexus Mods should get together and agree on some sort of public domain format.</em></span><br />
		<br />
		Pshah! You'll be lynched for saying that in earshot of the wrong people. This site is utterly overrun by control-freaks, and irrational ones at that. They'll say things like "I put reposting and reuse restrictions on my mods because I've had other people fail to credit me, or even claim my work as their own." Then you point out that people who do that will pay no attention at all to their restrictions, because they're already careless or dishonest jerks who steal credit. You might further observe that the restrictions just get in the way of honest users, and are probably dooming the mod in question to low use, and even possibly ruining other people's mods later, since if they use something from the restricted work, with permission, no third party can ever re-use THAT mod in turn without getting permission from the original modder, who eventually disappears. This "permissions failure cascade" is why entire chains of dozens of Morrowind and Oblivion mods are basically dead (absent casting about on a particular shady Reddit board ...).<br />
		<br />
		But then the over-controlling modder will just respond with something nonsensical like "Well, you would feel differently if you'd had other people fail to credit you and even claim your work as their own." It's like they just cannot understand a word you've said, and have no response they can make but a "repeat myself endlessly until anyone who doesn't think just like me gives up and goes away" pattern. It's not based in reason, but in emotion.<br />
		<br />
		I don't think there's a fix for this other than re-implementing (reverse engineering), in a more open manner, every kind of mod that people regularly use but which has restrictive permissions. Skyrim modding may have too short a future lifespan for that to be all that practical, so perhaps look forward to doing as much open modding as possible, and staying away from restrictive mods, when TES VI finally comes out. Might be worth setting up an open-modding site, too. The real problem is that Nexus makes all these restriction options available, and even has a bunch of them turned on by default, when few of them are sensible for anyone to ever use. They just use them because they can; Nexus tricks them into thinking it's normative and useful, when it is the opposite. We're all making what are legally derivative works of Bethesda/Zenimax intellectual property, yet a bunch of us are trying to treat these mods as wholly-owned personal works. It's just silly, and in the long run it badly breaks down. Most mod sites are dead; few of them last more than a few years. Any mod with "do not upload elsewhere" restrictions tends to be left out of future sites due to that restriction, and thus all mods that depend on it go dead in turn. It's "community suicidal" in the long run. Crapping in your own food supply.
	</div>
</div>
]]></description><guid isPermaLink="false">12662</guid><pubDate>Wed, 06 Jan 2021 13:24:00 +0000</pubDate></item><item><title>Vendor cash and Devious Followers</title><link>https://www.loverslab.com/blogs/entry/11876-vendor-cash-and-devious-followers/</link><description><![CDATA[<p>
	<span>Somebody on the DF forum asked if it's a good idea to change the vendor cash limits.</span>
</p>

<p>
	 
</p>

<p>
	As this was such a good question, I decided to make the answer into a blog post...
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	I would't expect it's necessary unless you want to make things much easier, or you had some mod reducing it that you want to override.
</p>

<p>
	 
</p>

<p>
	I'd generally advise not changing vendor reserves, and adjusting your game around the defaults, as otherwise you have too many things to adjust and it can become a constant circle of tweaks.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	The gold limit forces you to do things like go to one town one day and a different town the next; to maximize how you use traders generally; to encourage spending precious perk points on otherwise useless speech perks; and to limit <em>where</em> you can buy out of slavery.
</p>

<p>
	 
</p>

<p>
	The default costs are set up with some awareness of vendor gold limitations, and the bother you need to go through to overcome that.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	It's impossible for a default config to ever be perfect though. The new DF config is more workable than the old system, but it's not going to work for every game.
</p>

<p>
	 
</p>

<p>
	Some games will be cash poor, others will suffer more or less mid-game cash explosion, and may (or may not) suffer a serious slow-down in cash increase-rate in late game; so while you might be making more cash each level, the rate at which that changes is usually slow, then fast, then slow again, over a hundred level progression.
</p>

<p>
	 
</p>

<p>
	So, you can change your daily cost config in DF more easily than you can change vendor reserves, and you can adjust the curve on that.
</p>

<p>
	Everything scales together (almost) so you can adjust the level one and level 101 costs and maybe the curve, and not have to worry about the other values.
</p>

<p>
	That said, I recommend using <em>some</em> amount of Chaos Mode, as it adds considerable spice. Not all the values need to vary.
</p>

<p>
	 
</p>

<p>
	<br />
	Personally, with the default vendor limits, I've rarely been in a situation where I couldn't vend everything over a couple of days, if I took the trouble to travel around enough ... but ... I'm limited in what I can carry.
</p>

<p>
	 
</p>

<p>
	But... If you aren't using any <strong>encumbrance mods</strong>, and have vanilla loot levels, you might be carrying a whole lot of loot that feels hard to get rid of.
</p>

<p>
	 
</p>

<p>
	I think in most cases you can still do it, but there are some things that have sale values above most vendor's base cash pool and you can't move them early-game unless you want to lose a lot on their value.
</p>

<p>
	 
</p>

<p>
	e.g. expensive enchanted armor or weapons that are valued well over 1000 even on resale.
</p>

<p>
	 
</p>

<p>
	That is a "feature" of vanilla, and it remains. Personally, I sell those items well below their "true" value and simple get whatever the vendor caps out on, because that's usually better than just letting them sit around unsold. If you don't do that, sometimes expensive items can end up sitting in a chest for a while before you can move them, but it's also good to have those "rainy day" items around for times when you might not be able to adventure because of hazards you introduce in your game.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	A way to increase cash flow, but avoid raising vendor caps is to simply add more vendors. As there are various mods that add just one vendor, or vendors without big cash pools, you can exercise a lot of fine control that way, and balance out towns that otherwise seem lacking in vendor availability too. This has the benefit of giving you more reason to go to places. In vanilla, some towns are places you go, do some quests, and then avoid for the rest of the game.
</p>

<p>
	 
</p>

<p>
	One <em>particular </em>optional vendor, the Dollmaker in DCL, is a <strong>massive exploit</strong>, as she carries a huge cash reserve, and if you have the speech perk to sell anything to anyone, you can exploit it to sell her armor, weapons, scrolls, gems ... and so on ... I generally consider selling to the Dollmaker "cheating", but she hasn't been in my game for a long time now, and probably won't return until a new DCL <em>content</em> release if that ever happens.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	As well as encumbrance mods to limit what I you carry, I would guess many people reduce their overall loot availability to some extent through scarcity mods. There are numerous scarcity mods. Some focus on gold in particular, while others will reduce gems, jewellery, or armor and weapons.
</p>

<p>
	 
</p>

<p>
	For a long time I played with patch of my own that reduced the base <em>value</em> of armor and weapons significantly, as well as sorting out a lot of modded items with crazy values (which it blocked from sale completely). I think that SLS nerfing my vendor exchange rates removed the need for that. I get a pittance for most items now, so vendor limits can actually be hard for me to hit.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	There are so many ways to go at this, and changing vendor caps is probably the least preferable for me, but I don't think that choice is objective; it's a highly subjective choice and depends on how you're modding your game. For another player it might be the best choice. Up to you.
</p>

<p>
	 
</p>

<p>
	What I do recommend, is that you limit how many things you change. If you change everything at once, it becomes a shapeless mess. Pick one thing and adjust that until it works: DF costs, loot scarcity, vendor caps, vendor availability, vendor exchange rates, encumbrance limits, speech mechanics, taxes, food expenses, etc. It's best to do one thing at a time and see how that works before adjusting something else.
</p>
]]></description><guid isPermaLink="false">11876</guid><pubDate>Mon, 31 Aug 2020 00:54:00 +0000</pubDate></item><item><title>Punishment and Reward</title><link>https://www.loverslab.com/blogs/entry/11680-punishment-and-reward/</link><description><![CDATA[<p>
	I originally thought I'd write about ideas for punishing or rewarding the player, but the question of what a "player reward" looks like turns out to be complicated.
</p>

<p>
	 
</p>

<p>
	Recently, in a long post on the SexLab Survival forum, addressing amputation mechanics, I alluded to an "iceberg" that amputation mechanics were the tip of, but I never explained what iceberg I had in mind. The broader topic of punishment and reward mechanics was what I was referring to.
</p>

<p>
	 
</p>

<p>
	On reflection calling it an iceberg doesn't do it justice.
</p>

<p>
	 
</p>

<p>
	For brevity in future, we need a jargon term to describe the general class of mods I'm talking about. Some can probably guess right away: slavery mods, combat defeat outcomes, "sexist" mods that create continual penalties and hazards on female characters, with an emphasis on the sex part, and other disparity mods that try to create varying experiences for the PC, from pregnancy to running a brothel. The PC doesn't have to be female, but usually is. There's also usually some kind of intentional conflict between a submissive role being imposed on them, and the tasks that vanilla Skyrim makes available (or requires to progress).
</p>

<p>
	 
</p>

<p>
	I'm going to call this very broad category "oppressive" mods. <em>Oppressive mods</em> all have significant capacity to punish the PC.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Punishment and reward are at the heart of so many LL mods, particularly those with an emphasis on slavery, combat defeat, or bondage games.</strong></span>
</p>

<p>
	<em>In short, oppressive mods are about punishment and reward.</em>
</p>

<p>
	 
</p>

<p>
	<span style="color:#f39c12;">Punishment and reward are also at the heart of why so many of these mods don't work well together and why authors aren't inspired to make them work well together.</span>
</p>

<p>
	I will present an argument for why this is so.
</p>

<p>
	 
</p>

<p>
	<span style="color:#f39c12;">I suspect that conflicts between punishment and reward are also the underlying reason for many players ultimately getting tired of this kind of mod and turning away from it. They're certainly the cause of many frustrations.</span>
</p>

<p>
	I will also try to argue why this is not simply an arbitrary claim.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Bondage and slavery mechanics add new and exciting ways to punish and reward the PC. Isn't that fun?
</p>

<p>
	You may ask, "<em>Why is there a problem?</em>"
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Let's take a step back...</strong></span>
</p>

<p>
	<span style="color:#16a085;"><strong>Player <em>character </em>punishments and rewards are NOT player punishments and rewards</strong></span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	There are two ways of looking at punishment and reward, we can look at them impacting the PC - the character - or we can look at how they impact the player. The two are different things; potentially a world apart and often in direct conflict with each other.
</p>

<p>
	 
</p>

<p>
	<em>For example</em>, the player fails at combat and the PC is defeated. DCL combat defeat is enabled. The PC is raped (brutal punishment for the PC, but amusement for the player) and then gear may be taken (punishment for both PC and player), and the character may be teleported to some annoying place (punishment for both PC and player), and they may be left wearing devices (punishment mainly for the PC, because the player might enjoy this quite a bit).
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	In oppressive mods, there are many events that take place that are horrible for the PC, but amusing for the player. The kennel in SexLab Survival is a good example of the contrast, the conflict, and the confusion. It's typically an amusing event for the player, but it may well be awful for the poor PC. Unless she is deep into SLS cum-addiction, there is no upside for the PC to be raped by the kennel-keeper or his pets, and she probably isn't going to get a good night's sleep.
</p>

<p>
	 
</p>

<p>
	SLS is a great example of how things get complicated and ambiguous. Is being forced to drink cum a good thing or a bad thing? In SLS, is shifts from one to the other as the addiction increases and it becomes necessary to satisfy it. The player has limited options to prevent the onset of the addiction. Self-gagging might help a little, but it comes with numerous down-sides. The player's reaction to cum-addiction may vary considerably with where they are in their game. At early stages they may seek it out, but at later stages it may start to become a tiresome annoyance.
</p>

<p>
	 
</p>

<p>
	Not only do different mods have different ideas of what events are good or bad for the PC, but the same mod may change its idea as play progresses.
</p>

<p>
	 
</p>

<p>
	The player's idea of what is entertaining remains relatively constant, unless they're over-exposed to a repetitive event that turns what was once amusing into fatiguing boredom. Even this isn't a solid rule. As noted above, the player tends to start to drift away from the oppressive content as their character levels up, and clearing vanilla content (or vanilla-like content) often becomes more of a priority.
</p>

<p>
	 
</p>

<p>
	One thing that's deeply lacking in the majority of mods is any kind of <em>alignment </em>between PC and player punishment and reward. Combat defeat mods are supposed to be punishing the player, but often what they're offering is a lot of sex scenes - which players may find rewarding unless they grow boring - and it's only the character that is getting punished. Even when the PC's items are taken away, the player suffers a great deal less than the PC.
</p>

<p>
	 
</p>

<p>
	And what is the point of putting mechanics into mods that are intentionally boring? Even in a combat defeat mod? There is limited scope to punish the player, and such an approach needs to be used sparingly if players are not to grow disinterested. A certain amount of peril increases excitement, but inevitable failure and punishment are simply annoying and frustrating.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	To what extent are modders thinking about their mechanics in these terms? Are they considering the difference between PC punishment/reward vs player punishment/reward?
</p>

<p>
	 
</p>

<p>
	Some may be doing this, but I suspect that most have not crystallized that distinction clearly in their minds (until reading this?) There's no doubt that modders <em>are </em>trying to create mechanics that are consistently fun for the player, but the design of existing mods and the way that their authors write about them suggests that they conflate almost everything their mod does with <em>an attempt to deliver player reward, even if it's indirectly</em>. For example, SLS amputations are, to in part, an attempt simply to deliver more excuses for kinky animal sex with a kind of sexual frisson from the underlying reluctance.
</p>

<p>
	 
</p>

<p>
	Only combat defeat mods have reason to seriously consider the topic of player punishment, which they deliver via a very limited toolkit: item theft, disruptive teleportation, and various other annoyances that amount to time-sinks. SD+, if considered as a combat defeat outcome, consists almost entirely of extremely tiresome time-sinking.
</p>

<p>
	 
</p>

<p>
	SexLab Adventures (seems to evidence thinking that the bounties for doing forbidden things are a punishment for both the player and the PC, but in practice they punish the PC far more than they punish the player. The player doesn't set up punishing bounties unless they think they are going to be fun somehow.
</p>

<p>
	 
</p>

<p>
	Loss of time is really the only punishment that can be inflicted on the player, and all other punishments are just indirect routes to this.
</p>

<p>
	 
</p>

<p>
	The things that are lost can almost always be regained with sufficient effort. Whether the PC is being robbed, fined, sent to an inconvenient location, locked in a cell, or chain-raped for two real hours straight, it's all just something that soaks up the player's time in a way that doesn't seem to offer any kind of satisfying progress. In some extreme cases, the punishment takes away from past progress. To what extent the player is genuinely troubled is another matter. After all, they are installing these mods because they like them, and as often as not, they rather enjoy having PoP suck up hours of play while their character is dragged around the countryside on a leash by NPCs who path badly and frequently get stuck.
</p>

<p>
	 
</p>

<p>
	Even when things the player has struggled for are taken away - fancy armors, money, titles, reputation, NPC relationships, levels or skills - it usually comes down to a measurement of time invested that was lost. The things themselves can always be replaced with other things, given more time.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>What <em>is</em> Player Character Reward or Punishment?</strong></span>
</p>

<p>
	 
</p>

<p>
	How can a collection of data in your computer be punished or rewarded? Is it punishment when her simulation values are modified in a non-advantageous way? I don't believe so. That sort of thinking is nonsense with no reference point or connection to any meaningful context. Reducing the PC's health value is a negative simulation outcome, but without assigning a meaning to it, it is neither punishment or reward.
</p>

<p>
	 
</p>

<p>
	Only the player can assign <em>meaning</em> to these events. Does that mean that there's no such thing as PC punishment or reward?
</p>

<p>
	 
</p>

<p>
	The reference for what is a punishment for the PC is always the <em>story of the PC</em>. There are events that she, as a story character, is supposed to enjoy, and events she is supposed to hate. The player (whether they intend to or not) to some extent cannot help but have some empathy with the human-looking graphic on their screen. She is not just there to create a pornographic visual; if that were the aim then why play Skyrim at all? You could just run SexLab animations in a loop, and a SexLab theater would be the most popular mod around. Instead, there is only modest interest in such mods, and most of that is from people who really are only interested in screen archery - and many of those are still telling stories!
</p>

<p>
	 
</p>

<p>
	However, player empathy with the PC doesn't mean that they player feels misery when the PC is imagined to feel it. Often the PC relishes the horrors inflicted upon their character. There are many reasons for this, but they are topics applicable to media in general, and not Skyrim oppression mods in general.
</p>

<p>
	 
</p>

<p>
	Nevertheless, the determinant of PC punishment or reward is simply <em>the resulting story that the player creates in their head to explain the events and how the character reacts to them</em>.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>So what's the problem with any of that?</strong></span>
</p>

<p>
	 
</p>

<p>
	The lack of alignment between PC and player punishment and reward leads to a weak and uninvolving experience, shallow immersion, and incoherent story events.
</p>

<p>
	 
</p>

<p>
	Take an example of the PC developing a sex-addiction. This might be simulated as a constantly high arousal value which either doesn't decrease after sex, or doesn't decrease much, and can only be reduced by extreme sexual encounters, or a fast increase in arousal whenever it's low, or both these approaches. In addition, one or more mods may impose stat or XP penalties for this continuing high arousal state. Such additions are generally seen as <em>improving the simulation</em>.
</p>

<p>
	 
</p>

<p>
	In addition, the constant sex events may lead to Wear&amp;Tear on the PC, with additional penalties as a result, again <em>this is seen as an improvement in the simulation</em>.
</p>

<p>
	 
</p>

<p>
	XP penalties are supposed to be a punishment for the player, but they are an ineffectual one because leveling in Skyrim is not terribly important for the player.
</p>

<p>
	The stat penalties are inconvenient, and quite likely to involve movement speed or something else that mildly irritates the player, but in many cases may not even be noticed, and may very likely be drowned out by some other mod doing something completely unrelated (needs mod tiredness, for example).
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	The issue here is that a sex-addicted PC is supposed to long for orgasms, but getting them makes almost no difference to the PC or to the player.
</p>

<p>
	 
</p>

<p>
	There is no alignment between the supposed situation - the story you're creating in your head - and the game events. Instead we have a questionable <em>simulation </em>of sex-addiction, with mechanics that are inspired by the <em>simulation concepts</em>. Various conflicting outcomes follow from the simulation, which itself is the product of multiple mods that were not written to produce any single clear outcome or with any special intent - they are essentially <em>simulation rules</em> - they are devoid of any compelling story.
</p>

<p>
	 
</p>

<p>
	We're supposed to believe that the PC is constantly distracted by her desire, leading to impaired learning. If there's a Wear&amp;Tear mod, we are also (probably) supposed to understand that the PC is physically (and magically) impaired by pain resulting from past sexual activities and abuse.
</p>

<p>
	 
</p>

<p>
	None of this simulation exists, or makes any sense in the context of vanilla Skyrim, where healing spells and potions cure sword cuts and simple praying cures diseases.
</p>

<p>
	 
</p>

<p>
	Some players struggle with the contradictions, and add more mods in an attempt to resolve them: needs mods with harsh diseases, limitations on potions, or potion consumption, limitations on healing capacity and PC recovery, wounds mods that create lasting effects for combat injuries that can't simply be healed away. It's more complexity and more mods to solve a problem that was created by the original mod setting up a questionable simulation that was at odds with vanilla Skyrim.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Players typically take the position that vanilla Skyrim is inadequate to support and enhance their fantasies for the PC, so they impose extra perils and dangers upon her. She needs warm clothes and fires, she needs to eat and drink, she needs to get a good night's sleep, she needs to pee (and fart!)... it doesn't stop there... she needs to sleep in comfy clothes, she she needs to eat good food, she gets tired of camping, and she gets hurt and penalized by ... just about everything. Players add mods where the PC can get pregnant, or seems to easily submit to forced sex, mods where she can resist forced sex up to a point, they add mods where everyone wants to enslave and sell her, mods where she can be auctioned, mods where she is hurt by sex, and mods where she becomes addicted to it, or to sex with animals. There are even mods where you can become inseminated with GEMS by animals and give birth to ROCKS! And of course they add mods that tie her up. Lots and lots of those. I could digress into a discussion of what this means about the female gender role in society, but that sounds hazardously close to politics. 
</p>

<p>
	 
</p>

<p>
	The point is that the simulation rules we apply to the PC get ever more complex and perilous. They are profoundly weighted in favor of punishing, humiliating and terrorizing the poor PC. If there is something she is ever allowed to <em>enjoy</em>, you can be almost certain that it's some kind of destructive addiction or submissive mental break.
</p>

<p>
	 
</p>

<p>
	<span style="color:#f39c12;">This is where player frustration can set in. A player initially believes that modding can deliver new and surprising experiences in their game. As time goes by, modding becomes more of a struggle to balance the conflicting ideas of reward and punishment in the web of mods that they've installed, or simply to get some beloved feature to work as they want it to. Frustration and exhaustion, combined with a loss of belief in the idea that oppressive punishment-oriented mods can deliver any substantially new content leads them to look to other genres, or to abandon the undertaking completely.</span>
</p>

<p>
	 
</p>

<p>
	There's a real shortage of mods that emphasize PC enjoyment, fun or satisfaction. There is no mod where eating cakes gives the PC more happiness. There is no mod where she will pay a fortune to taste chocolate but not be addicted to it like a drug. There is no mod where she enjoys a smile from a child. I guess the majority of players don't want these things in their game for some reason. This isn't some political comment. It's just that game design has conventionally always been about peril and punishment, with the reward being from overcoming those hazards ... but there are games (like Candy Crush) that are composed only of rewards, albeit weak ones.
</p>

<p>
	 
</p>

<p>
	<span style="color:#f39c12;">Problematic conflicts arise because each mod is trying to guess how their user-base feels about a certain scenario, and to provide events that are titillating. Each one envisages a slightly different scenario for the PC, then (usually) tries to produce it indirectly through simulation rules. Mods that are direct about the outcomes they want are less common, but the root conflicts begin with the stories. As the intended outcomes (stories) conflict, the simulation rules also interact at cross-purposes. There's no clear direction. Even if these mods can interoperate what would that interoperation look like when they have disparate concepts of a proper outcome?</span>
</p>

<p>
	 
</p>

<p>
	Players tweak mods, put mods in, take mods out, and post on forums, over and over, seeking changes of one kind or another, so that they can get the outcome they imagine as perfect. However, for every modder there are numerous <em>players</em> (even for unpopular mods) who all have slightly different ideas in their heads. With only one modder and all those players, any mod can only please each player a certain amount, and the modder may not be pleased with what they delivered either. (I know I am never satisfied with what I make). Even among the most eager fans of a mod, there are different story expectations.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Conflicts Everywhere</strong></span>
</p>

<p>
	 
</p>

<p>
	The conflicts are not only between the mods and vanilla, but between each mod. These conflicts flow directly from different concepts of what is a player or PC punishment or reward. It's inevitably the case that two mods get in a fight over some stat that they both want to change in opposing ways, or some situation or scenario that they want to resolve in profoundly different ways.
</p>

<p>
	 
</p>

<p>
	Superficially, Estrus Chaurus (EC+) appears to be punishing the PC for sex with chaurus monsters, or from picking flowers, or (if you have certain patches or extensions) from collecting chaurus eggs. Of course that's not its true purpose. Its core reason for existence is to amuse the player with tentacle-sex and violation fantasies, then to pile a body-modification fetish on top of it, allowing the player to view their character distorted with huge breasts and belly due to a foul "pregnancy", a parasite infestation that can easily end in a horrid mess of skittering creatures.
</p>

<p>
	 
</p>

<p>
	EC+ punishes the PC but rewards the player. Its pregnancies conflict awkwardly with other pregnancy mods (which have equally complex internal intentions), including combat defeat mods. The EC+ encumbered PC is weakened in combat, suffers additional defeats, and additional indignities, but we're now slipping into territory where the player is ostensibly to be punished for letting their character become inflated with alien eggs to the point that she can barely waddle along.
</p>

<p>
	 
</p>

<p>
	This is a recurring pattern. A mod that offers player entertainment also adds penalties to the PC, and other mods interpret those penalties as an intent to punish the <em>player</em>. And in some cases, they act on that intent, amplifying the "punishment", or attempting to counteract of moderate it. The different mods had different <em>outcomes</em> in mind. EC+ seems to think that the pregnancy is more or less the end of the problem, but don't get caught too often or you'll end up inflated for good. OTOH, DiD thinks that tentacle-sex is both a way to lose trauma and also to gain it. I can't figure out what DiD's overall expected outcome is, but it's clearly different to the original intent of EC+ <em>otherwise it wouldn't need to add any new simulation rules</em>.
</p>

<p>
	 
</p>

<p>
	<em>The first problem is that mod X has no way to tell whether the things mod Y were done to amuse the PC, or are supposed to be some kind of disincentive.</em>
</p>

<p>
	<em>The second problem is that mod X and mod Y almost certainly have a different outcome in mind, even given the same set of preconditions.</em>
</p>

<p>
	 
</p>

<p>
	Returning to the EC+ example, the mod itself is also internally conflicted. It does things that please the player, while also doing things to annoy them (such adding little scuttling creatures to areas). Of course, the player can control some of these decisions, but <em>the player was always controlling them</em>, from the very point that they installed EC+ they were superficially in control. However, because mods rarely deliver a coherent experience to the player, we see, again and again, the addition of more and more mods trying to resolve a nest of conflicts that can only grow as a result of this approach - and I don't mean script or ESP conflicts, but gameplay experience and immersion conflicts - it's a way of modding that creates an endless appetite for more and more mods and features.
</p>

<p>
	 
</p>

<p>
	Another conflict is that players wish to surrender control, while at the same time exercising it. They choose to add a mod that does things to the PC, but want to feel that the outcomes are beyond their control, or at least beyond the PC's control. They want the story of helplessness, or struggle. They want story events to take them by surprise ... but not <em>too much</em> surprise. They chose the mods they put in their game, and chose how to configure them, but then they want to play within the limits they've created for themselves, with the perils they have so carefully prepared.
</p>

<p>
	 
</p>

<p>
	This is a conflict over control rather than reward and punishment, but it manifests as reward and punishment. When mods go off the rails and break the game, or simply send it in an unwanted direction, the player (as well as the PC) is punished. Often enough, total success for the PC ends up being seen as failure by the player. Again, the mods didn't do the intended job.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Is Coherence Possible? (And would we want it?)</strong></span>
</p>

<p>
	 
</p>

<p>
	Is it even technically possible to create coherence between the PC experience and the player experience? Would this be better or worse?
</p>

<p>
	It is possible for mods to agree on the nature of an experience, so they all augment it, instead of breaking it?
</p>

<p>
	 
</p>

<p>
	Now we're into more difficult territory. It took until now to crystallize the true nature of this problem, and I imagine that many readers are still not at all convinced there's anything here but a confusing web of points that they feel they have easy counter-arguments to. It's not easy to explain the network of ideas and realizations that have brought me to write this, and it will be a journey of its own for me to learn how to express those ideas clearly and succinctly. For now, the ideas are present, but they're still new. There's scope to improve and refine them, and even more scope to improve how to describe them.
</p>

<p>
	 
</p>

<p>
	But returning to the question at hand, I can offer some examples.
</p>

<p>
	 
</p>

<p>
	In the case of sex addiction, what if the player received increasing rewards for orgasms? The more extreme the addiction, or the longer the period of denial, the greater the player reward would be. Pay attention here, I'm talking about player reward, not PC reward. This could be applied to any addiction mechanic, but its most notable for sex-addiction, because orgasms are rarely a reward, even for the PC (not the player); instead loss of arousal is the reward, if it's even granted, and who that reward is aimed at is <em>ambiguous</em>. Is it the player, who is happy that her character is now better able to function? Or is it the PC, who is supposed to relish the reduction in danger that the sexual-satisfaction leads to? Or (as I suspect) some combination of the two. 
</p>

<p>
	 
</p>

<p>
	In the case of combat defeat, can we genuinely punish the player for losing? 
</p>

<p>
	 
</p>

<p>
	In the case of being caught without a license in SexLab Survival (SLS), there's a conflicted message. The player is supposed to be punished by losing access to items and abilities, but they may also be enjoying the peril that their character has been placed into. They may well get considerable enjoyment from their character being placed in <em>punishment </em>devices that are clearly intended to be a (story) punishment for the PC.
</p>

<p>
	 
</p>

<p>
	What if the sexist problems imposed by SLS were entirely punishing for the player, and overcoming them entirely rewarding? Is that even possible?
</p>

<p>
	 
</p>

<p>
	One thing is for sure, a mod that has an alignment between PC reward and player reward would be unlike the majority of mods we see, which have almost no consideration of PC reward, and are composed almost entirely of PC punishment.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Would alignment in PC and player reward help align mods together? I think it would, up to a point, because it immediately becomes clear what is supposed to be a player reward or punishment. In current mods, two mods that disagree are both trying to deliver player reward (and PC punishment).
</p>

<p>
	 
</p>

<p>
	It's impossible to intuit which player punishments are supposed to be producing player enjoyment, and which are trying to be player punishments.
</p>

<p>
	 
</p>

<p>
	But if the punishment and reward are simplistically objective, it's easier to get alignment between mods.
</p>

<p>
	 
</p>

<p>
	For example, Deviously Enchanted Chests likes to put the PC into bondage gear.
</p>

<p>
	While this is somewhat a reward for the player, it's substantially supposed to be a punishment.
</p>

<p>
	The goal is (ostensibly) to get out of the bondage gear as quickly as possible and return to business as usual.
</p>

<p>
	 
</p>

<p>
	Devious Training tries to mitigate the penalties of being in bondage gear long-term, while adding extra visual rewards (for body modification fetishists anyway).
</p>

<p>
	It's a given you won't install DT unless you like the modification part, but the penalty mitigation is a bonus player reward.
</p>

<p>
	 
</p>

<p>
	DT is at odds with DEC in some areas, aligned in others.
</p>

<p>
	 
</p>

<p>
	However, if we have an objective way to know whether the PC likes being bound ... if the PC's rewards are aligned with the player's, then we also know whether the player wants the PC to be bound.
</p>

<p>
	 
</p>

<p>
	Given this data, a bondage mod no longer needs to guess what to do. The player wants mechanics that make being bound rewarding.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#f39c12;"><strong>So, there's a light at the end of the tunnel ... we can potentially solve some problems by using data about the PC, or the player, and if we put the two into alignment we can create novel experiences, align mods together better, and store less data.</strong></span>
</p>]]></description><guid isPermaLink="false">11680</guid><pubDate>Sat, 01 Aug 2020 16:16:00 +0000</pubDate></item><item><title>SexLab More Creatures SE - Backport to LE</title><link>https://www.loverslab.com/blogs/entry/11581-sexlab-more-creatures-se-backport-to-le/</link><description><![CDATA[<p>
	The LE version of SexLab More Creatures is seriously lacking in updates, and is no longer useable.
</p>

<p>
	There's an updated SE version, but no matching LE version.
</p>

<p>
	 
</p>

<p>
	I took the ESP from the SE version and edited it so that it works in LE.
</p>

<p>
	The main problem was water records in edited cells; SE has some water data that LE doesn't.
</p>

<p>
	There were a few other little problems, but nothing significant.
</p>

<p>
	When it came to the core content, there was no need to change anything at all.
</p>

<p>
	 
</p>

<p>
	<strong>The SE version works perfectly, apart from the ESP, and this fixes that.</strong>
</p>

<p>
	 
</p>

<p>
	Just install the SE version:
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="346443" data-embedcontent="" data-embedid="embed5949071465" scrolling="no" src="https://www.loverslab.com/files/file/6301-sexlab-more-creatures-se-2019-10-28/?do=embed" style="height:295px;max-width:502px;"></iframe>

<p>
	 
</p>

<p>
	And then patch (overwrite) with this ESP:
</p>

<p>
	<a class="ipsAttachLink" contenteditable="false" data-fileext="esp" data-fileid="969811" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=969811" rel="">SexLab More Creatures.esp</a>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Installing this does require some assets for additional dog types and such, whether you're in SE or LE.
</p>

<p>
	The dog model for the SE mod comes from <strong>Hentai Creatures SE</strong>. You could probably convert the SE mesh back to LE, but there's no need, the same model is also in the LE version of <strong>Hentai Creatures</strong>, which you can find in on the MNC SLAL edition (for LE) page <a href="https://www.loverslab.com/files/file/4130-more-nasty-critters-slal-edition/" rel="">https://www.loverslab.com/files/file/4130-more-nasty-critters-slal-edition/</a>.
</p>

<p>
	 
</p>

<p>
	I didn't even enable the HC ESP, because I don't want all those HC spells cluttering up my game. I installed HC for LE and simply disabled the ESP.
</p>

<p>
	This gave me the required dog mesh (it looks like an Alsatian).
</p>

<p>
	If you're already using HC for LE, then you don't need to do anything extra.
</p>]]></description><guid isPermaLink="false">11581</guid><pubDate>Sat, 18 Jul 2020 04:23:00 +0000</pubDate></item><item><title>More Manifesto: Follower Handling in Defeats and Slavery</title><link>https://www.loverslab.com/blogs/entry/11576-more-manifesto-follower-handling-in-defeats-and-slavery/</link><description><![CDATA[<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	We currently face to poor decisions that were made in Skyrim modding antiquity.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	One of these is that defeat mods frequently attempt management of followers that effectively lie outside of their reach.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The other is that historically Simple Slavery has never removed followers prior to enslavement.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	This latter issue is an obvious flaw, as it's obvious absurd for the followers to be handing around the pre-auction holding cell in SS, acting all loyal and followerish, when you're chained up and getting ready to be sold. 
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Things only get worse after you are sold, if the enslavement scenario didn't consider that you might bring some OP follower along.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And most "proper" slavery mods use the vanilla follower slot for the master/owner, which usually results in a problem of some kind.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Simple Slavery's decision to do the absolute minimum to implement the auction scenario is at the root of the follower problem.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The author didn't want to figure out how to remove followers from multiple follower frameworks, so instead did nothing and kicked the problem back onto the triggering mod.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And it's clear that the triggering mods didn't understand the full implications of what was required of them, or lacked the time or capability to implement a full solution.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	We have a deceptive situation, where a modder thinks that using SS is as simple as calling "SSLV Entry" and letting SS do the rest.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	This is not the real situation, because the calling mod must reliably remove all followers, which requires supporting four follower-frameworks plus vanilla!
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	This should never have happened. Only one mod needs to know how to dismiss followers in vanilla/UFO/AFT/EFF/NFF, and that is SS.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<span style="color:#f39c12;"><strong>Making every auction initiator have to support follower removal itself was extremely unhelpful.</strong></span>
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	In practice, the Defeat mods that added SS as a defeat outcome did not <em>fully </em>support follower dismissal, and this shows up in various ways.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Defeat mods can't really get out of handling followers. Many of them create their own defeat scenarios that are broken by followers just as much as SS is.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	DiD in particular, because it is a "stealth" slavery mod, has extended scenarios that can easily be ruined by a follower showing up uninvited and turning the whole thing into a comical scenario from <em>The Sims</em>. DiD tries to handle the followers, but its model for handling them is flawed. It doesn't support all the follower frameworks explicitly; it simply tries to keep them out of the way.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	How is that going to work when you have Call of Tocatta? Or a summon followers feature on your EFF wheel menu?
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The correct approach for a defeat mod that handles followers is to remove them all.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Unfortunately, this requires supporting all those follower frameworks, plus all the clever custom followers that don't even use the follower slot, Inigo, Sophia, Vilja, etc.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	That's quite a chore for every single defeat mod to take on.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Obviously, it's never going to happen for SexLab Defeat, or DAYMOYL, which have not had an update in years.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And probably isn't going to happen for DiD "NEXT" or whatever it will be called, should it eventually appear.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	That's because its a lot of work. Modders shouldn't have to duplicate this work.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	There should probably be a mod that offers this as a service.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	One possibility is for SS to offer it as a mod event, because SS needs to implement it anyway.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Another is for the mod to exist as a standalone feature.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And yet another is for it to be part of a Tiny Defeat ... though that does make the defeat substantially less tiny.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	I like the standalone solution, but it would mean players would have to merge or lose an ESP slot.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Most defeat oriented players will have SS, so it remains a good place to put that functionality.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Maybe it's not obvious why a defeat mod needs to remove followers for any meaningful defeat scenario to work.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Defeat mods that keep followers in the follower slot and don't dismiss them fail because of it. This is trivially demonstrable in the defeat mods we have today.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	They fail to remove the follower, and the results are frequently bad.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	DiD sometimes managed to keep followers out of the way, and often failed at it. Newer DiD<span> </span><em>still<span> </span></em>fails.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The root cause is that the follower is still in a follower alias. If you remove them from it, the problem is gone.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And that's for DiD's own imprisonment.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	DCL also has a poor track record of follower removal. It looks like it only removes them if they are registered for DD handling in DCL, so male followers, or dominant followers likely won't be handled.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SexLab Defeat is - as far as I can tell - being handled by code in SS - because Defeat itself is not maintained.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	So, setting apart some non-existent future defeat mod that wants to do something fancy with followers,<span> </span><span style="color:#7f8c8d;">and maintain state while slavery mods it potentially knows nothing about are executing</span>, there is no good reason to retain followers in a defeat. And if you look at what I said above, even the <em>idea</em> of a defeat mod trying to do that is plain crazy and will never work reliably, especially if it thinks to keep the follower(s) slotted during that process.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It cannot work. Several slavery mod uses the vanilla follower slot.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The only exception I can think of is SD+; it's trying to handle all followers (with variable success) but has probably invested more code and effort into follower management than any other slavery mod I can think of.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<span style="color:#f39c12;"><strong>Leaving followers slotted during defeats is a broken pattern, and this needs to be recognized and understood.</strong></span>
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<span style="color:#f39c12;"><strong>It is absurd to require every single defeat or Simple Slavery origin to re-implement follower removal for multiple follower frameworks; it should be in one place.</strong></span>
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	In short...
</p>

<ul><li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		follower removal should be a centralized service accessible via single mod event (and should fire a confirmation event).
	</li>
	<li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		a defeat generating mod should remove all followers.
	</li>
	<li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		A defeat outcome, such as slavery, should be able to assume that followers have been removed.
	</li>
	<li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		If a defeat <em>outcome</em> needs to get hold of nearby followers, it can do so by potential follower faction, actually having been recruited wouldn't be relevant.
	</li>
	<li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		A Simple Slavery initiator should simply be able to fire an event and have everything happen, it shouldn't have to clean up the PC for SS; SS should be self-contained and handle the things that break its scenarios.
	</li>
	<li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		When SS hands the PC off to a defeat outcome, it should hand over a clean, follower-free PC, not a mess of worn devices and half-removed followers.
	</li>
	<li style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
		Registration to SS shouldn't require code changes to SS.
	</li>
</ul><p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
	 
</p>

<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
	The scope of Simple Slavery should be such that it takes in "dirty" PCs and cleans them before handing them to the destination.
</p>

<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
	SS should not contain set-up code for the destination (except in so far as some legacy cases need to be supported).
</p>

<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
	New mods should register to SS; SS should not be secretly adopting them as targets.
</p>

<p style="background-color:rgb(28,28,28);color:rgb(188,188,188);font-size:14px;">
	Anything required to induct the PC into a destination mod should be IN the destination mod, except in so far as the mod should be able to assume the PC is clean on entry.
</p>]]></description><guid isPermaLink="false">11576</guid><pubDate>Fri, 17 Jul 2020 01:27:00 +0000</pubDate></item><item><title>SexLab Disparity: Morphs, Nodes and Body Shape Changes</title><link>https://www.loverslab.com/blogs/entry/11491-sexlab-disparity-morphs-nodes-and-body-shape-changes/</link><description><![CDATA[<p>
	From time to time, people ask about the morph handling feature in SexLab Disparity.
</p>

<p>
	 
</p>

<p>
	As the SexLab Disparity (SLD) main page is quite full already, I thought I'd put some supplementary information here.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Let's consider how <em>morphs</em> work vs <em>node-values...</em>
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SLD reads <em>node values</em> from the skeleton using the NiO libraries. Node scale changes are used by some mods to crudely inflate the breasts, butt, or belly.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	They were used by most mods for a long time. They don't look good if you put in large scale values, but for small values they look ok.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SLD does not <em>write</em> to any node values. It does not change the shape of your character. People ask for it, but it would be really confusing.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	If I add it, it will be off by default (like everything in SLD), and I'd advise most players to stay away from it because of the potential to create feedback loops and unintended results.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SLD doesn't write to any morphs either, to be super-clear.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Morphs are animation files that change the shape of the character skin and operate at the vertex level. This allows highly customized results.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Bodyslide makes morphs for you (assuming you let it) that will allow your character to change shape.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The amount of each morph applied is set by a slider in Bodyslide (or Racemenu).
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	These can also be set in code by NiOverride, which is what mods with better shape-changing do. FM, MME, etc have built-in morphing.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SLIF also allows morphing. SLIF allows morphing from node changes too. Confused? Don't use SLIF then. It's not really <em>necessary;</em> the UI is confusing and has little to no tooltips and zero help given. SLIF needs a user-guide, and articles like this to explain it. It does not appear to have them. If there's information in the forums, it's buried in among a lot of other noise. It was because things on forums get lost that I put this information here in the first place.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SLD's breast/butt and belly modifier sets are driven by the node values for breasts, butt and belly, respectively.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The node value is the <em>input</em>. 
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	A value of 1.0 is normal, and anything else is ... not ... it means it's been changed by something.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Breast node values <em>typically</em> range up to 4.0 (for very large), Butt values up to 2.0 (after which it goes very wrong looking), and Belly values up to 6.0 or even 12.0, though it looks odd past about 4.0 using simple node scaling. Large breast node values create the unattractive "torpedo breast" look, though physics goes some way to making that go away by inducing sag.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	With morphs, there are ways to make boobs huge without it looking like a fembot from Mars Attacks, and you can use the Pregnancy Belly morph to create a decent looking large belly, or modify the butt in various ways that do not look like the character has a nasty tumor.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	SLD uses node values to figure what modifiers to apply to your character <em>stats</em> (not appearance).
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong>So, how can it work with morphs?</strong>
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	This is what the "fake node values" are about...
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The Morphs page allows you to generate a "made up" synthetic node value from the morph state, that is used to adjust or replace the actual node value that is input into the Breast/Butt/Belly pages. That is what "multiply" or "replace" mode means. It's how the node value is replaced by the morph value.
</p>

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

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

	<div class="ipsSpoiler_contents">
		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			If you scroll down to the bottom of he SLD morphs page, it will show you the currently set values of all the morphs it cares about - the values it has read from the NiO data.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			You can use these values to determine what input range, offset and weight to use to get the node output value you want.
		</p>

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

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			The values at the bottom of the morph page will show you the value in each supported morph.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			From this you can figure out which morph sliders SLIF, or MME, or whatever morphing app you have is adjusting, and in what range.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Usually, they only touch a couple of the sliders.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			You can then set SLD's morph mappings up appropriately. You don't need to look at all the morphs unless you have a reason.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			e.g.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Fertility Mode adjusts two morph sliders. I forget which just now. The point is, it adjusts those two sliders to the exact same values. So you can see how much inflation FM is adding by just by looking at either one of those sliders. By mapping only one slider's range in SLD, weighted full, you can calculate a fake node size which you use as the input value to your modifiers.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			If the app uses one slider, runs it to max, then starts raising another, you will need to weight both the sliders, and set the offset on the one that is ramped up second accordingly.
		</p>

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

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Let's say that FM changes BreastsSSH from 0.0 to 0.5 over the course of a pregnancy, you can use that value to drive your fake node value.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			And let's say you think that scaling of the morph in FM looks approximately like going from a node value of 0.0 to 4.0
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Then you set the weight of the BreastsSSH morph to max, the offset to 0 and  the overall scale to 8.0, so that a value of 0.5 will output 4.0
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Then you set the mode to replace, because you have no mods that change nodes, only morphing mods (just FM in my example), so in this simple case, you don't have to combine the value from morphs with the value from nodes.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Then you setup your buff/debuff column to range from 0 to 4.0 with a scale of 100%, and dial in the values you like.
		</p>
	</div>
</div>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	You can see the final value being used on the respective page for breasts/butt/belly.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Set your From and To values to work with the range that value takes, or that you care about modifying.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And for the morphs, say for breasts you decide to use a range of 0.0 to 4.0, where values less than 1.0 are tiny boobs.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	You want to make your max morph slider produce an output of 4.0 ... that is the "fake node value".
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It's not really a fake node value; it's never written to a node; it's just the input that SLD uses on the breasts page.
</p>

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

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

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Following up some user questions on this...
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong><a data-ipshover="" data-ipshover-target="https://www.loverslab.com/?app=core&amp;module=members&amp;controller=profile&amp;id=960091&amp;do=hovercard" href="https://www.loverslab.com/?app=core&amp;module=members&amp;controller=profile&amp;id=960091" rel="" style="background-color:transparent;color:inherit;">Nazzzgul666</a><span> </span>said:</strong>
</p>

<blockquote data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="3059846" data-ipsquote-contentid="111676" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1593852886" data-ipsquote-userid="960091" data-ipsquote-username="Nazzzgul666" style="background-color:#262626;border-color:rgba(84,84,84,.3);border-style:solid;border-width:1px;color:#bfbfbf;font-size:14px;padding:0px 15px 10px;">
	<div>
		<p>
			If i got that right, neither me nor any (modern) mod should change nodes at all. Is that right?
		</p>
	</div>
</blockquote>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	I wouldn't say that exactly ... there are many nodes to change ... for example NiO High Heels ultimately applies a node modifier, just not a scale.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	That's probably confusing.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	To put is simply: for changing the look of your character the way Bodyslide does, morphs are usually best.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It you want longer arms or legs, you need to change a node, but if you do that will probably make all your SexLab animations look wrong; it's something you'd only do for screen-archery really.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The node values are the values in your<span> </span><strong>skeleton</strong>, so by changing them, amputator can make your arm collapse entirely.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	They are a blunt instrument for altering appearance.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	They aren't exactly a "base", but your skeleton is pretty fundamental<span> </span><span><img alt=":)" data-emoticon="" data-ratio="100.00" src="https://www.loverslab.com/resources/emoticons/smile.png" style="border-style:none;vertical-align:middle;" title=":)" width="22" /><span> </span>so you can think of them like that, and the analogy will work in most cases.</span>
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<span>Node scaling<span> </span><em>will<span> </span></em>certainly impact breast size and change how your breast morphs look, for example, so thinking of it as a base there is reasonable.</span>
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<strong><span> </span> <a data-ipshover="" data-ipshover-target="https://www.loverslab.com/?app=core&amp;module=members&amp;controller=profile&amp;id=960091&amp;do=hovercard" href="https://www.loverslab.com/?app=core&amp;module=members&amp;controller=profile&amp;id=960091" rel="" style="background-color:transparent;color:inherit;">Nazzzgul666</a><span> </span>said:</strong>
</p>

<blockquote data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="3059846" data-ipsquote-contentid="111676" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1593852886" data-ipsquote-userid="960091" data-ipsquote-username="Nazzzgul666" style="background-color:#262626;border-color:rgba(84,84,84,.3);border-style:solid;border-width:1px;color:#bfbfbf;font-size:14px;padding:0px 15px 10px;">
	<div style="color:#ffffff;font-size:inherit;padding:5px 15px;">
		why would i need to generate a made up node value? For what reason would i want to use something else than my actual base values?
	</div>
</blockquote>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Because what SLD is trying to allow you to do is convert your character's appearance changes into stat changes.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Your boobs get bigger and your archery goes down.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Your boobs get smaller and your magicka does down.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	You belly gets bigger and you have a chance to stumble.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	... stuff like that ...
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It's simple if you only have one mod changing morphs, but if you have several, you're (probably) trying to get a value that matches what you see.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Matching the visually observed size is the most obvious thing to do.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	There's no rule says you have to do that. You could do something else; it's up to you, but I'd guess that's what most people would prefer.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It does that by using some arbitrary input value.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<em>One</em><span> </span>value it can look at is a node value. For example the breast value that older pregnancy mods change (EC+ for example).
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	How else could it know? It could somehow figure it out from the morphs you have applied.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	But because the Breasts modifier page for SLD was written in terms of the Breast node, and because the breast node DOES impact how your breasts look, the intended use of the morphs support is to alter the node value to make it better match a sort of scaled up or down value of the node.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	e.g. If back in olden days EC+ node size 4.0 boobs were the limit, and you set your From and To range up to work with that, then you probably want to think of an input range for your breasts page in a similar range ... actually there is no obligation to do so ... but if we don't pin some things down it becomes impossible to explain what to do to those who don't completely understand it all yet.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	So as an example, what we might want to do is get a value from 0 to 4.0 by transforming the morph values.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	If we're dealing with a BreastSSH morph that ranges from 0 to 0.5, then we can see that scaling that by 8.0 will do that.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	That value is the 'fake node value' ... it's just an input to the breasts page in SLD. That's all.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It has no impact on your visual breast size, or your skeleton, and no mod but SLD knows anything about it.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	It is just the input to the Breasts modifiers page, and its current computed value will be shown to you there, on that page.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	That only updates each update tick, and you can change how often that happens on the first page of the MCM.
</p>]]></description><guid isPermaLink="false">11491</guid><pubDate>Sat, 04 Jul 2020 17:00:00 +0000</pubDate></item><item><title>Trapped in Rubber - Six Years On</title><link>https://www.loverslab.com/blogs/entry/11102-trapped-in-rubber-six-years-on/</link><description><![CDATA[<p>
	I'm replaying Trapped in Rubber right now, and sure, there are a few technical obstacles, but overall it's a fairly solid mod that still works quite reliably.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	People are saying TiR is dead. I'm not sure why. It's just ... unmaintained. Has been for years.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	The effort required to play it is minor compared to a Delzaron mod <span><img alt=":)" data-emoticon="" data-ratio="100.00" src="https://www.loverslab.com/resources/emoticons/smile.png" title=":)" width="22" /> </span>
</p>

<p>
	<span><em>Nearly </em>everything is still working about as well as it ever did.</span>
</p>

<p>
	 
</p>

<p>
	<span>Sure, there is a sad lack of support for features people take for granted now, such as needs, bathing, SLSO, modern-DD (+Lore), PoP, defeat mods, Simple Slavery, Slaverun Reloaded, rape mods, other slavery mods, and of course it fits poorly with newer mods like DF, SLS, or STA...</span>
</p>

<p>
	 
</p>

<p>
	<span>Most of the things it ignores were already around when TiR was peaking. Like CD, TiR assumes you're going to drop everything else from your LO, drink the CD/TiR koolaid and just play that for a while. You're <em>supposed</em> to build a LO around TiR, and that LO demands you pick your other SL mods carefully.</span>
</p>

<p>
	 
</p>

<p>
	Assuming you don't introduce anything that conflicts too much, it mostly goes along smoothly.
</p>

<p>
	 
</p>

<p>
	<span>So far, I've come across some scenes sticking for no obvious reason and some <em>ever-so-slightly game-breaking device script bugs</em>, and often as not, a vital NPC will lock themselves in an unreachable location (sigh), but that seems to be a -thing- with a few mods.</span>
</p>

<p>
	 
</p>

<p>
	<span>The slot conflicts are a major show-stopper, but they are easy to resolve once you hit them.</span>
</p>

<p>
	 
</p>

<p>
	<span>It is a long way from "every single quest is broken, every NPC is in the wrong place, nobody has a quest marker, the quest objectives are mostly confusing gibberish" <em>Things in the Dark</em> territory. </span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span>For me, the biggest flaws in TiR are the oldest and deepest. It never created much atmosphere and it's focused on the external world, while the interesting genre-specific part is the internal world of the tower. So much of it is doing vanilla-style Skyrim quests while you just happen to be in a rubber suit, and that makes the whole TiR aspect nothing more than "playing Skyrim with no armor", which is like half-a-dozen naked-Skyrim mods. You might as well play SLAV for example. And later, you get armor - lots of armor - so even that disappears and you're just left with some quite familiar-feeling quests and a shiny outfit.</span>
</p>

<p>
	 
</p>

<p>
	<span>As quest mods go, it's still pretty good quality. Yes, there are loopholes and gaps, but it's not like you have to spend all your effort tip-toeing around them. There are some mods where the challenge is getting it to work at all, and TiR isn't like that. </span>
</p>

<p>
	 
</p>

<p>
	<span>However, it never integrated well with DD content, and that's even worse now (probably). To the point you must disable all those things in your game, which makes it feel rather bare. TiR feels like there should be appropriate peril, risk of capture, enslavement, a sensation of being at the mercy of deranged masters and mistresses and trying to escape it, or being broken and remade so you can't cope without it. But TiR doesn't really do enough to fill those gaps. Sure, there are episodes that ought to fill those gaps, but they don't.</span>
</p>

<p>
	 
</p>

<p>
	<span>It ends up feeling like you're some tough super-spy rather than a slave being overwhelmed by rubber enclosure.</span>
</p>

<p>
	<span>Time has not changed that. It's how it was then, and it's how it is now.</span>
</p>

<p>
	 
</p>

<p>
	<span>The Mistress feels inconsistent as a character, and that was always a flaw. On one hand she's preaching "mutual trust" but your entire enslavement is built on happenstance, trickery and deceit. In so far as she comes off as reliably insane and conflicted, she is consistent.</span>
</p>

<p>
	 
</p>

<p>
	<span>None of the deep issues with TiR are technical; it's the disconnect between the dialog and the events, and the emphasis. It goes for comedy where maybe nobody is really <em>expecting</em> comedy. The core story is, at heart, deeply non-comedic, so scenes like the Rubber School while wonderfully executed, don't meet audience expectation (unless you played it already and are used to it).</span>
</p>

<p>
	 
</p>

<p>
	<span>When things crank up, later in the story, the enemies are still buffoons, and are exactly like The Mistress: crazy as a sack of mutant monkeys. You can tell them this to their faces, but they don't care and it never matters. At the end of the story, you remain untouched by it all. The idea of picking the ending where you want to help the Mistress is ludicrous. There is never a point where the mod seriously sells you the idea that you owe her anything, or need her for anything. She is a parasite, a smug, over-capable parasite, but you're the one doing all the hard work. Any illusion that you could ever feel a connection to her is entirely the work of the player - wanting that and imagining it so - the mod does nothing to build it for you.</span>
</p>

<p>
	 
</p>

<p>
	<span>CD never made those mistakes. CD is thematically consistent and stays in-genre the whole time. Technically, it's less stable than TiR. CD was frequently extremely fragile, and required a lot of care and feeding to get it through an enslavement. The coherent feeling and strong atmosphere of CD was enough to make people forgive its technical foibles.</span>
</p>

<p>
	 
</p>

<p>
	<span>It seems to be the case that most slavery-related/BDSM mods can't do comic -relief- while staying on-theme and holding a stable tone. SLAV is all-over the place and it's only attempting pure comedy. What kind of comedy? It doesn't really know. Slaverun is undercut by deeply variable mood and tone, with a very mixed up approach. And DCL ... there's not much narrative there to start with. Dagonar is fairly bleak and brutal, but inherently <s>stupid and ridiculous</s> silly, while the Chloe line is played mainly for laughs but runs out of them about half-way through and ultimately becomes grind-heavy (there's a <em>lot</em> of walking long distances very slowly). The other Dollmaker quests feel like the eclectic set of random events that they are, as do the collars. DCL is not even <em>trying</em> to tell a story. It could, but it doesn't; it's completely episodic, and the order rarely matters.</span>
</p>

<p>
	 
</p>

<p>
	<span>As Kimy took great exception to my remarks about DCL here, I will clarify them. What I'm implying above is that I don't believe Dagonar is <em>intended</em> to be taken seriously; it <em>is</em> purposely silly. It is undeniable. That's not a criticism in itself; that choice to keep things light and silly is clearly <em>popular and accessible</em>. I enjoyed Dagonar, but it's not even <em>attempting</em> to be much of a story. Where I wish DCL had attempted more story, is with the Dollmaker, as a concept she hooks you in, but ultimately goes nowhere, figuratively speaking. Literally you go around and around quite a lot, but you end up back in Dawnstar, and nothing has really changed, and that is how all the other DCL episodes end: episode over, back to normal - an intentional design decision that makes DCL useful and flexible, but less of an immersive experience.</span>
</p>

<p>
	 
</p>

<p>
	There are a lot of other mods that play it all for laughs (SLS for example), and that's fun and all, but it takes more than one flavor to make a good meal.
</p>

<p>
	 
</p>

<p>
	As a contrasting example, SD+ has <em>ambition.</em> It isn't unrelentingly bleak, but it tries to take itself a little seriously. That makes a nice change in a line-up of BDSM mods that seem to be saying "don't worry, nothing scary here, just fun". It doesn't throw up its hands at the first difficult moment, break the fourth wall and say "just kidding".
</p>

<p>
	 
</p>

<p>
	Sex Slaves (Dominant Andrew) hit a good balance on tone, but fell down on other areas (repetition, repetition, repetition) and of course, it's greatest failing was that one day the author just stopped and left it. Right at the point it seemed like you'd finally earned some payoff, it just stopped.
</p>

<p>
	 
</p>

<p>
	I guess the problem was that the target audience for Dominant Andrew either didn't exist, or wasn't vocal enough. Maybe it was just me? <span><img alt=":)" data-emoticon="" data-ratio="100.00" src="https://www.loverslab.com/resources/emoticons/smile.png" title=":)" width="22" /> </span>
</p>

<p>
	<span>It didn't quite pull off its intentions, and I think the author set out to make a mod to please others rather than himself. I've written about that on its own forum, so no point going on about it here. </span>
</p>

<p>
	 
</p>

<p>
	There's a place for serious-ish mods with an appropriate amount of comic relief to prevent them feeling overly pretentious or bleak, but its hard to find mods that are like that. Arngrim's Apprentice maybe?
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Imagine, just for a moment, a different TiR from the one that we were gifted with.
</p>

<p>
	Imagine, a mod about a descent into a world of rubber. Where little by little, isolation from normality recalibrates your reality to the point where you struggle to exist outside that safe rubber haven. A mod where every trip out into the cold, bright outside world isn't a return to business-as-usual, but an reluctant foray into a place where you no longer belong and which feels increasingly alien as your rubber indoctrination splits you off from normal life. The same basic events of most of the TiR story might transpire, (albeit with a very different start), but with an entirely different perspective, and augmented with scenes from the inner world of the tower that completely refocus it all.
</p>

<p>
	 
</p>

<p>
	For example, instead of a pony race where you basically get an outfit and then run your first race...
</p>

<p>
	Imagine, a series of fairly simple, (probably somewhat grindy) training scenes where it's a chore to eat as a pony, where it's a chore to drink as a pony, where it's a chore to walk the proper pony way. You learn to not use language, not just have a joke spell cast on you. You are forced to race around, and around, and around, practicing until you wonder if it will <em>ever</em> end. It doesn't have to go on <em>too</em> long, but just long enough to build the "feel" of it and make you never want to go back to it.
</p>

<p>
	 
</p>

<p>
	Also, a basic game-play feature for pony races is to add jumps, where if you fail to execute them correctly, you lose time getting out of the hole. Pony races without this are missing out on something Skyrim can give you "for free".
</p>

<p>
	 
</p>

<p>
	Imagine this as like operating like Rubber Waitress, where you need to build up a score to finish training. Each time you use human words, you lose points. Each time you fail to make a jump, you lose points, and at first it's set up so it's really easy to lose points, and hard to get them. Your trainer adds incentives as you fail, and they help you improve. Your human dialog options disappear one by one, replaced with pony options. Learn to use the right ones to get food, water, sleep, sex, practice time, etc. or just to please the trainer. You always have one option left to speak, but using it always costs points. Earlier on, you need the human options to get essentials. Later on, you can use the pony versions and gain, instead of lose, points. It's simple, but it's not really a game, it's just to build a <em>feeling</em>.
</p>

<p>
	 
</p>

<p>
	By the time you enter the first race, instead of it all being "no idea what I'm doing here, these people are nuts", you've spent the last three game weeks in full pony costume. You've forgotten what it was like to have arms, and the race is now the biggest most exciting thing you could possibly be doing. Your entire existence is focused on it. Finally, this pony thing is going somewhere? And in this version, you care deeply about pleasing The Mistress, desperately want to please her, because if you don't you can reasonably expect more hours of being a pony - which is awful. This woman has total control of your existence, and she can drive you insane. Maybe she already has? She tells you that if you don't win she's considering extra-intensive pony training for a month afterwards.
</p>

<p>
	Maybe there's an option to go nuts and kick her until she's a bleeding mess on the floor and the other masters pull you off. I imagine you get punished pretty badly for that... You probably have to redo pony training and the race again if you take that path.
</p>

<p>
	 
</p>

<p>
	When you lose that race, you (as the player) should literally be in tears. No, no, no! No way. How did she get past me?
</p>

<p>
	And you want to tell The Mistress that the other girl cheated, but <em>you don't want to do it</em>, because that would mean breaking character as a pony.
</p>

<p>
	Of course, if you try to tell her, she should stop you and send you for punishment for that very reason, without hearing your explanation.
</p>

<p>
	And so you go back to pony training, which has now been made even more unfair than before.
</p>

<p>
	But of course, it's sorted out later and you're sent on some other job, because nobody really wants to spend twenty hours mining ore, or running circles in an armbinder. There comes a point where you need to stop doing that. Ideally, it comes before you get sick of the mod.
</p>

<p>
	Players just want to <em>feel</em> like it was forever, when really they spent an hour on it, and half of that was one-handed.
</p>

<p>
	When The Mistress takes you away from pony training, you would be genuinely grateful for the plot device, rather than simply feeling that it was all rigged from the start, you had no choices, and it was just a bit boring.
</p>

<p>
	 
</p>

<p>
	Imagine (once more), if TiR hadn't been a mod where you play regular Skyrim in a rubber outfit, but a mod about living in a rubber world and being forced to go outside it to deal with regular Skyrim? It could have made use of all the vanilla content/quests as stages that progress TiR. The Mistress sends you to Helgen, then to Whiterun, then to the Greybeards, and so on... TiR-plot-specific events fit in here and there. You're playing Skyrim, as normal, but you aren't, because your perspective is changed. It's not "Hey Balgruuf says I should see these Greybeard guys, so I'll slot it into my schedule", instead, you obediently return to The Mistress and report. She says that maybe one day you will be ready for something like that, but for now you're only one step up from a sex-slave, naked except for a rubber-suit, and she will let you know when you're ready, if you ever are. When you finally set off to climb those steps, perhaps she sends two rubber guards to look after you, who ensure you don't speak to anyone but the Greybeards (and pick up the Klimmek quest for you). Everything is changed. The illusion is that you have no agency at all, and in a way you don't because a lot of the time you have to complete Skyrim in the order The Mistress decides. If you go off-course, presumably the suit (or your minders) will set you back on the straight and narrow. Go to the wrong town, or take too long and your suit develops a habit or arm-binding you. Take too long away from the tower and end up crippled by hunger. Enter locations that are off limits and get blindfolded too. Not really for gameplay, but for atmosphere.
</p>

<p>
	 
</p>

<p>
	SLAV pretty much serves as the tech-demo on how to do all this, but SLAV is no slavery mod and its only atmosphere is relentless absurdity.
</p>

<p>
	 
</p>

<p>
	We can imagine...
</p>

<p>
	 
</p>

<p>
	The actual TiR is nothing like the above. Maybe most people are happier with it the way it is?
</p>

<p>
	 
</p>

<p>
	CD was intensely loaded with grind, and yet people loved it for the atmosphere.
</p>

<p>
	Just being allowed to be a maid felt like a big achievement.
</p>

<p>
	And then you spent so long in that mansion that any trip away from it started to feel special.
</p>

<p>
	You spent so long "being" a maid, that doing anything else in Skyrim felt odd. The only other games that have the same impact are Beyond: Two Souls and things from the same creator.
</p>

<p>
	And when you were sent on those courier jobs, the fear of failure was ... immense. So much tension. Incredible.
</p>

<p>
	 
</p>

<p>
	CD has a lot of fans. TiR did too, but CD made a much bigger impression I think.
</p>

<p>
	I believe that's because it made you feel something different to normal Skyrim. It created a different world and took you there.
</p>

<p>
	 
</p>

<p>
	I would imagine that Trapped in Rubber isn't going to get any changes now. I doubt its creator would ever have been remotely interested in my perspective on it, even when they were actively working on it. It's been untouched for five years, so we can safely assume it isn't going to change, and realistically any work done now would likely be a few minimal bug-fixes to keep it playable. That's all that's needed. Anything like the mod I'm dreaming of would probably be best off as some completely fresh project.
</p>

<p>
	 
</p>

<p>
	Alas, for those seeking more than a regular Skyrim quest, Trapped in Rubber is not really about being trapped, or being in rubber. It's just some nifty Skyrim adventures with a bit of dress-up and a nod towards exhibitionism.
</p>

<p>
	 
</p>

<p>
	It makes a nice change from regular Skyrim adventures, but in the end, you can do much as you like. The "trap" is hardly any kind of trap at all.
</p>]]></description><guid isPermaLink="false">11102</guid><pubDate>Mon, 11 May 2020 03:27:00 +0000</pubDate></item><item><title>Ugly Elven Eyes</title><link>https://www.loverslab.com/blogs/entry/10988-ugly-elven-eyes/</link><description><![CDATA[<p>
	This is all about that little bit of flesh in the corner of your eye.
</p>

<p>
	 
</p>

<p>
	In Skyrim, it's made from a tiny number of polygons and has a texture that alphas out at the edge where it meets the eye.
</p>

<p>
	 
</p>

<p>
	It looks ... pretty bad on the best of days, if you zoom in close. The number of polygons and the way the alpha ended up being drawn in most eye textures means it leaves a visible gap, and really does look like some floating polygons that are jammed in the corner of the eye to fill in the gap in the head mesh.
</p>

<p>
	 
</p>

<p>
	But on elves...
</p>

<p>
	 
</p>

<p>
	It's way worse. So much worse. The eyes are scaled up, and this little splotch is twisted and made bigger. It really shows off how poor it looks, but on top of that, you will often see a bit "missing" from it, as if cut out. 
</p>

<p>
	 
</p>

<p>
	Today I set out to track down what was causing this.
</p>

<p>
	 
</p>

<p>
	The root cause is that the eye also has a shadow for beneath the lid, and this is also a few badly aligned polygons with an alpha texture on.
</p>

<p>
	 
</p>

<p>
	It turns out that a great many eye textures do not create this alpha correctly - it's not quite zero, and doesn't fade early enough.
</p>

<p>
	The result is that the shadow polygons go in the z-buffer and partially block rendering of the eye-corner polys.
</p>

<p>
	 
</p>

<p>
	The fix is to either move the eye-shadow polygons over a bit (this is quite tricky to do, but you can do it in racemenu sculpt, or NifSkope), or to adjust the alpha in the eye textures you are using so it fades out early enough.
</p>

<p>
	 
</p>

<p>
	It bugs me that there are no high-resolution eyes. Probably some issues to do with facial expressions there.
</p>

<p>
	A job for another day is to import an existing eye mesh into Blender and properly adjust the vertices so that the shadow doesn't overlap the little corner piece at all, and both parts fit better.
</p>

<p>
	 
</p>

<p>
	Whether or not a proper high-resolution eye is possible, or blocked by morph limitations I don't know. I guess the existing morphs could be reverse engineered and recreated, but sounds tricky.
</p>]]></description><guid isPermaLink="false">10988</guid><pubDate>Sat, 25 Apr 2020 12:33:00 +0000</pubDate></item><item><title>A Tiny Defeat</title><link>https://www.loverslab.com/blogs/entry/10978-a-tiny-defeat/</link><description><![CDATA[<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	As a follow-up to the Lupine Manifesto post, I thought I'd repost a slightly edited version of a message I wrote talking about a design for a Defeat-style mod.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The idea is to create a very small, extremely minimal defeat handler, with outcomes as plugins that can be added by other mods.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Basically, to take ALL the consequence handling out of the core defeat mod and provide a way to register arbitrary defeat handlers.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The most basic defeat handler is thus, nothing. You die.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	That's the final fallback outcome if all else fails.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The base mod would come with <em>some</em> simple handlers, and <em>some</em> library functionality to do common tasks.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Other mods can then register into it via an API.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	When defeat occurs, the core mod detects it, and contrives for the handlers to deal with it.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Handlers are all given a chance to prioritize themselves, and then they are given a chance to handle - though not all handlers may get a chance to handle, all get a chance to establish their priority, situationally, based on the conditions of the defeat.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Each handler decides for itself if it will handle the situation.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The handle/don't-handle logic is not part of the defeat mod, it just tries them in priority order, and the priorities are also calculated.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	If we imagine it at an abstract level...
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	We have a DefeatState, which is the known state of defeat, including all the actors in play, and what side we think they're on (ally, neutral, enemy).
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	We pass that DefeatState to all registered handlers in no particular order, and they return a priority - this is their "bid" to handle the defeat.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	We then refresh the DefeatState and test each handler in priority order, and ask it if it will *actually* handle the defeat. 
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The handlers check the DefeatState and make a final call on whether they will run.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	If a handler runs, it can then terminate the defeat or let other handlers continue it, or it can re-open the bidding process and let handlers re-bid.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	If the active handler allows continuation, lower bidding handlers may ALSO run, but they will not get a chance to do so until the current active handler is done.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Again, they will be handed a refreshed DefeatState at that point, and decide whether to skip, handle and terminate or handle and continue.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	External mods can call a well defined API to register handlers, but the assumption is that you will quickly develop a reasonable set of handlers to do the basic stuff, like rapes, teleports, robberies etc.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	For example, a handler might calm everything, giving you time to make a run for it. That handler would have a cooldown, so if you're defeated again, you fall back down the chain and get ... death.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	And of course, there might be a rape handler, or several...
</p>

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

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	So, a given run might look something like this:
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Defeat detected...
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Enemies: draugr, draugr, draugr overlord, current healths 150, 250, 750 respectively.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Allies: Lydia - current health 150
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Cause: 0 player health
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			This then polls the handler list for priorities, passing in the defeat state...
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			The handler list, in this case is:
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Death - PC is killed. Reload.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout - PC goes in bleedout. Enemies do not pacify if any combatants stand.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery - PC's gear is taken.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			PortToInn - PC is ported to a random nearby inn.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			EnemyRape - PC is raped by enemies.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Imprisonment - PC is imprisoned at length and must escape or be released.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			SecondWind - PC recovers full health and can restart the fight.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Given the conditions, each makes the following bids:
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Death - always bids 0
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout - bids 100
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery - bids 50
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			PortToInn - bids 40
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			EnemyRape - bids 90
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Imprisonment - bids 50
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			SecondWind - bids 150
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			SecondWind wins and gets first chance to handle. It bid high because a follower was still standing.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout lost, though arguably it would be appropriate. Because the player explicitly enabled SecondWind, it does what it does.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			SecondWind runs, restores the player health, and the event is over. Defeat is done...
		</p>

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

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Then 45 seconds later, defeat runs again, the player is down again, and this time so is Lydia.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Defeat detected...
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Enemies: draugr, draugr, draugr overlord, current healths 150, 250, 750 respectively.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Allies: Lydia - current health 0
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Cause: 0 player health
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bids occur again:
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Death - always bids 0
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout - bids 100
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery - bids 50
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			PortToInn - bids 40
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			EnemyRape - bids 90
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Imprisonment - bids 50
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			SecondWind - bids -1 (basically saying "will not handle")
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Not only is SecondWind in cooldown, and cannot run, it sees Lydia is down. It returns -1 as its priority, it's not in the game, Death will always beat it.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout wins, and handles first.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			When it's called again to see if it really will handle, it says yes.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout always bids high, and always says yes. Why? Because it is the initial pacify manager.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			However, the core pacification functionality is in the defeat mod core. Any handler can (and should) use it.
		</p>

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

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Bleedout sees no active allies, it pacifies Lydia and the enemies and it spins.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			If an enemy or ally wanders into range while it's spinning, it will pacify them.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			After a few seconds delay, bleedout completes and CONTINUES. The next handler can run.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			The next highest bid is EnemyRape.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			EnemyRape checks to see if it can run, and it sees a bunch of pacified enemies with health, and a downed PC and follower.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			It goes "great, set me up the rapes!"
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			It starts two sex scenes, one for the PC and one for Lydia.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			While it's running, the PC's other follower wanders into range.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			The main defeat handler catches this, and hands the event to the current active handler (EnemyRape).
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			EnemyRape has no enemies to rape the new follower, so it gives them a flee in panic package and forgets about them for now.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Once the rape is done, enemy rape terminates and continues.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery and Imprisonment both bid 50 and are both candidates.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			The defeat mod picks one at random to go first.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery is picked. The player and follower's gear is taken.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery CONTINUES almost instantly.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Imprisonment runs...
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			But let's imagine Imprisonment was picked first.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			In this case, imprisonment may see the PC has not been robbed, and may start by calling Robbery itself, because it knows that handler is part of core and always exists.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			It simply passes in the existing state and sees if robbery will run. It will, and so it can perform a robbery without having to duplicate any code.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Robbery - as we already know - finishes and continues almost immediately.
		</p>

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

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Imprisonment starts up the main imprisonment quest, nails dying Lydia to a cross near Valtheim Halls, and puts the PC in a cage.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			Imprisonment terminates after starting up the quests and porting the player to their cell. 
		</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	At the Papyrus level, how do you register a handler? How are they called?
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	Handlers are quests that share a common extension script.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The specific handler overrides the methods in this script.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	To register, you cast your quest to the common extension type, and hand your quest object to the defeat mod. It puts you in a list, and can call the defined methods on the quest any time. It can also check if your quest is running or not. If your quest isn't running, it's always skipped. This allows handlers to be enabled/disabled in their own MCMs easily.
</p>

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

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	How do you detect defeat? Isn't that a complex problem?
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	<br />
	Yes. And defeat detection also needs to work with plugins to some extent.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	There are two ways to go about this.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	In one case, the detection is entirely in another mod, and it simply calls a mod event to inform the defeat mod of it.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The more interesting case is where the defeat mod collects information about the ongoing combat and passes it to the registered defeat handlers to see if they think a defeat is in progress.
</p>

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	This is nothing more than another Function defined on the base quest type, that returns one of a defined set of defeat types, the first of which is "no defeat in progress".
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	The data used to detect defeats looks uncannily like the data used to handle them. It's the exact same defeat state, but without a cause: we have actor lists organised by disposition, and a curious mod can traverse these lists and decide whether to trigger a defeat, or possibly modify the actors somehow.
</p>

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

<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
	A mod that doesn't care about detecting defeats can simply return, which of course is what the base class implementation does.
</p>]]></description><guid isPermaLink="false">10978</guid><pubDate>Thu, 23 Apr 2020 09:08:00 +0000</pubDate></item><item><title>Skyrim Queen's Blade</title><link>https://www.loverslab.com/blogs/entry/10923-skyrim-queens-blade/</link><description><![CDATA[<p>
	If you're in the mood for something a bit different to the "weak girl" game, then how could you set your game up to enable it?
</p>

<p>
	 
</p>

<p>
	Queen's Blade offers some ideas. It's a world where every important warrior seems to be a woman. In fact, it seems the word "warrior" is synonymous with females in the world of Queen's Blade. What if we could use Skyrim to create something a bit like that? Male guards and fighters aren't non-existent, but they do seem rather rare.
</p>

<p>
	 
</p>

<p>
	Replace many male NPCs with females.
</p>

<p>
	 
</p>

<p>
	Mods like SkyFem and "Female Ulfric" seem appropriate here. Perhaps Futanarium and Babes of Skyrim might be useful too.
</p>

<p>
	It might need a bit of work to be TAWoBA aware though...
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Then there is stat changes...
</p>

<p>
	Goodbye to SLS-style disparity.
</p>

<p>
	In QB most female warriors are near-indestructible tanks, but are easily defeated by humiliation or a crisis of confidence.
</p>

<p>
	Sexist Guards might still be fine, though you might end up changing some of the dialogs.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Implement some mechanics to represent the super-power female warriors:
</p>

<p>
	 
</p>

<p>
	Female warriors (PC included) gain a huge HP buff, significant damage buff (melee and spell) and are set Essential.
</p>

<p>
	 
</p>

<p>
	Then, depending on the personality type, they have different weaknesses.
</p>

<p>
	Each weakness triggered removes some of the base-HP-buff and damage bonus - weakening the character - but we start from a decently large buff. There's plenty of room to reduce it.
</p>

<p>
	 
</p>

<ul><li>
		Nakedness: if certain slots are not filled (i.e. no underwear worn).
	</li>
	<li>
		Devices: if certain DD devices are fitted (particularly plugs).
	</li>
	<li>
		Clothes: if humiliating clothes are worn.
	</li>
	<li>
		Arousal: if the character becomes aroused. (Two variants, shameful and lusty, work a little differently).
	</li>
	<li>
		Poisoned: special poisons can weaken a warrior.
	</li>
	<li>
		Controlled: special magic, particularly worn devices that aren't "bondage" may still serve to control and weaken the warrior. Effects may be turned on and off.
	</li>
	<li>
		Hungry: I guess it's a trope.
	</li>
	<li>
		Fighting someone who is supposed to be a friend or loved one.
	</li>
	<li>
		Fighting for the wrong reasons  - attacking the wrong sort of NPC, such as children, non-combatants, shopkeepers, etc.
	</li>
	<li>
		Verbal attacks: intimidation and seduction.
	</li>
	<li>
		Irrational fears: these could be various, each one a different vulnerability - ghosts, skeevers, chaurus, spiders, fire, electricity, etc.
	</li>
	<li>
		Lawful: cannot bring herself to resist guards and other officials
	</li>
	<li>
		Drunk: or not drunk, if you prefer a warrior who is only strong when drunk, weak when sober.
	</li>
</ul><p>
	 
</p>

<p>
	The more vulnerabilities you take, the bigger your base buffs. Basically each buff is worth a scaled amount of its max vulnerability value, then you add them up. Some vulnerabilities are (almost) universal (like poison), so most female warriors will get some bonus. All warriors should take "Arousal", but choose either the shameful or lusty variant. Lusty is a lower buff, but it means it's less of a vulnerability too.
</p>

<p>
	 
</p>

<p>
	If you want a harder game, adjust the base scale so you get less buff per vulnerability; then the vulnerabilities will hit harder, and you'll need more to make up a competitive bonus level.
</p>

<p>
	Remember, NPCs will have these bonuses and weaknesses too - at least if they are female.
</p>

<p>
	Also, unique female NPCs will be effectively immortal.
</p>

<p>
	Regular grunts like female bandits, or guards, won't get these bonuses, or weaknesses, even if female, because they're not an elite "warrior".
</p>

<p>
	As the uniques are immortal, all can be removed from the crime faction and otherwise tweaked so you can fight them freely in town and guards will simply stay out of it.
</p>

<p>
	 
</p>

<p>
	Throw into this mix, bikini armor as the only type of armor.
</p>

<p>
	Replace all female vanilla armor with bikini armor, and Nini outfits (that break).
</p>

<p>
	Give special "boss" enemies Melodic armor. You cannot loot or use it.
</p>

<p>
	 
</p>

<p>
	Plus... armor-break mechanics. You don't win fights by defeating your opponent, you win by destroying their clothes/armor/confidence, making them aroused, etc.
</p>

<p>
	All armor and clothes are sufficiently fragile. However, it's not about cash, items should self-heal during down-time. Sleep eight hours and your bikini gear is all better?
</p>

<p>
	Lost clothes might be a different matter.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Because the uniques can't die, it's all about surrenders. Keep them as slaves using your PaH setup, or if you're the one defeated, become their servant via DF with a few dialog tweaks.
</p>

<p>
	(Some more brutal owners might go for SD+ instead).
</p>

<p>
	The vulnerabilities give the "deals" and "punishments" some real teeth and the mercenary obsession is somewhat in genre.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	SLD will let you implement a bunch of these mechanics without writing any new code.
</p>

<p>
	I guess some further SLD extensions could help implement the others.
</p>

<p>
	Other mods have already been mentioned. You can put some of this together right now without any new code.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	This works nicely with scenarios where the PC is forced to fight as a servant, gladiator, champion, etc.
</p>

<p>
	Even though the PC may be physically strong, there are those that know how to control that strength for their own benefit, or take it away if it threatens them.
</p>

<p>
	You're always vulnerable, because vulnerabilities are built-in to the system.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	It would also be fun to play a character that is super-tough, but turns to jelly at the sight of a spider - without a need to make spiders super-tough.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Imagine fighting super-tough "Nazeemi". No guards intervene, it's just you vs her. Once you've destroyed all her armor, she surrenders, begging you not to embarrass her further... But of course you do...
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Ways of dealing with arousal and negotiating or forcing sex with NPCs would be important.
</p>

<p>
	For characters with serious sex addiction, there would need to be work arounds, such as potions or gear that can block arousal.
</p>

<p>
	However, it's "by design" that a sex addiction in this sort of game is going to be a problem that can really mess you up if you aren't careful.
</p>

<p>
	 
</p>

<p>
	One mechanic is that a very high level of arousal would be required to trigger the debuff, which would be highly granular.
</p>

<p>
	.e.g, take a hit at 80, 90 and 100, with anything below that being ok.
</p>

<p>
	 
</p>

<p>
	Also, getting naked would need to be a requirement to induce arousal, so you wouldn't get it just from looking at NPCs, or arouse NPCs unnecessarily.
</p>

<p>
	But once the clothing/armor starts coming off...
</p>

<p>
	I could see some tweaks to SLAX could make that work.
</p>]]></description><guid isPermaLink="false">10923</guid><pubDate>Sun, 12 Apr 2020 11:47:00 +0000</pubDate></item><item><title>A "commodity" for Devious Followers as an alternative to cash</title><link>https://www.loverslab.com/blogs/entry/10814-a-commodity-for-devious-followers-as-an-alternative-to-cash/</link><description><![CDATA[<p>
	First, some context:
</p>

<p>
	 
</p>

<p>
	I've mentioned this on several occasions, but I raised it again recently, in the context of a discussion about Skyrim economics:
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			I'm still trying to come up with some alternative to cash that you can pay followers with. The best suggestion so far is soul gems, which would be ... ok ... but feels a bit esoteric.
		</p>

		<p style="background-color:#1c1c1c;color:#bcbcbc;font-size:14px;">
			There should be something more obvious, more intuitive, but apparently, there isn't<span> </span><span><img alt=":)" data-emoticon="" data-ratio="100.00" src="https://www.loverslab.com/resources/emoticons/smile.png" style="border-style:none;vertical-align:middle;" title=":)" width="22" /> </span>
		</p>

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

<p>
	 
</p>

<p>
	This triggered a long response by <a contenteditable="false" data-ipshover="" data-ipshover-target="https://www.loverslab.com/profile/2729973-hexbolt8/?do=hovercard" data-mentionid="2729973" href="https://www.loverslab.com/profile/2729973-hexbolt8/" rel="">@HexBolt8</a> that you can find here: <a href="https://www.loverslab.com/topic/130527-devious-followers-continued/?do=findComment&amp;comment=2936344" rel="">https://www.loverslab.com/topic/130527-devious-followers-continued/?do=findComment&amp;comment=2936344</a>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	I'll summarize that as:
</p>

<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="2936344" data-ipsquote-contentid="130527" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1584737419" data-ipsquote-userid="2729973" data-ipsquote-username="HexBolt8">
	<div class="ipsQuote_citation">
		On 3/21/2020 at 7:50 AM, HexBolt8 said:
	</div>

	<div class="ipsQuote_contents">
		<p>
			What about adding something new to the game?
		</p>
	</div>
</blockquote>

<p>
	Which in this case refers to a class of loot object.
</p>

<p>
	It's got pros and cons vs an existing item like soul gems.
</p>

<p>
	 
</p>

<p>
	I won't dig into HexBolt's "rare trinkets" idea here, because while it's an interesting idea, it seems more interesting as an augmentation to other mechanics rather than a true paradigm shift in follower payment.
</p>

<p>
	 
</p>

<p>
	As a <em>concept</em> it's just not visceral enough. It doesn't immediately resonate. It's not a strong basis for a relationship.
</p>

<p>
	What bothers me is that ... it just feels manufactured ... and that's true of soul gems and the other objects too.
</p>

<p>
	 
</p>

<p>
	<a contenteditable="false" data-ipshover="" data-ipshover-target="https://www.loverslab.com/profile/2809308-darkwing241/?do=hovercard" data-mentionid="2809308" href="https://www.loverslab.com/profile/2809308-darkwing241/" rel="">@Darkwing241</a> also made an interesting response, which got closer to my thinking, but addressed the issue more generally: <a href="https://www.loverslab.com/topic/99955-sexlab-survival/?do=findComment&amp;comment=2936294" rel="">https://www.loverslab.com/topic/99955-sexlab-survival/?do=findComment&amp;comment=2936294</a>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><strong>To clarify:</strong></span>
</p>

<p>
	 
</p>

<p>
	<strong><span style="color:#16a085;">What I'm looking for is something that makes sense for a follower you are <em>already </em>connected to, such as a housecarl, or a spouse, a "something" that would justify them treating you like a slave if you don't deliver it. i.e. It's not for a new mod, it's a feature for Devious Followers, and it has to work with <em>most </em>of the existing dialogs.</span></strong>
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;">That doesn't mean <em>no</em> dialog changes. I think some dialogs would swap based on the payment 'mode', but it would be too tiresome to make all of them conditional.</span>
</p>

<p>
	<span style="color:#16a085;">There would also likely be additions specific to the mode, and some little tweaks in some mechanics - such as device removal.</span>
</p>

<p>
	 
</p>

<p>
	I think the best thing would be <strong>something you do</strong>, not <strong>something you have</strong>.
</p>

<p>
	 
</p>

<p>
	The key is to then make that 'thing you do' appropriate enough, interesting enough, time-consuming enough, and yet also troublesome enough, that it is lore-friendly, immersive, and good-gameplay.
</p>

<p>
	 
</p>

<p>
	I'll list those points again, and number them:
</p>

<ul>
	<li>
		appropriate (it just makes sense lore and RP wise) - feels like the basis for a strong relationship
	</li>
	<li>
		immersive - feels like an event, not just a mechanic
	</li>
	<li>
		interesting - sufficient complexity
	</li>
	<li>
		time-consuming - usually easy to adjust
	</li>
	<li>
		troublesome  - some effort required on the player's part, some risk of failure
	</li>
	<li>
		gameplay - choices have consequences, some risk of failure
	</li>
</ul>

<p>
	 
</p>

<p>
	The obvious first try candidate for this is <strong>sex</strong>.
</p>

<p>
	It's appropriate and immersive, but it's not very interesting, and generally not troublesome or delivering any gameplay, without building a complex system around prostitution, addiction, etc.
</p>

<p>
	 
</p>

<p>
	The follower could expect sex with others, or just with the follower.
</p>

<p>
	Their reaction to non-delivery could then be treated as either frustration that you aren't satisfying them, or a natural outcome of them acting like a pimp and treating you like a whore.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	The core problem with sex is that it would require a lot of new mechanics to make it work well. There is no existing prostitution mod that does the job appropriately in this context.
</p>

<p>
	Most of those mods lack any satisfying gameplay, or any real risk, and are just easy ways to get money if you don't mind watching SexLab scenes over and over again. Only ME ever went beyond this, and it's not compatible with anything else and had many bugs besides.
</p>

<p>
	 
</p>

<p>
	It also has some 'logic' problems. Why would a housecarl do this? Why would a spouse who locks you in a chastity belt also whore you out? It feels a bit awkward. You can make up answers but they won't suit everyone.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	So, sex is a "maybe", but not really a great solution without a lot of extra work that would block delivering the DF feature.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	The spouse scenario I keep coming back to is my "running joke" vegetable stall.
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			The vegetable stall scenario takes the idea of an oppressive male spouse who demands this his PC wife must support the family. He makes a big deal about how he provides, but he still demands that his wife work at some menial task, while caring for him and his needs, pumping out babies, and supporting his drinking habit. In the pure version, the husband uses violence and threats to children to keep the PC under control. The gameplay is about balancing a mass of responsibilities and allocating a budget that will usually be too small to do everything you need. It's not about Skyrim as we understand it.
		</p>
	</div>
</div>

<p>
	It's more like a grimly realistic alternate start than a solution for DF.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Nevertheless, the idea of a spouse follower (or even housecarl) seeing the PC as merely a support character (regardless of the actuality) and acting accordingly is really a common story-basis for DF scenarios. It's not the only story, but it's one story you can use to rationalize what's happening in DF.
</p>

<p>
	 
</p>

<p>
	In this setting, the follower demanding cash seems strange. If we turn on gold control, it makes sense that they no longer demand cash but simply control it. That still leaves a very loot oriented game, which can be boring, and doesn't <em>quite </em>fit with spouse followers.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	What could a spouse reasonably expect, either item or action?
</p>

<p>
	 
</p>

<p>
	One possibility is the opposite of sex. The PC just needs not to have sex with others. This is appropriate, immersive, but not interesting, time-consuming, or necessarily good gameplay.
</p>

<p>
	Maybe too easy if wearing a belt, and as the only involuntary sex mod that isn't a straight-out rape mod is HH, it's pretty limiting. Suffice to say, there's something there, but it would need a lot more work to make it viable.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Another possibility is that the spouse makes arbitrary and variable demands: a mixture of radiant quests and Submissive Lola type demands for items. This is probably achievable. It's pretty close to what <a contenteditable="false" data-ipshover="" data-ipshover-target="https://www.loverslab.com/profile/2809308-darkwing241/?do=hovercard" data-mentionid="2809308" href="https://www.loverslab.com/profile/2809308-darkwing241/" rel="">@Darkwing241</a> suggested, and very, very close to what Sex Slaves - Mia's Lair - Dominant Andrew does. Andrew has a plotline and progression mixed into his radiant quests, but it really is the same thing. What Andrew does is perfect for a possessive spouse.
</p>

<p>
	 
</p>

<p>
	The downside of this mix-and-match approach is that it isn't an obvious replacement for cash. There is no easy way to create an exchange rate between these different actions and cash, though you could assign values to each one.
</p>

<p>
	 
</p>

<p>
	As this fits in with the radiant quest mechanics I was thinking of for enslavement, there's some efficiency there, on the downside, it makes the normal non-enslaved experience more like being enslaved, which reduces the variety of experience.
</p>

<p>
	 
</p>

<p>
	I suppose it may be possible to have similar mechanics yet still make it different enough.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	This could be adopted with slightly different dialogs for a bossy housecarl, or other "involved" follower who isn't asking for money, but is making demands.
</p>

<p>
	 
</p>

<p>
	Maybe mixing in something like the soul-gem mechanic, and "ancient trinkets" as well could help vary it.
</p>

<p>
	 
</p>

<p>
	It's getting pretty nebulous as an idea. I was looking for a simple answer, and I guess there isn't one?
</p>

<p>
	The only "obvious" action is sex, and the drawbacks with that approach are already noted.
</p>

<p>
	 
</p>

<p>
	It comes back to a handful of simple questions:
</p>

<p>
	 
</p>

<p>
	What would be interesting for your housecarl to demand you do?
</p>

<p>
	Why would your housecarl think it's OK to try and enslave you?
</p>

<p>
	 
</p>

<p>
	What would be interesting for your spouse to demand you do or give them?
</p>

<p>
	Why would your spouse think it's necessary/useful to enslave you?
</p>
]]></description><guid isPermaLink="false">10814</guid><pubDate>Sat, 21 Mar 2020 03:11:00 +0000</pubDate></item><item><title>HDT SexToys Fix</title><link>https://www.loverslab.com/blogs/entry/10764-hdt-sextoys-fix/</link><description><![CDATA[<p>
	HDT Sextoys fixes a number of slightly broken animations that either lacked the intended sex toys, or put them in the wrong places.
</p>

<p>
	It's a nice mod that makes those animations much more satisfying.
</p>

<p>
	 
</p>

<p>
	The original creator doesn't actually explain that this mod does a little more than just improving the collision, but it does.
</p>

<p>
	I find it a must have.
</p>

<p>
	 
</p>
<iframe allowfullscreen="" data-controller="core.front.core.autosizeiframe" data-embedauthorid="162794" data-embedcontent="" data-embedid="embed3230167780" scrolling="no" src="https://www.loverslab.com/files/file/4007-hdt-sextoys/?do=embed" style="height:276px;max-width:502px;"></iframe>

<p>
	 
</p>

<p>
	However, it has a couple of little bugs that cause it to spam your log with nonsense rather frequently.
</p>

<p>
	 
</p>

<p>
	In some cases I found it's repetitive bug-spam made up about 30% of my log content!
</p>

<p>
	 
</p>

<p>
	This small patch fixes the broken attempts to use None values and silences the log spam.
</p>

<p>
	Your HDT SexToys will run silky smooth...
</p>

<p>
	 
</p>

<p>
	Unzip and overwrite, or use your mod manager. There's no ESP change, this is just scripts.
</p>

<p>
	<a class="ipsAttachLink" contenteditable="false" data-fileext="7z" data-fileid="870812" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=870812" rel="">HDT SexToys BugFix.7z</a>
</p>

<p>
	 
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">10764</guid><pubDate>Sat, 07 Mar 2020 05:19:00 +0000</pubDate></item><item><title>Movement Speeds Re-Fixed</title><link>https://www.loverslab.com/blogs/entry/10724-movement-speeds-re-fixed/</link><description><![CDATA[<p>
	A trivial little mod that changes movement speeds so walking isn't so deadly slow, and running isn't so insanely fast.
</p>

<p>
	Also allows you (and NPCs) to back-off faster; makes enemy casters a bit more of a problem for heavy melee types, and makes non-stealth skirmishing archery more viable.<a class="ipsAttachLink" contenteditable="false" data-fileext="7z" data-fileid="865357" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=865357" rel="">MovementSpeedsReFixed.7z</a>
</p>]]></description><guid isPermaLink="false">10724</guid><pubDate>Wed, 26 Feb 2020 00:55:00 +0000</pubDate></item><item><title>HDT HH Performance Patch</title><link>https://www.loverslab.com/blogs/entry/10723-hdt-hh-performance-patch/</link><description><![CDATA[<p>
	This is a trivial little hack that stops HDT HH overloading your Papyrus with its crazy 0.3 second interval updates.
</p>

<p>
	You might see a bit more lag on heel height updates, but overall I don't notice any difference.
</p>

<p>
	<a class="ipsAttachLink" contenteditable="false" data-fileext="7z" data-fileid="865356" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=865356" rel="">hdtHighHeel-performance-patch.7z</a>
</p>

<p>
	Overwrite files in your existing HDT HH to install.
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">10723</guid><pubDate>Wed, 26 Feb 2020 00:53:00 +0000</pubDate></item><item><title>Some Character Presets</title><link>https://www.loverslab.com/blogs/entry/10664-some-character-presets/</link><description><![CDATA[<p>
	Here's a dump of the character presets I have lying around:
</p>

<p>
	<a class="ipsAttachLink" contenteditable="false" data-fileext="7z" data-fileid="857487" href="https://www.loverslab.com/applications/core/interface/file/attachment.php?id=857487" rel="">Chargen Presets.7z</a>
</p>

<p>
	 
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="880089" href="https://www.loverslab.com/uploads/monthly_2020_03/1132471673_CharacterPresets.jpg.2bbf2ceecbf58b3fb0c21cecc94f06d2.jpg" rel=""><img alt="1395159129_CharacterPresets.thumb.jpg.b97560746bb36622e8091376092618c5.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="880089" data-ratio="56.25" width="1200" src="https://www.loverslab.com/uploads/monthly_2020_03/1395159129_CharacterPresets.thumb.jpg.b97560746bb36622e8091376092618c5.jpg" /></a>
</p>

<p>
	In most cases I managed to capture the presets tab in the screenshot. For a couple I forgot. For some a particular ESP is shown as missing - it may not be - I merged a lot of follower ESPs into one, so the data is still there even if the ESP isn't. For follower ESPs it's probably hair or eyes that were used, which will be from a well known pack anyway. I didn't use a face from a follower pack or anything like that; the follower packs were referenced "by accident". Any face that is showing a vanilla hair, except Dotti, has lost its real hair, but I think I have about 400 hairs installed. It's something I change during play, and the last thing I pick during chargen; I don't always save it into the preset. The shots of the giant boob bimbos look bad because of the outfit. They will look better in a high poly outfit, or even naked, assuming your body is relatively modern.
</p>

<p>
	 
</p>

<p>
	If there's any value here, it will be mainly in the face edits. Some faces I hand-edited the meshes, and they should be included.
</p>

<p>
	 
</p>

<p>
	Blonde Nord went through some subtle evolution, and I've used her with a lot of different hairs in dozens of games. She's blandly attractive, like a Hollywood extra. Chinless Nord tried to improve on that by making her face less averagely perfect. Chubby-faced Breton takes it further. In play I gave her a large amount of white-silver hair, and you can see her in one of the article headers, wearing a yoke. I might be mistaken, but Squinty Nord is the one in my profile pic. I was aiming for a more northern look with her, Finnish or Lapp maybe? But it's an idealized fantasy.
</p>

<p>
	 
</p>

<p>
	Red Nord was the basis character for one of those Hormones games, and alas, she ended up as Pink Bimbo. She got the facial tattoos spending time with the forsworn, first as a slave, and later as an ally.
</p>

<p>
	 
</p>

<p>
	Fjori and Elfish Breton were also PCs. Fjori is a variant of Chinless Nord again, but a little less beautified. Ginger Nord was my first "weak girl" PC and I wanted her to have an outsider feel despite being a Nord. Meden was for a Maria Eden based game. The pink variants were all made mid-game for games with Hormones and the Bimbo curse.
</p>

<p>
	 
</p>

<p>
	You won't find my latest "Pure Falmer" PC here. I'll give her a post of her own sometime.
</p>]]></description><guid isPermaLink="false">10664</guid><pubDate>Wed, 12 Feb 2020 09:28:00 +0000</pubDate></item><item><title>Devious Followers Continued 2020 Roadmap</title><link>https://www.loverslab.com/blogs/entry/10651-devious-followers-continued-2020-roadmap/</link><description><![CDATA[<p>
	There is now a new roadmap for 2021 ... don't read this unless you're really bored.
</p>

<p>
	 
</p>

<p>
	I don't plan to start any of this stuff until later in the year. Not sure when, it could be as late as June/July, or it could be a lot sooner.
</p>

<p>
	 
</p>

<p>
	<strong>Here's the rough order/priority I'm looking at:</strong>
</p>

<p>
	 
</p>

<ol>
	<li>
		new deals;
	</li>
	<li>
		new games;
	</li>
	<li>
		follower archetypes/quirks - things like alcoholic follower, sex-mad follower, greedy follower, etc.;
	</li>
	<li>
		ability for the follower to set (radiant) quest objectives for looting opportunities;
	</li>
	<li>
		(radiant) quests to find devious devices that you can wear to please the follower;
	</li>
	<li>
		a way to "pay" followers that doesn't involve cash - though I have no idea what that is yet.
	</li>
	<li>
		minor slavery extensions
	</li>
</ol>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><strong>New deals:</strong></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<strong>Lock-in Deals</strong>
		</p>

		<ul>
			<li>
				Follower may allow you to <strong>lock-in</strong> a deal, for ongoing debt relief. 
			</li>
			<li>
				Every X days, the standard deal debt reduction amount for the deal stage count will be applied.
			</li>
			<li>
				To buy out of the debt involves paying a large multiple of normal buy-out cost, and <em>also</em> specific valuable items: flawless gems, soul gems, valuable spell scrolls, metal ingots.
			</li>
			<li>
				The player always chooses to lock in a deal voluntarily, and they select a specific deal, it's not random.
			</li>
			<li>
				The only willpower involvement is that you must be below six willpower to lock in a deal at all. High will characters cannot lock in.
			</li>
			<li>
				Cannot lock-in deep debt. Modular deals lock-in individually, not as a complete deal set.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			I've put the old deal plans inside this spoiler because I'm doing something a little different...
		</p>

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

			<div class="ipsSpoiler_contents">
				<p>
					 
				</p>

				<p>
					<strong>Introductory Deal</strong>
				</p>

				<p>
					<em>Can be configured to always be given first</em>
				</p>

				<ul>
					<li>
						Level 1 - follower wants you to wear a sexy outfit in towns
					</li>
					<li>
						Level 2 - follower wants periodic sex
					</li>
					<li>
						Level 3 - follower wants to look after your keys for you so you don't lose any
					</li>
				</ul>

				<p>
					 
				</p>

				<p>
					<strong>Spanking Deal</strong>
				</p>

				<p>
					<em>Will not require STA</em>
				</p>

				<ul>
					<li>
						Level 1 - hard spanking session on taking deal, no further spanks unless debt exceeds a threshold, with no more than one spank session a day
					</li>
					<li>
						Level 2 - always spanked after waking up, plus as above
					</li>
					<li>
						Level 3 - spanking on entering an inn or any dwelling, possibly after leaving a shop, plus as above
					</li>
				</ul>

				<p>
					 
				</p>

				<p>
					<strong>Milk Deal</strong>
				</p>

				<p>
					<em>Requires MME</em>
				</p>

				<ul>
					<li>
						Level 1 - given lactacid (more than one unit)
					</li>
					<li>
						Level 2 - follower milks the PC and takes the milk, they are given lactacid if milk production falls below the required level
					</li>
					<li>
						Level 3 - given lactacid daily, follower demands PC uses milking machine to restore follower mood
					</li>
				</ul>

				<p>
					<br />
					<strong>Skooma Deal</strong>
				</p>

				<p>
					<em>Requires Skooma Whore</em>
				</p>

				<ul>
					<li>
						Level 1 - one-time-only, follower makes you drink a whole selection of skoomas at once (until you blackout if enabled), will sell you skooma on demand afterwards
					</li>
					<li>
						Level 2 - follower makes you drink skooma every morning to "get you moving", might randomly be more than one. Will sell you skooma on demand. Prices raised.
					</li>
					<li>
						Level 3 - can beg follower for free skooma. Will sell you skooma if begging rejected. Prices raised. Morning skooma more likely to be multiple.
					</li>
				</ul>

				<p>
					When begging you may have to do <em>things</em> to please the follower. <em>Things</em> to be determined...
				</p>

				<p>
					 
				</p>

				<p>
					<em>Hopefully can add all of the above deal mechanics this year.</em>
				</p>

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

		<p>
			The plan now is to get these new deals done faster and simpler.
		</p>

		<p>
			 
		</p>

		<p>
			The following new modular deals are coming, and are being worked on <strong>now</strong>:
		</p>

		<ul>
			<li>
				Spanking deal - tier 1/2 modular deal. Must beg for spanks.
			</li>
			<li>
				Sex deal - tier 1/2 modular deal. Must offer sex to the follower.
			</li>
			<li>
				Lactacid deal - tier 1/2 modular deal. Must drink lactacid. Follower will provide it.
			</li>
			<li>
				Amulet deal - tier 1/2 modular deal. Must wear an amulet given by the follower. It impairs enchanting.
			</li>
			<li>
				Ring deal - tier 1/2 modular deal. Must wear a ring given by the follower. It impairs smithing.
			</li>
			<li>
				Circlet deal - tier 1/2 modular deal. Must wear a circlet given by the follower. It impairs alchemy.
			</li>
			<li>
				<span style="color:#999999;">Skooma deal - tier 3 modular deal. Must drink skooma. Follower will provide it, in return for services.</span>
			</li>
			<li>
				<span style="color:#999999;">Milking deal - tier 3 modular deal. Must provide an amount of own milk to the follower.</span>
			</li>
			<li>
				<span style="color:#999999;">Key Holder deal - tier 3 modular deal. Follower holds keys as per the original introductory deal design.</span>
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			The sexy outfit deal from the introductory deal is on hold, pending addition of a hard SLAX dependency.
		</p>

		<p>
			When implemented, the outfit will need to be flagged as SEXY and SLOOTY in SLAX.
		</p>

		<p>
			 
		</p>

		<p>
			 
		</p>

		<p>
			<strong><span style="font-size:16px;">Stretch Goals</span></strong>
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Prostitution Deal</strong>
		</p>

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

			<div class="ipsSpoiler_contents">
				<p>
					 
				</p>

				<p>
					<em>If willpower low, follower collects payment, if not, PC collects payment and follower expects a cut.</em>
				</p>

				<p>
					<em>If PC doesn't serve well, follower may punish with fines.</em>
				</p>

				<p>
					Level 1 - on entering an inn, chance follower finds a client for the PC - vanilla sex/oral only
				</p>

				<p>
					Level 2 - on entering an inn, follower finds multiple clients for the PC - anal possible
				</p>

				<p>
					Level 3 - on entering any settlement, follower finds multiple clients for the PC - rough or bondage possible. Clients found until cash targets met.
				</p>

				<p>
					Existing whore (plug) deal adds to this with clients that approach the PC.
				</p>

				<p>
					PC must wear whore clothes (or nothing, or bondage items) when whoring.
				</p>

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

		<p>
			I don't think the prostitution deal as designed above will be implemented now.
		</p>

		<p>
			Instead there will be a broad <em>system</em>, rather than a singular deal-stack. Prostitution needs more, and I want to rethink how to best deliver that.
		</p>

		<p>
			The Rubber Pet and Maid deals still look tempting.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Rubber Pet Deal (blocks maid deal)</strong>
		</p>

		<p>
			Level 1 - wear cat ears, follower will sometimes demand you "speak" with silly Meow noises in certain conversations, causing the NPC to think you are crazy.
		</p>

		<p>
			Level 2 - wear a rubber cat suit, follower will give you one with armor on - for a price - but it will be locked on. Suit forces crawling in dwellings.
		</p>

		<p>
			Level 3 - wear a special enclosing rubber hood except in dungeons, hood interferes with NPC interactions, reduces speech skill and trading results.
		</p>

		<p>
			Level 3 alt - hood is required even in dungeons but has a protective effect. Must beg follower to be able to eat/drink.
		</p>

		<p>
			Both level 3 also add a magic tail that isn't a plug but causes arousal.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Maid Deal (blocks pet deal)</strong>
		</p>

		<p>
			Level 1 - must wear a maid outfit in towns and inns. Bondage items also acceptable with maid additions. Must address follower as Sir/Maam.
		</p>

		<p>
			Level 2 - cook and clean for the follower, meals must be freshly cooked, sleeping areas freshly cleaned. Main follower interaction dialog replaced completely.
		</p>

		<p>
			Level 3 - maid outfit adds bondage items, must offer sexual services to the follower in inns/homes. Follower gives you things to carry that must be produced on demand. Follower will not carry any of your items.
		</p>

		<p>
			Level 3 alt - must wear maid outfit full time. Sexual services may be requested anywhere. Follower gives you things to carry that must be produced on demand. Follower will not carry any of your items.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Deal Notes</strong>
		</p>

		<ul>
			<li>
				Prostitution level 1 maybe not a chance, instead you can refuse customers after they ask for a certain service.
			</li>
			<li>
				As levels increase, you get less chances to object before follower gets upset at you rejecting customers.
			</li>
			<li>
				At level three, you can't reject any.
			</li>
			<li>
				Nastier services hit willpower harder.
			</li>
			<li>
				BiS awareness simply needs to detect sudden disappearance of cum.
			</li>
			<li>
				With milk deal, follower may punish various crimes with lactacid.
			</li>
			<li>
				With spanking deal, all punishments gain spanking.
			</li>
			<li>
				With introductory deal, level 3, you can still get access to your keys as long as you're in a dwelling of any kind. It's designed to be inconvenient, not crippling.
			</li>
			<li>
				However, with low willpower, the follower might refuse to let you have the keys and demand you play the key game instead.
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><strong>New games:</strong></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<strong>Blindfold game </strong>
		</p>

		<p>
			Follower strips PC, blindfolds, adds heavy bondage, removes belt if present
		</p>

		<p>
			PC must go to waypoints in town and drink (something) at each one
		</p>

		<p>
			Depending on options, drinks can be alcohol, skooma, lactacid
		</p>

		<p>
			At end, PC can choose to drink a triple dose or take debt to finish, otherwise, repeat.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Bunny game</strong>
		</p>

		<p>
			Follower puts PC in bunny costume with plug-tail, bunny-style bondage mittens (quest items).
		</p>

		<p>
			PC must collect eggs at checkpoints in time to complete a course, outside, but in safe hold areas.
		</p>

		<p>
			If success, PC released.
		</p>

		<p>
			If fail, PC gets a one-shot egg curse similar to egg factory.
		</p>

		<p>
			PC must repeat the game before they can birth the eggs, with a chance the quest will extend if they fail the time challenge.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Weight Challenge</strong>
		</p>

		<p>
			Follower challenges PC to carry a useless deadweight for a week.
		</p>

		<p>
			Refuse and take debt. Accept and take a payment. Dump the weight mid-challenge and get extra debt punishment.
		</p>

		<p>
			Optional challenge extension.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Armor Challenge</strong>
		</p>

		<p>
			<em>Only for PCs without naked/whore armor deals.</em>
		</p>

		<p>
			Follower challenges PC to wear no armor for a week.
		</p>

		<p>
			Refuse and take debt. Accept and take a payment. If caught wearing armor or enchanted clothes, get extra debt punishment.
		</p>

		<p>
			Optional challenge extension.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Naked Challenge</strong>
		</p>

		<p>
			<em>Only for PCs without naked/whore armor deals.</em>
		</p>

		<p>
			Follower challenges PC to stay naked for a week.
		</p>

		<p>
			Refuse and take debt. Accept and take a payment. If caught wearing anything other than bondage, get extra debt punishment.
		</p>

		<p>
			Optional challenge extension.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Cum Collection</strong>
		</p>

		<p>
			In an inn, or town exterior...
		</p>

		<p>
			Follower puts PC in ring gag, heavy bondage, plus closed belt.
		</p>

		<p>
			PC must collect cum and spit into a jar.
		</p>

		<p>
			Jar is an activation device.
		</p>

		<p>
			Cum gained through oral.
		</p>

		<p>
			At end, jar must be full, if PC has enough cum layers worn, they must drink the jar and are released. If PC has insufficient cum layers worn, follower empties jar on PC.
		</p>

		<p>
			 
		</p>

		<p>
			<strong>BiS Awareness</strong>
		</p>

		<p>
			For all deals and games with cum, follower is aware of washing or removing cum by any means and will punish it with debt.
		</p>

		<p>
			 
		</p>

		<p>
			This is just a list of possibilities. New games will get picked from the list as seems most appropriate at the time.
		</p>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:16px;"><strong>Additional Possibilities</strong></span>
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<strong>Follower regard-based dialog:</strong>
		</p>

		<ul>
			<li>
				Some dialogs have three forms, disgusted, neutral, attracted.<br />
				e.g. 
				<ul>
					<li>
						Disgusted: "What do you want now you dumb cunt?"
					</li>
					<li>
						Neutral: "What is it?"
					</li>
					<li>
						Attracted: "Is there something you need my sweet?"
					</li>
				</ul>
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<strong style="font-size:1.4rem;">Houses</strong>
		</p>

		<ul>
			<li>
				Sell your house to the follower to reduce debt. Follower does extra fun things when you stay at their house. Furniture may be used if detected.
			</li>
			<li>
				Chests all locked (including contents, which is lost).
			</li>
			<li>
				Follower takes main bed.
			</li>
			<li>
				PC bed may be swapped for furniture that functions as a bed, bedroll+straw, stone bed, etc.
			</li>
			<li>
				Follower charges you rent if you sleep there, unless a spouse.
			</li>
			<li>
				Follower sometimes wakes you up and demands sex.
			</li>
			<li>
				Follower sometimes demands you wear devices in the house.
			</li>
			<li>
				Follower will let you access chests for a fee.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<strong>Non Cash Currency: Favors</strong>
		</p>

		<p>
			Favors are a currency that are gained through actions the follower likes and have a direct exchange rate with cash in cases where cash might previously apply.
		</p>

		<p>
			They are for use with situations like Spouse Follower, Housecarl Follower, etc. If you have a favor-driven follower (and you can only have one active at a time) then...
		</p>

		<ul>
			<li>
				Deal buyouts have hidden amounts, and you are only shown buyout for deals you have credit for. They do use cash normally though.
			</li>
			<li>
				Device removal is <i>cash </i>free, but uses "favors".
			</li>
			<li>
				Punishment debt also uses favors.
			</li>
			<li>
				Taking a new deal adds favors.
			</li>
			<li>
				Keeping a deal adds favors each day you have it.
			</li>
			<li>
				Lives can be turned into favors, or back into lives, though the exchange is inefficient.
			</li>
			<li>
				Favors can be used to buy off deals (cash may also be used).
			</li>
			<li>
				Negative favors leads to punishment "games".
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<strong>Spouse Integration</strong>
		</p>

		<ul>
			<li>
				Binds tightly into house-related features
			</li>
			<li>
				Spouse dialog: main follower interaction dialog replaced for spouses.
			</li>
			<li>
				Follower no longer talks about your debt. Instead says "contribution".
			</li>
			<li>
				Spouse follower always in gold control. It's "our" money. You can <em>ask</em> for large amounts. You might have to take a deal to get anything.
			</li>
			<li>
				Follower will not show you gold control credit, just a vague description, such as, "We are short of cash," or "We have enough to be going on with."
			</li>
			<li>
				Spouse follower automatically "owns" your house as above, except chests not taken.
			</li>
			<li>
				Spouse follower houses use a shared bed. Alternate sleeping at foot of bed/in furniture.
			</li>
			<li>
				Follower expects you to offer sex - this earns favors.
			</li>
			<li>
				Follower may offer to belt you, if not belted already. Belt will be removed for any games that need it. This earns favors.
			</li>
			<li>
				Spouse overrides Housecarl, on multiple followers or same follower.
			</li>
			<li>
				Spouse comes with Possessive quirk by default.
			</li>
			<li>
				Spouse punishment mode involves a lot of harsh devices that are locked on, but isn't slavery.
			</li>
			<li>
				Spouse can force weird potion on you if you run up too many deals and debts.
			</li>
			<li>
				Spouse doesn't refer to deals as deals, but promises.
			</li>
			<li>
				Spouse cannot be dismissed. Spouse can divorce you if they get disappointed enough. Consequences nasty.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<strong>Housecarl Integration</strong>
		</p>

		<ul>
			<li>
				Housecarl dialog: main follower interaction dialog replaced for housecarls.
			</li>
			<li>
				Follower no longer talks about your debt, instead talks about "duty" and "honor".
			</li>
			<li>
				Housecarls never go into gold control.
			</li>
			<li>
				You cannot sell your house to a housecarl.
			</li>
			<li>
				Housecarl rewards any quest that completes in the hold, or kills bandits, draugr, or Falmer.
			</li>
			<li>
				Housecarl possibly generates radiant quests to kill bandits.
			</li>
			<li>
				Housecarl comes with lawful quirk by default.
			</li>
			<li>
				Housecarl punishment mode is regular slavery with your identity concealed by a hood.
			</li>
			<li>
				Housecarl cannot simply be dismissed. The only way to get rid of a housecarl is to take a spouse or hire a different housecarl; spouse overrides housecarl.
			</li>
		</ul>

		<p>
			<br />
			<strong>Follower Types/Quirks</strong>
		</p>

		<p>
			As with other stuff in this section, these are a pool of ideas to work from, not a list of things that will be done.
		</p>

		<p>
			A follower may have <em>up to</em> three traits, some may have none.
		</p>

		<p>
			Refusal of quirk demands is always willpower limited. Each time you comply it hurts resistance.
		</p>

		<p>
			Compliance should be rewarded.
		</p>

		<ul>
			<li>
				Drunk follower - demands alcohol periodically. If you don't have it when they ask, they lose a life.
			</li>
			<li>
				Drinking follower - periodically gives you alcohol and insists you drink. If you don't, they lose a life. If you do, they remove a little debt.
			</li>
			<li>
				Skooma follower - like the above two but with skooma instead of alcohol.
			</li>
			<li>
				Both of the followers that make you consume things start to push for sex afterwards after a while, based on willpower.
			</li>
			<li>
				Sex crazed follower - simply asks for sex and skips the drinking part. You can refuse if you have the willpower but it uses multiple lives.
			</li>
			<li>
				Greedy follower - may ask for extra cash. If you give them cash presents they didn't ask for it can restore lives.
			</li>
			<li>
				Generally needs more reflection of follower lives in dialog.
			</li>
			<li>
				Bondage mad follower - will ask you if you want to take bondage deals. Asks at least once a day. Refusal is gated on willpower. If you agree, the asking only gets more insistent. Only gets reset once you get to level 3 deal.
			</li>
			<li>
				Spank mad follower - will ask you to take spanking deal. Similar to the bondage follower.
			</li>
			<li>
				Pimp follower - as above, but prostitution deal.
			</li>
			<li>
				Clean-freak follower - demands you clean things, player houses, inns, the follower her/himself.
			</li>
			<li>
				Sex-hating follower - belts you, of course
			</li>
			<li>
				Traveler follower - wants to go to places
			</li>
			<li>
				Gourmet follower - wants you to cook varying meals
			</li>
			<li>
				Paranoid follower - suspects you want to rob/kill them, takes precautions, wants to search you for poisons, etc.
			</li>
			<li>
				Possessive follower - gets upset if you have sex with others unless they instigated it. Does things to bind them to you even more than regular followers.
			</li>
			<li>
				Lawful follower - gets upset if you breach the law or offend the follower's moral sensibilities, sees no contradiction in punishing you with rapes though.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			My thinking on quirks is that each quirk should link to a deal. That could, depending on quirk, be a single-stage modular deal, or a full three-stage classic deal.
		</p>

		<p>
			The deal implements both the rewards and punishments of the quirk. Disabling the deal in MCM prevents that quirk from manifesting.
		</p>

		<p>
			Quirk deals are not offered normally, but arise from conversations with the follower. Quirk deals are just an implementation mechanism, they don't offers immediate debt relief, can't be bought out, and don't prevent follower dismissal ... though some may be exceptions to this exception. For example, the sex-hating follower may offer you an initial cash sum to let them belt you, and you have to buy out the deal to remove the belt. You can dismiss the follower without removing the belt, but will need to remove it via Devious Lore or similar, or ge tsome other DF belt deal that will overwrite it.
		</p>

		<p>
			 
		</p>

		<p>
			 
		</p>

		<p>
			<strong>Radiant Quests</strong>
		</p>

		<ul>
			<li>
				Looting - go to a location with a chest and loot the chest. There will be a book with a joke title in the chest items. The follower will take the book. When you get to a town they will reward you with a "cut" - willpower dependent. The lower your willpower, the more aggressive the time limit. After the time limit the quest ends in failure. Depending on how much you owe, and whether you are enslaved, and your willpower, there will be a penalty for failure. For a PC in control, it will just be a lost life or two. For a PC enslaved, it will be extra debt, punishment events, etc
			</li>
			<li>
				Looting devious items - go to a location with a chest and loot the chest. There is a devious item inside. In most cases the item won't be too troublesome, something like a corset, a plug, piercings, a collar, cuffs, etc. The follower will ask you to wear the item. From now on, any time you wear the item, the follower will offer a discount. If you are enslaved, you *must* wear the item (except in dungeons) or be punished, unless if conflicts with a core slavery item. Wearing items helps stop boredom gain. Wear enough and boredom will reduce.
			</li>
			<li>
				In some cases the items will be harsh. These are much more effective in terms of reward, and can still be worn in town without too much trouble.
			</li>
			<li>
				Taking deals that match the items is advantageous, if you can arrange things that way.
			</li>
			<li>
				Quests as objectives from follower quirks.
			</li>
			<li>
				Slavery quests to find bondage items and wear them.
			</li>
			<li>
				Slavery quests - constant follower demands.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<strong>Punishment Deals</strong>
		</p>

		<ul>
			<li>
				Deals that impose quirk-related demands on the PC, possibly involving a radiant quest.
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<strong>Slavery Enhancements</strong>
		</p>

		<ul>
			<li>
				<em>Add some slave punishments.</em>
			</li>
			<li>
				Whipping - leaves a health and stamina penalty
			</li>
			<li>
				Gagging without the prostitution mini-quest.
			</li>
			<li>
				Corset.
			</li>
			<li>
				Arm / leg cuffs.
			</li>
			<li>
				Heavy bondage.
			</li>
			<li>
				Pet suit/hobble dress in town.
			</li>
			<li>
				Furniture?
			</li>
			<li>
				<em>Slavery radiant quests</em>
			</li>
			<li>
				Slavery packhorse job
			</li>
			<li>
				Slavery, follower won't carry stuff for youd
			</li>
			<li>
				Inn keeper dialog removed. Follower talks to inn keepers, spends money, as they feel like, bills it to you.
			</li>
			<li>
				There's a cage provided. Cage contains only bed you can use in inns. If you don't use it, it's running away.
			</li>
			<li>
				Running away... Try to escape your master...
				<ul>
					<li>
						In certain cases, you can dump your master. Conditions require some care.
					</li>
					<li>
						Asking master to wait and then leaving is easy at first.
					</li>
					<li>
						Only works on a given master once, after which they only wait in dungeons (or never?)
					</li>
					<li>
						Let master go to sleep then run instead of using cage is another way. Leaving the inn when cage awaits is always considered a run attempt.
					</li>
					<li>
						Master knocked down in dungeon and then you run while they are in bleedout - leave dungeon is a run attempt. 
					</li>
					<li>
						If you "get away", follower is removed, gain bounty in escape hold, gain escaped slave faction.
					</li>
					<li>
						Return to your master and apologise for trying to/thinking of, running away. Get a punishment.
					</li>
					<li>
						If you run away with low willpower, you get slave sickness until you have a master again.
					</li>
					<li>
						Slavers hunt for escaped slaves. Will challenge on sight. Hand yourself in and be given back to your master (with more debt), run or fight. Killing slavers may result in bounty of course.
					</li>
					<li>
						If slaver catches you, they become your DF, add heavy bondage, and you get a quest to return to your original master.
					</li>
					<li>
						On return, all back to normal (but with more debt).
					</li>
				</ul>
			</li>
		</ul>

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

<p>
	 
</p>
]]></description><guid isPermaLink="false">10651</guid><pubDate>Fri, 07 Feb 2020 01:59:00 +0000</pubDate></item><item><title>Quest Patterns that Fail</title><link>https://www.loverslab.com/blogs/entry/10605-quest-patterns-that-fail/</link><description><![CDATA[<p>
	<span style="color:#16a085;"><strong>Things in the Dark could have been one of the greatest LL quest mods <em>ever</em>.</strong></span>
</p>

<p>
	 
</p>

<p>
	Unfortunately, it has a lot of bugs. The "modified" version fixes some of them, making it sort of playable.
</p>

<p>
	 
</p>

<p>
	Almost <em>every </em>quest in TitD is a broken progression blocker. Why <em>does</em> TitD have so many bugs?
</p>

<p>
	Why does Delzaron consistently make mods that have so many faulty quests?
</p>

<p>
	To be fair to Delzaron, he's not the only modder with this problem, he's just the most prolific. I could name a few other authors, with buggy mods, who script their quests in exactly the same way.
</p>

<p>
	 
</p>

<p>
	When trying to patch up my TitD so I could play through it some more, I started to see various common recurring problems, with how the quests were set up. I think TitD serves as a "how not to" guide on writing quests, and there are some cautionary lessons to be learned from it.
</p>

<p>
	 
</p>

<p>
	<span style="color:#9b59b6;">Most broken quests involved a simple mistake or typo, or some non-updated value, but those mistakes all have a <strong>common root cause</strong>: unnecessary complexity. The quests are not cookies, they are snowflakes, and this massively expands the effort required to write and test them, to the point where it is impossible. Because it was effectively impossible, Delzaron failed.</span>
</p>

<p>
	 
</p>

<p>
	How can we ensure that quest development remains in the realm of possible, or better still easy? Rather than hard, or impossible?
</p>

<p>
	 
</p>

<p>
	As mentioned above, the complexity and hardness comes from a few oft-repeated mistakes.
</p>

<p>
	 
</p>

<p>
	As these common mistakes are so well established, and known to be flaws in so many mods, you'd think that we'd stop seeing them.
</p>

<p>
	 
</p>

<p>
	Skyrim quests aren't written in a world of automated testing and extensive QA, and they can not easily be continuously updated without upsetting players with running games. Mods get periodic releases, and those releases should be as robust as possible to avoid player angst; quest logic should be as defensive as possible. If it allows the player to cheat, it's better than a quest that easily becomes blocked.
</p>

<p>
	 
</p>

<ul><li>
		When you do multiple bad things, you compound the player's pain.
	</li>
	<li>
		When you do multiple good things, you reduce the risk of your mod breaking, even if you make a mistake somewhere else.
	</li>
	<li>
		The following practices combine together to help stop the root cause of numerous quest bugs that have a common form.
	</li>
</ul><p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#16a085;"><strong>1) Quest stages should be self contained</strong></span></span>
</p>

<p>
	 
</p>

<p>
	What I mean by this, is if you do "setstage" on a quest, the quest should be set <em>completely </em>in the correct state. It shouldn't be possible to run setstage and have the quest go into an <em>inconsistent or broken </em>state.
</p>

<p>
	 
</p>

<p>
	For example, some player dialog becomes available at stage 50, if you have collected 10 mushrooms.
</p>

<p>
	Choosing that dialog runs a fragment that sets another NPC's faction, sets that NPC's location, and puts a key in their inventory. Then it sets quest stage to 60.
</p>

<p>
	 
</p>

<p>
	What's wrong with this?
</p>

<p>
	 
</p>

<p>
	The problem is that if you want to test this quest, you cannot simply set the stage to 60, because <em>the NPC won't be set up properly</em>.
</p>

<p>
	If this quest breaks, you cannot simply set the stage to 60, because, again, the NPC won't be set up properly.
</p>

<p>
	 
</p>

<p>
	How it should have worked is quite simple: the dialog fragment should have done ONE thing, set the quest stage to 60.
</p>

<p>
	 
</p>

<p>
	Then, the trigger script for stage 60 should have set up the NPC's faction, location and inventory.
</p>

<p>
	 
</p>

<p>
	In this case, you can test stage 60 of the quest without any additional preparation, the stage is "self contained".
</p>

<p>
	 
</p>

<p>
	Following this rule avoids so many problems.
</p>

<p>
	 
</p>

<p>
	The bad pattern occurs when the logic to set up the quest stage is hidden away somewhere in a different stage. This is not good modularity or encapsulation. Quest stages are a developer tool to help organize work, but many modders use them with no clear objective in mind, just because they think they should
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><span style="font-size:18px;"><strong>2) Quest stages should serve a clear purpose</strong></span></span>
</p>

<p>
	<br />
	If you have quest stages that exist without objectives, alarm bells should probably go off. Why does that stage exist? What state is it representing?
</p>

<p>
	 
</p>

<p>
	In most cases, a quest stage should have a matching quest objective that the player can see, and the stage advances when that objective is met. Such quests are easy to understand as a player, or developer, and are easy to test.
</p>

<p>
	 
</p>

<p>
	The worst example of this is ping-pong quests that bounce quest stage updates between multiple quests, where none of the stages were strictly necessary, and served only to update a stage on a foreign quest that itself serves no purpose at all but to update back to the previous quest. Multiple quests become entangled for no reason.
</p>

<p>
	 
</p>

<p>
	However, there are legitimate reasons to have a stage with no objectives, particularly if the goal is to sequence events in a simple way.
</p>

<p>
	 
</p>

<p>
	A classic example of event sequencing is the multi-step dialog. The modder uses quest stages (without objectives) to make the player have a conversation with an NPC in a certain order. Each time the player addresses the correct topic, and gets down to the right branch, the quest steps forward, unlocking the next topic and disabling the old one. This is a reasonable way to turn the dialogs on and off, because it's easy to set the quest stage to test the dialogs, and the fragments that advance the dialog stages are simple owning-quest setstage calls. Additionally, testing a quest stage in a condition is quite efficient. 
</p>

<p>
	 
</p>

<p>
	This pattern is broken when the modder does strange, random things:
</p>

<ul><li>
		The progression of stages is erratically numbered, or jumps back and forth between dialog on different quests in a way that makes following it in the CK extremely tiresome.
	</li>
	<li>
		The stages actually go down as well as up. Very confusing.
	</li>
	<li>
		The stages intermix variant ways to control the quest, sometimes stage number, sometimes a variable.
	</li>
</ul><p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><span style="font-size:18px;"><strong>3) Dialog conditions that involve == on anything but a quest stage are fragile</strong></span></span>
</p>

<p>
	 
</p>

<p>
	The rider to this is: counter values can advance unpredictably.
</p>

<p>
	The corollary of this is that dialog conditions that use == on a quest stage are a good thing, but on counters that go up, probably bad, and on values that take on non-integral values, disastrous.
</p>

<p>
	 
</p>

<p>
	How many mods have you played where you collected one flower too many and the quest become impossible to finish?
</p>

<p>
	<em>Jobs of Skyrim</em>, I'm looking at you!
</p>

<p>
	 
</p>

<p>
	<em>Things in the Dark</em> has the same problem. Press the button that advances your slave ranking, and you'll skip past ranking 8, never hit the magic slave-ranking value in the dialog conditions and never be able to transition from Daithe to Hashep. Worse, you can't just setstage to start the Hashep quest-line because this quest violates rule (1) above.
</p>

<p>
	 
</p>

<p>
	The solution to most of these counter bugs is to test &gt;= instead of ==, then if something unexpected happens, your quest can still progress.
</p>

<p>
	And by always using a dialog condition with a stage check that asserts the correct stage, the game won't end up polluted with dialogs that should have gone away because they'd done their job.
</p>

<p>
	<br />
	Counter values are particularly unreliable in Skyrim, due to threading, and slow Papyrus, and the player's ability to mess things around, you are asking for trouble when you expect counters to take on exact values. You never know whether you will see every counter value that is set, sometimes you might miss several. If you test for 20 petals, the odds of the player being able to get 22 before your check runs are decent. Just because you never see that case in testing doesn't mean it can't happen.
</p>

<p>
	 
</p>

<p>
	But if the player has to go through a certain dialog to advance the quest, and that dialog only shows up for the <em>exact </em>stage that needs it, that's a good thing, stick to that pattern.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#16a085;"><strong>4) Use a coherent numbering scheme and keep stages ordered</strong></span></span>
</p>

<p>
	 
</p>

<p>
	When quest stages are numbered 0, 10, 20, 50, 53, 54, 55, 67, 90, 100, and three of those stages are not even used, it's harder to work on that quest and keep it aligned with other quests and dialog conditions than if it used sensible numbering.
</p>

<p>
	 
</p>

<p>
	It's even worse if a quest's stage numbers differ wildly from its objective numbers.
</p>

<p>
	 
</p>

<p>
	In the cleanest case, objectives and stages have the same numbering, so you don't have to flip back and forth between stages and objectives to figure out what is being done.
</p>

<p>
	 
</p>

<p>
	There is no reason not to start with quest stages rising in 100s. This allows you to use a pattern of steps of 5 for cases where you are doing simple dialog sequencing. Then, when you see a value other than a round hundred, you immediately know it's dialog sequencing.
</p>

<p>
	 
</p>

<p>
	Of course, sometimes you need to add a stage to an established quest, but this really should be a last resort. Using steps of 100 makes this a lot less likely to run into a blockage though. In such cases, you should still strive to always keep objective numbers lined up with quest stages - there's no reason not to do that and not doing it can be enormously confusing.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#16a085;"><strong>5) NPCs can move - cope with it</strong></span></span>
</p>

<p>
	 
</p>

<p>
	<em>Things in the Dark</em>, and <em>Deadly Pleasures</em> are frequently upset by an NPC being in the wrong place. NPCs walk off and start doing odd things, but the quest demands them to be in a certain room or near a certain marker. In some cases, TitD ports Frabbi out of the city, totally blocking your progression - it's not really what I'm talking about here though - the most obvious issue is NPCs that you have a talk objective with, who will not talk. That said, all kinds of misplaced NPC issue should be considered.
</p>

<p>
	 
</p>

<p>
	Assumptions that NPCs will be where you expect are highly likely to be wrong - unless you have immediate (short term) measures to get them in place.
</p>

<p>
	 
</p>

<p>
	If the PC needs to talk to a certain NPC, don't constrain that conversation to only taking place in a specific location. Constrain it by quest stage. That is enough.
</p>

<p>
	It will be easier to test, and work better for the player.
</p>

<p>
	 
</p>

<p>
	Unless you have a really good reason, and proper mechanics around it, stopping the player from having a conversation just because they're in the wrong room is infuriating, and leads to player confusion again and again. They have no idea why they can't progress the quest, and why the dialog is missing.
</p>

<p>
	 
</p>

<p>
	They have a quest objective to talk to NPC <strong>X</strong>, but NPC <strong>X</strong> has nothing to say!
</p>

<p>
	 
</p>

<p>
	Avoid that pattern. It's a cause of woe.
</p>

<p>
	 
</p>

<p>
	When dealing with mods like AI Overhaul, NPCs will walk off to all kinds of odd places. If an NPC must stay put, you  need a special "priority 100" quest and AI package to lock them in place.
</p>

<p>
	Even that may not be enough. You may need a way for the PC to summon the NPC "in game".
</p>

<p>
	 
</p>

<p>
	For example, if your quest requires Frabbi to be in the ruined dwemer pumping station, then port her there at the stage start.
</p>

<p>
	But if the player enters the station, check to see if Frabbi is there. If she is <em>not </em>there, port Frabbi outside the (only) exit of the pumping station, so when the frustrated player leaves, he bumps right into Frabbi and can have the conversation.
</p>

<p>
	 
</p>

<p>
	Another thing that follows from this is quest markers - if the goal is an NPC, <strong>make sure the NPC is the target, not the location</strong> that they may <em>not </em>be at. In DP you can arrive at the quest location, but nine times out of ten, the NPC isn't there. As you don't know who you have to speak to, there's no easy workaround.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#16a085;"><strong>6) Scenes are your friend - don't make them an enemy</strong></span></span>
</p>

<p>
	 
</p>

<p>
	<em>Slaverun </em>has a mechanism for using scenes that allowed Kenjoka to write massive amounts of story content without much in the way of bugs. In comparison, TitD has a small amount of story, and it fails to advance it correctly at almost every single step. 
</p>

<p>
	 
</p>

<p>
	Why did Kenjoka have no problems with this issue in <em>Slaverun Reloaded</em>, but Delzaron hits an iceberg on almost every single quest in <em>Things in the Dark</em>? It's not because one of them is simply a genius who keeps it all straight in his head, it's because Slaverun has a high-level system for triggering scenes, and that system is used over and over again to run the story content. This allows the story content to be tested simply by triggering those scenes at the high level.
</p>

<p>
	 
</p>

<p>
	In contrast, every story segment in TitD and DP is a hand-crafted snowflake, built out of quest stages, gated dialog, forcegreets, and AI behaviors.
</p>

<p>
	 
</p>

<p>
	Anything that uses Skyrim AI is inherently fragile. It's <em>mostly </em>fine when you have it working right, but only mostly, and it's hard to get right in the first place. AI sometimes fails for no obvious reason, and the CK mechanism for editing it is extremely fragile. Edit working AI, change nothing, and it suddenly stops and will never run again. At all. As for sharing AI ... it's hazardous.
</p>

<p>
	 
</p>

<p>
	Scenes require no AI behaviors. All you have to do is <strong>ensure the participants are present</strong>, then start the scene.
</p>

<p>
	If the scene has the PC in it, you probably have to move the camera to a dummy and lock their controls while it's running. If you have a scene management system you only need to write that code once.
</p>

<p>
	 
</p>

<p>
	Where scenes go wrong (and alas, Devious Followers is the archetype for this) is when they bind scripting into the scene stages, ad-hoc, possibly even advancing various quests as they go.
</p>

<p>
	 
</p>

<p>
	This is terribly hard to maintain, because you have to know exactly which scene steps have script buried inside them. There are so many places you can hide a script away in a scene. For example, on the dialog lines instead of on the stage that fires them. There is too much freedom, and if you abuse it, you'll never untangle the mess that results.
</p>

<p>
	 
</p>

<p>
	If you're going to run a script on a scene, stick to <strong>one</strong> script, run at the finish. At most <strong>two </strong>(one at the start, and one at the finish). You should need very special reasons to run scripting mid scene, and if you do, it shouldn't advance quests or make changes to internal state that advance quests, it should be purely to help the NPCs "act" during the scene.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><span style="font-size:18px;"><strong>7) SexLab can fail</strong></span></span>
</p>

<p>
	 
</p>

<p>
	Don't assume that a SexLab scene will start and run to completion just because you try to start it.
</p>

<p>
	 
</p>

<p>
	If your quest progression is controlled by an animation end handler for SexLab, one missing animation blocks your quest.
</p>

<p>
	 
</p>

<p>
	This is a very simple mistake, and it's simple to fix. Never advance quests (directly) based on a SexLab animation end.
</p>

<p>
	If you want to run a pre-defined SexLab scene - create a high-level manager to ensure that shared logic for SexLab scenes is written once and tested many times, not different and unique for each use case.
</p>

<p>
	 
</p>

<p>
	Design the high-level manager so it ensures all participants are present before trying to start the scene, starts the expected scene, and returns, or raises a mod event on animation end. If you know the animation failed to start, handle that immediately in the manager (spit out a Debug.Notify and act as if it ran). In the event of no animation end, use a <strong>timeout</strong> to catch it. No matter what goes wrong, when the manager determines the scene ended cleanly, or didn't start, or crashed, the caller can safely advance the quest.
</p>

<p>
	 
</p>

<p>
	If there's a debug notification that the player can see in the event the scene doesn't run properly, all the better.
</p>

<p>
	 
</p>

<p>
	If the manager crashes and takes down the control flow, you're still hosed. You can defend against this, but it adds complexity.
</p>

<p>
	 
</p>

<p>
	A high-level scene manager that ensures participant presence solves a lot of problems. I'd rather have an NPC appear from nowhere for a scene, than the entire quest sequence block forever because they weren't in the right place at the magic moment.
</p>

<p>
	In most cases, a well written manager will not crash, even with missing animations - that should be a tested case.
</p>

<p>
	 
</p>

<p>
	<em>Deadly Pleasures</em> requires the player to have a special "Patreon contributors only" animation pack. It says it works with the free version, but that's not true at all. Because it doesn't handle missing animations well, and because using the free animation pack leads to many missing animations, this results in broken quest progression on numerous occasions.
</p>

<p>
	 
</p>

<p>
	I would suggest that this is not a good development pattern, unless you want players to start avoiding your mods due to a consistent expectation of nothing but broken quests.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="font-size:18px;"><span style="color:#16a085;"><strong>8 ) Branching within Quests</strong></span></span>
</p>

<p>
	 
</p>

<p>
	Skyrim quests, as designed by Bethesda, are not really <em>intended </em>to support branching within a quest.
</p>

<p>
	If you look at vanilla quests, they rarely introduce optional content. If they do it's usually a stage you can progress by either method (a), or method (b), or a stage with an optional step (c). Most quests progress with simple AND conditions. If you meet all the requirements, you go on to the next major stage.
</p>

<p>
	 
</p>

<p>
	The flow of vanilla quests is typically sequential, (often) with no stages skipped, and stages only advancing. Some quests let you skip a stage here or there, or provide a basic OR in how you can progress. When they want to start a genuine branch, they <em>usually </em>launch a <strong>new</strong> quest to do it.
</p>

<p>
	 
</p>

<p>
	The quest system is designed to support this model, and becomes awkward if used for other models.
</p>

<p>
	Quest stages can only get set to higher values. Stages have a concept of completion. Code is run on stage start, and on completion do nothing other than a <strong>SetStage()</strong>.
</p>

<p>
	Usually, new stages clean up the objectives of old ones. It's quite simplistic.
</p>

<p>
	 
</p>

<p>
	While we have a function that is run on stage entry, there is no equivalent for stage exit (which is a serious flaw, and is probably why so many sloppily made quests don't clean-up objectives properly).
</p>

<p>
	 
</p>

<p>
	There's an interesting bug/feature here ... if you SetStage to a LOWER stage number, the set will not change the stage, but the stage entry script will still execute! This can lead to modder confusion.
</p>

<p>
	 
</p>

<p>
	You can definitely create more sophisticated logic, but Skyrim does nothing special to <em>help </em>you. Quests are designed to work the simple way I suggest above, and that's it.
</p>

<p>
	That is how the journal objective system is designed to work: do steps, in order, finish quest, success, get reward.
</p>

<p>
	 
</p>

<p>
	There aren't many <em>branches</em> in Skyrim vanilla. There are some exclusive choices, but they're usually done by starting two quests and failing one of them when you finish the other. Civil War does this for Storm Cloaks vs Imperials vs Broker Peace.
</p>

<p>
	 
</p>

<p>
	Using that model, it can launch a new quest any time, and have that quest shut-down competing branches.
</p>

<p>
	 
</p>

<p>
	If you want to make vanilla-style quests, you should design like this. It's not a huge benefit, but it's a benefit. The alternative is that you have to write a quest system of your own in script.
</p>

<p>
	 
</p>

<p>
	Misapprehension of this pattern leads to Delzaron coming unstuck sometimes, but most of his quests are linear and fit this model perfectly.
</p>

<p>
	Fish seems to "get" it, but still gets sloppy with objective clean-up.
</p>

<p>
	Sex Slaves permits branching, so it launches "competing" quests, but you can't complete them all successfully.
</p>

<p>
	 
</p>

<p>
	While you can build multiple paths into a single quest, it's not really the intended pattern and it makes objective clean-up harder; there are ways to be rigorous about it, but Beth just don't bother; it's probably easier and cleaner to make a new quest.
</p>

<p>
	 
</p>

<p>
	e.g.
</p>

<p>
	 
</p>

<p>
	<span style="color:#7f8c8d;"><span>10 Learn you must find the maguffin</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>20 Magguffin found - sets objectives "give maguffin to a Ulfric or Balgruuf"</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>30 Maguffin given to Balgruuf - start new quest Balgruuf's Maguffin</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>40 Maguffin given to Ulfric - start new quest Ulfric's Maguffin</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>50 Clean up objectives ... Completion</span></span>
</p>

<p>
	 
</p>

<p>
	vs
</p>

<p>
	 
</p>

<p>
	<span style="color:#7f8c8d;"><span>10 Learn you must find the maguffin</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>20 Magguffin found - sets objectives "give maguffin to a Ulfric or Balgruuf"</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>30 Maguffin given to Balgruuf - go to stage 100</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>40 Maguffin given to Ulfric - go to stage 200</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>100 Clean up common objectives from 10-40</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>110 Do stuff with Balguuf's maguffin... Go to stage 300</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>... (various stages)</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>150 Complete Balgruff's maguffin quest-line</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>200 Clean up common objectives from 10-40</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>210 Do stuff with Ulfric's maguffin...</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>... (various stages)</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>260 Complete Ulfric's maguffin...  Go to stage 300</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>300 Completion</span></span>
</p>

<p>
	 
</p>

<p>
	And if you want to unify clean-up ...
</p>

<p>
	 
</p>

<p>
	<span style="color:#7f8c8d;"><span>10 Learn you must find the maguffin</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>20 Magguffin found - sets objectives "give maguffin to a Ulfric or Balgruuf"</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>30 Maguffin given to Balgruuf - set Balgruuf flag - go to stage 50</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>40 Maguffin given to Ulfric - clear Balgruuf flag - go to stage 50</span></span>
</p>

<p>
	<span style="color:#16a085;"><span>50 Clean up objectives from before (unified clean-up), branch on Balgruuf flag, go to stage if true 100 or 200 if false</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>100 Do stuff with Balguuf's maguffin...</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>... (various stages)</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>150 Complete Balgruff's maguffin quest-line... Clean up Balgruuf objectives ... Go to stage 300</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>200 Do stuff with Ulfric's maguffin...</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>... (various stages)</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>260 Complete Ulfric's maguffin... Clean up Ulfric objectives ... Go to stage 300</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span>300 Clean up common objectives ... Completion</span></span>
</p>

<p>
	 
</p>

<p>
	See how much simpler it is if you don't do branches <em>within </em>the quest?
</p>

<p>
	 
</p>

<p>
	Often, we'll see quest authors mush their stages together, performing multiple activities per stage to get around this.
</p>

<p>
	This muddy thinking often leads to them getting muddled about what a stage should do, or having poor stage planning and design.
</p>

<p>
	It also leads to "objective clean up in completion code" which then creates broken objectives when players SetStage from the console.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Last Words</strong></span>
</p>

<p>
	 
</p>

<p>
	A smart person learns from their mistakes. A really smart person learns from the mistakes of others.
</p>

<p>
	 
</p>

<p>
	I know this seems like a hatchet job on poor Delzaron. I used his mods as an example, but he's not alone in doing this. I love what he's trying to do. I admire his persistence. His mods are consistently interesting, and raise all kinds of provoking possibilities. However, his scripting <em>is </em>a tail of tears, and I think it's worth examining <em>why, </em>so that others don't go down that same road and fall straight into the same potholes.
</p>

<p>
	 
</p>

<p>
	There are other good/bad habits I didn't mention.
</p>

<p>
	Maybe you've come across some quest patterns you'd like to never see again?
</p>

<p>
	 
</p>]]></description><guid isPermaLink="false">10605</guid><pubDate>Tue, 28 Jan 2020 14:27:00 +0000</pubDate></item><item><title>Soft dependencies without pain</title><link>https://www.loverslab.com/blogs/entry/10593-soft-dependencies-without-pain/</link><description><![CDATA[<p>
	A lot of mods that have soft-dependencies have all kinds of nasty cross-mod issues that cause a CTD at game start, or simply break other mods that are involved in the mess.
</p>

<p>
	 
</p>

<p>
	Often, the problems only manifest when three or more mods are involved.
</p>

<p>
	 
</p>

<p>
	The way to avoid these problems completely is quite simple. The problem is created by a handful of bad patterns, and there is nothing mysterious or magical about it.
</p>

<p>
	There is a solid reason for why it happens, and why it can sometimes be quite complex to reproduce, or for a player to fix when setting up a new LO.
</p>

<p>
	 
</p>

<p>
	In most cases, the cause of problems is a mod that has code to call some foreign mod in a quest script that auto-starts, and it doesn't check whether the ESP is present, it simply calls Game.GetFormFromFile and if it gets a None, it assumes the mod is missing. USLEEP does this FFS! It is the root cause of all that stupid spam it spews on every single game start.
</p>

<p>
	 
</p>

<p>
	This pattern is toxic. Do not ever do this:
</p>

<p>
	<span style="color:#7f8c8d;"><span style="font-family:'Courier New', Courier, monospace;">Form foo = Game.GetFormFromFile(0x00123456, "Foreign Mod.esp")</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span style="font-family:'Courier New', Courier, monospace;">If foo != None</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span style="font-family:'Courier New', Courier, monospace;">    TypeFromSomeOtherMod realFoo = foo As TypeFromSomeOtherMod </span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span style="font-family:'Courier New', Courier, monospace;">    ... do something with realFoo</span></span>
</p>

<p>
	<span style="color:#7f8c8d;"><span style="font-family:'Courier New', Courier, monospace;">EndIf</span></span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	So what should you do?
</p>

<p>
	 
</p>

<p>
	Follow the five rules to avoid ever referencing types that don't necessarily <em>exist</em>, and your mod should be much more stable with respect to soft-dependencies, even if you rely on a mod that is a confluence of trouble, such as SLIF.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>The Rules</strong></span>
</p>

<p>
	 
</p>

<p>
	<span style="color:#ffffff;">1) Put all the mod interactions for a single foreign mod into a single <em>global </em>function. Do not (ever) mix mod interactions between different mods in the same file!</span>
</p>

<p>
	<span style="color:#ffffff;">2) Do not interact with a <em>type </em>from a foreign mod in any function other than a <em>global </em>function.</span>
</p>

<p>
	<span style="color:#ffffff;">3) Do not access a <em>global </em>function that performs an interaction with a foreign mod without first confirming that its ESP is present.</span>
</p>

<p>
	<span style="color:#ffffff;">4) Do not access foreign mods during first start-up of the game.</span>
</p>

<p>
	<span style="color:#ffffff;">5) Avoid access to foreign mods during <em>OnLoad</em> and equivalent events.</span>
</p>

<p>
	 
</p>

<p>
	You can see this pattern followed properly in Deviously Cursed Loot.
</p>

<p>
	SLD doesn't follow these patterns properly; there are several errors that need to be fixed.
</p>

<p>
	It seems to get away with it anyway, but it's better to be safe than sorry with Skyrim.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>But why?</strong></span>
</p>

<p>
	 
</p>

<p>
	Quite simply, if you reference a <em>type </em>from a script file that doesn't exist, Skyrim doesn't know how to handle it. The type is garbage. It will either CTD, or - if you are lucky - the type will be incompatible with all objects and never take a value apart from None.
</p>

<p>
	 
</p>

<p>
	To be sure we don't reference types that don't exist, we must make sure those types are not present anywhere in a script we might execute when that type's defining script doesn't exist.
</p>

<p>
	And if that defining type is bound to an ESP, it will also need that ESP, so we should check that exists first.
</p>

<p>
	 
</p>

<p>
	The type only properly exists when its script files are present, and the best rule we have for determining the presence of the script files, is the presence of the ESP.
</p>

<p>
	This is important for other reasons too, because we need the ESP to populate pre-defined properties on foreign types.
</p>

<p>
	Clearly both ESP and script need to exist, but checking both creates an absurdly tight binding, and is busywork that requires special Papyrus extensions anyway.
</p>

<p>
	It's good enough to check for the ESP. It's not good enough to skip that check, because an object script without its ESP may be parsed but will still break your game because its an orphan: a class that has no possible instances.
</p>

<p>
	Only global scripts can operate properly without their parent ESP or ESM, because a global script cannot be instanced.
</p>

<p>
	 
</p>

<p>
	By putting the interactions in a global function in a script that contains <em>only</em> global functions, we can be sure that our mod will never try to reference those types unless we explicitly call the global.
</p>

<p>
	The same is not the case for a script attached to a quest. If you attach a script to a quest, its papyrus instance will be created when the quest is started.
</p>

<p>
	If the quest is auto-start, that will be on first load of the game.
</p>

<p>
	 
</p>

<p>
	So, if you <em>reference </em>a foreign type - even if due to control flow, you do not execute that reference - it is still processed by Skyrim when the potential calling script is loaded.
</p>

<p>
	Skyrim <em>must</em> know the type's signature, and to do that it instantiates the type, and to do that, requires an ESP.
</p>

<p>
	Using global scripts stops this, because they are not pre-instantiated, and they are only instantiated when executed, and executed when explicitly called.
</p>

<p>
	 
</p>

<p>
	But we must be sure not to call those globals at sensitive times, of if the scripts (and types) they rely on do not exist, or cannot be instantiated.
</p>

<p>
	 
</p>

<p>
	Thus, we check the ESP of the foreign mod exists before trying to call the globals, and we only call the globals from "safe" functions that will not run on first game startup.
</p>

<p>
	 
</p>

<p>
	I'm simplifying a bit. It's really only an issue with scripts that are bound to objects, but those are the most common soft-dependency. Any other kind of script would be a global, and would have no <em>persistent</em> internal state and no properties. For such scripts the mere existence of the script object is enough. If it's missing, your game will <em>not </em>explode. Though the code that tries to call it won't work and will crash, merely having a reference to it in your own quest won't cause an issue at all, beyond the crashing of your script that is.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Why must we avoid first game startup?</strong></span>
</p>

<p>
	 
</p>

<p>
	This is important because the foreign types we want to reference may not even be loaded, even if the ESP exists.
</p>

<p>
	Skyrim loads the types when the ESP loads, and normally that happens in strict load order.
</p>

<p>
	But if we reference a type in our script, it will cause the script that defines that type to be loaded before the ESP that instances it.
</p>

<p>
	 
</p>

<p>
	This is not well supported in Skyrim. 
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<p>
			It <em>seems </em>like there is a bug in the on-demand loading of types.
		</p>

		<p>
			The first mod to reference a foreign type will succeed - if the type properly exists that type will be loaded (out of order) at that time.
		</p>

		<p>
			However, the second mod to reference the type will crash in flames.
		</p>

		<p>
			My belief is that there is a flag that indicates the script is loaded, and that is set after the first load, but the ESP hasn't been loaded, just the script.
		</p>

		<p>
			There is a special path that handles the unloaded case, and prevents it all blowing up, but that path is skipped when the flag indicates the script is already loaded.
		</p>

		<p>
			The result is that the first consumer succeeds, the second consumer (and subsequent) fails, until after the parent mod for the referenced script has been loaded via the normal process.
		</p>

		<p>
			I suspect also that this can lead to an improperly formed VMAD for the script. The script is loaded, but has an empty VMAD, rather than the proper loading process, which sets up the VMAD and loads the script into it. With a bad VMAD, the script never has anything but None in its object properties. I suspect that trying to reference this broken VMAD prior to loading the parent mod results in a CTD.
		</p>

		<p>
			This explanation is somewhat speculative, but fits the observed behavior.
		</p>

		<p>
			There seems to be some indication that there was an attempt to solve the dependency problem by loading on demand, and that code is broken. When exercised there are numerous ways it can leave the game in a corrupt state. On the other hand, if it's used only once, and the load was satisfied, you may get away with it apart from a mod that complains about mismatched types for no obvious reasons, and fails to load its quest properties.
		</p>

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

<p>
	 
</p>

<p>
	Either way, we don't know the load order, and whether the other mods have loaded yet. This is why changing load order can sometimes fix issues.
</p>

<p>
	If your mod is not following the pattern cleanly, but loads really late, it might get away with it anyway.
</p>

<p>
	 
</p>

<p>
	OnLoad is an edge case.  OnLoad doesn't run on first load (strange, I know, but I believe this is on purpose so OnLoad can rely on initialization).
</p>

<p>
	So, mods that reference foreign mods in their OnLoad should be safe? They are. <em>Mostly</em>.
</p>

<p>
	In some cases, a player adds a mod during play. That mod may then get picked up by a "naughty" soft-depending mod that checks for soft-deps OnLoad, but the mod just added by the player might not have properly loaded. This is why checking in OnLoad is hazardous. If you don't add mods mid-play, it will be fine. And if you do, you may get away with it if the mod gets properly loaded before the OnLoad for the depending mod runs. SLD seems to get away with it in practice, but you shouldn't push your luck; I see the SLD behavior as a bug that needs to be fixed.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#16a085;"><strong>Practical Examples</strong></span>
</p>

<p>
	 
</p>

<p>
	So, where should we check for foreign mods? I believe the correct answer is in an OnUpdate handler.
</p>

<p>
	 
</p>

<p>
	When OnLoad runs, it should set an int "checkSoftDeps" variable to 1.
</p>

<p>
	It should also set the presence of ALL soft-dep mods to false - keep a boolean flag for each one.
</p>

<p>
	When OnUpdate runs, it has a branch that runs if checkSoftDeps &gt; 0
</p>

<p>
	Inside that branch it increments checkSoftDeps
</p>

<p>
	If checkSoftDeps &gt; 2, then run the handling code to check for soft deps, then reset checkSoftDeps to 0.
</p>

<p>
	This makes it impossible to run the checks prematurely, but only requires one variable.
</p>

<p>
	 
</p>

<p>
	Inside the soft-dep check handler, we need to see if the ESPs are present.
</p>

<p>
	If the ESP index is not 255, then it is, and we can set the presence flag to true.
</p>

<p>
	 
</p>

<p>
	e.g.
</p>

<p>
	 
</p>

<p>
	In OnLoad:
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    checkSoftDeps = 1</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    slifPresent = False</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    aproposPresent = False</span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	In OnUpdate:
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    If checkSoftDeps &gt; 0</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">        checkSoftDeps += 1</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">        If checkSoftDeps &gt; 2</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">            slifPresent = 255 != Game.GetModByName("Sexlab Inflation Framework.esp")</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">            aproposPresent = 255 != Game.GetModByName("Apropos2.esp")</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">            checkSoftDeps = 0</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">        EndIf</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    EndIf</span>
</p>

<p>
	 
</p>

<p>
	In code that uses apropos:
</p>

<p>
	 
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    If aproposPresent &amp;&amp; 255 != Game.GetModByName("Apropos2.esp")</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">        Actor aproposActor = MyModAproposShim.GetAproposActor()</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">        ...</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    EndIf</span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	In the Global function file MyModAproposShim:
</p>

<p>
	 
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">Actor Function GetAproposActor() Global</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    Apropos2Actors actorLibrary = Game.GetFormFromFile(0x0002902C, "Apropos2.esp")</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    ....</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">    Return foundActor</span>
</p>

<p>
	<span style="font-family:'Courier New', Courier, monospace;">EndFunction</span>
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	Note how at the point of use, the mod ESP is checked again, even though we have the boolean? That's because the boolean may not get reset fast enough via OnLoad, but it saves us checking GetModByName over and over if the mod is never present.
</p>

<p>
	 
</p>

<p>
	Note how only the global function, safe in its own file contains an actual TYPE from Apropos2: Apropos2Actors.
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	When I wrote SLD, I was under the misapprehension that simply not using a type was enough. That is wrong.
</p>

<p>
	If the type is not loaded, and you load a script that references it, you can break the game. Not necessarily though, and that is where the complex results that Monoman wrote about originate. See my comments in the spoiler on first and second consumers.
</p>

<p>
	This topic has actually been written about by engine experts, but the posts are hard to find.
</p>

<p>
	Essentially, if you reference the type, and the mod isn't loaded, you will cause the type to be loaded if it can be. If that goes ok, then your mod may not cause a problem, but you may have now caused a type to load outside of the normal order of load ordering ... consequences of this can result in the type itself breaking, but if it ends up trying to load references to ANOTHER type that is itself later in the LO, and that's where things can go bad. If you start this chain, and any type is missing, Skyrim fails to instantiate the type, and code - in some other mod - may then try to use it anyway, and CTD.
</p>

<p>
	 
</p>

<p>
	<strong>Thus if you follow the pattern, you stop <em>other mods</em> that aren't well-behaved, from breaking the game.</strong>
</p>

<p>
	 
</p>

<p>
	Some things to think about...
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			 
		</p>

		<p>
			If we have a type Foo that is defined in a script file, and that script file is used on two different quests that exist in two different ESPs, how does Skyrim know which one you mean if you use the type?
		</p>

		<p>
			For example a quest type that is a common base used to create derivative quests.
		</p>

		<p>
			It doesn't matter. The <em>type </em>is the same in either case, but when you deal with a variable of that type, it will come from one or the other ESP, resolving the ambiguity.
		</p>

		<p>
			If the type was already loaded by a mod, prior in the LO, that will be the source of the type, until another mod loads the same type and overwrites it.
		</p>

		<p>
			Why then does it matter that an owning ESP exists when we reference a type in a script? Can Skyrim even figure out how to identify the owner?
		</p>

		<p>
			 
		</p>

		<p>
			It probably doesn't, and can't for types that aren't objects: global scripts have no owner. However, non-object types are used in soft-dependencies rather infrequently.
		</p>

		<p>
			Objects on the other hand, are special. They are easily located, and more importantly, they usually have properties, so Skyrim looks for the owning ESP so it can fill those properties, even if none actually exist. The difference is clear in the ESP in Tes5Edit. 
		</p>

		<p>
			 
		</p>

		<p>
			Quests within the ESP have a VMAD (virtual machine adapter) which binds all the scripts, script fragments, and aliases, for the quest and their properties together. The quest is the object, and the types that are on that quest all have that same object instance.
		</p>

		<p>
			 
		</p>

		<p>
			Imagine linking to a DD object... Though it's an armor object, it has scripts on it, and thus it has a VMAD. It becomes clear from inspection than any script bound to an object requires a VMAD - that is what makes the script from functional code into object-oriented-code. The only way for a script to have persistent internal state is to be bound to an object. Global scripts can only store persistent state via files, or trickery like StorageUtil, which are, strictly, external.
		</p>

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

<p>
	 
</p>]]></description><guid isPermaLink="false">10593</guid><pubDate>Sat, 25 Jan 2020 11:31:00 +0000</pubDate></item></channel></rss>
