Jump to content

SexLab - Auto Vanilla Voices


Guest

Recommended Posts

Posted
View File

Introduction:

 

This simple mod will make the game automatically choose the correct SexLab voice type for an NPC when its SexLab animation is starting. The choices are from the mod SexLab Vanilla Voices.

 

Installation:

 

Just drop the contents into the Data folder or use a mod manager to install it. Load order doesn't matter, but make sure you've SexLab Vanilla Voices.

Don't forget to enable "NPCs Reuse Voice".

 

Uninstallation:

 

  1. Open the console and type "stopquest SLAutoVanillaVoicesConfigQuest" without the quotes.
  2. Save your game.
  3. Remove the following files from your Data folder: Sexlab - Auto Vanilla Voices.esp, seq\Sexlab - Auto Vanilla Voices.seq, scripts\SLAutoVanillaVoicesMCM.pex, scripts\SLAutoVanillaVoicesScript.pex, scripts\source\SLAutoVanillaVoicesMCM.psc and scripts\source\SLAutoVanillaVoicesScript.psc, or remove it with your mod manager.

 

Known Issues:

 

SexLab Vanilla Voices doesn't contain voices for all vanilla voice types. As such, it will return to the original behavior of SexLab and assign a random voice to an NPC using a voice type that isn't covered. An example is Delphine.

Nothing I can do, unless someone wants to continue SexLab Vanilla Voices and add SexLab voices for all vanilla voice types.


  • Submitter
  • Submitted
    01/31/2019
  • Category
  • Requires
    Sex Animation Framework v1.62 or higher, SexLab Vanilla Voices 2.8 or higher
  • Special Edition Compatible
    Yes

View File

 

Posted
7 hours ago, Lilzt3hcat said:

Can't believe someone didn't do something like this earlier, thank you!

There actually was, while back even, just buried in the topic for main mod.

However this mod handles it w/o SL script edits and has MCM.

Posted

Ok, quick questions:

 

1. Does this change the player's voice too? (I hope not)

 

2. Can I manually override what this mod has set? I mean - if it sets a voice, can I go to SSL settings and pick another one, without this mod overwriting it again?

 

Thanks for any info.

Posted
4 hours ago, Erundil said:

Ok, quick questions:

 

1. Does this change the player's voice too? (I hope not)

 

2. Can I manually override what this mod has set? I mean - if it sets a voice, can I go to SSL settings and pick another one, without this mod overwriting it again?

 

Thanks for any info.

 

1)

if (a != None && a != PlayerRef) ; We don't need to do this on the player.

 

2) The voices are always applied at the starting of an animation (only for the NPCs in that animation). You can override after that, but it will be reapplied when another animation is starting. It does only force voices into NPCs that match a voice type, if you have a custom NPC with a custom voice type or a vanilla NPC with an unique voice type that isn't covered by SexLab Vanilla Voices, the mod will do nothing and any voice set SexLab assigned or you did, will be respected.

Posted

ad. 1: Great.

ad. 2: Ok, got it. It would be ideal to apply voices to npcs before SexLab does, and only apply to those that don't have anything assigned yet. Not sure if that's possible though, scripting-wise.

 

Thanks for the info.

Posted
2 hours ago, Erundil said:

ad. 2: Ok, got it. It would be ideal to apply voices to npcs before SexLab does, and only apply to those that don't have anything assigned yet. Not sure if that's possible though, scripting-wise.

No. One of the reasons I've developed this mod was to reset the voice types on a bunch of NPCs SexLab assigned in the past which I didn't know which voice types they were using at the time.

 

I see no reason why a voice type that is available in SexLab Vanilla Voices should be overridden with another voice that will mismatch the NPC. I'm not implementing that.

 

You can however change it yourself on SLAutoVanillaVoicesScript.psc -> SetVanillasVoices member function.

 

if (SexLab.GetSavedVoice(a) == None)

...

endif

Posted

Great. I admire people who share the source code and explain it. No better way to learn scripts. Thanks.

Anyway, I'll try it later - at the moment I'm trying to make it work at all. It seems to assign random voices for me >_<

Not gonna blame the mod, might be my heavy load order :)

Posted

The mod should work as long as SexLab Vanilla Voices 2.8 is installed. The voice sets don't even need to be enabled, just registered in SexLab.

If you just installed it, try resetting SexLab voice registry.

 

Also, did you enable it in the MCM? The mod starts out disabled by default.

  • 1 month later...
Posted

Does anybody know why, in Vanilla Voices (not Auto) when set to random the female voice always always defaults to Vex??? I have to manually configure practically every chick in the game beforehand to ensure they don't use her voice set. I like the idea of this mod! It's just it overwrites my preferred voice type for certain chicks once I set them and check reuse...

  • 2 weeks later...
Posted
On 3/24/2019 at 2:48 PM, jpee1965 said:

Does anybody know why, in Vanilla Voices (not Auto) when set to random the female voice always always defaults to Vex??? I have to manually configure practically every chick in the game beforehand to ensure they don't use her voice set. I like the idea of this mod! It's just it overwrites my preferred voice type for certain chicks once I set them and check reuse...

I noticed even before this mod (just default sl) that there's a few voices (for males 'dovakin seems to be picked probably 90%) that would crop up constantly rather than it being properly random. (at-least this mod fixes that with npcs it can find a voice for)

Posted
47 minutes ago, Lilzt3hcat said:

I noticed even before this mod (just default sl) that there's a few voices (for males 'dovakin seems to be picked probably 90%) that would crop up constantly rather than it being properly random. (at-least this mod fixes that with npcs it can find a voice for)

It's because of how the function is set:

 

sslBaseVoice function PickGender(int Gender = 1)
	; Get list of valid voices
	bool[] Valid = Utility.CreateBoolArray(Slotted)
	int i = Slotted
	while i
		i -= 1
		sslBaseVoice Slot = GetBySlot(i)
		Valid[i] = Slot.Enabled && !Slot.Creature && (Gender == Slot.Gender || Slot.Gender == -1)
	endwhile
	; Select a random true in the list
	i = Utility.RandomInt(0, (Slotted - 1))
	int Slot = Valid.Find(true, i)
	if Slot == -1
		Slot = Valid.RFind(true, i)
	endIf
	return GetbySlot(Slot)
endFunction

This isn't a proper random algorithm.

 

For instance:

 

If you've 20 voice sets, but only voice set 1 and voice set 20 are valid for this NPC, it has a much greater chance of landing on voice set 20 than voice set 1 because if "i = Utility.RandomInt(0, (Slotted - 1))" is not 0, it automatically picks voice set 20 every time.

 

This is a design flaw within SexLab, which cannot be fixed without recompiling sslVoiceSlots.psc.

The best you can do without recompiling SexLab's scripts is to register for "AnimationStarting" and set new, properly randomized voices overriding SexLab's, same approach as this mod.

You will have trouble however if you don't have "Remember NPC voices" as a bunch of SexLab functions call PickVoice/GetVoice directly.

 

EDIT:

 

Here is a proper function, if you want to recompile:

 

sslBaseVoice function PickGender(int Gender = 1)
	; Get list of valid voices
	int[] Valid = Utility.CreateIntArray(Slotted)
  
	sslBaseVoice Slot
  
	int i = Slotted
	int j = 0

	while i
		i -= 1
		Slot = GetBySlot(i)
        
		if (Slot.Enabled && !Slot.Creature && (Gender == Slot.Gender || Slot.Gender == -1))
			Valid[j] = i
			j += 1
		endif
	endwhile

	i = Utility.RandomInt(0, (j - 1))
    
	return GetbySlot(Valid[i])
endFunction

 

Posted
On 4/7/2019 at 1:11 AM, Hawk9969 said:

It's because of how the function is set:

 


sslBaseVoice function PickGender(int Gender = 1)
	; Get list of valid voices
	bool[] Valid = Utility.CreateBoolArray(Slotted)
	int i = Slotted
	while i
		i -= 1
		sslBaseVoice Slot = GetBySlot(i)
		Valid[i] = Slot.Enabled && !Slot.Creature && (Gender == Slot.Gender || Slot.Gender == -1)
	endwhile
	; Select a random true in the list
	i = Utility.RandomInt(0, (Slotted - 1))
	int Slot = Valid.Find(true, i)
	if Slot == -1
		Slot = Valid.RFind(true, i)
	endIf
	return GetbySlot(Slot)
endFunction

This isn't a proper random algorithm.

 

For instance:

 

If you've 20 voice sets, but only voice set 1 and voice set 20 are valid for this NPC, it has a much greater chance of landing on voice set 20 than voice set 1 because if "i = Utility.RandomInt(0, (Slotted - 1))" is not 0, it automatically picks voice set 20 every time.

 

This is a design flaw within SexLab, which cannot be fixed without recompiling sslVoiceSlots.psc.

The best you can do without recompiling SexLab's scripts is to register for "AnimationStarting" and set new, properly randomized voices overriding SexLab's, same approach as this mod.

You will have trouble however if you don't have "Remember NPC voices" as a bunch of SexLab functions call PickVoice/GetVoice directly.

 

EDIT:

 

Here is a proper function, if you want to recompile:

 


sslBaseVoice function PickGender(int Gender = 1)
	; Get list of valid voices
	int[] Valid = Utility.CreateIntArray(Slotted)
  
	sslBaseVoice Slot
  
	int i = Slotted
	int j = 0

	while i
		i -= 1
		Slot = GetBySlot(i)
        
		if (Slot.Enabled && !Slot.Creature && (Gender == Slot.Gender || Slot.Gender == -1))
			Valid[j] = i
			j += 1
		endif
	endwhile

	i = Utility.RandomInt(0, (j - 1))
    
	return GetbySlot(Valid[i])
endFunction

 

That's awesome! Except it's completely beyond me to implement LOL!

  • 3 weeks later...
Posted

This is excellent, thank you.

 

Is there anyway to install SL Voices twice (Vanilla/Euphoric and then Rape) with different  mod names and then have this mod detect aggressive sex and use Rape voices and with the other set of voices with consensual sex?

 

That would be amazing!

Posted
3 hours ago, Sydney said:

This is excellent, thank you.

 

Is there anyway to install SL Voices twice (Vanilla/Euphoric and then Rape) with different  mod names and then have this mod detect aggressive sex and use Rape voices and with the other set of voices with consensual sex?

 

That would be amazing!

Yes, but it's a lot of work and I don't have a GPU to test it anyway.

You also want to use a xEdit script to make it quicker and less error prone.

  1. Change the name of the WAV files to something that easily identify them, such as 001_rape.wav and copy them over (use a batch script to speed it up).
  2. Merge the entries from the other vanilla voices ESPs by using different names and IDs. Also make sure the script renames them to their new names.
  3. Recompile sslVanillaVoicesFactory.psc with the new voice sets.
  4. Open Sexlab - Auto Vanilla Voices.esp in xEdit and add the new voice registrars as a new array property. You should probably use a xEdit script to copy the original ones and then make it rename them.
  5. Edit SLAutoVanillaVoicesScript.psc and recompile it.
string[] property MaleRapeVoiceNames   auto ; This should match the property array you just added to the ESP.
string[] property FemaleRapeVoiceNames auto ; This should match the property array you just added to the ESP.

sslThreadController slScene ; This should now be global so we can check if the actor is a victim.

string Function GetVoiceName(Actor target, bool isFemale = false)
    VoiceType vType = target.GetVoiceType()

    VoiceType[] voiceTypes
    string[]    voiceNames

    if (isFemale)
        voiceTypes = FemaleVoiceTypes

        if (slScene.IsVictim(target))
            voiceNames = FemaleRapeVoiceNames
        else
            voiceNames = FemaleVoiceNames
        endif
    else
        voiceTypes = MaleVoiceTypes

        if (slScene.IsVictim(target))
            voiceNames = MaleRapeVoiceNames
        else
            voiceNames = MaleVoiceNames
        endif
    endif

    int voiceIndex = voiceTypes.Find(vType)

    if (voiceIndex < 0)
        return ""
    endif

    return voiceNames[voiceIndex]
EndFunction

 

  • 4 weeks later...
  • 2 weeks later...
Posted
On 5/23/2019 at 1:50 PM, Lodakai said:

@hawk9969 this is great!  can you do an SE port?

Just run the ESP through SSE's Creation Kit?

 

There is nothing in this mod that requires to be ported to SSE.

Posted

Ahhh thanks Indeed I self ported and it works fine Thanks!

 

Also:

On 4/26/2019 at 3:56 PM, Sydney said:

This is excellent, thank you.

 

Is there anyway to install SL Voices twice (Vanilla/Euphoric and then Rape) with different  mod names and then have this mod detect aggressive sex and use Rape voices and with the other set of voices with consensual sex?

 

That would be amazing!

I think this is already easily done with Sexlab.    Consentual sex is the Mild folders.... Aggressive is medium...   Hot is for ending toward orgasm for both.  With SLSO you can also adjust the range at where hot voices kick in.  You can add and edit voice files in SL Vanilla voices in the sound descriptor section.   I already have a bunch of voice files set up for all the base vanilla voices.   If anyone is interested in any of them... send me a message.   There's quite a few I have yet to flesh out...   but overall I typically use 15 voice files or more for each category.

 

This is why I really like this mod so much... I've spent all this time expanding on those voices.. it was a real pain self assigning each one.  Thanks again hawk9969

  • 1 year later...
Posted

Will it work for followers that use vanilla voices my dood?

  • 3 months later...
Posted
On 11/9/2020 at 9:59 AM, JohnsonDingleheimer said:

Can someone upload the SSE-converted ESP of this somewhere please?

Bump. Doesn't seem to work for SE. And its a good mod.

  • 2 months later...
Posted
On 3/8/2021 at 3:56 PM, Durante said:

Bump. Doesn't seem to work for SE. And its a good mod.

 

Is it difficult to convert this mod to SSE ourselves?

  • 9 months later...

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