<?xml version="1.0"?>
<rss version="2.0"><channel><title/><link>https://www.loverslab.com/blogs/blog/1646-scrabs-skyrim-tutorial-hoard/</link><description><![CDATA[<p>
	A lil collection of random stuff made by me.
</p>
]]></description><language>en</language><item><title>SexLab P+ Tagging Guide</title><link>https://www.loverslab.com/blogs/entry/19902-sexlab-p-tagging-guide/</link><description><![CDATA[<p>
	<span style="color:#ff00ff;"><span style="font-family:Georgia, serif;"><span style="font-size:20px;"><u><strong>Tags in SLP+</strong></u></span></span></span>
</p>

<p>
	Tags are used to describe and categorize scenes, allowing mod authors (and users) to more easily find scenes that they want to play. In SLP+, to tags are usually passed around a Strings, dividing individual tags by a comma (,). A very simple query could for example look like this: "Facing, Loving".
</p>

<p>
	Beyond this point, SLP+ also supports prefixes which can be used to overload query, giving each tag some special behavior. This is something animators won't have to worry about, but it come in handy for authors wishing to give their query some extra detail. Supported prefixes are:
</p>

<ul>
	<li>
		-, to mark a tag as disabled.
	</li>
	<li>
		~, to mark a tag as optional (at least 1 optional tag must be present)
	</li>
	<li>
		!, to mark a tag a contextual (see below)
	</li>
</ul>

<p>
	Using these prefixes, one can create much more complicated tag strings, for example: "Facing, ~Loving, ~Spooning, -Holding" will look for a scene with the "Facing" tag, and either the "Spooning" <strong>or</strong> the "Loving" tag, and which does <strong>not </strong>have the "Holding" tag.
</p>

<p>
	 
</p>

<p>
	<span style="color:#ff00ff;"><span style="font-family:Georgia, serif;"><span style="font-size:20px;"><u><strong>Officially Recognized Tags</strong></u></span></span></span>
</p>

<p>
	The following represents a list of officially recognized tags. These tags are guidelines aiming to ease cooperation between animator and mod author, it is hence highly encouraged that animators use these when tagging their work and that mod authors querry for these tags when looking for scenes.
</p>

<p>
	Next to official tags, there are also unofficial tags explicitly added by the animator, they can be useful for a variety of things, like a signature or to mark them for some special use case that isn't covered by the default tags.
</p>

<p>
	 
</p>

<p>
	A list of all official tags:
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<em><u><strong><span style="font-size:16px;">SFW Tags:</span></strong></u></em>
		</p>

		<ul>
			<li>
				<span style="color:#56b6c2;">Behind</span>
			</li>
			<li>
				<span style="color:#56b6c2;">Facing</span>
				<ul>
					<li>
						<span style="color:#56b6c2;">Actors hold eye contact</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#56b6c2;">Holding</span>
				<ul>
					<li>
						<span style="color:#56b6c2;">One actor is (physically) held mid air by their partner </span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#56b6c2;">Kissing</span>
			</li>
			<li>
				<span style="color:#56b6c2;">Kneeling</span>
			</li>
			<li>
				<span style="color:#56b6c2;">Loving</span>
			</li>
			<li>
				<span style="color:#56b6c2;">Lying</span>
			</li>
			<li>
				<span style="color:#56b6c2;">Magic</span>
				<ul>
					<li>
						<span style="color:#56b6c2;">Any use of supernatural abilities (such as a human flying or levitating mid scene)</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#56b6c2;">Sitting</span>
			</li>
			<li>
				<span style="color:#56b6c2;">Spooning </span>
			</li>
			<li>
				<span style="color:#56b6c2;">Standing</span>
			</li>
		</ul>

		<p>
			 
		</p>

		<p>
			<em><u><strong><span style="font-size:16px;">NSFW Tags:</span></strong></u></em>
		</p>

		<ul>
			<li>
				<span style="color:#e06c75;">SixtyNine</span>
			</li>
			<li>
				<span style="color:#e06c75;">Anal</span>
			</li>
			<li>
				<span style="color:#e06c75;">Asphyxiation</span>
			</li>
			<li>
				<span style="color:#e06c75;">Blowjob</span>
			</li>
			<li>
				<span style="color:#e06c75;">Boobjob</span>
			</li>
			<li>
				<span style="color:#e06c75;">BreastSucking</span>
			</li>
			<li>
				<span style="color:#e06c75;">Buttjob</span>
			</li>
			<li>
				<span style="color:#e06c75;">Cowgirl</span>
			</li>
			<li>
				<span style="color:#e06c75;">Cunnilingus</span>
			</li>
			<li>
				<span style="color:#e06c75;">Deepthroat</span>
			</li>
			<li>
				<span style="color:#e06c75;">Doggy</span>
				<ul>
					<li>
						<span style="color:#e06c75;">If the passive actor is lying on their chest, use "ProneBone" instead</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">Dominant</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Should feature at least one submissive</span>
					</li>
					<li>
						<span style="color:#e06c75;">The submissive is moving mostly on their own accord, not forced</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">DoublePenetration</span>
			</li>
			<li>
				<span style="color:#e06c75;">FaceSitting</span>
			</li>
			<li>
				<span style="color:#e06c75;">Facial</span>
			</li>
			<li>
				<span style="color:#e06c75;">Feet</span>
			</li>
			<li>
				<span style="color:#e06c75;">Fingering</span>
			</li>
			<li>
				<span style="color:#e06c75;">Fisting</span>
			</li>
			<li>
				<span style="color:#e06c75;">FootJob</span>
			</li>
			<li>
				<span style="color:#e06c75;">Forced</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Should feature at least one submissive</span>
					</li>
					<li>
						<span style="color:#e06c75;">The submissive is being actively forced to comply, either through violence, threat or aggressive guidance </span>
					</li>
					<li>
						<span style="color:#e06c75;">Replaces the "aggressive" and "rough" tags in legacy SL</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">Grinding</span>
			</li>
			<li>
				<span style="color:#e06c75;">HandJob</span>
			</li>
			<li>
				<span style="color:#e06c75;">Humiliation</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Should feature at least one submissive</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">LeadIn</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Suitable as a foreplay scene</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">LotusPosition</span>
			</li>
			<li>
				<span style="color:#e06c75;">Masturbation</span>
			</li>
			<li>
				<span style="color:#e06c75;">Missionary</span>
			</li>
			<li>
				<span style="color:#e06c75;">Oral</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Usually accompanied by either Blowjob or Cunnilingius</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">Oviposition</span>
			</li>
			<li>
				<span style="color:#e06c75;">Penetration</span>
			</li>
			<li>
				<span style="color:#e06c75;">ProneBone</span>
			</li>
			<li>
				<span style="color:#e06c75;">ReverseCowgirl</span>
			</li>
			<li>
				<span style="color:#e06c75;">ReverseSpitroast</span>
			</li>
			<li>
				<span style="color:#e06c75;">Rimming</span>
			</li>
			<li>
				<span style="color:#e06c75;">Spanking</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Should feature at least one submissive</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">Spitroast</span>
			</li>
			<li>
				<span style="color:#e06c75;">Teasing</span>
			</li>
			<li>
				<span style="color:#e06c75;">Toys</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Dildos, etc </span>
					</li>
					<li>
						<span style="color:#e06c75;">Recommended to use with Anim Objects</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">Tribadism</span>
			</li>
			<li>
				<span style="color:#e06c75;">TriplePenetration</span>
			</li>
			<li>
				<span style="color:#e06c75;">Vaginal</span>
			</li>
			<li>
				<span style="color:#e06c75;">Ryona</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Should feature at least one submissive</span>
					</li>
				</ul>
			</li>
			<li>
				<span style="color:#e06c75;">Gore</span>
				<ul>
					<li>
						<span style="color:#e06c75;">Should feature at least one submissive</span>
					</li>
				</ul>
			</li>
		</ul>
	</div>
</div>

<p>
	 
</p>

<p>
	 
</p>

<p>
	<span style="color:#ff00ff;"><span style="font-family:Georgia, serif;"><span style="font-size:20px;"><u><strong>Contextual Tags</strong></u></span></span></span>
</p>

<p>
	Next to generic scene tags, SLP+ also features a new type of tags: Contextual Tags. These tags are used to tag a thread for the duration of the scene, and have no influence to the underlying scene itself.
</p>

<p>
	These tags are marked by prefixing them with a <span style="color:#33ff00;">!</span> in the StartScene call, or by adding them manually after the scene started using exposed API functions in <em><u>SexLabThread.psc</u></em>.
</p>

<p>
	 
</p>

<p>
	Similar to scene tags, Contextual tags are open ended and pretty much anything can used as one. The only officially recognized contextual tag is "<span style="color:#33ff00;">aggressive</span>", marking a scene as non-consensual if it is present. This means to flag a scene in SL as non-consent. you now need to explicitly pass "!aggressive" as part of your scene call, or call "<em><u>SetConsent(false)</u></em>" after your scene has started.
</p>

<p>
	The advantage here is that we can use the "akSubmissive" argument (previously "Victim") in the Scene call to flag an actor as submissive without also implying that the scene is non-consensual. Allowing the flag to be used more efficiently to specify placement of actors in a scene. Something that looks forced is not necessarily rape after all, right?
</p>

<p>
	 
</p>

<p>
	Further, contextual tags can be used to tag threads for other mods. Consider a simple example:
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		Quote
	</div>

	<div class="ipsQuote_contents">
		<p>
			The player wants to enter some locked room that is guarded by some soldier. The player can either try to kill the soldier, bribe them, or seduce them. If the player decides to seduce the soldier, we start a scene through SLP+ and add the contextual tag "<span style="color:#33ff00;">Sexual Seduction</span>".
		</p>

		<p>
			At the end of the scene, another mod reacts to the scene end-event and notices that this scene is having the "Sexual Seduction" context tag. It can then remember how many times the player has taken part in such a scene, and adjust their own behavior accordingly, open new paths, or create new dialogue choices?
		</p>
	</div>
</blockquote>

<p>
	 
</p>

<p>
	Contextual Tags can also be useful for compatibility reasons, for example to let another mod know to not react to this scenes mod events, or similar.
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">19902</guid><pubDate>Sun, 24 Sep 2023 13:53:26 +0000</pubDate></item><item><title><![CDATA[Using & Utilizing Cloaks]]></title><link>https://www.loverslab.com/blogs/entry/14201-using-utilizing-cloaks/</link><description><![CDATA[<p>
	There is a lot of misinformation about Cloaks being spread, how bad they are or that they are unnecessary. Bu they are in fact an incredibly powerful tool and like any tool, you simply need to know how to use it.
</p>

<p>
	 
</p>

<p>
	<span style="color:#f1c40f;"><span style="font-size:18px;"><u><strong>Basics of a Cloak</strong></u></span></span>
</p>

<p>
	Before we get started, I wish to clarify some names I will be using in the following text:
</p>

<p>
	A Cloak is a spell-structure put together by 2 Spells and 2 or more Effects:
</p>

<ul>
	<li>
		<u>The "Cloak Spell"</u><span>: </span>The spell applied the actor distributing the cloak effect
	</li>
	<li>
		<u>The "Cloak Effect"</u>: The associated magic effect which has the "Cloak" archetype and is responsible for applying the desired effect to surrounding actors
	</li>
	<li>
		<u>The "Application Spell"</u>: The "Concentration/Aimed" type spell that is being casted onto every valid actor in range. The Caster of this Spell will be the Target of the Cloak spell
	</li>
	<li>
		<u>The "Application Effect"</u>: One or more effects applied by the Application Spell. This is where the various effect/s applied by the Cloak is found at
	</li>
</ul>

<p>
	 
</p>

<p>
	<span style="color:#f1c40f;"><u><span style="font-size:18px;"><strong>When to use a Cloak</strong></span></u></span>
</p>

<p>
	Strongly simplified, a Cloak is essentially a <strong>Trigger Box</strong> that you put on an Actor (Im going to refer to this Actor as <strong>Source </strong>going forward). In this picture, the only notable difference between a Cloak and a Trigger Box is that the Cloak is always moving with the Source - The Source will always be defining the center of it. To make this clear, a Trigger Box has 3 Events associated to it:
</p>

<ul>
	<li>
		OnTriggerEnter (Fired when an Object enters the Box)
	</li>
	<li>
		OnTriggerLeave (Fired when an Object leaves the Box)
	</li>
	<li>
		OnTrigger (Periodically fired while an Object is inside the Box)
	</li>
</ul>

<p>
	A Cloak has no issues mimicking this exact behavior -&gt; Create a Script on the Application Effect and have it listen for those Events:
</p>

<ul>
	<li>
		OnEffectStart (Fired when Actor gets close to the Source)*
	</li>
	<li>
		OnEffectFinish (Fired when an Actor leaves the Source)*
	</li>
	<li>
		OnUpdate (Periodically fired while an Object is near the Source)*/**
	</li>
</ul>

<p>
	<span style="color:#999999;"><span style="font-size:10px;">*Assuming a Cloak Duration of 1+ Seconds</span></span>
</p>

<p>
	<span style="color:#999999;"><span style="font-size:10px;">**This should be avoided if possible. Its not very reliable and often creates a lot of Errors on the log. If you see yourself putting a Polling on a Cloak you should just move to a Quest instead</span></span>
</p>

<p>
	 
</p>

<p>
	With this in mind, it should be obvious that you can do pretty much anything you want with a cloak, from simple "trigger box" things, like increasing a quest stage to complicated gameplay effects, like blacking out the players game when they get too close to some enemy
</p>

<ul>
	<li>
		<span style="color:#2ecc71;"><u><strong>Apply Spell Effects</strong></u></span><br />
		The most basic application of a cloak spell: You want to apply some magic effect to all actors in range, like a Damage effekt? Thats the basic idea behind Cloaks, and it is very useful for a variety of things. You can use it not only to apply damage effects, but also to do things such as applying a detect life effect to all enemies nearby. And yes, we are talking about giving the player wall hacks there!
	</li>
	<li>
		<span style="color:#2ecc71;"><strong><u>Waiting for specific types of actors</u></strong></span><br />
		Imagine you are working on a quest which wants some random actors, like a Hunter in the wild, to approach the player when they get close to you. There are a couple ways to do this: The first one is a polling, like a quest polling, that periodically looks for actors in the area. The downside of a polling? Its slow, or the polling is so short that it burns a lot of Papyrus ressources<br />
		A cloak on the other hand is entirely controlled by the engine, the impact on performance from the cloak itself is negligible and its very fast to notify when there is some actor that fits your profile. Your Hunter will be found the second they get close to the player. Simple as that!
	</li>
	<li>
		<span style="color:#e67e22;"><u><strong>Listen for actor events near the source actor</strong></u></span><br />
		One of the more advanced things (and arguably more dangerous ones) that you can do with a Cloak is to monitor every actor in the environment by some condition. How is that dangerous? Because resources, especially Papyrus ones, arent unlimited<br />
		There are instances where you want to do something with all Actors close by, like checking if they are being hit by some attack from one of your followers and Cloak can do a good job here as well. More reactive, unlike quest pollings. The danger is introduced by a small detail: You cannot control how many actors "everyone" is. Cloaks will attach themselves to every valid actor in the environment and when 13 Actors start receiving continuous OnHit events, your Papyrus engine may struggle to keep up pretty quickly<br />
		This doesnt mean that you shouldnt be using Cloaks for this but you should consider how you manage a potential influx in actors close by. <strong>Use conditions</strong> and refine them as much as possible, <strong>beware of thread safety</strong> and <strong>use "Busy States"</strong> to skip processing OnHit events that you dont want to receive<br />
		Also note that while SPID has its advantages, it isnt save from this problem. It will face the very same issues that a Cloak does here and may even worsen it, as you have less control over when actors are affected by a SPID spell
	</li>
	<li>
		<span style="color:#cc0000;"><u><strong>Apply permanent effects</strong></u></span><br />
		A cloak is intended to apply temporary effects. Thats what its made for, thats what its good at. Applying permanent effects, piggy back riding cloaks to apply these, can create a variety of issues and makes managing your spells incredibly difficult<br />
		If you ever come into a situation where you feel like you need to apply permanent spell effects to a large amount of actors, consider using SPID instead
	</li>
</ul>

<p>
	 
</p>

<p>
	<span style="color:#f1c40f;"><u><strong><span style="font-size:18px;">Cloak vs Quest vs SPID</span></strong></u></span>
</p>

<p>
	When it comes to polling actors, applying some scripted effect to them, the 3 most common methods are: Quests, Cloaks and SPID. This urges the question: Which method is best to use in some given situation? And as with all things, it depends on what you want to do. Cloaks, Quests and SPID all have their advantages and disadvantages and there is no definite answer to what you should be using in any given situation, instead consider how your environment looks and what exactly you want to use the actors you gather for:
</p>

<ul>
	<li>
		<span style="color:#2ecc71;"><em>Quests </em></span>is a <strong>centralized</strong> polling method. They are by far the most powerful option to choose from when you want to use the actors you gathered for.. something. They offer you Keywords, Packages, Factions, Spells, Scripts, Information about all collected actors, dialogue, and more free house which makes them incredibly versatile and useful for <strong>building stories</strong> and <strong>interactive experiences</strong>. Things that require some centralized processing, something that is in charge of everything. <u><strong>However</strong></u>: they are slow and only as responsive as their underlying polling and have an upper limit on how many actors they can process (This may or may not be a good thing)
	</li>
	<li>
		<span style="color:#2ecc71;">Cloaks</span> are <strong>decentralized</strong>, <strong>temporary</strong> and <strong>highly reactive</strong>. They are incredibly powerful to manage actors that dont need to interact with another, that dont need to be stored into some central quest. Or for situations in which you only want to react to some specific Events (like an actor approaching you or a certain spell hitting another actor). <strong>On the downside</strong>, they can become quite expensive on the Papyrus side of things, when used incorrectly
	</li>
	<li>
		<span style="color:#2ecc71;">SPID</span> is very <strong>similar to cloaks</strong> when it comes to applying scripts to a variety actors. The most important difference is that its effects are <strong>permanent</strong> as opposed to temporary, they are also easier to manage as it is only 1 spell, as opposed to the 2 spell construct that a cloak uses which simplifies their usage but also means that you cant make use of the relation between caster and target in script and spell/effect conditions. It will otherwise face the <strong>same issues as a cloak</strong> does<br />
		When it comes to <strong>SPID or Cloak</strong>, it is often a question about how dynamic the application should be. Do want to run conditions that check for relation between caster and target (like hostility)? Do you want to remove the effect again at some later point; is the effect still necessary to be there are <em>something</em> happened?
	</li>
</ul>

<p>
	<br />
	<span style="color:#f1c40f;"><u><strong><span style="font-size:18px;">Miscellaneous Information on Cloaks &amp; their Effects</span></strong></u></span>
</p>

<ul>
	<li>
		The <strong>magnitude </strong>defines the range of the cloak. <u><strong>The ratio is 1:20</strong></u>, i.e. for each magnitude the cloak gains 20 units of range. The in the<strong> CK Wiki stated 1:1 ratio is <u>wrong</u></strong>
	</li>
	<li>
		The <strong>area </strong>of a cloak spell is ignored
	</li>
	<li>
		The <strong>duration</strong> of the <strong>applied effect</strong> should be <strong>greater than the interval at which Cloak spells are updated </strong>(at least 1s), otherwise the Cloak will be reapplied continuously, which has bad implications for the games performance and also may create some unexpected bugs on your end. The duration of the effect is then equal to how long the effect lasts after the actor goes out of range of the cloak
	</li>
	<li>
		Like any other Spell, the Application Spell too has Spell-Side and Effect-Side <strong>Conditions</strong>. Those Conditions create the following behavior:
		<ul>
			<li>
				both Spellside &amp; Effectside are checked constantly, there is no performance difference
			</li>
			<li>
				both Spellside &amp; Effectside will send an "OnEffectFinish()" Event when their Condition becomes invalid
				<ul>
					<li>
						however, only Effect-Side Conditions causes the Effect to be dispelled and not be reapplied. The Spell-Side Condition does fire the Event but does not remove or stop reapplication of the Effect
					</li>
				</ul>
			</li>
			<li>
				both Spellside &amp; Effectside will send an "OnEffectStart()" Event when their Condition becomes valid
				<ul>
					<li>
						even if in Case of Spell-Side Conditions, the Spell has never actually been removed
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		In Conditions, the <strong>"Target" Actor</strong> is the Caster of the Spell - here: The Source. E.g. asking if "Subject.IsHostileToActor( [TARGET] )" will check if the wearer of the Application Spell is hostile towards the Source. This applies to all Spells afaik but I believe its important to be noted here especially in case you only want to apply this Cloak to targets standing in Relation to the Source
	</li>
</ul>

<p>
	 
</p>

<p>
	An Example for Condition Behavior:
</p>

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

	<div class="ipsSpoiler_contents">
		<p>
			<u>I have a Spell "Make Actor Sad" and a Condition "Is Actor Happy?"</u>
		</p>

		<p>
			If I put my Condition on the Spell directly and then cast the Cloak, a Happy Actor would turn Sad. A Sad Actor isnt Happy so the Condition is no longer valid but the Spell will stay on the Actor
		</p>

		<p>
			If I put my Condition on my Effect instead and then cast the Cloak, a Happy Actor would turn Sad. A Sad Actor isnt Happy so the Condition is no longer valid and because of that, the "Make Actor Sad" Spell would be removed from the Actor again, make him Happy again and with that, valid again for the Effect, the Effect would then be reapplied with the next cloak interval
		</p>
	</div>
</div>

<p>
	 
</p>
]]></description><guid isPermaLink="false">14201</guid><pubDate>Sun, 16 Jul 2023 15:11:45 +0000</pubDate></item></channel></rss>
