Jump to content

Simple Buyable Slave Framework (Diary of Mine)


Recommended Posts

Posted

Simple Buyable Slave Framework (Diary of Mine)

View File

Adds a dialogue option to some NPCs to buy them from their owner, and set then as a DoM slave.

By default, only NPCs from Hydra Slavegirls are added, if you want more, you need to edit the SPID (_DISTR.ini) file.
 

3 Categories :
Cheap (1000 gold)

Normal (2000 gold)

Expensive (4000 gold)

Requires:
SPID

Diary of Mine

(Soft Requirement) Hydra Slavegirls

(For Hydra) Due to how messy Hydra factions are, it is difficult to make all the proper NPCs buyable, and at the correct price.

It should be fairly straightforward to add more, and I'm very open to suggestions on which NPCs should be added to be buyable, whether vanilla or mods.

 


  • Submitter
  • Submitted
    07/25/26
  • Category
  • Requirements
    SPID, DiaryOfMine, Hydra Slavegirls
  • Regular Edition Compatible
  • Install Instructions

 

Posted

I unfortunately don't have the time to fiddle with this at the moment.

 

And I have very little experience with SPID, so I might ask a few other Q's when the time comes.

 

Do the buyable slaves have to have a master?

Do they have to be in the Zaz slave faction?

Do they come with randomized starting PaH/DoM stats? @a_random_user might be able to help with that if they are not. Can be the more expensive ones come out very well-trained vs the freshly untrained cheap ones.

 

A while back, I fiddled with SES2 Slaverun, patched up Crowded Streets so it only spawns specific female hotties like Immersive Wenches or EVW4 and then made a SPID file for SES2 so these daily randomly generated NPCs become enslaved, slave-ifying up the towns like a custom Slaverun Reloaded to my liking.

 

Could be a fun addition on that experiment to then make these slaves buyable off the street with this mod if all goes to plan when I come back to modding Skyrim again.

 

I'll bet @TrollAutokill would love to maybe fiddle that with that Leash Framework too so that if a master is needed, they can be leashed to them.

 

Player enslaver Skyrim mods certainly has boomed recently and it's amazing.

 

Posted

The mod itself only cares whether the NPC is in the buyable faction. It doesnt check anything more than that, including existing masters.

 

The ZaZ_slavefaction is a bit too broad in my opinion, the mod (by default) doesn't check that. It checks some specific factions in Hydra. The beauty of SPID is that you can add anything you want to that filter, like the ZaZ_slavefaction, or a specific NPCs by their name (there's examples in the .ini file)

 

If the NPC does not have a specific personality file in DoM, its stats will be randomized, yeah. That can be a good idea to make the training depend on the price, not sure how though.

Posted (edited)
4 hours ago, Yawata00 said:

The mod itself only cares whether the NPC is in the buyable faction. It doesnt check anything more than that, including existing masters.

 

The ZaZ_slavefaction is a bit too broad in my opinion, the mod (by default) doesn't check that. It checks some specific factions in Hydra. The beauty of SPID is that you can add anything you want to that filter, like the ZaZ_slavefaction, or a specific NPCs by their name (there's examples in the .ini file)

 

If the NPC does not have a specific personality file in DoM, its stats will be randomized, yeah. That can be a good idea to make the training depend on the price, not sure how though.

You need to use the DOM_API for that.

 

To get the NPC personality:

 

DOM_API DomApi

DomApi= Quest.GetQuest("DOM01") as DOM_API

DOM_Core DOM01 = DomApi.DOM

DOM_Generator DOMGenerator = DOM01.DOMGenerator

DOMGenerator.GetNPCTraits(akTarget)

 

Add some training:

 

float baseAmount = 70.0

DOM_Actor slave = DomApi.GetDOMActor(akTarget)

DomApi.TrainSubmission(slave, baseAmount)

...

 

And get their price:

 

int price = DOMGenerator.getActorPrice(akTarget)

 

To give them some training use the DOM_API functions

 

EDIT: I will add some extra functions to DOM_API to make it more robust:

Spoiler

;generates/reads and returns an actor personality traits and training
; the float[] being returned can be ignored if the goal is to generate the personality
; The personality is only generated once, calling this function twice will not re-generate
float[] Function GetDOMTraits(Actor akActor) 
    return DOM.DOMGenerator.GetNPCTraits(akActor)
EndFunction

 

;returns an actor price in gold
int Function GetDOMPrice(Actor akActor) 
    return DOM.DOMGenerator.getActorPrice(akActor)
EndFunction

 

Edited by TrollAutokill
Posted (edited)
5 hours ago, Yawata00 said:

That can be a good idea to make the training depend on the price, not sure how though.

It is also possible to give a slave training before the enslavement function by setting the training factions in advance.

In dom these are DomTrainResignation, DomTrainSubmission, ... and go from 0 to 100 (DOMTrainCombat can go a bit higher, but that isn't really relevant)

 

So a quick example could be:

Function SetTrainingByPrice( actor akActor, int price)

    if(price==4000) ;or another method to check expensive category, checking the faction might be even better.

        akActor.SetFactionRank(DOMTrainResignation, 100)

        akActor.SetFactionRank(DOMTrainSubmission, 95)

        ....

    elseif(price ==2000)

    ...

    else

    ...

    endIf

endFunction

 

and then in your capture script, call this function before the DOMSlaveManager.Capture().

 

You can also use some random function to bring some variation to the training level, for example Resignation goes from 90-100 for expensive slaves.

 

The only disadvantage here is that you can't check the exact DOM training beforehand.

 

 

EDIT: as an addendum to @TrollAutokill's post, the training functions in the DOM_API script take in account both the slave personality modifiers and their current training level (diminishing returns). So if you use the API functions, it's normal that the training value they end up having is not the same as the baseamount value you set in the script. If you want exact control of the starting training values, you either set the train faction before capture or use the force value functions in the API. I have never tested those force value functions, so setting the factions in advance is probably safer.

 

Setting trainings factions after capture does nothing as DOM scripts will revert it. Once an NPC is in DOM you must use DOM's training functions.

 

 

Edited by a_random_user
TAK also answered a more advanced version while I was typing this

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