Jump to content

YPS Thought Framework with Voiceovers (YTF)


Recommended Posts

YPS Thought Framework with Voiceovers (YTF)

View File

YPS Thought Framework with Voiceovers (YTF)

 


YTF is a framework mod featuring "thoughts" that appear as notifications and (optionally) as voice-overs.

Works for both LE and SE.

 

The following conditions may trigger "player thoughts":

  • LocationTypes
  • Certain player conditions: flying, incombat, onmount, running, sneaking, sprinting, tresspassing, weapondrawn, swimming, sitting, hasnogold, hasfollower, etc...
  • (worn) armor keywords
  • Papyrus (StorageUtil) variables set by modders
  • any combination of the above conditions, linked with the operator & ("and"), | ("or"), or negated with the operator !

 

Fully customizable by the user simply by editing some text files.

Voice-overs can be added/changed/removed simply by dropping the wav files into a folder and editing one text file.

 

This is a modders' resource.

 

Players don't have to download anything here. They may read the FAQ and install one of the mods that include YTF (see list below).

 

 

Instructions for Modders

First read the FAQ for players below to understand how it works.

 

The easy way:

Set some storageutil values in your mod. The script command is:

StorageUtil.SetIntValue(None, "<papyrusvaluename>", 1)

and the same command with 0 to turn it off.

Then add the corresponding thoughts to the thought database (and optionally add sounds). Done!

 

(You will need to install another mod that includes YTF to make this work, e.g. YPS.)

 

You can name the storageutil variables just as you like (its recommended to have them start with an acronym of your mod).

 

You can also temporarily disable thoughts with the script command StorageUtil.SetIntValue(None, "ytfThoughtsDisabled",1)

This is meant for cut-scenes etc.; don’t forget to reset the variable to 0 once the cut-scene has finished.

 

The complex way:

To use more advanced features of the thoughts system for your mod, download the script ypsThoughts.psc, rename it and attach it to a quest of your mod. Make any necessary changes (you might want to change the json file path names in the first lines). Autofill all properties. Then make a script in your main mod call the function Playthought() at the desired frequency. It is advised to add an MCM option to turn the thought system on/off, and to set the frequency.

 

Another feature is to directly call the function playthoughtchoice(), to play a specific thought. This can for example be used to add voiceovers to quest journal entries.
 

It is recommended each mod has its own thought conditions file (e.g. ypsThought_conditions.json) and thought database (e.g. ypsThought_male_database.json)

 

To use sounds: If you want to use a reasonable number of sounds for your mod (up to a few thousand), it is recommended to channel them through the existing ypssounds.esp.

I can reserve a sound range in the file for you.

If you need an extremely high number of thought sounds (>10000), please send me a PM, and we will work something out.

 

 

FAQ for Players

Q: What is the YPS Thought Framework (YTF)?
A: The Player Thought System will from time to time show certain “thoughts” depending on conditions defined in a configuration file. The purpose is to add more immersion to the game. It can also be used to simulate aspects of mind control.

 

Q: Do I need to install the YTF framework?

No. It is sufficient to install one single mod that includes YTF (see list below). This will allow you to configure "thoughts" for any mod you have installed (not just the mod that has YTF included).

You can install multiple mods supporting YTF - modders will take care that they won't conflict each other.

The files in the download section here are for modders only.

 

Q: Which conditions are available?
A: The system may react to general player conditions (running, swimming, fighting…), location types (city, dungeon, wilderness…), keywords (of items currently worn), and StorageUtil variables set by a mod.

 

Q: The system is a nice idea, but the thoughts do not match my playing style.
A: You may configure your own thoughts. Open the file \SKSE\Plugins\ypsThoughts\ypsThought_(fe)male_database.json, where you can change, add or remove thoughts just as you like. There are two files, one for male and one for female characters. You are encouraged to share your “thoughts” with the community. Every small contribution helps.

But when editing the json files, remember to make backups of your modifications, as they might get overwritten when updating the mod.

 

Q: How is determined, which thought is played?
A: The thought system mod will go through all conditions defined in the file \SKSE\Plugins\ypsThoughts\ypsThought_conditions.json, then pick a random condition that is currently true, and finally play a random thought from the thought database.

 

Q: Can I change the frequency of a single thought?
A: The mods you use should have a slider in MCM affecting the frequency of thoughts in general. To change the frequency of a single specific thought, you can repeat the same thought string several times and/or add empty thoughts “” to the thought database.

 

Q: How to use the StorageUtil variables?
A: They are found in the section “papyrusvalues”. These variables can be set by modders. There are over 100 papyrus values predefined by YPS, matching certain YPS conditions. You can also add papyrus values from other mods.

 

Q: What are the location conditions?
A: These conditions begin with “LocType” and match any location type in vanilla Skyrim. Here is a full list:

Spoiler

AnimalDen
BanditCamp
Barracks
Castle
Cemetery
City
Clearable
DragonLair
DragonPriestLair
DraugrCrypt
Dungeon
DwarvenAutomatons
Dwelling
FalmerHive
Farm
ForswornCamp
GiantCamp
Guild
Habitation
HabitationHasInn
HagravenNest
Hold
HoldCapital
HoldMajor
HoldMinor
House
Inn
Jail
LumberMill
MilitaryCamp
MilitaryFort
Mine
OrcStronghold
PlayerHouse
Settlement
Ship
Shipwreck
SprigganGrove
StewardsDwelling
Store
Temple
Town
VampireLair
WarlockLair
WerebearLair
WerewolfLair

Furthermore, the thoughts system accepts the “LocTypeWilderness”, which does not have to appear in the list.

 

Q: What general player conditions are available?
A: These conditions begin with a $ sign. Currently available are:

Spoiler

$isflying
$isincombat
$isonmount
$isrunning
$issneaking
$issprinting
$istrespassing
$isweapondrawn
$isswimming
$issitting
$hasnogold
$hasfollower
$isoverencumbered


These are hard-coded.

 

Q: What about item keywords?
A: These keywords begin with the # sign and will be valid, if the player is currently wearing an item with the keyword. You may add as many additional item keywords to the list as you like. You can use item keywords from any mod you have installed, not just vanilla Skyrim and YPS.

 

Q: What about the “thoughtconditions”?
A: This is a powerful advanced feature. You may take any number of conditions (StorageUtil, Location, Player conditions, Item keywords) and combine them with the operators “&” (“and”) as well as “|” (“or”); each condition may also be prefixed with the operator “!” (“not”). Brackets are not allowed. The thought will then only be played if the logical combination is met.

For example: Thoughts with the condition "loctypedungeon&$isoverencumbered&!$isincombat" may be played if (1) the player is in a dungeon and (2) is overencumbered and (3) is currently not in battle.

The conditions used here do not have to appear in the above conditions list. Note that you have to define corresponding thoughts for the whole combination in the thought database.


Q: What is the hierarchy of these logical operators?
A: The "!" operator is linked directly to the following single condition. The “|” operator has higher priority than the “&” operator. For example, the condition items: !A&B|!C&D are evaluated as (NOT A) AND ( B OR NOT C ) AND D.

 

Q: Player characters have totally different things in mind when in battle. How is this reflected?

A: During combat only thoughts with the condition "$isincombat" will be shown (including complex "thought conditions" beginning with "$isincombat&...")

 

Q: Now I added a lot of my own thoughts to the thought database, but the thoughts aren't showing up at all.
A: Be aware of the json syntax. It is very easy to miss a bracket or to add an unneeded comma. I recommend using a json syntax checker like https://jsonlint.com/ . Furthermore, all conditions listed in the thought database must be written in lower case characters.

 

Q: Can I add more voice-overs?

A: Definitely! Adding your own voice overs is as easy as follows:

  • Record the voice to a wav file, give it a 5 digit name with leading zeroes (e.g. 01737.wav). (If you care: Sound quality should be PCM516 LE 48 kHz, 16 Bit, Mono. Other sound qualities might also work, just try.)
  • Place it into the folder data\Sound\fx\ypsSounds (use new numbers for new sounds)
  • Add the number in square brackets (e.g. "[01737]") to the corresponding thought in the thought database json. Done!

Currently the limit is at 32767 voices. Sounds number 00001-05999 may be used freely for female thoughts. 06000-08999 should be used for male thoughts; 09000-10000 are reserved for YPS internal use. 10001-32767 are reserved for future uses.

The order of the numbers does not matter, but better avoid making it too messy.

You are very much encouraged to share your "thoughts" and/or voice-overs with the community.


 

Mods that include YTF:

 

Disclaimer:

- may only be used in conjunction with other mods if they are all legal in your region or country
- may not be posted or reposted without permission on a website other than LL (or a dedicated successor site)
- may only be distributed free of charge
- you may modify and use the contents of this mod for your own mod, as long as you give proper credit, and distribute your mod for free

 


 

Link to comment

Enjoying this a lot, as I was able to get the keywords from Devious Devices to work. Would definitely love if someone integrated SLAX (arousal, exposure, timerate, days since last orgasm, frustration, masochism, babo keywords) and Sexlab (skills, addictions), but its sadly outside my own skill level.

Link to comment
Posted (edited)
10 hours ago, slicksly said:

Enjoying this a lot, as I was able to get the keywords from Devious Devices to work. Would definitely love if someone integrated SLAX (arousal, exposure, timerate, days since last orgasm, frustration, masochism, babo keywords) and Sexlab (skills, addictions), but its sadly outside my own skill level.

Thank you for the feedback. You are welcome to share your "thoughts" and keywords here.

I'm considering to add some yps conditions checking the SAR arousal levels, so you could create matching thoughts.

But I want to keep this framework itself to be non adult.

Edited by emily1673
Link to comment
  • 2 weeks later...

Looks very interesting.

 

On 4/11/2024 at 6:10 AM, emily1673 said:

I'm considering to add some yps conditions checking the SAR arousal levels, so you could create matching thoughts.

But I want to keep this framework itself to be non adult.

Conditions like pregnancy would be great as well. Some players use non adult means to play Fertility Mode+.

It could add a lot too to certain spells from the alteration school, etc.

.

 

Maybe it is too big of a leap, but $hasfollower seems too non-descriptive. Would there be any ways to add extra descriptors to that. So for example $hasmaleargonianfollower for only male argonian followers. Or perhaps even link it to a particular npc.

 

Even more advanced could be a timer on certain events, so there's a ~40 second window where such a thought would have priority.

Events like; beating a dragon, meeting a particular kind of npc (maybe smelly or smth), clearing a dungeon, sexlab event, etc. But maybe this is a lot of work ^^

Link to comment
2 hours ago, hompie said:

Looks very interesting.

 

Conditions like pregnancy would be great as well. Some players use non adult means to play Fertility Mode+.

It could add a lot too to certain spells from the alteration school, etc.

.

 

Maybe it is too big of a leap, but $hasfollower seems too non-descriptive. Would there be any ways to add extra descriptors to that. So for example $hasmaleargonianfollower for only male argonian followers. Or perhaps even link it to a particular npc.

 

Even more advanced could be a timer on certain events, so there's a ~40 second window where such a thought would have priority.

Events like; beating a dragon, meeting a particular kind of npc (maybe smelly or smth), clearing a dungeon, sexlab event, etc. But maybe this is a lot of work ^^

The framework is able to do all these things. Just need somebody to write the mod(s), setting some corresponding papyrus variables. :)

I try to keep this framework as simple as possible. Some more general new things will be added to the framework, some more special things need to be added to the mods (YPS in this case).

What "spells from the alteration school" did you have in mind?

Link to comment
17 hours ago, emily1673 said:

The framework is able to do all these things. Just need somebody to write the mod(s), setting some corresponding papyrus variables. :)

I try to keep this framework as simple as possible. Some more general new things will be added to the framework, some more special things need to be added to the mods (YPS in this case).

What "spells from the alteration school" did you have in mind?

Ah yes, through the thoughtsconditions feature. Unfortunately I lack experience creating mods to try and implement this myself. I could try though.

 

I was thinking spells like Oakflesh perhaps, which would work well with mods that enhace the visual effect. Some thoughts of how turning your skin to a wooden texture would feel, or perhaps the player character would compare themselves to a spriggan or whatever.

Edited by hompie
Link to comment

wondering if a triggered thought might in turn be made to trigger an event.

 

I recognize that's outside the scope and intent of the present framework. Just wondering if it's possible because of the interesting potential applications.

Link to comment

Just posted an update:

  • to reflect that characters are focusing on different things when being in combat, during combat only thoughts with the condition "$isincombat" will be shown (this includes complex "thought conditions" beginning with "$isincombat&...")
  • when a dialogue window is open, no player thoughts will be played
  • modders can temporarily disable thoughts with the script command StorageUtil.SetIntValue(None, "ytfThoughtsDisabled",1) (this is meant for cut-scenes etc.; don’t forget to reset the variable to 0 once the cut-scene has finished)

Will be included into the next YPS version.

Link to comment
On 4/25/2024 at 8:16 PM, ArgyleSmith said:

wondering if a triggered thought might in turn be made to trigger an event.

 

I recognize that's outside the scope and intent of the present framework. Just wondering if it's possible because of the interesting potential applications.

It's technically quite easy to let the system trigger events. Just need some small changes to the script.

For example, what kind of trigger did you have in mind?

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