prideslayer Posted June 10, 2012 Posted June 10, 2012 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 11
ValecCorso Posted June 10, 2012 Posted June 10, 2012 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.
prideslayer Posted June 10, 2012 Author Posted June 10, 2012 What sex mod are you using? Is that from humping the mojave or something else?
RDKateran Posted June 10, 2012 Posted June 10, 2012 Trudy's part of Humping the Mojave. Same as Ringo and Sunny in that area.
KainsChylde Posted June 10, 2012 Posted June 10, 2012 I'm in the process of reinstalling and will test this as soon as I'm able. Is there a particular mod or feature you need targeted? And are you still working on that Art of Seduction conversion or do you want the original tested with this?
prideslayer Posted June 10, 2012 Author Posted June 10, 2012 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.
KainsChylde Posted June 10, 2012 Posted June 10, 2012 In Humping The Mojave, you have to be at least liked by the NCR before Ghost will do you.
KainsChylde Posted June 10, 2012 Posted June 10, 2012 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
astymma Posted June 11, 2012 Posted June 11, 2012 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.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 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.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 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.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 I can already see a bug too.. don't hate me. Obviously callbacks aren't being set if the player is not involved. I don't think this is a "big deal" right now, as wsex is almost never used for npc on npc action, but I still need to fix it.
astymma Posted June 11, 2012 Posted June 11, 2012 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.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 I will flip the code around for giver/receiver token. With all the code for the token in the receiver token, I thought that it would be the 2nd one given out. My bad..
astymma Posted June 11, 2012 Posted June 11, 2012 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.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 (zeroed out this post of irrelevant old scripts)
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 Gah ok. So I'm going to have to be a bit more clever.. that's fine. I'll just set the giver token up to wait for the wsexquest var to be set by the receiver token. If it doesn't happen within a quarter second or so, abort.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 Do you know offhand how it supports masturbation? It's not in the wsex doc. *facepalm.*
astymma Posted June 11, 2012 Posted June 11, 2012 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
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 Updated script post with v3 for giver token, now: - Waits up to 250ms for actorB to be set by the receiver token. - Swaps actor a/b if oral sex selected. - CIOS moved to actora (oops!) - wsex vars cleared on exit regardless of why
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 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
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 Op updated with v0.0.2 which has givertoken v5.
astymma Posted June 11, 2012 Posted June 11, 2012 Op updated with v0.0.2 which has givertoken v5. Awesome, this approach is far more accessible to people than individually porting SI mods. I will miss some of the animations SI has though.
prideslayer Posted June 11, 2012 Author Posted June 11, 2012 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.
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