Jump to content

WSEX (Sexual Innuendo) Override (v0.0.6)


Recommended Posts

Inspired by a conversation in another thread and a long, frustrating, in progress attempt to port a wsex (aka wasteland sex, aka sexual innuendo) mod to sexout, I decided an indirection plugin would be the way to go.

 

Proof of concept is done, and... it works!

 

Current Version: 0.0.6

- giver token gender checks + actor swap.

 

Current status: Proof of concept beta.

 

Version History:

 

 

 

0.0.5

- Slightly adjusted random picker, was bugged.

- Prints giver/receiver token IDs to console for faster debugging.

 

0.0.4

- GiverToken v7

-- Random sextype choice now here since it is needed for xp calc.

-- Random sextype choice honors SexoutNG MCM settings.

-- Calculates wsex levels, experience, stats.

 

v0.0.3

- Fixed bug in receivertoken setting wrong actor

- Added a small amount of console debug text (2 lines per act)

- GiverToken v6

- ReceiverToken v2

 

v0.0.2

- Supports masturbation.

- Oral actor position 'flipped' as it should be.

- Waits up to 250ms for both tokens to appear.

- ReceiverToken v1

- GiverToken v5

 

v0.0.1

- Initial release

 

 

 

How to use:

1. Install the Main wasteland sex file, wsex.esm but install no other files from that mod. No animations, sounds, or anything. Just the ESM.

2. Install the ESP from this post, wsex.esp.

3. Install the wsex mod(s) of your choice. Sexual Innuendo, Humping the Mojave, etc., completely. Ensure that wsex.esp is loaded AFTER those mods.

4. Install SexoutNG. Best testing done without other sexout mods, just Sexout.esm.

5. Test your wsex mods!

 

Example load order:

 

 

(vanilla ESMs)
Sexout.esm
(other sexout ESMs)
wsex.esm
wsexInnuendoNPCs.esp (this is 'humping the mojave')
wsex.esp

It does not matter if sexout.esm is before or after wsex.esm. wsex.esp should be loaded AFTER any other wsex ESPs though, like HtM.

 

 

 

How it works

 

 

This plugin simply replaces the scripts used by the important parts of the wsex ESM with "translation" scripts that convert the calls to SexoutNG. The two base scripts are the scripts for the wsexGiverToken and wsexReceiverToken. The main wsexQuest script was also modified.

 

The giver token was modified to simply set actorA in wsexQuest (a new var for that script) and then to remove itself.

 

The receiver token was modified to do the "heavy lifting" in the translation. It sets all the sexoutNG vars for callbacks, actors, and so on, as well as the sexout sextype. After this, it calls SexoutBegin and clears the wsex vars to prepare them for the next call.

 

As of V0.0.4, no other scripts have been modified, but many of them are obsolete and no longer used.

 

 

 

What is likely to not work (yet) in wsex mods?

 

 

- The 0-9 item callbacks. Wsex allows up to 10 additional items to be given to an NPC after sex. Sexout only supports one, so only one is given right now. If you suspect this is to blame for a bug, check the wsex plugin you're using for variables named refCallback0 to refCallback9

 

 

 

What the future holds

 

 

Eventually, as this plugin matures, it will reach a state that is stable with all or most of the wsex mods, providing full functionality to them via sexout.

 

When this happens, the ESP will be promoted to an ESM, and the first release version (1.0.x) will be upon us. At that time, the original wsex.esm file will no longer be required.

 

 

 

How to help:

1. Keep reading this post as it changes.

 

2. Test different wsex plugins and report what works and what doesn't work, especially with regard to quest progression you suspect may be related to missing counters. For example, if some mod has a mission to go out and bang 10 asians, that mission will be "impossible" with v0.0.1 since the race vars aren't being updated just yet. Look for others like this.

 

3. Report in your findings, but make sure that during this crucial testing phase that you are not using any other sexout mods. I cannot stress that enough. I don't want to spend time bug hunting in this mod only to find out the sex act you performed that didn't "count" came from a normal sexoutNG encounter. EVENTUALLY those will count too, in most cases, but right now they will not.

 

Thanks in advance for your help! With luck, in a very short time, all SexoutNG users will be able to enjoy the wsex mods alongside the sexout mods with no compatibility issues at all, and all the wsex mods will benefit from the advances made in Sexout!

wsex.esp

Link to comment

Just downloaded it and think I might have found something. I have done "Ghost Town Gunfight" and the option to do Trudy fires off perfectly. The only problem is that I have done her 7 times and the only animations that fire are variations of me servicing her orally.

Link to comment

Thanks for the report, I'll investigate them as soon as I can.

 

Just as a note, this version should not (really, can not) affect the dialog choices you are given, it only affects playing of the actual sex scene. If you aren't even getting the option to start sex, it's possible you missed some other requirement to have those dialog choices appear.

 

All the mod changes, right now, is what happens when the wsex tokens (that initiate sex) are handed out. Nothing that leads up to that (dialog, etc) has been changed or altered.

Link to comment

I've finally got FNV re-installed and I wanted to clarify something before installing any mods.

To test this, on the sexout side I need the sexoutNG FOMOD ONLY? No SCR or plugins or anything else? And on the wsex side I can use any and everything EXCEPT wsex.esm?

 

Just want to be sure I'm using the right stuff so I don't get grief for a bad bug report :P

Link to comment

One issue that might pop up is that humping the mojave tends to hand the receiver token first, then the giver token. Since your tweak uses the giver token's onadd to set ActorA but your receiver token's onadd falls through on an empty ActorA, you may end up with a failed sexual act.

 

You may want to consider swapping ActorA and ActorB on oral sex. IIRC in SI the giver is actually giving the oral sex and the receiver is actually receiving the oral sex. You're assigning the giver to A and the receiver to B which is the reverse of how SexoutNG works. You end up with the giver as A who receives the oral sex and the receiver as B who gives the oral sex.

 

For those seeing only a certain type of sex with a specific NPC humping the mojave does a "(GetRandomPercent/34)+1" to set sex type so you may just be receiving a bad run of random numbers.

Link to comment

To test this you need:

- Full core sexout install.

- wsex.esm ONLY from wsex.

- Any *other* wsex mods, like HtM.

 

For the most useful testing experience you should NOT install:

- Any sexout mods other than sexout itself.

- The wsex animation files, sounds, or anything else except wsex.esm

 

You got that last point backwards it seems. You do need wsex.esm. You don't need the animations, sounds, textures, etc. from wsex.

Link to comment

Astymma, here's what I've done, as it's the receiver token that triggers sex in wsex.esm:

 

1. Added an actorA ref to wsexQuest.

2. Modified the giver token to set that var and exit.

3. Modified the receiver token to pull in that var, and then do the sexout call as:

 set actorA to wsexQuest.actorA
 set actorB to getContainer
 set bRunningR to 0
 if actorA
   if (actorA == playerREF)
     set SexoutNG.CBSpellA to wsexQuest.refSelfSpell
     set SexoutNG.CBItemA to wsexQuest.refSelfItem
     set SexoutNG.CBDialogB to wsexQuest.refFinishingDialog
     set SexoutNG.CBSpellB to wsexQuest.refFinishingSpell
     set SexoutNG.CBItemB to wsexQuest.refFinishingItem
     set wsexQuest.nReceiver to wsexQuest.nReceiver + 1
     ; Need to set some sexout thing for B to the package at wsexQuest.refFinishingPackage
   elseif (actorB == playerREF)
     set SexoutNG.CBSpellB to wsexQuest.refSelfSpell
     set SexoutNG.CBItemB to wsexQuest.refSelfItem
     set SexoutNG.CBDialogA to wsexQuest.refFinishingDialog
     set SexoutNG.CBSpellA to wsexQuest.refFinishingSpell
     set SexoutNG.CBItemA to wsexQuest.refFinishingItem
     set wsexQuest.nGiver to wsexQuest.nGiver + 1
     ; Need to set some sexout thing for A to the package at wsexQuest.refFinishingPackage
   endif

   set SexoutNG.ActorA to actorA
   set SexoutNG.ActorB to actorB
   if wSexQuest.sexType == 1
     set Sexout.SexType to Oral
   elseif wsexQuest.sexType == 2
     set Sexout.SexType to Vaginal
   elseif wsexQuest.sexType == 3
     set Sexout.SexType to Anal
   endif

   if ActorB.getIsSex male
     set wsexQuest.isMale to 1
   else
     set wsexQuest.isMale to 0
   endif

   ActorB.CIOS SexoutBegin

 

You're right in that I will probably need to flip them around in cases of oral sex, I forgot that wsex does that backwards from the way sexout does it.

Link to comment

Astymma' date=' here's what I've done, as it's the receiver token that triggers sex in wsex.esm:

 

1. Added an actorA ref to wsexQuest.

2. Modified the giver token to set that var and exit.

3. Modified the receiver token to pull in that var, and then do the sexout call as:

 set actorA to wsexQuest.actorA
 set actorB to getContainer
 set bRunningR to 0
 if actorA
   if (actorA == playerREF)
     set SexoutNG.CBSpellA to wsexQuest.refSelfSpell
     set SexoutNG.CBItemA to wsexQuest.refSelfItem
     set SexoutNG.CBDialogB to wsexQuest.refFinishingDialog
     set SexoutNG.CBSpellB to wsexQuest.refFinishingSpell
     set SexoutNG.CBItemB to wsexQuest.refFinishingItem
     set wsexQuest.nReceiver to wsexQuest.nReceiver + 1
     ; Need to set some sexout thing for B to the package at wsexQuest.refFinishingPackage
   elseif (actorB == playerREF)
     set SexoutNG.CBSpellB to wsexQuest.refSelfSpell
     set SexoutNG.CBItemB to wsexQuest.refSelfItem
     set SexoutNG.CBDialogA to wsexQuest.refFinishingDialog
     set SexoutNG.CBSpellA to wsexQuest.refFinishingSpell
     set SexoutNG.CBItemA to wsexQuest.refFinishingItem
     set wsexQuest.nGiver to wsexQuest.nGiver + 1
     ; Need to set some sexout thing for A to the package at wsexQuest.refFinishingPackage
   endif

   set SexoutNG.ActorA to actorA
   set SexoutNG.ActorB to actorB
   if wSexQuest.sexType == 1
     set Sexout.SexType to Oral
   elseif wsexQuest.sexType == 2
     set Sexout.SexType to Vaginal
   elseif wsexQuest.sexType == 3
     set Sexout.SexType to Anal
   endif

   if ActorB.getIsSex male
     set wsexQuest.isMale to 1
   else
     set wsexQuest.isMale to 0
   endif

   ActorB.CIOS SexoutBegin

 

You're right in that I will probably need to flip them around in cases of oral sex, I forgot that wsex does that backwards from the way sexout does it.

[/quote']

 

Yes, I know that's what you did to the receiver and giver token scripts. That's why I said your receiver token falls through on an empty ActorA. My point is OnAdd is ran once and once only and if the receiver token is handed out first, that OnAdd will run first before the giver token's OnAdd does resulting in an empty ActorA.

Link to comment

I will flip the code around for giver/receiver token. With all the code for the token in the receiver token' date=' I thought that it would be the 2nd one given out. My bad.. :)

[/quote']

 

Well it is the second in many mods and first in others, there's no instructions to hand them out in any order from the author afaik... unfortunately. So mods do whatever they want.

Link to comment

Do you know offhand how it supports masturbation? It's not in the wsex doc. *facepalm.*

 

As far as I know, masturbation works by giving the receiver and giver tokens to the same actor.

 

KatieNPC mod gives receiver and giver token to the same actor and sets sextype to 2 as an example.

set wsexQuest.sexType to 2
addItem wsexReceiverToken 1
addItem wsexGiverToken 1

Link to comment

givertoken v5 (fixed masturbation callbacks duh)

 

 

scn wsexGiverTokenScript
; v5

ref refTarget
ref refNPC
ref refGiver

float timer
float timerpose
float elapsed
short skill
short oldSexType
short bRunningR
short bChangedPose

short bPress

ref actorA
ref actorB
ref actorTmp

begin onAdd
 set elapsed to 0
 set bRunningR to 0
end

begin GameMode
 ; Running modes
 ; 0 = waiting on actor set in main quest
 ; 1 = starting
 ; 2 = removing self
 ; 3 = waiting to die

 set elapsed to elapsed + GetSecondsPassed

 if bRunningR == 3
   ; =========================================
   ; do nothing, waiting to die.
 elseif bRunningR == 2
   ; =========================================
   set wsexQuest.refReceiver to 0
   set wsexQuest.refGiver to 0
   set wsexQuest.sexType to 0
   set wsexQuest.refBed to 0
   set wsexQuest.BedHeight to -1
   set wsexQuest.bedAngle to 0
   set wsexQuest.bMuteGiver to 0
   set wsexQuest.bMuteReceiver to 0
   set wsexQuest.sexStage to 0
   set wsexQuest.actorA to 0
   set wsexQuest.actorB to 0
   set bRunningR to 3
   removeme
 elseif bRunningR == 1
   ; =========================================
   ; do the deed
   set actorA to getContainer

   ; Ensure we abort even if something goes wrong in here
   set bRunningR to 2

   ; Flip the actors around in case of oral.
   if (wsexQuest.sexType == 1)
     set actorTmp to actorA
     set actorA to actorB
     set actorB to actorA
   endif

   ; wsex callbacks are only valid if the player is involved.
   if ((actorA == playerREF) || (actorB == playerREF))
     if (actorA == actorB)
       ; masturbation
       if actorB
         set actorA to actorB
         set actorB to 0
       endif
       set SexoutNG.CBSpellA to wsexQuest.refSelfSpell
       set SexoutNG.CBItemA to wsexQuest.refSelfItem
     elseif (actorA == playerREF)
       set SexoutNG.CBSpellA to wsexQuest.refSelfSpell
       set SexoutNG.CBItemA to wsexQuest.refSelfItem

       set SexoutNG.CBDialogB to wsexQuest.refFinishingDialog
       set SexoutNG.CBSpellB to wsexQuest.refFinishingSpell
       set SexoutNG.CBItemB to wsexQuest.refFinishingItem
       set wsexQuest.nReceiver to wsexQuest.nReceiver + 1
     else
       set SexoutNG.CBSpellB to wsexQuest.refSelfSpell
       set SexoutNG.CBItemB to wsexQuest.refSelfItem

       set SexoutNG.CBDialogA to wsexQuest.refFinishingDialog
       set SexoutNG.CBSpellA to wsexQuest.refFinishingSpell
       set SexoutNG.CBItemA to wsexQuest.refFinishingItem
       set wsexQuest.nGiver to wsexQuest.nGiver + 1
     endif
   endif

   if (actorA || actorB)
     set SexoutNG.ActorA to actorA
     set SexoutNG.ActorB to actorB
     if wSexQuest.sexType == 1
       set Sexout.SexType to Oral
     elseif wsexQuest.sexType == 2
       set Sexout.SexType to Vaginal
     elseif wsexQuest.sexType == 3
       set Sexout.SexType to Anal
     endif

     if ActorB.getIsSex male
       set wsexQuest.isMale to 1
     else
       set wsexQuest.isMale to 0
     endif

     ActorA.CIOS SexoutBegin

     if (skill == 0) && ((actorA == player) || (actorB == player))
       if wsexQuest.sexType == 1
         set skill to wsexQuest.nOralLevel
       elseif wsexQuest.sexType == 2
         set skill to wsexQuest.nVaginalLevel
       else
         set skill to wsexQuest.nAnalLevel
       endif
     else
       set skill to 5
     endif
   endif
 elseif bRunningR == 0
   ; =========================================
   set actorB to wsexQuest.actorB
   if (actorB)
     set bRunningR to 1
   elseif (elapsed >= 0.25)
     ; abort
     set bRunningR to 2
   endif
 endif
end

 

 

Link to comment

Op updated with v0.0.2 which has givertoken v5.

 

Awesome' date=' this approach is far more accessible to people than individually porting SI mods.

 

I will miss some of the animations SI has though.

[/quote']

 

I think I'll be able to use those too, eventually... Including them is another matter, but I'll ask and see what the author says. Maybe we can trade. :)

 

I agree though, this is a million times easier than porting a bunch of different mods over. Hell it's easier than porting *one* mod over.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use