Jump to content

Recommended Posts

Jaam, for some reason the IsSpellTarget is returning false even when wearing an item with the enchantment.. I'm looking into it. It might be due to the base effect having 0 duration but the base effect not being set 'no duration'. I'm toggling 'no duration' on the effects and will see if that fixes the issue.

Link to comment

That's odd. It's worked reliably in the past for me when used on actual spells. I've never tried it (or anything else) on an enchantment/object effect before, and it's not working to save my life. It's possible the pregnancy spell is being removed and recast over and over or something? That would make it a sort of coin toss if you detected it at the right moment.

Link to comment

Well it does have a script assigned (empty), thought that might be the problem so I changed it to a value modifier type, still nothing. I might have no choice but to change this effect to a spell and fill out the scripts, if a basic "do nothing" enchantment doesn't actually work..

 

Jaam, did these enchantments ever work?

 

I'm going to mess with them a bit more, see if adding a magnitude, duration, or anything like that has an effect. The script might need at least one effect update block or something as well. I really don't know, as I've never even tried to use these before.

Link to comment

Well, I'm about at my wits end with making the enchantments work. Gonna take an FONV/LL break for the night and return tomorrow. Might have an idea by then. If not and nobody else does, I'm going to implement (what I that originally was) the plan I outlined in the SCR thread.

 

- All enchantments: gone.

- Standard duration (9999d) spell.

- OnEquip and onUnEquip blocks on the items to cast/remove the spell.

 

OnUnEquip *might* fail if the item is removed via a script and not unequipped first, I don't remember for sure. If that's the case, everyone will have to just remember to always unequip these items before removeiteming them.

 

Open to other suggestions as well. A bit tired, a bit frustrated, and a bit irritated. Geck is lying again (thanks, bethesda!) and the "easy strapons" feature of sexout has been broken since these checks were added. :(

Link to comment

I'm afraid I never had the full setup to properly test and may have assumed it should work.

As a workaroud you might want to bypass al the tests like that:

scn SexoutNGSanitizeScriptNX

;
; This script merely checks that all the vars we NEED are set, and
; that no actors are disallowed.  If successful, it calls another
; spell.
;
; It DOES dedupe and sort the SexoutNG actor vars.
; It DOES NOT clear them unless invalid. the next spell it calls
; will do that
;

ref male
ref female
ref actorA
ref actorB
ref actorC
int Anim
int AnimA
int AnimB
int AnimC
int bIsRape

int bInit
int bAbort
float fReason
ref tmpRef

int numActors
int rndA
int rndB
int rndValA
int rndValB
int sexType
int bPlayer
int noAnim
int sextypeTot

int bActorAmale
int bActorAblockOral
int bActorAblockAnal
int bActorAblockVaginal
int bActorAblockCrotch

int bActorBmale
int bActorBblockOral
int bActorBblockAnal
int bActorBblockVaginal
int bActorBblockCrotch

int bActorCmale
int bActorCblockOral
int bActorCblockAnal
int bActorCblockVaginal
int bActorCblockCrotch

int bMaleMale
int bMaleBlockOral
int bMaleBlockAnal
int bMaleBlockVaginal
int bMaleBlockCrotch

int bFemaleMale
int bFemaleBlockOral
int bFemaleBlockAnal
int bFemaleBlockVaginal
int bFemaleBlockCrotch

int bCanOral
int bCanVaginal
int bCanAnal

Begin ScriptEffectStart
 DebugPrint "SexoutNGSAN: SES Entered"
 set bInit to 1
End

Begin ScriptEffectUpdate
 DebugPrint "SexoutNGSAN: SEU Entered %g %g %g" bInit bAbort fReason
 if bAbort
   if fReason > 0
     PrintToConsole "SexoutNGSAN: Aborting due to %.1f" fReason
     if (fReason == 9.2)
       PrintToConsole "SexoutNGSAN: 9.2 A is %i" actorA
       PrintToConsole "SexoutNGSAN: 9.2 B is %i" actorB
       PrintToConsole "SexoutNGSAN: 9.2 C is %i" actorC
     endif

     ; Clear all vars!!
     set sexout.male to 0
     set sexout.female to 0
     set Sexout.CBDialogF to 0
     set Sexout.CBSpellF to 0
     set Sexout.CBItemF to 0
     set Sexout.CBPackF to 0
     set Sexout.CBDialogM to 0
     set Sexout.CBSpellM to 0
     set Sexout.CBItemM to 0
     set Sexout.CBPackM to 0

     set SexoutNG.noAnim to 0
     set SexoutNG.refSurface to 0
     set SexoutNG.fSurfaceX to 0
     set SexoutNG.fSurfaceY to 0
     set SexoutNG.fSurfaceZ to 0

     set SexoutNG.ActorA to 0
     set SexoutNG.AnimA to 0
     set SexoutNG.fHOffsetA to 0
     set SexoutNG.fVOffsetA to 0
     set SexoutNG.bDontUndressA to 0
     set SexoutNG.bDontRedressA to 0
     set SexoutNG.bodyA to 0
     set SexoutNG.CBDialogA to 0
     set SexoutNG.CBSpellA to 0
     set SexoutNG.CBItemA to 0
     set SexoutNG.CBPackA to 0

     set SexoutNG.ActorB to 0
     set SexoutNG.AnimB to 0
     set SexoutNG.fHOffsetB to 0
     set SexoutNG.fVOffsetB to 0
     set SexoutNG.bDontUndressB to 0
     set SexoutNG.bDontRedressB to 0
     set SexoutNG.bodyB to 0
     set SexoutNG.CBDialogB to 0
     set SexoutNG.CBSpellB to 0
     set SexoutNG.CBItemB to 0
     set SexoutNG.CBPackB to 0

     set SexoutNG.ActorC to 0
     set SexoutNG.AnimC to 0
     set SexoutNG.fHOffsetC to 0
     set SexoutNG.fVOffsetC to 0
     set SexoutNG.bDontUndressC to 0
     set SexoutNG.bDontRedressC to 0
     set SexoutNG.bodyC to 0
     set SexoutNG.CBDialogC to 0
     set SexoutNG.CBSpellC to 0
     set SexoutNG.CBItemC to 0
     set SexoutNG.CBPackC to 0

     set SexoutNG.bActorAmale to 0
     set SexoutNG.bActorBmale to 0
     set SexoutNG.bActorCmale to 0
     set SexoutNG.bActorAblockCrotch to 0
     set SexoutNG.bCanOral to 0
     set SexoutNG.bCanVaginal to 0
     set SexoutNG.bCanAnal to 0

     set SexoutNG.cbDialogX to 0
     set SexoutNG.cbSpellX to 0
     set SexoutNG.cbItemX to 0
     set SexoutNG.cbPackX to 0
   endif

   ; Dispel self here!!!
   if IsSpellTarget SexoutNGBegin
     dispel SexoutNGBegin
   elseif IsSpellTarget SexoutNGBeginRandom
     dispel SexoutNGBeginRandom
   elseif IsSpellTarget SexoutBegin
     dispel SexoutBegin
   else
     PrintToConsole "SexoutNGSAN: Invoked by unknown caller!"
   endif
   Return
 endif

 if 1 == bInit && 0 == bAbort
   ; We only want to run this once
   set bInit to 0
   ; Need local copies for some functions
   set noAnim to SexoutNG.noAnim
   set male to Sexout.male
   set female to Sexout.female
   set actorA to SexoutNG.actorA
   set actorB to SexoutNG.actorB
   set actorC to SexoutNG.actorC

   if Sexout.raper
     set bIsRape to 1
   else
     set bIsRape to 0
   endif

   ; Check minimum required settings
   if male || female || actorA || actorB || actorC
     ; continue
   else
     set bAbort to 1
     set fReason to 2.0
     Return
   endif

   ; Dedupe sexout
   if male == female
     set Sexout.female to 0
     set Sexout.CBDialogF to 0
     set Sexout.CBSpellF to 0
     set Sexout.CBItemF to 0
     set Sexout.CBPackF to 0
   endif

   ; Dedupe NG
   if actorC
     if actorB == actorC || actorA == actorC
       set actorC to 0
       set SexoutNG.ActorC to 0
       set SexoutNG.AnimC to 0
       set SexoutNG.fHOffsetC to 0
       set SexoutNG.fVOffsetC to 0
       set SexoutNG.bDontUndressC to 0
       set SexoutNG.bDontRedressC to 0
       set SexoutNG.bodyC to 0
       set SexoutNG.CBDialogC to 0
       set SexoutNG.CBSpellC to 0
       set SexoutNG.CBItemC to 0
       set SexoutNG.CBPackC to 0
       set SexoutNG.bActorCmale to 0
     endif
   endif

   if actorB
     if actorB == actorA
       set actorA to 0
       set SexoutNG.ActorB to 0
       set SexoutNG.AnimB to 0
       set SexoutNG.fHOffsetB to 0
       set SexoutNG.fVOffsetB to 0
       set SexoutNG.bDontUndressB to 0
       set SexoutNG.bDontRedressB to 0
       set SexoutNG.bodyB to 0
       set SexoutNG.CBDialogB to 0
       set SexoutNG.CBSpellB to 0
       set SexoutNG.CBItemB to 0
       set SexoutNG.CBPackB to 0
       set SexoutNG.bActorBmale to 0
     endif
   endif

   ; Check for kids
   ; Ensure actors are not occupied
   if male
     if 1 == male.GetIsRace AfricanAmericanChild || 1 == male.GetIsRace AsianChild || 1 == male.GetIsRace CaucasianChild || 1 == male.GetIsRace HispanicChild
       set bAbort to 1
       set fReason to 3.1
       male.StartCombat playerREF
       male.FireWeapon WeapFatman
       Return
     elseif male.GetItemCount 00SexoutActor || male.GetItemCount 00SexoutActor
       set bAbort to 1
       set fReason to 3.2
       Return
     elseif male.isChild
       set bAbort to 1
       set fReason to 3.3
       male.StartCombat playerREF
       male.FireWeapon WeapFatman
       Return
     endif
   endif

   if female
     if 1 == female.GetIsRace AfricanAmericanChild || 1 == female.GetIsRace AsianChild || 1 == female.GetIsRace CaucasianChild || 1 == female.GetIsRace HispanicChild
       set bAbort to 1
       set fReason to 4.1
       female.StartCombat playerREF
       female.FireWeapon WeapFatman
       Return
     elseif female.GetItemCount 00SexoutActor || female.GetItemCount 00SexoutActor
       set bAbort to 1
       set fReason to 4.2
       Return
     elseif female.isChild
       set bAbort to 1
       set fReason to 4.3
       female.StartCombat playerREF
       female.FireWeapon WeapFatman
       Return
     endif
   endif

   if actorA
     if 1 == actorA.GetIsRace AfricanAmericanChild || 1 == actorA.GetIsRace AsianChild || 1 == actorA.GetIsRace CaucasianChild || 1 == actorA.GetIsRace HispanicChild
       set bAbort to 1
       set fReason to 5.1
       actorA.StartCombat playerREF
       actorA.FireWeapon WeapFatman
       Return
     elseif actorA.GetItemCount 00SexoutActor || actorA.GetItemCount 00SexoutActor
       set bAbort to 1
       set fReason to 5.2
       Return
     elseif actorA.isChild
       set bAbort to 1
       set fReason to 5.3
       actorA.StartCombat playerREF
       actorA.FireWeapon WeapFatman
       Return
     endif
   endif

   if actorB
     if 1 == actorB.GetIsRace AfricanAmericanChild || 1 == actorB.GetIsRace AsianChild || 1 == actorB.GetIsRace CaucasianChild || 1 == actorB.GetIsRace HispanicChild
       set bAbort to 1
       set fReason to 6.1
       actorB.StartCombat playerREF
       actorB.FireWeapon WeapFatman
       Return
     elseif actorB.GetItemCount 00SexoutActor || actorB.GetItemCount 00SexoutActor
       set bAbort to 1
       set fReason to 6.2
       Return
     elseif actorB.isChild
       set bAbort to 1
       set fReason to 6.3
       actorB.StartCombat playerREF
       actorB.FireWeapon WeapFatman
       Return
     endif
   endif

   if actorC
     if 1 == actorC.GetIsRace AfricanAmericanChild || 1 == actorC.GetIsRace AsianChild || 1 == actorC.GetIsRace CaucasianChild || 1 == actorC.GetIsRace HispanicChild
       set bAbort to 1
       set fReason to 7.1
       actorC.StartCombat playerREF
       actorC.FireWeapon WeapFatman
       Return
     elseif actorC.GetItemCount 00SexoutActor || actorC.GetItemCount 00SexoutActor
       set bAbort to 1
       set fReason to 7.2
       Return
     elseif actorC.isChild
       set bAbort to 1
       set fReason to 7.3
       actorC.StartCombat playerREF
       actorC.FireWeapon WeapFatman
       Return
     endif
   endif

   ; Now we ensure that the Sexout and SexoutNG vars make sense
   ; If the modder set a combination like this:
   ;   Sexout.male
   ;   Sexout.anim = 52
   ;   SexoutNG.actorb
   ;   SexoutNG.CBDialogA
   ;   Sexout.CBDialogF
   ;
   ; We are going to bail and tell them not to mix calling conventions
   if male || female
     if actorA || actorB || actorC
       set bAbort to 1
       set fReason to 8.1
       Return
     endif
   endif

   if (male == playerRef) || (female == playerRef) || (actorA == playerRef) || (actorB == playerRef) || (actorC == playerRef)
     set bPlayer to 1
   endif

   if bPlayer
     if (0 < (NX_IsInList SexoutBannedActorsWithPlayer male))
       set bAbort to 1
       set fReason to 10.1
     elseif (0 < (NX_IsInList SexoutBannedActorsWithPlayer female))
       set bAbort to 1
       set fReason to 10.2
     elseif (0 < (NX_IsInList SexoutBannedActorsWithPlayer actorA))
       set bAbort to 1
       set fReason to 10.3
     elseif (0 < (NX_IsInList SexoutBannedActorsWithPlayer actorB))
       set bAbort to 1
       set fReason to 10.4
     elseif (0 < (NX_IsInList SexoutBannedActorsWithPlayer actorC))
       set bAbort to 1
       set fReason to 10.5
     endif

     if bAbort
       Return
     endif
   endif


   ; Clean up any lingering vars, just in case
   if 0 == Sexout.male
     set Sexout.CBDialogM to 0
     set Sexout.CBSpellM to 0
     set Sexout.CBItemM to 0
     set Sexout.CBPackM to 0
   endif

   if 0 == Sexout.female
     set Sexout.CBDialogF to 0
     set Sexout.CBSpellF to 0
     set Sexout.CBItemF to 0
     set Sexout.CBPackF to 0
   endif

   if 0 == actorA
     set SexoutNG.fHOffsetA to 0
     set SexoutNG.fVOffsetA to 0
     set SexoutNG.bDontUndressA to 0
     set SexoutNG.bDontRedressA to 0
     set SexoutNG.bodyA to 0
     set SexoutNG.CBDialogA to 0
     set SexoutNG.CBSpellA to 0
     set SexoutNG.CBItemA to 0
     set SexoutNG.CBPackA to 0
     set SexoutNG.bActorAmale to 0
     set SexoutNG.bActorAblockCrotch to 0
   endif

   if 0 == actorB
     set SexoutNG.fHOffsetB to 0
     set SexoutNG.fVOffsetB to 0
     set SexoutNG.bDontUndressB to 0
     set SexoutNG.bDontRedressB to 0
     set SexoutNG.bodyB to 0
     set SexoutNG.CBDialogB to 0
     set SexoutNG.CBSpellB to 0
     set SexoutNG.CBItemB to 0
     set SexoutNG.CBPackB to 0
     set SexoutNG.bActorBmale to 0
   endif

   if 0 == actorC
     set SexoutNG.fHOffsetC to 0
     set SexoutNG.fVOffsetC to 0
     set SexoutNG.bDontUndressC to 0
     set SexoutNG.bDontRedressC to 0
     set SexoutNG.bodyC to 0
     set SexoutNG.CBDialogC to 0
     set SexoutNG.CBSpellC to 0
     set SexoutNG.CBItemC to 0
     set SexoutNG.CBPackC to 0
     set SexoutNG.bActorCmale to 0
   endif

   if actorA || actorB || actorC
     ; do nothing here
   else
     set SexoutNG.ActorA to Sexout.male
     set SexoutNG.CBDialogA to Sexout.CBDialogM
     set SexoutNG.CBSpellA to Sexout.CBSpellM
     set SexoutNG.CBItemA to Sexout.CBItemM
     set SexoutNG.CBPackA to Sexout.CBPackM
     set actorA to SexoutNG.actorA

     set SexoutNG.ActorB to Sexout.female
     set SexoutNG.CBDialogB to Sexout.CBDialogF
     set SexoutNG.CBSpellB to Sexout.CBSpellF
     set SexoutNG.CBItemB to Sexout.CBItemF
     set SexoutNG.CBPackB to Sexout.CBPackF
     set actorB to SexoutNG.actorB

     set Sexout.male to 0
     set Sexout.CBDialogM to 0
     set Sexout.CBSpellM to 0
     set Sexout.CBItemM to 0
     set Sexout.CBPackM to 0

     set Sexout.female to 0
     set Sexout.CBDialogF to 0
     set Sexout.CBSpellF to 0
     set Sexout.CBItemF to 0
     set Sexout.CBPackF to 0
   endif


   ; Fixup actors apparent sex and "availabilities"
   if actorA 
     if actorA.GetIsCreature
       set bActorAmale to 1
       set bActorAblockOral to 1
     else
       set bActorAmale to ((actorA.GetIsSex male) && (0 == actorA.IsSpellTarget SexoutHeFemaleEffect))
       set bActorAmale to bActorAmale || (actorA.IsSpellTarget SexoutSheMaleEffect)
       set bActorAmale to bActorAmale || (actorA.IsSpellTarget SexoutStraponEffect)
       set bActorAmale to bActorAmale || (actorA.IsSpellTarget SexoutStraponButtPlugEffect)

       set bActorAblockCrotch to (actorA.IsSpellTarget SexoutChastityEffect) || (actorA.IsSpellTarget SexoutDualChastityEffect)
       set bActorAblockCrotch to bActorAblockCrotch || (actorA.IsSpellTarget SexoutVibratorEffect)

       set bActorAblockVaginal to bActorAmale || bActorAblockCrotch

       set bActorAblockAnal to (actorA.IsSpellTarget SexoutDualChastityEffect) || (actorA.IsSpellTarget SexoutButtPlugEffect)
       set bActorAblockAnal to bActorAblockAnal || (actorA.IsSpellTarget SexoutStraponButtPlugEffect)
       set bActorAblockAnal to bActorAblockAnal || (actorA.IsSpellTarget SexoutVibratorPlugEffect)

       set bActorAblockOral to (actorA.IsSpellTarget SexoutGagEffect) || (actorA.IsSpellTarget SexoutGagStraponEffect)
     endif
     debugPrint "SexoutNGSAN: actorA M=%g bC=%g bV=%g bA=%g bO=%g" bActorAmale bActorAblockCrotch bActorAblockVaginal bActorAblockAnal bActorAblockOral
   endif

   if actorB 
     if actorB.GetIsCreature
       set bActorBmale to 1
       set bActorBblockOral to 1
     else
       set bActorBmale to ((actorB.GetIsSex male) && (0 == actorB.IsSpellTarget SexoutHeFemaleEffect))
       set bActorBmale to bActorBmale || (actorB.IsSpellTarget SexoutSheMaleEffect)
       set bActorBmale to bActorBmale || (actorB.IsSpellTarget SexoutStraponEffect)
       set bActorBmale to bActorBmale || (ActorB.IsSpellTarget SexoutStraponButtPlugEffect)

       set bActorBblockCrotch to (actorB.IsSpellTarget SexoutChastityEffect) || (actorB.IsSpellTarget SexoutDualChastityEffect)
       set bActorBblockCrotch to bActorBblockCrotch || (actorB.IsSpellTarget SexoutVibratorEffect)

       set bActorBblockVaginal to bActorBmale || bActorBblockCrotch 

       set bActorBblockAnal to (ActorB.IsSpellTarget SexoutDualChastityEffect) || (ActorB.IsSpellTarget SexoutButtPlugEffect)
       set bActorBblockAnal to bActorBblockAnal || (ActorB.IsSpellTarget SexoutStraponButtPlugEffect)
       set bActorBblockAnal to bActorBblockAnal || (ActorB.IsSpellTarget SexoutVibratorPlugEffect)

       set bActorBblockOral to (ActorB.IsSpellTarget SexoutGagEffect) || (ActorB.IsSpellTarget SexoutGagStraponEffect)
     endif
     debugPrint "SexoutNGSAN: actorB M=%g bC=%g bV=%g bA=%g bO=%g" bActorBmale bActorBblockCrotch bActorBblockVaginal bActorBblockAnal bActorBblockOral
   endif

   if actorC 
     if actorC.GetIsCreature
       set bActorCmale to 1
       set bActorCblockOral to 1
     else
       set bActorCmale to ((actorC.GetIsSex male) && (0 == actorC.IsSpellTarget SexoutHeFemaleEffect))
       set bActorCmale to bActorCmale || (actorC.IsSpellTarget SexoutSheMaleEffect)
       set bActorCmale to bActorCmale || (actorC.IsSpellTarget SexoutStraponEffect)
       set bActorCmale to bActorCmale || (actorC.IsSpellTarget SexoutStraponButtPlugEffect)

       set bActorCblockCrotch to (actorC.IsSpellTarget SexoutChastityEffect) || (actorC.IsSpellTarget SexoutDualChastityEffect)
       set bActorCblockCrotch to bActorCblockCrotch || (actorC.IsSpellTarget SexoutVibratorEffect)

       set bActorCblockVaginal to bActorCmale || bActorCblockCrotch

       set bActorCblockAnal to (ActorC.IsSpellTarget SexoutDualChastityEffect) || (ActorC.IsSpellTarget SexoutButtPlugEffect)
       set bActorCblockAnal to bActorCblockAnal || (ActorC.IsSpellTarget SexoutStraponButtPlugEffect)
       set bActorCblockAnal to bActorCblockAnal || (ActorC.IsSpellTarget SexoutVibratorPlugEffect)

       set bActorCblockOral to (ActorC.IsSpellTarget SexoutGagEffect) || (ActorC.IsSpellTarget SexoutGagStraponEffect)
     endif
     debugPrint "SexoutNGSAN: actorC M=%g bC=%g bV=%g bA=%g bO=%g" bActorCmale bActorCblockCrotch bActorCblockVaginal bActorCblockAnal bActorCblockOral
   endif

   ; Fixup sextypes
   set bCanOral to 0
   set bCanVaginal to 0
   set bCanAnal to 0

   if (0 == bActorBblockOral) && (0 == bActorAblockCrotch) && (0 == actorA.GetIsCreature)
     set bCanOral to SexoutNG.nRndOral
   endif

   if (0 == bActorBblockVaginal) && (0 == bActorAblockCrotch)
     set bCanVaginal to SexoutNG.nRndVag
   endif

   if (0 == bActorBblockAnal) && (0 == bActorAblockCrotch)
     set bCanAnal to SexoutNG.nRndAnal
   endif

   ; workaround until spell detection works properly UNFixup sextypes
   set bCanOral to SexoutNG.nRndOral
   set bCanVaginal to SexoutNG.nRndVag
   set bCanAnal to SexoutNG.nRndAnal

   set NumActors to 0
   if SexoutNG.ActorC
     set NumActors to NumActors + 1
   endif
   if SexoutNG.ActorB
     set NumActors to NumActors + 1
   endif
   if SexoutNG.ActorA
     set NumActors to NumActors + 1
   endif
   DebugPrint "SexoutNGSAN: %g actors O=%g V=%g A=%g" numActors bCanOral bCanVaginal bCanAnal

   if (0 == SexoutNG.isAnal) && (0 == SexoutNG.isVaginal) && (0 == SexoutNG.isOral)
     if (Sexout.SexType >= 1) && (Sexout.SexType <= 3)
       if Sexout.SexType == Oral
         set SexoutNG.isOral to 1
         set sexType to Oral
       elseif Sexout.SexType == Anal
         set SexoutNG.isAnal to 1
         set sexType to Anal
       else
         set SexoutNG.isVaginal to 1
         set sexType to Vaginal
       endif
     endif
   endif

   ; Blocks impossible choice
   if (0 == bCanOral)
     set SexoutNG.isOral to 0
   endif
   if (0 == bCanVaginal)
     set SexoutNG.isVaginal to 0
   endif
   if (0 == bCanAnal)
     set SexoutNG.isAnal to 0
   endif

   if (0 == SexoutNG.isAnal) && (0 == SexoutNG.isVaginal) && (0 == SexoutNG.isOral)
     if (0 == SexoutNG.nUseZAZ)
       ; Pick a random sextype
       if (NumActors == 1)
         if bCanVaginal
           set SexoutNG.isVaginal to 1
           set sexType to Vaginal
         endif
       else
         set rndA to ((1 + GetRandomPercent) / 100) * (bCanOral + bCanVaginal + bCanAnal)

         PrintToConsole "NGSAN: RandomSextype rndA %g" rndA

         set Sextype to 0
         if (rndA < bCanVaginal)
           set SexoutNG.isVaginal to 1
           set Sextype to Vaginal
         elseif (rndA < (bCanAnal + bCanVaginal))
           set SexoutNG.isAnal to 1
           set Sextype to Anal
         elseif (rndA < (bCanOral + bCanVaginal + bCanAnal))
           set SexoutNG.isOral to 1
           set Sextype to Oral
         endif
       endif
     endif
   elseif SexoutNG.isVaginal
     set sexType to Vaginal
   elseif SexoutNG.isAnal
     set sexType to Anal
   elseif SexoutNG.isOral
     set sexType to Oral
   else	;	technically not possible
     set sexType to 0
   endif
   set Sexout.sexType to sexType

   debugPrint "SexoutNGSAN: %g actors O=%g V=%g A=%g type=%g Anim=%g noAnim=%g" numActors bCanOral bCanVaginal bCanAnal sexType Sexout.Anim noAnim

   if (sexType || sexout.anim > 0 || SexoutNG.nUseZAZ)
     if ((0 >= Sexout.Anim) && (0 == SexoutNG.nUseZAZ))
       set SexoutNG.bActorAmale to bActorAmale
       set SexoutNG.bActorBmale to bActorBmale
       set SexoutNG.bActorCmale to bActorCmale
       set SexoutNG.bActorAblockCrotch to bActorAblockCrotch
       set SexoutNG.bCanOral to bCanOral
       set SexoutNG.bCanVaginal to bCanVaginal
       set SexoutNG.bCanAnal to bCanAnal
       debugPrint "SexoutNGSAN: random O=%g V=%g A=%g type=%g Anim=%g noAnim=%g" bCanOral bCanVaginal bCanAnal sexType Sexout.Anim noAnim
       CIOS SexoutNGRandomize
     else
       if noAnim
         CIOS SexoutNGStartSexNA
       else
         CIOS SexoutNGStartSex
       endif
     endif
   else
     set bAbort to 1
     set fReason to 9.3	;		No Sex possible with those actors
     return
   endif

   set bAbort to 1
   set bInit to 0
   set fReason to 0
 endif
End

 

until the matter is properly solved.

 

I am going to make my FalloutNV setup work again and test properly.

Link to comment

I've just got the initial results of testing silly object effects, and it's something very usual for this game, and that's inconsistency.

For a object effect to work, it MUST have magnitude AND duration greater than 0.

Interestingly enough, duration value is not important, as the effect is applied all the time item is equipped.

And the best thing is that anims work correctly, with this little change to effect. :)

 

EDIT:

Working great! Sex type also working, so that's all there's to it. Just set magnitude=1 and duration=1sec.

 

Also, I would like to know what's the difference between GagStrapon, Strapon, and StraponButtPlug effects? Guess it's for checking witch holes are free, and choosing anim..?

 

And about OnEquip/OnUnEquipBlock, they are very unreliable, especially UnEquip block. It works much differently when unequipping item form script, than from user menu (pipboy). In my personal opinion, unequip bug's are the reason why, for example, arrows remain when bow is unequipped in Skyrim. Such a silly game engine :D

Link to comment

Thank you very much for digging into my mess.

 

I do remember the duration issue from tryout a LONNNG time ago. Did not make the connection though when I wrote the code.

 

Did you set magnitude on SexoutStraponEffect ? That would require modifying the base effect also to uncheck nomagnitude.

 

The only vanilla script clothing effect I can find is the MS13slaveCollar and that is not used in FalloutNV (leftover from Fallout3).

 

Also, I would like to know what's the difference between GagStrapon, Strapon, and StraponButtPlug effects? Guess it's for checking witch holes are free, and choosing anim..?

 

GagStrapon blocks the mouth but provide a face attached strapon, there is one in SCR. I don't think we have animations for that.

Simple Gag blocks oral sex. I also intended at some point to use the effect as a dialog condition to silence the NPC.

 

Strapon leaves the asshole available for anal sex, whereas StraponButtPlug, either fill the asshole or make it unavailable.

Link to comment

Thank you very much for digging into my mess.

 

I do remember the duration issue from tryout a LONNNG time ago. Did not make the connection though when I wrote the code.

 

Did you set magnitude on SexoutStraponEffect ? That would require modifying the base effect also to uncheck nomagnitude.

 

The only vanilla script clothing effect I can find is the MS13slaveCollar and that is not used in FalloutNV (leftover from Fallout3).

 

Also' date=' I would like to know what's the difference between GagStrapon, Strapon, and StraponButtPlug effects? Guess it's for checking witch holes are free, and choosing anim..? [/quote']

 

GagStrapon blocks the mouth but provide a face attached strapon, there is one in SCR. I don't think we have animations for that.

Simple Gag blocks oral sex. I also intended at some point to use the effect as a dialog condition to silence the NPC.

 

Strapon leaves the asshole available for anal sex, whereas StraponButtPlug, either fill the asshole or make it unavailable.

 

Yes, unchecked NoMagnitude in base effect, and gave mag of 1, and dur of 1 sec in spell. Only works with both set.

Thanks for the info on spells, I do like them :)

And just to be clear on this, if any of those effects is on female actorA it will make her use male anims in sex scene? Very nice :)

Link to comment

The effects limit what can be selected by the picker.

 

It should not affect explicit choice of animation.

 

Umm, my question was not clear, as I see. I'm sorry, English is not my native language. So, I'll try again..

 

Question:

When starting sex by setting actors, and nothing more, and

If female has equipped item with any of those three effects and:

1. She is actorB -> gets fucked in the hole not occupied by strapon

2. She is actorA -> she is fucking actorB (whoever that is) using strapon like a dick (not working for face strapon -> no anims)

 

So, did I get you right?

Thank you for your help :)

Link to comment

borisni that script was for me in sexout.esm' date=' not you. Having that in your mod is overriding the script in sexout and is going to mean you don't get any updates to it.

 

Please remove it and wait for me to add it into the beta.

[/quote']

 

No, no, I'm not editing anything but my stuff. Don't worry.

And base and actor effect edits I did are just for testing, that will not go in my mod.

Link to comment

I gave it a go' date=' the first two attempts were... Interesting to say the least...

 

 

 

Great mod, thank you for making it! :D

[/quote']

 

 

You're welcome ;)

 

In first screenshot there's ofset error, probably caused by some ground level difference, and in the other Sunny forgot what she had to do :D

Both things can happen from time to time, and are handled by Sexout exclusively. But, the strapon position on actor depends on the item model itself and actual body type of actor, so some of them fit better, some not so great.

Only advice I can give you is to keep your SexoutNG, and SCR up to date, bugs do get fixed all the time, and to encourage you to make your own strapons that could be maybe added to this mod, or SCR.

And to conclude, this mod allows female PC to play male anims while having equipped strapon, without any positioning or changing Sexout contet and functionality in any way, so it can be used for testing how strapons lineup with anims, as I stated in OP.

In the next update there will be all Sexout anims available, not just selected 40, like it's now.

Cheers :)

Link to comment

Who's "you"? I mostly use the T6M bouncing body w/ the Beware of Girl textures. I do switch around to other body types though on occasion to test/try things out, but that's the one I keep going back to.

 

When it's time to do alignments, I switch to a 'vanilla' T3 Cali body.

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