kaxat Posted July 4, 2025 Posted July 4, 2025 ASF - Autonomous Sex Framework View File A performant framework for finding available sex actors and pairing them together, without interrupting quests, scenes, or player dialogue. The only reason to install this mod is if another mod requires it. You can create your own ASF mod using only an SPID config file, and many users do just that. Yet some of the more advanced features are exclusive to Papyrus Scripting. Why is this needed? The SexLab Framework is wonderful. But there are things it does not handle. It does not help you find a good spot for animations to take place. It offers no functionality for marking an actor as busy or free. It has little functionality for finding sex partners. Nor does it offer NPCs the ability to have preferences (Oral, Rough, Missionary...) Few of these caveats impact dialogue and quest-sex mods. Which is why so many of those exist. But all of these become difficulties when you try to build a mod where NPCs autonomously have sex. Autonomously choose to have sex without the player prompting them, or a story quest fully controlling them. Mods that add autonomous sex build all of that functionality from scratch. This is incredibly difficult. You will find various degrees of success. Most mods that do this are known for their bugs. People often temporarily disable mods like Slaverun or Public Whore, while playing other quests, because of these issues. Now that ASF exists, all mods that feature autonomous sex should use its simple API instead of building their own -- in my unbiased opinion 😁. They will find less bugs, unparalleled customization for user preference, and more realism. Benefits for Mod Users when a sex mod switches to ASF Unlikely to have your quests, scenes, or dialogue interrupted by sex. Extensive customizability via the MCM, SPID, and KID. Choose who has sex and what they like. ASF can find nearby furniture and objects and play SexLab animations with them. What furniture and what animations play is customizable via KID. Actors can have animation preferences (like doggystyle or anal) that are distributed via SPID. ASF will more frequently choose preferred animations. Fully customizable for the user, like any SPID config. Locations (such as SolitudeJail) can also have preferences, distributed via KID. Also fully customizable. Child locations inherit preferences from their parent if they lack one of their own, so you can distribute preferences to an entire region or just one home. Addons There are a couple addons in the downloads area. These can be downloaded and installed after the main mod. SexLab Aroused (ASF_Addon_SexLabAroused_vX-X-X.zip) — Makes arousal a consideration when pairing actors. Strongly recommended you install this. The thresholds are configurable in the MCM. Most SLA variants are supported. Including newer performance-friendly editions such as OSLA and SLO Aroused NG. Scene Positions (ASF_Addon_ScenePositions_vX-X-X.zip) — Default KID configuration file for where actors can have sex. Distributes bed and bondage keywords to relevant objects. Also filters which animations happen at these locations. Strongly recommended you install this. Base Object Swapper (ASF_Addon_BOS_Activators_vX-X-X.zip) — Increases the number of available locations you can prefer for sex scenes. New locations include Rugs and tables. Skip Beasts & Elder Races (ASF_Addon_SkipBeastsElders_vX-X-X.zip) — This is a customized version of ASF's SPID distribution file. It causes ASF to ignore the following races: ElderRace, ElderRaceVampire, KhajiitRace, KhajiitRaceVampire, ArgonianRace, ArgonianRaceVampire. You can install this addon as-is, or use the .ini as a template to customize ASF to your liking. FAQ Can I manually mark an actor as an initiator or recipient using the dev console? Open the console, click on the actor, and type AddSpell ASF_Ability_Include_Initiator or AddSpell ASF_Ability_Include_Recipient. Similarly you can exclude with the spells ASF_Ability_Exclude_Initiator and ASF_Ability_Exclude_Recipient. Use RemoveSpell if you ever wish to undo. Is there Creature support? No. If somebody is interested in building and maintaining this, please reach out to me. It likelymakes sense to have creature support be a separate addon mod with its own additions to the API. In my experience creatures often require a largely separate set of code, to handle all of the races and actor sorting. Is there builtin futa support? No. However enabling all gender pairings in your MCM (gay, lesbian, straight) will cause ASF to stop caring about gender. Technical Details for mod authors Expand the spoiler to read about how the framework functions. Spoiler ASF makes it easy to add sexual autonomy to NPCs, and handles all of the common pitfalls for you. If you have ever implemented sex between randomly paired NPCs, you know how deep of a rabbit hole this endeavor is. It can take hundreds of gameplay hours to find all of the edge cases, which interrupt ongoing quests/scenes. At times these edge cases break immersion, other times they break player quests. Either way they frustrate the player. This framework's goal is to handle as much of that for you as possible, while being far more performant and responsive than your typical actor search. It builds on my knowledge maintaining an autonomous sex mod, and then finding and patching edge cases. ASF starts by creating a list of relevant actors, it distributes a keyword to them (ASF_ActorBase_Included) using SPID. This step filters out children, mannequins, etc. All before the main menu has loaded. It also allows for user preference, where some users might tweak their SPID to filter out beast races, elderly females, that sort of thing. The vast majority of actors will end up completely ignored by ASF, because they are not relevant to this type of mod. The actors that receive that keyword will be given a spell. The spell effect starts when an actor enters the same area as the player. That spell listens for OnPackageChange. It then checks to see if the current package can be safely interrupted by a sex scene. If it is safe to interrupt, the actor is dynamically given the ASF_PackageValid keyword. If they can not be interrupted, the keyword is temporarily removed. Thus when you enter an area, all actors who are currently relevant to autonomous sex will have a keyword assigned to them. Using the function FindAllReferencesWithKeyword we can instantly get a list of nearby prevalidated actors. ASF provides a convenient set of functions that are internally powered by the above. These functions will honor user MCM options, and help you avoid additional pitfalls. ASF breaks actors out into two groups. Those who initiate sex, and the actors they can have sex with. Initiators and Recipients. An actor can be in both groups. But you might opt to restrict some actors to just one of the two, for example slaves will commonly be recipients only. If you want to find a valid initiator to start a sex scene, you can use the ASF function FindActors_Initiator(). If you then want to find a valid recipient for them, you can use the function FindActors_Recipient(Initiator=ActorYouJustFound). Initiators are different from recipients in a few ways. For example, the default MCM settings will not mark an initiator as valid if they are sleeping. But a recipient would still be a valid target for someone's sexual interest, even if they are sleeping. So a sleeping actor might continue being a valid recipient once they go to bed, but they will stop initiating sex scenes since they are asleep. ASF's FindActor functions will do additional last minute filtration on actors, ensuring that they are not engaged in temporary actions that we should not interrupt. It filters them out using Condition Functions, so the performance rivals alias fills. But you do not need to build complex sets of aliases yourself, ASF provides you that level of performance via a simple API instead. It further handles distance in a realistic way, preferring to pair together actors who are closer together, and stopping as soon as a valid pair is found. ASF can optionally be provided a SexLab Thread, which it will populate with valid actors. If an actor can not be added, it continues searching for the next closest match. It can optionally reserve a thread when a valid actor is found, which can notably reduce how much work SexLab has to do for autonomous sex. The function StartRandomScene() provides a great demonstration of how to use all of the above functionality. And it might be the only function your mod uses, depending on how straight forward your needs are. ASF is extremely flexible. Each function in the API is documented in the code, in the same manner that SexLab documented its functions. Just open ASF_API.psc to get started. Some additional features The search functions can return multiple actors, making it easy to start group sex scenes. On each PackageChange ASF adds the following keywords to an actor, if they pass the relevant conditions: ASF_PackageValid_Initiator — Current package indicates that they are a valid initiator. If the SLA integration is installed, then this actor is also currently aroused. ASF_PackageValid_Recipient — Currently valid recipient. ASF_PackageValid — Is either a valid initiator, recipient, or both. ASF_ActorGroup_PlayerTeam — Actor is a follower, includes temporary followers from quests. Also includes player. ASF_ActorGroup_Guard — Actor is a guard. You can mark actors as Initiators or Recipients by giving them keywords. The keywords: ASF_Initiator_Included ASF_Initiator_Excluded - Takes precedence over the Included keyword. ASF_Recipient_Included ASF_Recipient_Excluded - Takes precedence over the Included keyword. These keywords can be directly assigned to the NPC_ via your plugin, or SPID. Can be assigned to a clothing item. While an actor wears that clothing they will inherit the keywords effects. Can be added to a MagicEffect. When this effect is active on an actor they will inherit the effects of the keyword. This is especially useful for temporary exclusions. You can create a spell (or copy one from ASF) that temporarily excludes an actor. Cast it on the actor, and then dispel it when you no longer need to exclude the actor. It is not recommended to directly cast the ASF exclusions spells on actors, because these might get dispelled by ASF itself or by another mod. Instead create your own spell by duplicating an ASF one. Cast the duplicate, No other mod will dispel it because it is your spell. You can distribute the keyword ASF_ActorBase_Included directly to any actor that your mod needs to be included in ASF. Assigning this keyword directly will override user preference; which is beneficial in cases where user preference could break your mod. For example your story quest might expect a specific Argonian NPC to have sex, but user preference causes ASF to ignore all Argonians. On the other hand you can distribute the keyword ASF_ActorBase_Excluded to anyone who should always be ignored by ASF. You can distribute custom keywords to actors via any convenient means: using a plugin, SPID, or given dynamically at run time. Then search for those actors using ASF FindActor functions. You can pass these functions multiple keywords. Give it your keyword to limit results to your actors, and pass an additional PackageValid keyword to further narrow the result to only valid actors Extra advanced features Can create your own custom Condition Functions for the last minute validation, and use that in your searches. The primary use case for this would be if you wanted to further filter actors beyond the SexLab valid checks that ASF does. Say you want to quickly find valid recipients that are currently under the influence of a calm spell. You can accomplish that by copying the recipient valid condition list, and then adding your extra checks. Before diving this deep into ASF's flexibility, you should first familiarize yourself with the EvaluateConditionList() function that powers it. Each condition list is a MGEF, which ASF internally refers to as Evaluators. ASF passes an Evaluator MGEF to the above function, along with a subject actor to evaluate. Optionally ASF can even be told who this actor will pair with, in which case they will be made the target in the Condition Functions. The currently evaluated actor remains the subject. The condition list evaluates the subject and optional target. If the subject passes all of the conditions, they are included in the returned list of actors. If they fail to pass they are excluded from your search. You can have ASF add/remove keywords to actors during certain events, based on whether the actor fails or passes the conditions you specify. You just need to add your custom Evaluator to the appropriate FormList. Assign your Evaluator the keyword that you want ASF to manage. Inspect the following FormLists to better understand how this works. ASF_FLST_Evaluators_Enduring — Evaluators in this list will run once, when the actor enters the currently loaded area. This list is useful for conditions that are unlikely to change very often. For example, whether or not the actor is part of the Guard faction. ASF_FLST_Evaluators_Package — Evaluators in this list will rerun every time the actor switches packages. Like the above, keywords will be added/removed based on whether the actor passes the condition. Permissions & Copyright I want the community to own this mod, not me. You have my permission to use this API in any mod. You can create forks of this mod, so long as they are also open source and free. Before publishing a fork, I kindly request that you contact me. Whenever possible I would love to integrate others work into the main branch here. But if am ever AWOL, or you simply do not want to work with me, you have permission to publish your fork. Please share any patches or feature ideas you have with me. I can post this project to GitHub so we can collaborate. Submitter kaxat Submitted 07/04/25 Category Framework & Resources Requirements Regular Edition Compatible No Install Instructions Install this like you would any other mod. The plugin is a .esp flagged as an .esl, so it takes up no room in your load order. Requirements SexLab v1.x or P+ powerofthree's Papyrus Extender Requires version 5.3+. Recommend version 6+ for the performance improvements. SPID - Spell Perk Item Distributor If running version 6.x of this mod, 6.8.1 was the last version to fully support outfits. If running a 7.x version, then 7.2 restored outfit support but is still in beta. Soft requirements for all features to work KID - Keyword Item Distributor Used by Scene Positions feature to assign preferences to objects. ANIO - AnimObject Swapper Used by default Scene Positions config to swap out the throne use in SexLab animations with a local variant. The Dragonsreach throne gets used in Whiterun, Elisif's throne while in Solitude, etc. Uninstall This is as safe as any plugin can be to uninstall. Ideally you will uninstall in a secluded area like QASmoke, after dismissing any followers. Then disable this mod in the MCM and click the Uninstall button. 5
kaxat Posted July 4, 2025 Author Posted July 4, 2025 (edited) Past versions Version 2.0.3 RC (2026-03-07) ASF__v2-0-3_RC.zip New Features Allure Powers the player can cast when they want to manually trigger sex. Allure — Player: Attract initiators to the player and starts a scene. Player is presumed valid even when they might not ordinarily be. Particularly useful for when the player enters bondage furniture and wants to quickly trigger sex. Allure — Random: Trigger a random scene between any available actors. Works even when "Easy Random Sex" is disabled, which periodically does the same thing. Powers can be added to the player with a new MCM option "Add spells to player". They can also be useful for debugging since they inform you why no scene was started if nothing could be triggered. Fixes Importing settings from an older version of ASF will leave all new setting at defaults. Previously importing an old settings file would cause new settings to be 0, False, or Empty. MCM Could not toggle Bondage options on/off. When the player is in bondage furniture the game would CTD before a sex scene could start playing. Issue began in v2 and is now patched. Thanks to @bigbasi @lovelylove125 for helping find and fix this. Actors will more reliably reenter bondage furniture after a sex scenes finishes playing. My system needed a 1.5 second delay before putting them back in, or else they would enter and quickly exit once the ZAP bondage script finished initializing. Other computers might need a longer delay. Comment if you see this issue. I will increase the delay. Possibly make it customizable. Tweaks Tweaked crosshair exclusions to only happen when player is standing. If player is in furniture, anyone under their crosshair can still participate in sex. Helps prevent issue where a player is in furniture and constantly looking around, accidentally preventing nearby actors from initiating sex. Began applying the Queued Actor spell to the player. Previously it was NPC only. I am testing out tweaks to queued actors to try and make them more reliably walk to where the scene takes place, rather than teleport. These tweaks only apply if "Starting Teleport" is disabled in SexLab. Added temporary code to help with debugging issue where some sex scenes center on the wrong spot. Likely a mod conflict as it only happens to select user. Scenes commonly happen behind walls and floating in the air. Seemingly the (0x,0y,0z) coordinate for the current location. This issue can potenially cause CTDs when outside, presumably due to the great distance the player gets teleported. If you experience this issue please see the forum comments and help us isolate. Alternatively v1.0.2 is still the latest stable release and does not experience this. Help SexLab cleanup stale AnimatingFaction actors. For developers the function StartRandomScene() will now return -2 if no Initiators found, and -3 if no Recipients. Previously returned -1 in these scenarios. Version 2.0.2 RC (2026-02-06) ASF__v2-0-2_RC.zip Fix: Removed an erroneous dependency on Apocalypse - Magic of Skyrim. Thanks to @Anubian for the initial report, and everyone else who confirmed it. Version 2.0.1 RC (2026-02-05) Release Candidate (RC) warning: I am only 98% confident that this version contains no bugs which could get baked into your save. If you install it you are accepting a small risk. I can not guarantee that you will be able to update from this RC to the upcoming v2 final, without doing some save file acrobatics. Acrobatics may include running console commands, a savefile cleaner, or even having to load a save from before installing this RC. V2 is a major update. It adds many exciting features. Notably users can configure where autonomous sex happens in their game world. These locations can be any reference KID supports, including furniture, walls (lean marker), or countertops and workbenches. When sex happens actors can dynamically choose nearby locations and objects to use during the sex scene. New MCM options let you tweak how frequently certain categories of location are preferred, such as beds or bondage furniture. You can distribute preferred location keywords using KID. Using keywords you can configure an object as a preferred spot, and configure what animations will play on that spot. This functionality takes many concepts from Furniture Lite and allows them to be applied to any type of object. In Furniture Lite v1 actors would only use furniture if one of them was occupying it, but in this mod actors can also use furniture when it is nearby. How often that happens is extremely configurable. New: MCM Options - Preferred Scene Locations Prefer Current Furniture - If one of the actors in a scene is already using a preferred location, such as a bed or pillory, that spot is the preferred location for the scene. Similar functionality to what Furniture Lite did with bondage furniture. Use unoccupied beds - Specify what percentage of beds are preferred locations for sex. 50% means on average half of all beds will be preferred if they are unoccupied. Use bondage furniture - When bondage furniture is nearby, how often will it become a toy for participants to use during a scene. Use other preferred locations - Control how often ASF will prefer to use other miscellaneous locations that your _KID.ini file tags in sex scenes. When no preferred locations are unoccupied, or you simply set the thresholds low on these sliders, then ASF will fall back to using actor locations and idle markers. The same behavior it did in ASF v1. New: Support for distributing ASF_Anim keywords to Locations using KID. Example: Distribute ASF_Anim_Oral to the WhiterunJailLocation and make the Whiterun Jail only play oral animations. Distribute ASF_AnimPref_SkipOther keyword to ensure only the location preferences are honored. Actor preferences will not be checked. Locations have an inherit hierarchy. WhiterunJailLocation is more specific than WhiterunLocation. If a more specific location has an animation preference it will override the parent. Example: ASF_Anim_Oral is distributed WhiterunJailLocation, ASF_Anim_Loving is given to WhiterunLocation. When in jail those preferences are used. When wandering Whiterun, even inside buildings like WhiterunBanneredMareLocation, the loving animations will play. Because children inherit preferences from their parent if they lack a preference of their own. TamrielLocation is treated as the parent of all locations, including Sovngarde, the wilderness, and the Soul Cairn. Assign universal preferences to that location. New: The debug spell received new features. If you are facing issues with ASF use the console command AddSpell ASF_Spell_DebugActor to obtain. New: When cast without pointing at a target it will run on the player. So you can debug why the player might not be valid. New: Debug Target option. Press this button after casting the spell. It outputs detailed information to the console. Runs each Package Valid check on the actor and outputs the result. Says "FAIL" next to any conditions the actor did not pass. This helps you figure out why an actor is not currently a valid Recipient or Initiator. New: MCM Locations page with some new options. New: RefreshSettings event for mod authors. New: MCM Option for Followers to sandbox during player scenes. Tweak: More likely to use the Recipient's location rather than the Initiators when centering a sex scene on an actor. Tweak: Made player cooldowns work even if player prompts are disabled. Previously these options would be disabled in the MCM when prompts are disabled. Tweak: Allow recent partner cooldown to be as little as 5 seconds. Previous minimum was 30. Tweak: Pausing sex for the player's team takes effect sooner. Previously needed to wait until each actors package changed. Tweak: Improve IER's ability to detect outfit changes. Tweak: Actors who have activation blocked will not engage in sex until unblocked. It is rare an actor has activation blocked. Usually happens when they are important to a quest. Fix: Previously an actor would not be made a valid recipient when given the keyword ASF_Recipient_Included by a MagicEffect. Now that keyword works for spells. It already worked for clothing keywords and SPID. Which made this issue rare. Fix: Prevent centering sex scenes on idle markers that another SexLab thread is already centered on. Fix: Error message when ASF can not start was showing an untranslated string ($ASF_CantStart...) Thanks to @strapped_24_7_365 for the report. Fix: Prevent summons from participating in sex since they often despawn during. This is accomplished by adding -SummonDefineSPID to ASF_DIST.ini SPID file. If you have customized this file, you may wish to add that condition. Fix: Will no longer unblock activation on someone who already had activation blocked. ASF temporarily blocks activation of an actor when queuing them for sex, and unblocks after. On rare occasion this caused somebody to become interactable when a quest or different mod wanted them to still show the "this person is busy" message. Fix: Actors stay queued (unable to be interacted with) until thread begins animating. This fixes issue where player could briefly interact with them a split second before SexLab began animating them. Fix: Rare issue when NPC dies but stays marked as a valid actor. They would attempt to have sex, fail, and effectively pause all scenes until player left the area. Fix: Patched issue that prevented Pause Playerteam Hotkey from working. Fix: Rare issue that causes player to remain ASF invalid longer than needed, after closing a menu. Happened when SKSE fails to fire OnMenuOpen event, yet still sends a close event. Fix: Spell durations would revert to default values at the start of a gameplay session. These spells caused ASF to ignore the player or team for certain durations after sex, or after entering a new area. Custom user values would only load when the MCM was opened. Since Skyrim reverts them back to default when loading a save, this means the custom values would not be loaded unless the user opened the ASF MCM at some point, causing ASF to reprocess user settings. Fix: Issue with actor keywords not always clearing due to a race condition. New: Keywords for KID ASF_ScenePos_Preferred - Distribute to an object (a piece of furniture, an activator, a marker, etc.) and ASF will prefer its location for sex scenes when it is unoccupied. ASF_Anim_* - Can specify what animations will play when a scene centers on this object. Uses the same animation tag format as actors. For example: Anim_Tag_Oral will play oral animations, Anim_Tag_-Anal,-Vaginal will prevent anal and vaginal animations. See the KID files and SES2's SexLabAnims_DISTR.ini for more examples and documentation. If the keyword uses a colon prefix it is specifying the names of specific animations rather than tags. Example: ASF_Anims_:Nibbles Smithy Fuck will specify the sole Armor Workbench animation available, which is Nibbles Smithy Fuck. That animation lacks any tags specific to the Workbench and must be selected by name. ASF_ScenePos_Bed - Keyword is assigned to double & single beds, plus cots, in the new ASF_SceneLocations_KID.ini This can be assigned to more items including bedrolls if you wish to customize. You can use the MCM to select how often items with this keyword are preferred for sex scenes. ASF_ScenePos_BondageFurniture - Keyword is assigned to Pillories, xCrosses, Bondage Wheels, Torture Racks, and Interactive Hogtie furniture. Can be assigned to more items if desired. ASF_ScenePos_DisableObject - Temporarily disables the object while a scene plays. The default _KID.ini assigns this to bondage furniture. When a scene centers on the object it will temporarily hide it. The _KID.ini also distributes relevant animations to the furniture, so in place of the static pillory furniture you will get a SexLab scene involving a pillory AnimObj. This functions similarly to Furniture Lite, but can now be assigned to any object that KID supports. For example you could swap a table out for a bondage table animation. The original object will be reenabled once the scene finishes. ASF_ScenePos_ActorCount_# - Specify how many actors can animate at this location. For example there are only 2p animations for Torture Racks. If more than 2 actors want to have sex this location will be ignored. You can specify multiple actor counts by separating with a comma, for example ASF_ScenePos_ActorCount_2,3. If no count is specified the default is to allow any number of actors to animate here. ASF_ScenePos_Rotate_# - Sex scene will be rotated by the specified amount prior to starting. Will still be centered on the specified object. Can be used to get furniture AnimObjs to line up with existing furniture. Typically used in conjunction with ASF_Scene_DisableObject. Can be set to any amount. ASF_Scene_Rotate_92, etc. ASF_ScenePos_Offset_(X/Y/Z)_# - Sex scene will be offset by the specified amount prior to starting. Example: ASF_ScenePos_Offset_Z_20 will move the animation up 20u. ASF_ScenePos_Chance_# - Overrides MCM preference regarding how often this object is a preferred location. At times you may wish to apply more granular preference than three categories of Bed/Bondage/Other. This allows you to set preferences for specific objects. ASF_AnimPref_SkipOther - This location or actor will override subsequent animation preferences. Default _KID.ini gives this to bondage furniture since each furniture item only has a handful of available animations. Trying to include actor preference in those scenes will frequently lead to no animation found. This can also be given to actors if their preference is deemed too important to consider other preferences. But actor preferences are checked after scenes & location, so if one of those specifies SkipOther actor preferences are never checked. ASF_ScenePos_CheckFurnitureCrowding - ASF will do extra checks to ensure this location is not under a table, or otherwise crowded by furniture. Useful for the more dynamic location preferences, like those that target rugs. Rugs tend to be in either a wide open space, or directly under furniture. ASF_ScenePos_RequireAnims - If this locations anim preferences can not be honored an alternate location will be used. ASF_ScenePos_Public - Specifies that this is often a public location for sex. Exhibitionist actors might prefer this location for sex. Assign the actor this same keyword in SPID to indicate their preference. (Preference is currently not honored in v2 Release Candidate. Need to test other preferences more before enabling public/private checks.) ASF_ScenePos_Private - Specifies that this is often a private location for sex. Shy actors may prefer this to be out of plain view. Assign to the actor in SPID to indicate this preference. I am hoping to open source the search for additional ideal animation spots. Please share your _KID tweaks in the forums. Your feedback will help influence the default config. If you have never seen it before the KID Writer utility can help you craft and tweak KID files using a GUI. There is also an SPID Writer and a BOS Writer. The SPID Writer is decent. However it does not fully support the breadth of options used in SES2's SPID file. If you are a developer using the Papyrus API, there are some low impact changes made by this release. The main functions for finding available actors are unchanged. But some of the smaller functions had tweaks to their arguments. And a couple functions I felt no one would be using yet were renamed. There are also numerous new classes. I have documented changes in the code using @version tags. Also added tags to new classes and functions so you know what minimum version of the API to target. Version 1.0.2 (2025-07-10) ASF__v1-0-2.zip Added support for more versions of SPID in the new "View ASF Environment" button. Some versions would incorrectly show as "Not Installed". Useful if you are debugging your install. Thanks @Kamikatana & @Bigglsby for reporting and testing a fix. Version 1.0.1 (2025-07-07) ASF__v1-0-1.zip Added a "View ASF Environment" button to the MCM to help people diagnose their installs. Shows required & recommended plugins, plus their versions. Version 1.0.0 (2025-07-04) ASF__v1-0-0.zip Initial release. Addon — BOS Activators Version 2.0.0 (2026-02-05) ASF_Addon_BOS_Activators_v2-0-0.zip New optional download that increases the number of stationary items you can tag as preferred locations in KID. This addon uses BOS to swap some STAT objects for ACTI ones that look identical. The ACTI object type support keywords. So you can provide these items keywords and specify all of the above settings. This plugin mostly swaps rugs and tables for keyword friendly variants. The included _KID.ini tags some of these locations as preferred spots. It can be tweaked. Important to note that in the future this plugin may go away or get renamed. I am working on a companion plugin and I might merge this plugin into that one. Thus installing this plugins runs the risk of altering your load order in the future. Purists may wish to avoid that. Addon — Scene Positions Version 2.0.0 (2026-02-05) ASF_Addon_ScenePositions_v2-0-0.zip Initial release. New semi-optional download that assigns preferred location keywords to many spots. Without installing this you will have to assign keywords yourself using your own KID file. Or if you opt to disable the new Scene Positions then you would not need this. Addon — SexLab Aroused Version 2.0.0 (2026-02-05) ASF_Addon_SexLabAroused_v2-0-0.zip Compatible with v2 of the parent mod. Includes a fix that was patched in the parent plugin. Version 1.0.1 (2025-07-27) ASF_Addon_SexLabAroused_v1-0-1.zip Fix: Patched a bug where the Player would not be made a valid recipient when given the MagicEffect keyword ASF_Initiator_Recipient. Player would only inherit that keywords effects from clothing items. Thanks @lovalter & @kaoslupae for reports. Issue is patched this this addon installed. Will be patched in the core ASF plugin in an upcoming release. Version 1.0.0 (2025-07-04) ASF_Addon_SexLabAroused_v1-0-0.zip Initial release. Addon — Skip Beasts & Elder Races Version 2.0.0 (2026-02-05) ASF_Addon_SkipBeastsElders_v2-0-0.zip Initial release. Compatible with v2 of the parent mod. Includes a fix that was patched in the parent plugin. Version 1.0.0 (2025-07-04) ASF_Addon_SkipBeastsElders_v1-0-0.zip Initial release. Edited March 22 by kaxat
Bushi Neko Posted July 4, 2025 Posted July 4, 2025 OMK... I ve been thinking about something like this forever. I am building a new load list for a new game and will try this out!
moshee Posted July 6, 2025 Posted July 6, 2025 Looks interesting and can replace many defeat mods, need to know how to add bleed-downed followers to list. Looks promising 😸
ebbluminous Posted July 8, 2025 Posted July 8, 2025 Looking good so far. Can I make a request? For the Arousal part of it, can PC and NPC be split? MY thinking is to have NPC arousals set quite low so they get it on a lot, but the PC's can be set higher and get nookie less often...
kaxat Posted July 8, 2025 Author Posted July 8, 2025 @ebbluminous I welcome feature requests. Thank you for sharing. Unfortunately I can not take them all. This one would complicate code in an unwelcome way. So it is not something I would add. But you can accomplish similar things with cool downs. The player has user configurable cool downs in between sex requests. See the MCM. You can increase the length of the cooldown, and get a similar reduction in frequency of player requests.
Kamikatana Posted July 9, 2025 Posted July 9, 2025 (edited) Hi .. not sure if it's only me, but ASF won't recognize my SPID installation. Tried SPID 6.8.2, 7.1.3, and the latest 7.2 Beta. Is there something else it's looking for to recognize SPID in the "View ASF Environment" section as it's currently showing as "Not Installed"? Thanks Edited July 9, 2025 by Kamikatana
Bigglsby Posted July 9, 2025 Posted July 9, 2025 50 minutes ago, Kamikatana said: Hi .. not sure if it's only me, but ASF won't recognize my SPID installation. Tried SPID 6.8.2, 7.1.3, and the latest 7.2 Beta. Is there something else it's looking for to recognize SPID in the "View ASF Environment" section as it's currently showing as "Not Installed"? Thanks Not alone, mine shows the same, with multiple versions of SPID. Even though it's showing not installed, it IS distributing though. Looking at PC and NPCs, shows that the spell effects are applied... at least for my game.
NoppaiKohai Posted July 9, 2025 Posted July 9, 2025 On 7/5/2025 at 4:58 PM, crajjjj said: FYI NG mod is followed up here Is this one actually better than OSL Aroused? Trying to make a list as streamlined and efficient as possible and the ASF framework stuff seems good
crajjjj Posted July 9, 2025 Posted July 9, 2025 2 hours ago, NoppaiKohai said: Is this one actually better than OSL Aroused? Trying to make a list as streamlined and efficient as possible and the ASF framework stuff seems good I like it better.
kaxat Posted July 9, 2025 Author Posted July 9, 2025 @Bigglsby @Kamikatana 3 people thus far have reported that they accidentally installed the SE version of SPID in AE. Surprised at how common that has been. One of them noted that SPID was distributing some rules but not all of the rules. 2 of them said that when they opened the skse64.log it said "plugin po3_SpellPerkItemDistributor.dll (00000000 00000000) no version data 0 (handle 0)" on one of the lines. Installing the AE version in AE fixed this. Is it possible that issue is impacting you as well? There is also the possibility my code is not working as expected. But there is not a lot to the code. It merely asks SKSE what version of SPID is installed. And I can confirm it works at least some of the time. Hence why I think you might be affected by an issue like the above. Where SKSE is not fully loading the SPID plugin. SKSE.GetPluginVersion("po3_SpellPerkItemDistributor") If you are certain you have installed the correct version for Skyrim (1.6+ is AE, 1.5.97 is SE), could you kindly upload your skse64.log file? I wonder if the handle is different for you. That handle was unique for PO3's plugins in my games. All of the other ones used spaces. Maybe upload your po3_SpellPerkItemDistributor.log file as well. @crajjjj 😄
ebbluminous Posted July 9, 2025 Posted July 9, 2025 16 hours ago, kaxat said: @ebbluminous I welcome feature requests. Thank you for sharing. Unfortunately I can not take them all. This one would complicate code in an unwelcome way. So it is not something I would add. But you can accomplish similar things with cool downs. The player has user configurable cool downs in between sex requests. See the MCM. You can increase the length of the cooldown, and get a similar reduction in frequency of player requests. No worries, just thought I'd ask. If you ask, you might get a yes, if you do not ask, you'll always get a no... 1
Bigglsby Posted July 9, 2025 Posted July 9, 2025 1 hour ago, kaxat said: @Bigglsby @Kamikatana 3 people thus far have reported that they accidentally installed the SE version of SPID in AE. Surprised at how common that has been. One of them noted that SPID was distributing some rules but not all of the rules. 2 of them said that when they opened the skse64.log it said "plugin po3_SpellPerkItemDistributor.dll (00000000 00000000) no version data 0 (handle 0)" on one of the lines. Installing the AE version in AE fixed this. Is it possible that issue is impacting you as well? There is also the possibility my code is not working as expected. But there is not a lot to the code. It merely asks SKSE what version of SPID is installed. And I can confirm it works at least some of the time. Hence why I think you might be affected by an issue like the above. Where SKSE is not fully loading the SPID plugin. SKSE.GetPluginVersion("po3_SpellPerkItemDistributor") If you are certain you have installed the correct version for Skyrim (1.6+ is AE, 1.5.97 is SE), could you kindly upload your skse64.log file? I wonder if the handle is different for you. That handle was unique for PO3's plugins in my games. All of the other ones used spaces. Maybe upload your po3_SpellPerkItemDistributor.log file as well. @crajjjj 😄 Pretty certain I'm using the correct version - AE for 640. Again, distribution is working as expected. Looked at the log, and it shows it loading correctly too - attached. skse64.log
Kamikatana Posted July 9, 2025 Posted July 9, 2025 Here are mine.... I for sure have the AE version... po3_SpellPerkItemDistributor.log skse64.log
kaxat Posted July 9, 2025 Author Posted July 9, 2025 (edited) @Kamikatana @Bigglsby Thank you both. Your logs show that you both have different SKSE plugin names for SPID. "Spell Perk Item Distributor" instead of "po3_SpellPerkItemDistributor". The SPID team must have renamed it at some point. You can safely ignore this for now. SPID is working correctly. I will update ASF to support alternate file handles. And check both. If one is present it will return the version from that. Could you guys test this and see if it works? ASF__v1-0-2.zip Edited July 9, 2025 by kaxat Uploaded possible fix. 1
Kamikatana Posted July 9, 2025 Posted July 9, 2025 Just tried it, and for me, it worked... It's now recognizing my version of SPID... Thanks for the very very very quick response
Bigglsby Posted July 9, 2025 Posted July 9, 2025 31 minutes ago, kaxat said: @Kamikatana @Bigglsby Thank you both. Your logs show that you both have different SKSE plugin names for SPID. "Spell Perk Item Distributor" instead of "po3_SpellPerkItemDistributor". The SPID team must have renamed it at some point. You can safely ignore this for now. SPID is working correctly. I will update ASF to support alternate file handles. And check both. If one is present it will return the version from that. Could you guys test this and see if it works? ASF__v1-0-2.zip 127.67 kB · 1 download Yup, this test version now reports SPID installed and version. I also had updated from SPID RC11 to 19, which may have done something as well. But both v6.8.2 and 7.2 RC11 had reported not installed. The DLL is the same filename on all, unless you're saying the naming for internal handling had been changed. But again, it was reporting the same for the older and more current version. Dunno. 🤷♂️ Anyway, seems to be reporting correctly now, cheers!
kaxat Posted July 9, 2025 Author Posted July 9, 2025 1 hour ago, Kamikatana said: Just tried it, and for me, it worked... It's now recognizing my version of SPID... Thanks for the very very very quick response Excellent! After downloading your log files and seeing the issue, I looked at the clock. Five minutes until I had to leave. So I asked myself: can I create a fix and package it into a release in 5 minutes? Challenge accepted. It's a race! Five minutes later I had uploaded the zip. But my win should be disqualified. After I left the house it hit me. I forgot to change the Fomod version to 1.0.2. 😱 Oh the shame. Your mod manager is NOW lying about which version you have installed. @Bigglsby Exactly. The internal name of the plugin changed at some point. Possibly it is different for AE than SE. I still use SE. I will attempt to properly release that later. For now you two confirmed that it works. If anybody else has that issue just ignore it. Completely harmless. Confirm that you have SPID installed by checking your SPID log.
DonQuiWho Posted July 10, 2025 Posted July 10, 2025 @kaxat Hi. (On reflection at the conclusion of my scribbling, I'm not sure I have expressed this particularly well, but I hope it provides some idea of what I think I'm asking 😊) To start with, I'm pretty technically illiterate, so my looking at all the .ini files etc spread around your mods is like trying to make sense of a foreign language So, Firstly, as far as the construction of the 'basic grammar' of the playbook goes, I was wondering if you can maybe point me to any simple diagrammatic guide that shows how SPID, KID, ASF, and its Furniture add-ons etc are linked together? ie, what is the logical order of making any changes that we want to see in game, that have worked up from 'subsidiary' lower levels to the 'top level' combination that our games use to play? For instance, keyword creation and addition, what they affect in the game, and where we can see them - I can see them, as attached to player/NPCs in 'more informative console' but there, there is no further 'dig down' shown as to their source etc or structure, and no real clue for novices like me as to what they really do Secondly, is there any simple guide that shows what the structure of, for want of a better description, the keywords(?) needs to be? I have no idea why 'x|y|z|NONE|NONE|something or other' has to be like that, what the chunks mean, what's being referenced etc You and the other experten out there can probably eat, chew and regurgitate this sort of stuff in your sleep, but at that point mortals like me are still tryng to dodge the vampires before they bite us 😉 I am NOT asking you for a full blown explanation! Just a pointer to somewhere simple, please, so that I can eventually work out how to specify my own prefs, egs adding Coco and Nini clothing, and a specific range of DDs, to the enslaved of Skyrim (BTW, I read your comment on why you avoided DDs & ZAP restraint devices, but I've been using 'Better NPC Support for Devious Devices 0.7 beta 1 SE' and it's predecessors for ages, and that does seem to help performance - it should be interesting to test it with even more DD equipped NPCs to see if still can handle the strain ☺️ ) TIA for any help/pointers that you can give amateurs like me/(us?) DQW
bobjimfred Posted July 10, 2025 Posted July 10, 2025 for some reason when I try to install your plugin to my MO2 it crashes, tried redownloading, tried restarting PC, tried a different mod (works fine). Just this and any addon crashes my MO2 for some reason, am I missing something for this to not crash MO2?
DonQuiWho Posted July 10, 2025 Posted July 10, 2025 36 minutes ago, bobjimfred said: for some reason when I try to install your plugin to my MO2 it crashes, tried redownloading, tried restarting PC, tried a different mod (works fine). Just this and any addon crashes my MO2 for some reason, am I missing something for this to not crash MO2? As you'll have seen from my post above, I'm no expert, 🙄, but what I have found is that you really need to have all the SAS, AFC and SOC requirements in place, and make sure that the C++ and SKSE variants you are using all match with your version of Skyrim. It took me a while to get all those ducks lined up in a row - not that I necessarily understand what they all do - but things seem to be able to get a bit messy if they are out of synch and not paddling in unison Best wishes! DQW
bobjimfred Posted July 10, 2025 Posted July 10, 2025 10 minutes ago, DonQuiWho said: As you'll have seen from my post above, I'm no expert, 🙄, but what I have found is that you really need to have all the SAS, AFC and SOC requirements in place, and make sure that the C++ and SKSE variants you are using all match with your version of Skyrim. It took me a while to get all those ducks lined up in a row - not that I necessarily understand what they all do - but things seem to be able to get a bit messy if they are out of synch and not paddling in unison Best wishes! DQW no clue if this will bork the mod/s or not but I just yeeted the FOMOD folder and rearchived the Data folder and poof no longer is my MO2 crashing when installing.
DonQuiWho Posted July 11, 2025 Posted July 11, 2025 2 hours ago, bobjimfred said: no clue if this will bork the mod/s or not but I just yeeted the FOMOD folder and rearchived the Data folder and poof no longer is my MO2 crashing when installing. @bobjimfred Yep. MO2 won't install the mods as is. You need to select MO2's 'manual install'option, ignore the FOMOD folder, and then 'promote' the mod's 'Data' folder to be MO2's 'Data Folder. They install then OK, but I'm assuming that, like other similar MO2 FOMOD failures, there is nothing that the FOMODs might do that, in their absence of use, screws up the actual base installation. Hope we can help anyone else struggling with this 😊 BTW, do you have the 'Random Sex' option ticked, and working? 🤔 I have it ticked but have never yet seen anything at all happen, despite dialling in all the MCM options to what I think are the lowest values needed to initiate it. The ASF environment check says it's all OK, except for the SPID thing. saying it's not installed. I have the latest mod version from the mod page, 1.0.1, which is supposed to fix that in spite of what the environment check says, and the SKSE log shows the "po3_SpellPerkItemDistributor" as loaded OK, so I'm not sure what's up with 'random sex' - or if this has anything to do with that! Only other thing I can think of is missetting the checks on the last page. I have them all unticked, but I really have no idea what the explanatory text actually means and if those are the options I should select or not If you've got it working, any chance of your posting screen copies of your MCM settings? TIA if you can help me on this DQW
bobjimfred Posted July 11, 2025 Posted July 11, 2025 20 minutes ago, DonQuiWho said: @bobjimfred Yep. MO2 won't install the mods as is. You need to select MO2's 'manual install'option, ignore the FOMOD folder, and then 'promote' the mod's 'Data' folder to be MO2's 'Data Folder. They install then OK, but I'm assuming that, like other similar MO2 FOMOD failures, there is nothing that the FOMODs might do that, in their absence of use, screws up the actual base installation. Hope we can help anyone else struggling with this 😊 BTW, do you have the 'Random Sex' option ticked, and working? 🤔 I have it ticked but have never yet seen anything at all happen, despite dialling in all the MCM options to what I think are the lowest values needed to initiate it. The ASF environment check says it's all OK, except for the SPID thing. saying it's not installed. I have the latest mod version from the mod page, 1.0.1, which is supposed to fix that in spite of what the environment check says, and the SKSE log shows the "po3_SpellPerkItemDistributor" as loaded OK, so I'm not sure what's up with 'random sex' - or if this has anything to do with that! Only other thing I can think of is missetting the checks on the last page. I have them all unticked, but I really have no idea what the explanatory text actually means and if those are the options I should select or not If you've got it working, any chance of your posting screen copies of your MCM settings? TIA if you can help me on this DQW I have tried it with the Acheron addon and I typed the stuff on that mod but the only thing I wanted was "after sex execute", but tbh I think I'm missing some dependencies that are on the list of the "Environment" thing but they aren't on the main page of the mod so idk 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now