Jump to content

About This File

This is an alpha version of a framework for modders and players to simulate or roleplay player character corruption, loss of willpower, slave training, etc. It does not do anything by itself except track some numbers. Players need to interpret these numbers to guide their roleplay or modders need to

 

It is very similar to an earlier mod I posted. I ended up removing features from that mod and completely rewriting everything in order to make the framework function better, so I decided to leave the other mod up separately for people who prefer that one.

 

How it works

 

Major Attributes - Tracked and defined by the framework

 

The PC has 6 major attributes: Pleasure and Pain (if the PC is physically feeling good or bad), Satisfaction and Despair (if the PC is mentally feeling good or bad), Pride and Shame (if the PC is morally feeling good or bad). These can be increased when the PC experiences things they find pleasurable or painful, enjoyable or not, etc.

 

Minor Attributes - Tracked by the framework, defined by mod authors

 

Other mods or players via the MCM menu can create their own "minor attributes", and define how experiencing events with those minor attributes affects the major attributes. Mods send events tagged with these minor attributes and an intensity value. The framework tracks the sum of all the intensities received in each minor attribute that day. Each minor attribute has a sensitivity and a threshold for each major attribute. Pleasure, Satisfaction, and Pride only increase if the total amount experienced so far is below the threshold (there is a limit on how enjoyable things are), while Pain, Despair, and Shame only increase if the total experience so far is above the threshold (so the player has some tolerance before a certain kind of event starts bothering her).

 

Training - How players respond to events changes overtime, in a way that mod authors can customize

 

When the player sleeps, the accumulated value for all minor attributes are reset, and depending on the values of the major attributes, the minor attributes can update their sensitivities and thresholds. The rules by which these are updated are in an extendable papyrus script, so mod authors can determine their own rules for how these should update. There is also a default implementation in case mod authors don't want to think too much about it.

 

So for example, a mod like Submissive Lola could register a "Disappoint Master" attribute. When the slave disobeys an order and the shock collar triggers, an event registering pain can be sent to the framework. The mod author could decide that, if enough Pain and "Disappoint Master" points accumulated through the day, the "Despair" sensitivity for "Disappoint Master" should increase. In this way, disappointing the master NPC could start causing mental pain even if there is no physical punishment, and in this way the mod can simulate "training".

 

Or they could be much more general. For example devious followers could implement a "Humiliation" attribute, and decide that if enough pleasure and humiliation points accumulate at the end of the day, the player will start enjoying humiliation, and so the satisfaction sensitivity and threshold should increase.

 

Default Training behavior- What is built in

 

The framework tracks "vaginal sex", "anal sex", and "blowjob" out of the box. It will recognize when matching sexlab events occur. Threshold and sensitivities can be changed in the MCM. Going over the pain threshold for these events will gradually increase both the pain and pleasure thresholds. (So at first anal sex might mostly cause the player pain, but over time the threshold increases and the player can handle more and more). Experiencing a lot of pleasure can cause satisfaction sensitivity to increase for these events - so if the PC experiences too much pleasure and anal sex in the same day, they will start to enjoy anal sex, even if they dislike it initially.

 

I plan to add more stuff that's tracked by default.

 

Players can define their own attributes

 

Maybe you are playing a mod which doesn't support this framework, which is all of them currently, but for example the Devious Cidhna pirate quest. In the MCM, you can define your own "pirate slave" attribute. There is a toggle to make your attribute trigger on every SL scene, which you can turn on while you are on the pirate ship. You can define in the MCM if the PC dislikes it (despair) and finds it morally wrong (shame). Stay there too long and your PC might start to enjoy being the pirate's slave (satisfaction). It's up to you to decide how to roleplay the scenario if that happens.

 

 

Willpower checks for dialogue conditions

 

The mod also implements a willpower mechanic. Mod authors can tell the framework what will happen to a player if a certain choice is made (or what the player is being offered/threatened with). The framework checks how much pleasure/pain/satisfaction/...etc could result, and checks whether the player's willpower exceeds that amount. The result of that check is stored in a conditional variable on a conditional quest script, meaning mods can use the result as a dialogue condition.

 

For example, Submissive Lola could tell the framework "if the player refuses this order, they will get 100 disappoint master points". If the amount of despair generated by that would exceed the PC's willpower, the mod author could remove the PC's ability to refuse some command.

 

 

 

Info for mod authors:

 

Basic stuff:

 

Make a mbtfw_scr property to the mbtfw_main quest. This gives you:

 

1. Access to all major attributes as float properties on the quest

2. receive_pleasure, receive_pain, ...etc functions to directly increase major attribute values.

3. receive_event: Use this function to tell the framework something happened, for example receive_event("Humiliation", 10) if you have a "humiliation" attribute and something humiliating happened to the PC.

4. register: Use this function to register a new attribute. For example, register("Angrim's Apprentice"). This will return a mbtfw_registryAliasScr object, on which you can directly set different sensitivities and thresholds.

 

Dialogue conditions:

 

Use the mbtfw_quest_interface quest and associated script. In a papyrus script that runs at the start of the info just before the dialogue branch you want to control, call the clear_query method, followed by the "push_event_by_name" method to describe what the player is being promised or threatened with. The "failure" conditional variable on this quest then can be used to control your dialogue flow.

 

Or if you would rather not use a binary "willpower saving throw" type result, this quest also has conditional variables available for all major attributes, although they may not be updated unless you call the update_values() function.

 

Advanced Stuff:

 

The minor attributes are tracked in an array which is stored as a property on mbtfw_registry. If you extend mbtfw_registryAliasScr, you can define your own behavior for your own attribute. As long as you insert your custom object into the list on mbtfw_registry, the framework will call your objects "train" method. Right now this can only be done by manually inserting them in this array, I will add a better way to do this in the future.

 

 

For dependency free usage:

 

This mod listens for mod event "mbtfw_simple_event" which you can send with SendModEvent. strArg should be the name of your event, numArg should be the intensity with which your event is received. The framework will track your attribute but currently relies on the player to set up the sensitivities and thresholds in the MCM, so the dependency free implementation needs to be improved a lot.

 

 


×
×
  • 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