Jump to content

Recommended Posts

Just checking if I get it right :

 

If a male position partner has a high affinity with a pose type, he'll orgasm quickly, so you should choose the poses he has lowest affinity with, right ?
And the other way around for a female partner ?

Link to comment

Unfortunately, my game crashes with this mod when player sexual desire reaches 25%

Reason not very hard to find.

 

Script xLoversSatEffects

 

if playerSD > 25 && playerSD <= 37.5
if playerRef.HasSpell xLoversSatDesireAb2 == 0
playerRef.AddSpellNS xLoversSatDesireAb2
endif
else
if playerRef.HasSpell xLoversSatDesireAb2
playerRef.RemoveSpellNS xLoversSatDesireAb2
endif
endif

However, xLoversSatDesireAb2 doesn't have any spell effect. This causes crash on my version of Oblivion.

I make custom patch for it to override xLoversSatDesireAb2 spell, it helps.

 

Another question: this mode have "pause" key, like "C" in PK Extender?

Link to comment

This is very strange, many mods use empty spells as tokens without any problem. In this case you can just remove the third line, the one that equips the spell to the player. There is no pause key, but it is a good idea. I dont know when I will update this mod though, because I'm very busy and have not played or modded for months now.

Link to comment

Maybe this problem is version dependent (but all patches, including unofficials, installed). Even CS throw warning about empty spell if I open this mod.

I just create small esp which override xLoversSatDesireAb2 spell to raise Personality by 5. Now all works fine.

Mod very nice and looking good with Basic Needs mod together. Pause key will be very helpful enhancement, maybe like settings ini file (with pos sequences, for example).

Link to comment
  • 9 months later...

Here's a slightly tweaked esp. The maxdays is set to 2, meaning sp bar fills up quicker, aka:higher sex drive. The skill is now affected by endurance instead of, I believe it was personality, and the lovemaking skill goes up slower.

 

The main reason I'm putting this up, is I built in compatibility for LoversHiyokoShooter so that birth shouldn't be a sexually gratifying experience. Does not require hiyoko shooter, just checks to see if it's loaded.

 

Change in spoiler in green.

 

 

ScriptName xLoversSatQuestScript

float fQuestDelayTime

short init
short control ; 0: wait, 1: init, 2: sex, 3: finish, 4: masturbation start, 5: masturbation end
short cumStage ; 0: none, 1: start fem, 2: fem duration, 3: end fem, 4: start male, 5: male duration, 6: fem catches up, 7: male catches up, 8: safe end
short cumTimer
short stage
short index
short sPos ;xLovers position index
short sGroup ;xLovers position groups: 0: cowgirl, 1: doggy, 2: missionary, 3: standig, 4: blowjob
float baseIncrement

float changeNum ;Max number of pose changes allowed. Novice: 1, Apprentice: 2, Journeyman: 3, Expert: 4, Master: 5
short changeMenu
short changePose

float playerSP ;player sex points (arousment)
float playerSPmax ;player max sex points
float playerSD ;player sexual desire
array_var playerPref ;player position preferences

float partnerXP
float partnerSP
float partnerSPmax
short partnerLvl
array_var partnerPref

short cumScore

ref partnerRef
array_var partnerAr ;NPC array
string_var p ;NPC array key

float SDtimer
float prevHour
short prevDay
short maxDay ;Number of days it takes to fill desire points

short random
float pref
short i

float version ;Currently installed version
short debug
short debugSwitch
ref birth
ref MB2token
short prego
;DEPRECATED VARIABLES in 0.2:
float playerXP ;player sex experience
short playerLvl ;player sex level


Begin GameMode

call xLoversSatUpdate 0.5

if GetGameLoaded || debugSwitch != debug
SetDebugMode debug
let debugSwitch := debug
if debug == 1
printC "%BLovers Satisfaction:%b Debug messages On"
else
printC "%BLovers Satisfaction:%b Debug messages Off"
endif

let MB2token := call xLoversSatGetMB2

endif
set prego to 0
if IsModLoaded "LoversHiyokoShooter.esp" == 1
set prego to 1
set birth to GetFormFromMod "LoversHiyokoShooter.esp" "002354"
endif


if control == 0
;Player is not having sex, checking status every two seconds

if PlayerRef.GetItemCount MB2token != 0
;Player is masturbating
DebugPrint "%BLovers Satisfaction:%b Masturbation starting."
set control to 4

elseif PlayerRef.GetItemCount xLoversPkrIdentifier != 0
;Player is starting sex
set control to 1

else
;Add desire points and then return
let SDtimer := ( 24 * (GameDaysPassed - prevDay) ) + ( GameHour - prevHour )
let playerSD += SDtimer * ( 100 / (maxDay * 24) )
if playerSD > 100
let playerSD := 100
endif

call xLoversSatEffects playerSD

set prevDay to GameDaysPassed
set prevHour to GameHour

return
endif

elseif control == 1 && prego == 1 && player.GetItemCount birth >= 1
set control to 0

elseif (control == 1 && prego == 0) || (control == 1 && prego == 1 && player.GetItemCount birth == 0)
;Player has started sex. Initializing variables

set playerSP to 0
set partnerSP to 0
set cumStage to 0
set cumScore to 0

let index := Call xLoversSatGetIndexPairs
let sPos := xLoversPkrQuest.arPairs[index]["sPos"]
let sGroup := Call xLoversPkrGetSPosGroup sPos

let changeNum := (playerRef.GetActorValueCurrentF xLoversSatAV / 25) + 1
let changeNum := floor changeNum
let changeMenu := 0

let partnerRef := Call xLoversCmnGetPartner PlayerRef
let p := partnerRef.GetName

if eval ar_HasKey partnerAr p
;Partner is already in the list
DebugPrint "%BLovers Satisfaction:%b %z is already listed, retrieving values" p
let partnerLvl := partnerAr[p]["Lvl"]
let partnerXP := partnerAr[p]["XP"]
let partnerPref := ar_Copy partnerAr[p]["Pref"]

else
;NPC is not in the list
DebugPrint "%BLovers Satisfaction:%b %z is not listed yet, initializing NPC values" p

;Randomize NPC level
set partnerLvl to 1 + ( (GetRandomPercent * 33) / 100 )
set random to GetRandomPercent
if random <= 50
set partnerLvl to partnerLvl + 0
if partnerLvl < 5
set partnerLvl to 5
endif

elseif random <= 85
set partnerLvl to partnerLvl + 33

else
set partnerLvl to partnerLvl + 66
endif
DebugPrint "%BLovers Satisfaction:%b %z's level is %.0f" p partnerLvl

;Randomize NPC preferences
let partnerPref := ar_Construct array
set i to 0
while i <= 4
let partnerPref := rand 0.75 1.25

let pref := partnerPref
DebugPrint "%BLovers Satisfaction:%b %z's preference for group %.0f is %.2f" p i pref

set i to i + 1
loop

;Override with default genre values
if partnerRef.GetIsSex male
;Male loves a good blowjob
let partnerPref[4] := 1.5

else
;Female is not likely to cum while blowing
let partnerPref[4] := 0.25

endif

;Add NPC to the list
let partnerAr[p] := ar_Construct stringmap
let partnerAr[p]["Lvl"] := partnerLvl
let partnerAr[p]["Pref"] := ar_Copy partnerPref
let partnerAr[p]["XP"] := 0

endif

set fQuestDelayTime to 0.1

DebugPrint "%BLovers Satisfaction:%b Sex is starting. Position: %.0f, Group: %0.f." sPos sGroup
set control to 2

elseif control == 2
;Player is having sex now

if PlayerRef.GetItemCount xLoversPkrIdentifier == 0
set control to 3
return
endif

;Increase SexPoints (arousment) for both actors
let playerSPmax := call xLoversSatGetSPmax PlayerRef 0
let playerSP += call xLoversSatIncreaseSP PlayerRef playerPref[sGroup] playerSPmax GetSecondsPassed
let partnerSPmax := call xLoversSatGetSPmax partnerRef partnerLvl
let partnerSP += call xLoversSatIncreaseSP partnerRef partnerPref[sGroup] partnerSPmax GetSecondsPassed

let cumStage := call xLoversSatCumStage playerRef
let cumStage := call xLoversSatCumStage partnerRef

if cumStage == 1
;Start female orgasm, trigger final animation stage
DebugPrint "%BLovers Satisfaction:%b Female actor is cumming"
set stage to PlayerRef.GetItemCount xLoversStageM
call xLoversCmnSetItemCount PlayerRef xLoversStageM 5
call xLoversPkrSafePickIdle PlayerRef
call xLoversCmnSetItemCount partnerRef xLoversStageM 5
call xLoversPkrSafePickIdle partnerRef

Call xLoversCmnSetItemCount PlayerRef xLoversPkrStop 1

set cumTimer to 0
set cumStage to 2

let cumScore += 1
IncrementPlayerSkillUseF xLoversSatAV
call xLoversSatUseSkillNPC 4

elseif cumStage == 2
;Continue female orgasm
let cumTimer += GetSecondsPassed
if cumTimer >= 5
set cumStage to 3
endif

elseif cumStage == 3
;End female orgasm, return to previous animation stage
call xLoversCmnSetItemCount PlayerRef xLoversPkrStop 0
call xLoversCmnSetItemCount PlayerRef xLoversStageM stage
call xLoversPkrSafePickIdle PlayerRef
call xLoversCmnSetItemCount partnerRef xLoversStageM stage
call xLoversPkrSafePickIdle partnerRef
set cumStage to 0

elseif cumStage == 4 || cumStage == 7
;Start male orgasm
DebugPrint "%BLovers Satisfaction:%b Male actor is cumming"
call xLoversCmnSetItemCount PlayerRef xLoversPkrStop 0
call xLoversCmnSetItemCount partnerRef xLoversPkrStep 4
call xLoversCmnSetItemCount PlayerRef xLoversPkrStep 4

if cumStage == 4
;Male is cumming alone
set cumStage to 5
let cumScore += 1
IncrementPlayerSkillUseF xLoversSatAV
call xLoversSatUseSkillNPC 4
else
;Male is catching up, add bonus
set cumStage to 8
let cumScore += 2
IncrementPlayerSkillUseF xLoversSatAV 0 2
call xLoversSatUseSkillNPC 8
endif

elseif cumStage == 6
;Female catches up, add bonus
DebugPrint "%BLovers Satisfaction:%b Female actor is cumming"
set cumStage to 8
let cumScore += 2
IncrementPlayerSkillUseF xLoversSatAV 0 2
call xLoversSatUseSkillNPC 8
endif

if IsKeyPressed3 33 && cumStage == 0 && changeNum > 0
let changeMenu := 1
endif

if changeMenu == 1
MessageBoxEX "Changes left: %.0f|Cowgirl|Doggy|Missionary|Standing|Blowjob|Cancel" changeNum
let changeMenu := -1
elseif changeMenu == -1
set changePose to GetButtonPressed
if changePose != -1
call xLoversSatChangePose changePose
set changeMenu to 0
endif
endif

elseif control == 3
;Sex has ended
DebugPrint "%BLovers Satisfaction:%b Sex has ended, total score: %.0f" cumScore

let p := partnerRef.GetName
let partnerAr[p]["Lvl"] := partnerLvl
let partnerAr[p]["XP"] := partnerXP

let playerSD -= cumScore * 20
if playerSD < 0
set playerSD to 0
endif

set playerSP to 0
set playerSPmax to 0
set partnerSP to 0
set partnerSPmax to 0

set control to 0
set fQuestDelayTime to 2

elseif control == 4
;Starting masturbation

set fQuestDelayTime to 0.1
if PlayerRef.GetItemCount MB2token == 0
set control to 5
endif

elseif control == 5
;Ending masturbation
DebugPrint "%BLovers Satisfaction:%b Masturbation ended."

let playerSD -= 10
if playerSD < 0
set playerSD to 0
endif

set fQuestDelayTime to 2
set control to 0

endif

end
;
; 1282
;

 

 

In case anyone wants the compatibility but not the other changes feel free to copy my changes to your esp. If you want the other changes, or don't care about the other changes, consider this esp

Requires the original for textures and ini info.

 

LoversSatisfaction.esp a "hard" mode.  ;)

 

MAY REQUIRE A CLEAN SAVE

The 2 people who downloaded before 5-31-16, redownload. I had to make a quick fix. In red in spoiler

 

EDIT: Figures, making tweaks/fixes, I went and made my version unnecessary if you use any LoversHiyokoShooterFienyx versions. I will leave this up for those who wish to continue using the older hiyoko shooter versions

 

Link to comment
  • 2 months later...
  • 2 weeks later...
  • 7 months later...

For some reason opening up this mod in CSE causes it to get a heart attack and crash when having the AddActorValues_CS.dll in the OBSE directory. I narrowed down to this mod, after noticing my addon for it kept crashing the kit, and it stopped doing so after I removed it as a dependency.

 

Edit: Never mind, it looks like when I was transferring my files over from my dying hard drive that this mod got corrupted or something.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • 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