Jump to content

Recommended Posts

Posted

Are there new interactions for a male PC in the update?

The female fan could be turned into your personal toy over time for example.

Posted

thanks for the update!  I've done most of the game already, but not the civil war.  Now I have to join the stormcloaks just to try out this mod.  And return to the companions.  BTW, the mad mage in the midden, he just repeats the draugr sex request, is there anything more?  I walked away after about the third time, does anything change if you do more?  Or just endless repeats?

 

Posted

The dragonwhore accepts that the dragonborn is male in her dialogue but when you fuck her she still takes the male position and the male player the female position. Why?

Posted

Could you limit the animation pool to oral only when having sex with the drunkard? Because blowjobs are all he ever talks about.

Posted
17 hours ago, localmagic1 said:

it works

Thank you, now I know how to determine the stages of the civil war.

12 hours ago, xyzxyz said:

Are there new interactions for a male PC in the update?

I think only with Cock Worshiper.

14 hours ago, leopardus said:

thanks for the mod!

Spoiler

You can find it in Qasmoke cell.

 

9 hours ago, Cornor98 said:

Will you make non ZAZ version?

May be. To do this, I will have to manually delete all ZAZ references in the mod.

8 hours ago, marymuir2 said:

Or just endless repeats?

Endless repeat.

6 hours ago, xyzxyz said:

she still takes the male position

 

2 hours ago, xyzxyz said:

take the male position when in an animation with a male player?

I have problems with tags. One tag does not work, and two - blocks the second. You can substitute an actors with + key.

2 hours ago, xyzxyz said:

When Windhelm is under imperial control the guards (imperial army) will fight your added stormcloaks all the time.

When Windhelm is controlled by the Imperials you can't start the Stormcloak questline. That is the idea..

Posted
32 minutes ago, DSHV said:

I have problems with tags. One tag does not work, and two - blocks the second.

The simple tag system is not useful for solving any real animation selection. The animation must match all tags. What if it doesn't match any animations at all?

 

You can write some code to retrieve a list of animations by tag but not play - it just gets you an animation list.

First you try by one tag combination, then if that doesn't return enough animations, or any animations, you try another tag combination.

And so on.

You can then choose at what point to stop compounding lists and pick from the total list of candidates, then play that animation explicitly.

 

If you do this, you can filter for DD items, you can filter for Zap items, you can filter for any combination of tags you want, and you aren't troubled by one tag blocking the second.

 

If you look in SLD it does this (from _fwb_gangthreadbase.psc):

Spoiler

Function FindRapeAnimations(Int rapistCount, Bool vaginalAccess, Bool analAccess, Bool oralAccess)

    If rapistCount >= 4
        GetRapeAnimations(targetActor, 4, vaginalAccess, analAccess, oralAccess)
        _fw_utils.Info("FWB animation picker got " + GetAnimationCount() + " animations for FOUR rapists")
        If GetAnimationCount() > 3
            Return
        EndIf
    EndIf
    If rapistCount >= 3
        GetRapeAnimations(targetActor, 3, vaginalAccess, analAccess, oralAccess)
        _fw_utils.Info("FWB animation picker got " + GetAnimationCount() + " animations for THREE+ rapists")
        If GetAnimationCount() > 4
            Return
        EndIf
    EndIf
    If rapistCount >= 2
        GetRapeAnimations(targetActor, 2, vaginalAccess, analAccess, oralAccess)
        _fw_utils.Info("FWB animation picker got " + GetAnimationCount() + " animations for TWO+ rapists")
        If GetAnimationCount() > 8
            Return
        EndIf
    EndIf
    
    GetRapeAnimations(targetActor, 1, vaginalAccess, analAccess, oralAccess)
    
    Int count = GetAnimationCount()
    
    _fw_utils.Info("FWB animation picker got " + count + " animations for ANY number of rapists")
    
    If 0 == count && !vaginalAccess && !analAccess && oralAccess
        _fw_utils.Info("FWB - oral is the only option. Vanilla sexlab has no oral rapes - use consensual instead.")
        FindOrgyAnimations(rapistCount, False, False, True)
    EndIf
        
    
EndFunction

 

Int Function GetRapeAnimations(Actor victim, Int rapistCount, Bool vaginalAccess, Bool analAccess, Bool oralAccess)

     _fw_utils.Info("\n\n----------------------------------------------------------------------------------------")
   ; Oddly for rapes, basic sexlab has no all male rapes, you have to use a female one.
    String rapistString = "MF"
    If 2 == rapistCount
        rapistString = "MMF"
    ElseIf 3 == rapistCount
        rapistString = "MMMF"
    ElseIf 4 == rapistCount
        rapistString = "MMMMF"
    EndIf
    
    Int actorsInScene = rapistCount + 1
    
    _fw_utils.Info("-- GetRapeAnimations for " + actorsInScene + " actors") 


    Int gender = framework.GetGender(victim)
    ; 0 = male, 1 = female, 2 = male creature, 3 = female creature
    
    If vaginalAccess && 1 != gender
        _fw_utils.Info("FWB GangThead - disabled vaginalAccess due to no vagina on victim")
        vaginalAccess = False
    EndIf
    
    ; Alas, tags on SLAL pack anims are minimalist at best, and fail to distinguish anything about most of them.
    ; You can really only get predictable results searching for particular named animations.
    ; It's pretty much only Leito that has anything beyond the most basic tags. Anubs + Billy needed special cases, and most the excludes are for entire FB groups.
    String suppressTags = "bedonly,spooning,loving,amputee,creature,bestiality,bound,femdom,animobject,mnc,uc,furniture,footjob" ; binding and domsub a bit dodgy
    If !vaginalAccess
        suppressTags += ",vaginal,pussy,missionary,vaginalcum,creampie"
    EndIf
    If !analAccess
        suppressTags += ",anal,analcreampie,analcum"
    EndIf
    If !oralAccess
        suppressTags += ",oral,blowjob,69"
    EndIf
    
    _fw_utils.Info("FWB GangThead - GetRapeAnimations - Searching for " + rapistString + " animations with suppresstags: " + suppressTags)
    _fw_utils.Info("FWB GangThead - GetRapeAnimations - Access: vaginal: " + vaginalAccess + ", anal: " + analAccess + ", oral: " + oralAccess)

    If analAccess
        _fw_utils.Info("FWB - GangThread including anal animations for " + rapistCount)
        sslBaseAnimation[] analAggressive = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,penis,aggressive", suppressTags)
        MergeAnimations(analAggressive)
        sslBaseAnimation[] analForced = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,penis,forced", suppressTags)
        MergeAnimations(analForced)
        sslBaseAnimation[] analForcedSlal = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,rape,forced", suppressTags)
        MergeAnimations(analForcedSlal)
        sslBaseAnimation[] analAnubs = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,anubs,aggressive", suppressTags)
        MergeAnimations(analAnubs)
        If rapistCount == 2
            sslBaseAnimation[] analThree = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,threesome,straight", suppressTags)
            MergeAnimations(analThree)
        ElseIf rapistCount > 2
            sslBaseAnimation[] analGang = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,gangbang,straight", suppressTags)
            MergeAnimations(analGang)
        EndIf
    EndIf

    If oralAccess
        _fw_utils.Info("FWB - GangThread including oral animations for " + rapistCount)
        sslBaseAnimation[] oralAggressive = framework.GetAnimationsByTags( actorsInScene, rapistString + ",oral,penis,aggressive", suppressTags)
        MergeAnimations(oralAggressive)
        sslBaseAnimation[] oralForced = framework.GetAnimationsByTags( actorsInScene, rapistString + ",oral,penis,forced", suppressTags)
        MergeAnimations(oralForced)
        sslBaseAnimation[] oralStraight = framework.GetAnimationsByTags( actorsInScene, rapistString + ",oral,straight,aggressive", suppressTags)
        MergeAnimations(oralStraight)
    EndIf

    
    If vaginalAccess
        _fw_utils.Info("FWB - GangThread including vaginal animations for " + rapistCount)
        sslBaseAnimation[] vaginalAggressive = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,penis,aggressive", suppressTags)
        MergeAnimations(vaginalAggressive)
        sslBaseAnimation[] vaginalForced = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,penis,forced", suppressTags)
        MergeAnimations(vaginalForced)
        sslBaseAnimation[] vaginalForcedSlal = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,rape,forced", suppressTags)
        MergeAnimations(vaginalForcedSlal)
        sslBaseAnimation[] vaginalForcedSlal2 = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,straight,aggressive", suppressTags)
        MergeAnimations(vaginalForcedSlal2)
        sslBaseAnimation[] vaginalAnubs = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,anubs,aggressive", suppressTags)
        MergeAnimations(vaginalAnubs)
        If rapistCount == 2
            sslBaseAnimation[] vaginalThree = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,threesome,straight", suppressTags)
            MergeAnimations(vaginalThree)
        ElseIf rapistCount > 2
            sslBaseAnimation[] vaginalGang = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,gangbang,straight", suppressTags)
            MergeAnimations(vaginalGang)
        EndIf
    EndIf

    Int count = GetAnimationCount()

    ; This will usually only fire on the "large rapist counts", by by design, because default 3-ways lack aggressive tags.
    If count < 5 && (vaginalAccess || analAccess)
        _fw_utils.Info("FWB - GangThread - only have " + count + " animations for rape, including consensual doggyStyle tags")
        ; Try less satisfactory keywords if we're desperately short of options.
        
        If analAccess
            sslBaseAnimation[] analDoggy = framework.GetAnimationsByTags( actorsInScene, rapistString + ",anal,penis,doggyStyle", suppressTags)
            MergeAnimations(analDoggy)
        EndIf
        
        If vaginalAccess
            sslBaseAnimation[] vaginalDoggy = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,penis,doggyStyle", suppressTags)
            MergeAnimations(vaginalDoggy)
            sslBaseAnimation[] roughDoggy = framework.GetAnimationsByTags( actorsInScene, rapistString + ",vaginal,straight,doggyStyle,rough", suppressTags)
            MergeAnimations(roughDoggy)
        EndIf

        count = GetAnimationCount()
    EndIf
    
    ;Int ii = count
    ;_fw_utils.Info("FWB GangThread merged " + count + " rape animations for " + rapistString + " with " + rapistCount + " rapists")
    ;_fw_utils.Info("FWB Found " + count + " distinct animations")
    ;While ii
    ;    ii -= 1
    ;    sslBaseAnimation animation = GetAnimationAt(ii)
    ;    _fwb_sexutils.DumpAnimation(ii, animation)
    ;EndWhile
    ;_fw_utils.Info("----------------------------------------------------------------------------------------\n\n")
    
    Return count
    
EndFunction


Function FindOrgyAnimations(Int actorCount, Bool vaginalAccess, Bool analAccess, Bool oralAccess)

    If actorCount >= 4
        GetOrgyAnimations(targetActor, 4, vaginalAccess, analAccess, oralAccess)
        _fw_utils.Info("FWB orgy animation picker got " + GetAnimationCount() + " animations for FOUR partners")
        If GetAnimationCount() > 3
            Return
        EndIf
    EndIf
    If actorCount >= 3
        GetOrgyAnimations(targetActor, 3, vaginalAccess, analAccess, oralAccess)
        _fw_utils.Info("FWB orgy animation picker got " + GetAnimationCount() + " animations for THREE+ partners")
        If GetAnimationCount() > 4
            Return
        EndIf
    EndIf
    If actorCount >= 2
        GetOrgyAnimations(targetActor, 2, vaginalAccess, analAccess, oralAccess)
        _fw_utils.Info("FWB orgy animation picker got " + GetAnimationCount() + " animations for TWO+ partners")
        If GetAnimationCount() > 8
            Return
        EndIf
    EndIf
    
    GetOrgyAnimations(targetActor, 1, vaginalAccess, analAccess, oralAccess)
    _fw_utils.Info("FWB orgy animation picker got " + GetAnimationCount() + " animations for ANY number of partners")
    
EndFunction


Int Function GetOrgyAnimations(Actor victim, Int actorCount, Bool vaginalAccess, Bool analAccess, Bool oralAccess)

    _fw_utils.Info("\n\n----------------------------------------------------------------------------------------")
    String actorString = "MF"
    If 2 == actorCount
        actorString = "MMF"
    ElseIf 3 == actorCount
        actorString = "MMMF"
    ElseIf 4 == actorCount
        actorString = "MMMMF"
    EndIf
    
    Int actorsInScene = actorCount + 1
    
    _fw_utils.Info("-- GetOrgyAnimations for " + actorsInScene + " actors") 

    Int gender = framework.GetGender(victim)
    ; 0 = male, 1 = female, 2 = male creature, 3 = female creature
    
    If vaginalAccess && 1 != gender
        _fw_utils.Info("FWB GangThead - GetOrgyAnimations - disabled vaginalAccess due to no vagina on primary participant")
        vaginalAccess = False
    EndIf
    
    ; Alas, tags on SLAL pack anims are minimalist at best, and fail to distinguish anything about most of them.
    ; You can really only get predictable results searching for particular named animations.
    ; It's pretty much only Leito that has anything beyond the most basic tags. Anubs + Billy needed special cases, and most the excludes are for entire FB groups.
    String suppressTags = "bedonly,amputee,creature,bestiality,bound,femdom,animobject,mnc,uc,furniture,footjob,aggressive,rape,forced,binding,domsub,brutal,guro,necro,foreplay"
    If !vaginalAccess
        suppressTags += ",vaginal,pussy,missionary,vaginalcum,creampie"
    EndIf
    If !analAccess
        suppressTags += ",anal,analcreampie,analcum"
    EndIf
    If !oralAccess
        suppressTags += ",oral,blowjob,69"
    EndIf
    
    _fw_utils.Info("FWB GangThead - GetOrgyAnimations - Searching for " + actorString + " animations with suppresstags: " + suppressTags)
    _fw_utils.Info("FWB GangThead - GetOrgyAnimations - Access: vaginal: " + vaginalAccess + ", anal: " + analAccess + ", oral: " + oralAccess)

    If analAccess
        _fw_utils.Info("FWB - GangThread including anal orgy animations for " + actorString)
        sslBaseAnimation[] anal = framework.GetAnimationsByTags( actorsInScene, actorString + ",anal,penis", suppressTags)
        MergeAnimations(anal)
        sslBaseAnimation[] analStraight = framework.GetAnimationsByTags( actorsInScene, actorString + ",anal,straight", suppressTags)
        MergeAnimations(analStraight)
        sslBaseAnimation[] analGang = framework.GetAnimationsByTags( actorsInScene, actorString + ",anal,gangbang", suppressTags)
        MergeAnimations(analGang)
        sslBaseAnimation[] analAnubs = framework.GetAnimationsByTags( actorsInScene, actorString + ",anal,anubs", suppressTags)
        MergeAnimations(analAnubs)
    EndIf

    If oralAccess
        _fw_utils.Info("FWB - GangThread including oral orgy animations for " + actorCount)
        sslBaseAnimation[] oral = framework.GetAnimationsByTags( actorsInScene, actorString + ",oral,penis", suppressTags)
        MergeAnimations(oral)
        sslBaseAnimation[] oralGang = framework.GetAnimationsByTags( actorsInScene, actorString + ",oral,gangbang", suppressTags)
        MergeAnimations(oralGang)
        sslBaseAnimation[] oralStraight = framework.GetAnimationsByTags( actorsInScene, actorString + ",oral,straight", suppressTags)
        MergeAnimations(oralStraight)
    EndIf

    
    If vaginalAccess
        _fw_utils.Info("FWB - GangThread including vaginal orgy animations for " + actorCount)
        sslBaseAnimation[] vaginal = framework.GetAnimationsByTags( actorsInScene, actorString + ",vaginal,penis", suppressTags)
        MergeAnimations(vaginal)
        sslBaseAnimation[] vaginalGang = framework.GetAnimationsByTags( actorsInScene, actorString + ",vaginal,gangbang", suppressTags)
        MergeAnimations(vaginalGang)
        sslBaseAnimation[] vaginalStraight = framework.GetAnimationsByTags( actorsInScene, actorString + ",vaginal,penis,straight", suppressTags)
        MergeAnimations(vaginalStraight)
        sslBaseAnimation[] vaginalAnubs = framework.GetAnimationsByTags( actorsInScene, actorString + ",vaginal,anubs", suppressTags)
        MergeAnimations(vaginalAnubs)
    EndIf

    Int count = GetAnimationCount()

    ;Int ii = count
    ;_fw_utils.Info("FWB GangThread merged " + count + " orgy animations for " + actorString + " with " + actorCount + " joiners")
    ;_fw_utils.Info("FWB Found " + count + " distinct animations")
    ;While ii
    ;    ii -= 1
    ;    sslBaseAnimation animation = GetAnimationAt(ii)
    ;    _fwb_sexutils.DumpAnimation(ii, animation)
    ;EndWhile
    ;_fw_utils.Info("----------------------------------------------------------------------------------------\n\n")
    
    Return count
    
EndFunction

 

; I tried the SexLab built-in merge functionality, and it's deeply flawed.
; Due to lame Papyrus aversion to zero length arrays, it merges in None entries, potentially several of them.
Function ClearAnimations()
    StorageUtil.StringListClear(storageForm, keyAnimationCandidates)
EndFunction


; Build up a merged animation list (by registry name) in a form list on the target actor.
Function MergeAnimations(sslBaseAnimation[] list)
    Int ii = list.Length
    While ii
        ii -= 1
        sslBaseAnimation animation = list[ii]
        If animation
            StorageUtil.StringListAdd(storageForm, keyAnimationCandidates, animation.Registry, False)
        EndIf
    EndWhile
EndFunction


Int Function GetAnimationCount()
    Return StorageUtil.StringListCount(storageForm, keyAnimationCandidates)
EndFunction
        

sslBaseAnimation Function GetAnimationAt(Int index)
    String registryName = StorageUtil.StringListGet(storageForm, keyAnimationCandidates, index)
    If registryName
        Return framework.GetAnimationByRegistry(registryName)
    Else
        ;_fw_utils.Info("FWB GangThread No animation at index " + index)
        Return None
    EndIf
EndFunction

 

SexLab gives you the tools to do this, but the simplistic quick play mechanism can't do it.

 

Also, as everyone soon discovers, animations are not tagged in a consistent way. The good packs have a lot of tags on each animation, covering all possibilities and providing detailed information, but some packs have hardly any tags at all, so there are just things like "MF Vaginal Penis" or "MMF Aggressive Vaginal", even though the animation itself might include oral and anal sex in some stages.

Posted

thank you for sharing your very clever and unique mod!  if i may make a suggestion?  i think you should consider force greets ( i know this is touchy subject because of the chance of quest breaking).   but i can go forever and My Fan doesnt say anything to my PC.  I would think he would approach my PC, at first a while he wouldnt but slowly increase his approachs along with his requests.   below has a spoiler so only read if you have played through the new content.

 

Spoiler

i like the surprise in bleak falls..  the adventurer, was very clever!  I think you can really go further with the adventurer -- like egging on (pushing or persuade the dragonborn to take more risks and/or sex stuff.  young people think they are invincible so the my female fan adventurer should follow the same line of reasoning.  just a suggestion - you are doing awesome all on your own!  thanks for sharing your work!  

 

Posted
50 minutes ago, macnchz said:

My Fan doesnt say anything to my PC

It does feel wrong that he doesn't approach, but on the other hand, he is so annoyingly present that in the end you will talk to him anyway.

That's his plan!

You don't have to go along with his requests either, but if that's what you want to do, speaking to him on purpose isn't so much trouble.

 

Posted

for some odd reason sebastien is now following me anywhere but he isnt a follower i tried dismissing everyone with the set playerfollowercount thing but he is still following me

Posted
6 hours ago, DSHV said:

Thank you, now I know how to determine the stages of the civil war.

I think only with Cock Worshiper.

  Reveal hidden contents

You can find it in Qasmoke cell.

 

 

When Windhelm is controlled by the Imperials you can't start the Stormcloak questline. That is the idea..

Is it possible to disable your stormcloak quest line and the NPCs in the mcm?

And are slaves just decoration? Most of them have no dialogue or interaction with player or other NPCs. Will there be an dialogue/interaction in the future?

Posted

LE version issue:
Neetrenaza from apologize argonians quest doesn't undress during the animations. All options in SexLab flagged for undress males/agressors in animations.

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...