• Announcements

    • Ashal

      SITE MOVED - IN READ ONLY MODE   12/08/2015

      Please use http://www.loverslab.com moving forward. Site has been restored to a previous version, and this one placed into a read-only mode. This is available for a limited time so users may reference/copy content that has been lost in the transition. This will no longer be accessible by December 22nd, 2015.

About This File

Sexlab Aroused Redux

 

This is a replacement for Sexlab Aroused. The intent is to minimize the papyrus impact of Aroused. It is a direct replacement for Aroused and any mod that depends on it should continue to work as before. It uses all the same logic as the fabulously well written original. If you are experiencing script lag or random CTDs, Sexlab Aroused Redux (SAR) will help solve the problem and many users have reported great success using it. Here is a quote:

Quote

SAR is a work of excellence, and I believe that the bulk of the community will come to use SAR as a replacement for SL Aroused. Good job, and keep up the good work.

 


If you are one of the lucky ones with a fast machine and a great graphics card that supports ENB or if you are using Aroused now and do not experience CTDs or script lag, feel free to stick with what you already have installed.  They work almost exactly alike except that Redux does it with about 1/20th the script load.

 

Special Thanks
Special thanks to sdvr and orsonero for their translation work.

 

Thanks too to Leito for his excellent animations. Hope you all swing over to his forum and tell him thanks.

 

Version 26 Notes

Spoiler

 

Added aroused animations.  These are not complete.  Leito was still tweaking them and when he is finished and they are jerky at the end.  If you or anyone you know wants to complete these animations, please PM me.  These animation do not add any papyrus load.  They are handled entirely by the game engine with no papyrus.  The animations play at random with other animations, but only when arousal is greater than 50.  These are short animations to prevent the actors from "moon-walking".  They only happen once every 5 minutes or so in my testing which I think is about right for realism.  There are MCM checkboxes to enable them for male and female NPCs independently.  There is a longer animation associated with talking.  For those of you who want to see them in action, open the console, target an actor, then "playIdle sla_arousedxxx"   where xxx is Female1, Female2, Male1, Male2, and Tease.

 

As noted above, Leito is still working on these animations.  Currently, there is a small jerk back to default when the animation is complete.  But, it does look reasonably good the way it is.  I hope all of you will hope over to Leitos Forum and tell him thanks.  I really appreciate what he has done for us.   These animations are beyond my skill set.

 

Added MCM option for Line of Sight If this is checked on, arousal computations are only performed on candidate actors that have line of sight (read is looking at) on the naked actor.

 

Modified the code so that Line of Sight is required for sexlab animations.  This essentially puts the aroused computations back to version 20 when actors observe Sexlab sex acts.  This is not controlled by the Line of Sight MCM setting.

 

For Modders:

Added EroticArmor Keyword:  If this keyword is attached to any armor piece, the actor is considered naked.  It is hoped that this keyword will only be used on chest pieces, but that wish is not enforced.

 

Added ModEvent sla_UpdateComplete:  This mod event is sent after Redux is completed with it's work.  The integer part of the event contains the number of actors in the scan.  This can be used for two purposes.  First, by receiving it, you know that arousal has been computed for 0 or more actors.  Second, it can be used to synchronize your own code so as to minimize the simultaneous papyrus impact.  I hope all you modders can see the value in this synchronization.  This was my primary reason for doing this change. 

 

Here is some example code:


RegisterForModevent("sla_UpdateComplete", "OnArousalComputed")...Event OnArousalComputed(string eventName, string argString, float argNum, form sender)  if(argNum > 0)     ;Do my thing because there is at least one actor to process  endifendEvent

This event has everything null and unused except argNum which contains the number of actors that were processed.  This can also be used to get this list of actors.

 

Added the function Actor [] function getLoadedActors(int lockNum)
 

This function returns a 20 slot array of actors.  lockNum is an integer that must be between 10 and 32000.  It must be unique.

 

Here is how to use it:


Actor [] theActorsslaMainScr Property pslaMainScr AutoEvent OnArousalComputed(string eventName, string argString, float argNum, form sender)    if(argNum > 0)        int myLockNum = Utility.randomInt(10, 32000)        Actor [] myActors = pslaMainScr.getLoadedActors(myLockNum)        ;This could be null if called at the wrong time        if(myActors)            if(!theActors)                theActors = new Actor[20]            endif            int i = 0;        ;Copy the actors to a private array            while(i < argNum)                theActors[i] = myActors[i]                i+= 1            endwhile        ;It is imparative to call unlock or Aroused Redux STOPS forever            pslaMainScr.UnlockScan(myLockNum)                ;Now do whatever I want with those actors    endifendEvent

Note the comment to call UnlockScan().  If you don't call this, Redux will never again perform any scans.  It is not necessary to copy the actors to a private array if what you do happens withing a second or two.  However, it is safest to do it as shown.

 

The array returned has all the actors in a 90 foot radius (including creatures considered actors, but not chicken).  The array is sorted so that the closest actor  to the player character is in slot 0 and so on.

 

Added the global sla_AnimationThreshhold:  (All you english majors, don't bitch at me about the spelling)  This global variable is set to 50 and is the value sla_aroused is tested against to determine if an aroused animation is played.  You can change it in console for testing purposes.  I considered adding it as an MCM option but decided against it in the end.

 

Added the FormList sla_NakedArmorList:  This formlist is checked by the naked actor scanner and if any armor on the list is being worn by the actor, that actor is considered naked.  However, currently, this formlist is empty.  I was planning on putting all the armor the player identifies through the MCM menu options on it, but I want to think about that a while longer.  My primary concern is that player must manually add to this list.  I would prefer if the mod authors would use the EroticArmor keyword instead.

 

 

 

 

 

 

 

Version for Futa users

tanookitamatachi has produced a version of Redux designed for Futa users.  I have not tested this myself, but if you are a futa user, this may just be what you need:

 

 

 

Important note- You can reduce the impact on the papyrus engine contributed by Redux to nearly zero if you put cloths on your NPC followers when you are not about to engage in sex or enticements. This would be especially useful in cities, inns, etc with large amounts of NPCs. Each naked NPC adds about .25 seconds of Redux papyrus time every 2 minutes. Redux does not use even a little of this as papyrus time is split between running mod.

 

If you are not a modder, skip all the rest of this and just download and follow the instructions in the Installation section below.

 

Compatibilty
SAR is compatible with most software products that rely on the old version of Sexlab Aroused. It has been tested with:
Sexlab SexSlaves, Sexlab Romance, Devious Devices Integration, Lovers Comfort, SD+, Deviously Helpless, Captured Dreams, Devious Devices (Integration, Assets and Expansion), SexLab attraction, SexLab approach.and SL Stories. There are no reported incompatibilities. More as I find them.
How it works
The original version uses a cloak spell to set arousal levels as the player passes through the world. It attaches a script to each and every NPC it encounters. I have seen up to 18 of these scripts in a save game and expect that many more may be running at any time in the game.

 

Redux changes that by having Dialog/ReferenceAlias based scan that gets all NPCs withing 1024 units (about 50 feet). It also gets all naked NPCs in the same radius and applies the original arousal logic to them. This scan happens currently once each 120 seconds (2 minutes). The scan is fast, typically less than 2 seconds and all but .5 seconds of that is spent outside the papyrus engine, so it should dramatically reduce the papyrus impact.

 

All of the original pcs files remain essentially unchanged. There is a single return statement added to the top of lacloakeffscr, and much of the content in this file was copied to slamainscr for use directly by it. slamainscr and slaconfig were heavily modified. Slaconfig to restart all the quests when this one first loads, and slamainscr to do the periodic scans. All original functions remain, so if you use them in your mod, they will still be there.

 

If you open the mod in CK, you will find two additional dialogs. slaNakedNPC and slaAllNpc. These two dialogs, when started collect all NPCs meeting the ReferenceAlias parameters.

 

It uses exactly the same routines as the original.

 

There are lots of opportunities for improvement. If this turns out to be useful for lots of people, I'll put in the time to make them. Please post your results on the forum. If you have CTDs in game, please turn on logging in your skyrim.ini file and post the log:
[Papyrus]
bEnableLogging=1
bEnableTrace=1
bLoadDebugInformation=1

 

Possible Problems
1. If your mod subclasses slacloakeffscr, it will not work. The cloak spell, although it still remains in the mod is disabled.
2. This mod increases arousal at 1/2 the rate of the original. That is pretty easily changed and if this works for lots of people, I'll add an MCM menu option for it.
3. As mentioned, the cloak spell is gone, enabling or disabling it has no affect.
4. If you upgrade to the bsa version and the version in MCM does not change, you almost certainly left around some old pex. See the Upgrade section below for what you need to do.

 

Installation

 

1. Start up a save and turn off the cloak spell in MCM, wait a full minute, then save your game.
2. Exit Skyrim and uninstall the old Aroused.
3. Install the new Aroused and run LOOT or similar
4. Reload your save and wait a few minutes after the message "SexLab Aroused upgraded to version xxx" and off you go.

 

Updating

Note:  This works for versions after 7.  If you are updating from version 7 or earlier, follow the installations instructions above.

1.  Exit your game.

2.  Uninstall the old version.

3.  Install the new version.

4.  Run Loot

5.  Run FNIS for Users.

6.  Start Skyrim and after a few minutes you will get the message "Sexlab Aroused is ready to use"

 

If you are using Mod Organizer,  worik has a guide here http://www.loverslab.com/topic/37652-sexlab-aroused-redux-dec-01-2015/?do=findComment&comment=1401612

 

 

For Modders Only
I have also provided a test mod SLATestMod_xx.7z. This mod is provided because I saw one papyrus log from a mod that called Aroused directly (instead of using the Aroused factions) and its slaUtilScr property was none. If you don't make Aroused calls directly, you need not bother with this.

 

Before installing the new Aroused Redux, install the test mod first.
Then:

  • 1. Make sure slatestmod is check to load, and then start skyrim and create a new game. Once everything settles down, (a minute or so), save your game and exit.
  • 2. Load the save game and wait until you see "Sla Test finished check your log" in the notification area
  • 2. Check your papyrus log and you should see an entry like "SlaTestQuest slaUitlScr was properly initialized by the game engine"
  • 3. Follow one the instructions above and load and install Redux.
  • 4. Load the save game you created above and wait till you see "Sla Test finished check your log". Then exit.
  • 5. Recheck your log for "SlaTestQuest slaUitlScr was properly initialized by the game engine"
  • 6. If you have error messages, please PM me.

 

Version 15 comes with a method for mod authors to increase arousal without including Redux as a dependency so long as you only want to increase arousal. Here's how:

 

 

int eid = ModEvent.Create("slaUpdateExposure")

 

ModEvent.PushForm(eid, actor)

 

ModEvent.PushFloat(eid, 2.0)

 

ModEvent.Send(eid)

 

This increases exposure which results in increased arousal. The float value should be small values as they are multiplied by the exposure rate to arrive at an arousal level. In other words, the value that you passed is multiplied by the exposure rate and added to the existing arousal to arrive at a final arousal level.

 

 

EroticArmor Keyword:  If this keyword is attached to any armor piece, the actor is considered naked.  It is hoped that this keyword will only be used on chest pieces, but that wish is not enforced.

 

ModEvent sla_UpdateComplete:  This mod event is sent after Redux is completed with it's work.  The integer part of the event contains the number of actors in the scan.  This can be used for two purposes.  First, by receiving it, you know that arousal has been computed for 0 or more actors.  Second, it can be used to synchronize your own code so as to minimize the simultaneous papyrus impact.  I hope all you modders can see the value in this synchronization.  This was my primary reason for doing this change. 

 

Here is some example code:

RegisterForModevent("sla_UpdateComplete", "OnArousalComputed")...Event OnArousalComputed(string eventName, string argString, float argNum, form sender)  if(argNum > 0)     ;Do my thing because there is at least one actor to process  endifendEvent

This event has everything null and unused except argNum which contains the number of actors that were processed.  This can also be used to get this list of actors.

 

Added the function Actor [] function getLoadedActors(int lockNum)
 

This function returns a 20 slot array of actors.  lockNum is an integer that must be between 10 and 32000.  It must be unique.

 

Here is how to use it:

Actor [] theActorsslaMainScr Property pslaMainScr Auto
Event OnArousalComputed(string eventName, string argString, float argNum, form sender)
    if(argNum > 0)
		int myLockNum = Utility.randomInt(10, 32000)
        Actor [] myActors = pslaMainScr.getLoadedActors(myLockNum)        ;This could be null if called at the wrong time
        if(myActors)
			if(!theActors)
				theActors = new Actor[20]
			endif            
			int i = 0;        ;Copy the actors to a private array            
			while(i < argNum)
				theActors[i] = myActors[i]
                i+= 1
			endwhile
			;It is imparative to call unlock
            pslaMainScr.UnlockScan(myLockNum)                ;Now do whatever I want with those actors    
		endif

endEvent
                             

Note the comment to call UnlockScan().  If you don't call this, Redux will never again perform any scans.  It is not necessary to copy the actors to a private array if what you do happens withing a second or two.  However, it is safest to do it as shown.

 

The array returned has all the actors in a 90 foot radius (including creatures considered actors, but not chicken).  The array is sorted so that the closest actor  to the player character is in slot 0 and so on.

 

Added the global sla_AnimationThreshhold:  (All you english majors, don't bitch at me about the spelling)  This global variable is set to 50 and is the value sla_aroused is tested against to determine if an aroused animation is played.  You can change it in console for testing purposes.  I considered adding it as an MCM option but decided against it in the end.

 

Added the FormList sla_NakedArmorList:  This formlist is checked by the naked actor scanner and if any armor on the list is being worn by the actor, that actor is considered naked.  However, currently, this formlist is empty.  I was planning on putting all the armor the player identifies through the MCM menu options on it, but I want to think about that a while longer.  My primary concern is that player must manually add to this list.  I would prefer if the mod authors would use the EroticArmor keyword instead.

 


Upgrading
Version 8 to 9 to 16 - Just uninstall the old version using NMM or similiar and install the new version. Nothing else is required.
Note that NMM and similar sometimes does not remove all the files it install. So, if you installed the loose version and are installing the bsa version, check your ...skyrim\data\scripts director for the existence of sla*.pex. If you have Slave Tats installed, there will be those files there as well. Here is a complete list of the files Redux installs:

 
slacloakeffscr
slaConfigScr
slaFrameworkScr
slaInternalScr
slamainscr
slaNakedScript
slaPlayerAliasScr
slaResetScr
slaScanAllScript
slaUtilScr


Alternately, just install the loose version.


What's New in Version 27a   See changelog

Released

  • Version 11
  • Fixed a problem with creatures not getting aroused
  • Fixed a cosmetic problem with the incorrect version number being reported
  •  
  • Version 12
  • Fixed some message text (I have difficulty to focus)
  • Fixed the version reporting to be compatible with DDI
  •  
  • Version 15
  • 1. Removed version notifications
  •  
  • 2. Fixed a major issue with vanilla critical NPCs not getting aroused (Jzargo, Aela and the like)
  •  
  • 3. New MCM menu option to change the frequency of scans
  •  
  • 4. No Scan during SexLab animations and for 10 seconds after
  •  
  • 5. Fixed a minor issue where no scans were happening on infrequent occasions.
  •  
  • 6. Add a ModEvent slaUpdateExposure callable from third-party programs to increase arousal
  •  
  • Version 15a
  • Removed a missed dirty edit.
  •  
  • Version 16
  • Fixed a bug where the scan would not restart after sex
  • Fix a minor bug where two scans were conflicting
  • Fixed a minor error in the english translation File
  •  
  • Version 16a
  • Added a missing (and useless) .pex file.
  •  
  • Version 16b. Fixed the bsa version to match loose version.
  •  
  • Version 17. Fixed an error where starting a new game might set cell scan frequency to 0
  •  
  • Version 19. Changed the way gender preference is determined. Removed the need for LOS for determining arousal
  •  
  • Version 20. Fixes a bug where sometimes arousal never reloads the scan area after sex. Also fixed a rounding error.
  •  
  • Version 21. Fixed a minor bug where there was an error in the papyrus log and storageUtil cleaning happened ever game load
  • Version 26.  Added arousal animations,  fixed some bugs, and added developer features
  • Version 27, Added manaquins to the exclusion list for aroused and naked scans and fixed a bug where one NPC might be repeated in the scans if there were 8 or more.
  • Version 27a,  Fixed a very minor thing in the scanner

70