Jump to content

Recommended Posts

Posted (edited)
1 hour ago, Dg75 said:

I have a working thirst/hunger - much lighter weight than PMS, it just adds and consumes vanilla food in turn cause needs mods to update their own stuff. 

I cannot test if actually worked for my Rnad because I am vampire and food wouldn't effect my pc. I did add Stale blood from Better vampire. it and PAF updated states

hah eating shit will make have to shit!

 

Little worried though it may conflict with eating animation mods like Taberu. If so would have to somehow negate those idles from ticking. I have old old version 

of taberu back before it required nemesis and it doesn't conflict not sure about new versions with nemy. Would be bad when drinking piss and all of sudden 

player whips out a bottle of water.

 

I added thirst/hunger to the test skits to be tested.

I am currently working on building a simple move adjuster for small adjustments while animating. Don't hold your breath I aint ashal and this aint SexLab

 

Nice, I'm using RND currently and Taberu mods installed, so I could test if the feature is working fine with this mod once the update is out. I understand that the RND patch won't me necessary anymore, right?

Edited by VergilDMX
Posted
1 hour ago, VergilDMX said:

 

Nice, I'm using RND currently and Taberu mods installed, so I could test if the feature is working fine with this mod once the update is out. I understand that the RND patch won't me necessary anymore, right?

correct. Loose the patch!

I am getting ready to upload what I got now. 

Posted (edited)
9 hours ago, Dg75 said:

correct. Loose the patch!

I am getting ready to upload what I got now. 

 

Alright! Ok, I did some quick testing and the idles worked fine and they weren't interrupted by a Taberu animation. I noticed that at the end of the animation, some raw meat was added in the inventory but that's all. Unfortunately, I didn't see any changes in the thirst/hunger :/ I understand that the idea is adding some vanilla food/drinks and consume them, but this is not triggering.

 

I also tried to adjust the actor position, but I guess this is not implemented in the Kink test feature

The Elder Scrolls V  Skyrim Special Edition Screenshot 2025.03.28 - 10.48.30.47.png

Edited by VergilDMX
Posted

I was checking how the mod CumSwallowNeedsAddon solved this and it has a separate script for each mod. In the case of RND, this is how this feature was implemented. Maybe something similar could be done in this mod

 

Scriptname _CSN_InterfaceRnd extends Quest  

Int cumOffset = 10

Event OnInit()
	Debug.Trace("_CSN_InterfaceRnd: OnInit")
	PlayerLoadsGame()
EndEvent

Function PlayerLoadsGame()
	Debug.Trace("_CSN_InterfaceRnd: PlayerLoadsGame")
	If Game.GetModByName("RealisticNeedsandDiseases.esp") != 255
		If GetState() != "Installed"
			GoToState("Installed")
		EndIf
		
	Else
		If GetState() != ""
			GoToState("")
		EndIf
	EndIf
EndFunction

Bool Function GetIsInterfaceActive()
	If GetState() == "Installed"
		Return true
	EndIf
	Return false
EndFunction

Event OnEndState()
	Utility.Wait(5.0) ; Wait before entering active state to help avoid making function calls to scripts that may not have initialized yet.

	RndPlayerAlias = (Game.GetFormFromFile(0x00EB43, "RealisticNeedsandDiseases.esp") as Quest).GetNthAlias(0) as ReferenceAlias

	; Should probably change all this crap to arrays....
	
	RND_HungerEffect00 = Game.GetFormFromFile(0x000D62, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_HungerEffect01 = Game.GetFormFromFile(0x0012C5, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_HungerEffect02 = Game.GetFormFromFile(0x0012C6, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_HungerEffect03 = Game.GetFormFromFile(0x0012C7, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_HungerEffect04 = Game.GetFormFromFile(0x001834, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_HungerEffect05 = Game.GetFormFromFile(0x0012C8, "RealisticNeedsandDiseases.esp") as MagicEffect

	RND_ThirstEffect00 = Game.GetFormFromFile(0x0012CD, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_ThirstEffect01 = Game.GetFormFromFile(0x0012CE, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_ThirstEffect02 = Game.GetFormFromFile(0x0012CF, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_ThirstEffect03 = Game.GetFormFromFile(0x002DF8, "RealisticNeedsandDiseases.esp") as MagicEffect
	RND_ThirstEffect04 = Game.GetFormFromFile(0x0012D0, "RealisticNeedsandDiseases.esp") as MagicEffect	
	
	RND_HungerPoints = Game.GetFormFromFile(0x002884, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerPointsPerHour = Game.GetFormFromFile(0x002DE7, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerLastUpdateTimeStamp = Game.GetFormFromFile(0x002DE8, "RealisticNeedsandDiseases.esp") as GlobalVariable
	
	RND_AnimEat = Game.GetFormFromFile(0x024488, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_1stPersonMsg = Game.GetFormFromFile(0x0900CA, "RealisticNeedsandDiseases.esp") as GlobalVariable
	
	RND_ForceSatiation = Game.GetFormFromFile(0x0536D7, "RealisticNeedsandDiseases.esp") as GlobalVariable
	
	RND_HungerLevel00 = Game.GetFormFromFile(0x002DE9, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerLevel01 = Game.GetFormFromFile(0x002DEA, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerLevel02 = Game.GetFormFromFile(0x002DEB, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerLevel03 = Game.GetFormFromFile(0x002DEC, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerLevel04 = Game.GetFormFromFile(0x002DED, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_HungerLevel05 = Game.GetFormFromFile(0x002DEE, "RealisticNeedsandDiseases.esp") as GlobalVariable
	
	RND_HungerSpell00 = Game.GetFormFromFile(0x001D97, "RealisticNeedsandDiseases.esp") as Spell
	RND_HungerSpell01 = Game.GetFormFromFile(0x001D99, "RealisticNeedsandDiseases.esp") as Spell
	RND_HungerSpell02 = Game.GetFormFromFile(0x001D9B, "RealisticNeedsandDiseases.esp") as Spell
	RND_HungerSpell03 = Game.GetFormFromFile(0x001D9D, "RealisticNeedsandDiseases.esp") as Spell
	RND_HungerSpell04 = Game.GetFormFromFile(0x00231B, "RealisticNeedsandDiseases.esp") as Spell
	RND_HungerSpell05 = Game.GetFormFromFile(0x00231C, "RealisticNeedsandDiseases.esp") as Spell
	
	RND_HungerLevel00ConsumeMessage = Game.GetFormFromFile(0x0053F5, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel01ConsumeMessage = Game.GetFormFromFile(0x0053F6, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel02ConsumeMessage = Game.GetFormFromFile(0x0053F7, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel03ConsumeMessage = Game.GetFormFromFile(0x0053F8, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel04ConsumeMessage = Game.GetFormFromFile(0x0053F9, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel05ConsumeMessage = Game.GetFormFromFile(0x0053FA, "RealisticNeedsandDiseases.esp") as Message
	
	RND_HungerLevel00ConsumeMessageB = Game.GetFormFromFile(0x0900C4, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel01ConsumeMessageB = Game.GetFormFromFile(0x0900C5, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel02ConsumeMessageB = Game.GetFormFromFile(0x0900C6, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel03ConsumeMessageB = Game.GetFormFromFile(0x0900C7, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel04ConsumeMessageB = Game.GetFormFromFile(0x0900C8, "RealisticNeedsandDiseases.esp") as Message
	RND_HungerLevel05ConsumeMessageB = Game.GetFormFromFile(0x0900C9, "RealisticNeedsandDiseases.esp") as Message
	
	; ======================

	RND_ThirstPoints = Game.GetFormFromFile(0x002E07, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_ThirstPointsPerHour = Game.GetFormFromFile(0x002E08, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_ThirstLastUpdateTimeStamp = Game.GetFormFromFile(0x002E09, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_AnimDrink = Game.GetFormFromFile(0x024489, "RealisticNeedsandDiseases.esp") as GlobalVariable
	
	RND_ThirstLevel00 = Game.GetFormFromFile(0x002E0A, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_ThirstLevel01 = Game.GetFormFromFile(0x002E0B, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_ThirstLevel02 = Game.GetFormFromFile(0x002E0C, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_ThirstLevel03 = Game.GetFormFromFile(0x002E0D, "RealisticNeedsandDiseases.esp") as GlobalVariable
	RND_ThirstLevel04 = Game.GetFormFromFile(0x002E0E, "RealisticNeedsandDiseases.esp") as GlobalVariable
	
	RND_ThirstSpell00 = Game.GetFormFromFile(0x001DA1, "RealisticNeedsandDiseases.esp") as Spell
	RND_ThirstSpell01 = Game.GetFormFromFile(0x001DA3, "RealisticNeedsandDiseases.esp") as Spell
	RND_ThirstSpell02 = Game.GetFormFromFile(0x001DA5, "RealisticNeedsandDiseases.esp") as Spell
	RND_ThirstSpell03 = Game.GetFormFromFile(0x002DFA, "RealisticNeedsandDiseases.esp") as Spell
	RND_ThirstSpell04 = Game.GetFormFromFile(0x002DFC, "RealisticNeedsandDiseases.esp") as Spell
	
	RND_ThirstLevel00ConsumeMessage = Game.GetFormFromFile(0x0053F5, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel01ConsumeMessage = Game.GetFormFromFile(0x005ECD, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel02ConsumeMessage = Game.GetFormFromFile(0x005ECE, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel03ConsumeMessage = Game.GetFormFromFile(0x005ECF, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel04ConsumeMessage = Game.GetFormFromFile(0x005ED0, "RealisticNeedsandDiseases.esp") as Message
	
	RND_ThirstLevel00ConsumeMessageB = Game.GetFormFromFile(0x090B97, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel01ConsumeMessageB = Game.GetFormFromFile(0x090B98, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel02ConsumeMessageB = Game.GetFormFromFile(0x090B99, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel03ConsumeMessageB = Game.GetFormFromFile(0x090B96, "RealisticNeedsandDiseases.esp") as Message
	RND_ThirstLevel04ConsumeMessageB = Game.GetFormFromFile(0x090B95, "RealisticNeedsandDiseases.esp") as Message
	
	; =========================
	
	;RND_HungerSpell00.SetNthEffectMagnitude(0, Menu.GluttedSpeed)
EndEvent

; Installed State ====================================================
State Installed
	Bool Function IsNeedsModActive()
		Return _CSN_IntRnd.IsNeedsModActive(RndPlayerAlias)
	EndFunction

	Function Eat(Int FoodPoints)
		FoodPoints *= cumOffset
		if _CSN_IntRnd.isVampire(RndPlayerAlias)
			RND_HungerPoints.SetValue(10)
			RemoveHungerSpells()	
		else
			; eat food
			int AdjPoints = Utility.RandomInt(-5,5)
			float HungerPoints = RND_HungerPoints.GetValue()
			RND_HungerPoints.SetValue(RND_HungerPoints.GetValue() - FoodPoints - AdjPoints)
			
			if RND_ForceSatiation.GetValue() == 1
				if HungerPoints >= RND_HungerLevel02.GetValue() && RND_HungerPoints.GetValue() < RND_HungerLevel01.GetValue()
					RND_HungerPoints.SetValue(RND_HungerLevel01.GetValue())
				endif
			endif

			; Hunger points cap between 0-RND_HungerLevel05, 
			; so you don't end up eating a lot and still starving
			; or eating one huge meal hoping to last for a week
			if RND_HungerPoints.GetValue() > RND_HungerLevel05.GetValue()
				RND_HungerPoints.SetValue(RND_HungerLevel05.GetValue())
			elseif RND_HungerPoints.GetValue() < 0
				RND_HungerPoints.SetValue(0)
			endif
		
			; update time stamp
			RND_HungerLastUpdateTimeStamp.SetValue(Utility.GetCurrentGameTime())
		
			; new spell to add
			Spell HungerSpell = RND_HungerSpell02
			Message HungerLevelMessage = None
		
			if RND_HungerPoints.GetValue() < RND_HungerLevel01.GetValue()
				HungerSpell = RND_HungerSpell00
				if RND_1stPersonMsg.GetValue() == 1
					HungerLevelMessage = RND_HungerLevel00ConsumeMessage
				else
					HungerLevelMessage = RND_HungerLevel00ConsumeMessageB
				endif
		
			elseif RND_HungerPoints.GetValue() >= RND_HungerLevel01.GetValue() && RND_HungerPoints.GetValue() < RND_HungerLevel02.GetValue()
				HungerSpell = RND_HungerSpell01
				if RND_1stPersonMsg.GetValue() == 1
					HungerLevelMessage = RND_HungerLevel01ConsumeMessage
				else
					HungerLevelMessage = RND_HungerLevel01ConsumeMessageB
				endif
		
			elseif RND_HungerPoints.GetValue() >= RND_HungerLevel02.GetValue() && RND_HungerPoints.GetValue() < RND_HungerLevel03.GetValue()
				HungerSpell = RND_HungerSpell02
				if RND_1stPersonMsg.GetValue() == 1
					HungerLevelMessage = RND_HungerLevel02ConsumeMessage
				else
					HungerLevelMessage = RND_HungerLevel02ConsumeMessageB
				endif
		
			elseif RND_HungerPoints.GetValue() >= RND_HungerLevel03.GetValue() && RND_HungerPoints.GetValue() < RND_HungerLevel04.GetValue()
				HungerSpell = RND_HungerSpell03
				if RND_1stPersonMsg.GetValue() == 1
					HungerLevelMessage = RND_HungerLevel03ConsumeMessage
				else
					HungerLevelMessage = RND_HungerLevel03ConsumeMessageB
				endif
		
			elseif RND_HungerPoints.GetValue() >= RND_HungerLevel04.GetValue() && RND_HungerPoints.GetValue() < RND_HungerLevel05.GetValue()
				HungerSpell = RND_HungerSpell04
				if RND_1stPersonMsg.GetValue() == 1
					HungerLevelMessage = RND_HungerLevel04ConsumeMessage
				else
					HungerLevelMessage = RND_HungerLevel04ConsumeMessageB
				endif
		
			elseif RND_HungerPoints.GetValue() >= RND_HungerLevel05.GetValue()
				HungerSpell = RND_HungerSpell05
				if RND_1stPersonMsg.GetValue() == 1
					HungerLevelMessage = RND_HungerLevel05ConsumeMessage
				else
					HungerLevelMessage = RND_HungerLevel05ConsumeMessageB
				endif
		
			endif
			if PlayerRef.HasSpell(HungerSpell)
				HungerLevelMessage.Show()
			else
				RemoveHungerSpells()
				PlayerRef.AddSpell(HungerSpell, false)
				HungerLevelMessage.Show()
			endIf
			
		endIf
		
		
	EndFunction

	Function Drink(Int WaterPoints)
		WaterPoints *= (cumOffset*2)
		if _CSN_IntRnd.isVampire(RndPlayerAlias)
			RND_ThirstPoints.SetValue(10)
			RemoveThirstSpells()
		else
			; drink water
			int AdjPoints = Utility.RandomInt(-5,5)
			RND_ThirstPoints.SetValue(RND_ThirstPoints.GetValue() - WaterPoints - AdjPoints)

			if RND_ThirstPoints.GetValue() > RND_ThirstLevel04.GetValue()
				RND_ThirstPoints.SetValue(RND_ThirstLevel04.GetValue())
			elseif RND_ThirstPoints.GetValue() < 0
				RND_ThirstPoints.SetValue(0)
			endif
		
			RND_ThirstLastUpdateTimeStamp.SetValue(Utility.GetCurrentGameTime())
		
			; new spell to add
			Spell ThirstSpell = RND_ThirstSpell02
			Message ThirstLevelMessage = None
		
			if RND_ThirstPoints.GetValue() < RND_ThirstLevel01.GetValue()
				ThirstSpell = RND_ThirstSpell00
				if RND_1stPersonMsg.GetValue() == 1
					ThirstLevelMessage = RND_ThirstLevel00ConsumeMessage
				else
					ThirstLevelMessage = RND_ThirstLevel00ConsumeMessageB
				endif
		
			elseif RND_ThirstPoints.GetValue() >= RND_ThirstLevel01.GetValue() && RND_ThirstPoints.GetValue() < RND_ThirstLevel02.GetValue()
				ThirstSpell = RND_ThirstSpell01
				if RND_1stPersonMsg.GetValue() == 1
					ThirstLevelMessage = RND_ThirstLevel01ConsumeMessage
				else
					ThirstLevelMessage = RND_ThirstLevel01ConsumeMessageB
				endif
		
			elseif RND_ThirstPoints.GetValue() >= RND_ThirstLevel02.GetValue() && RND_ThirstPoints.GetValue() < RND_ThirstLevel03.GetValue()
				ThirstSpell = RND_ThirstSpell02
				if RND_1stPersonMsg.GetValue() == 1
					ThirstLevelMessage = RND_ThirstLevel02ConsumeMessage
				else
					ThirstLevelMessage = RND_ThirstLevel02ConsumeMessageB
				endif
		
			elseif RND_ThirstPoints.GetValue() >= RND_ThirstLevel03.GetValue() && RND_ThirstPoints.GetValue() < RND_ThirstLevel04.GetValue()
				ThirstSpell = RND_ThirstSpell03
				if RND_1stPersonMsg.GetValue() == 1
					ThirstLevelMessage = RND_ThirstLevel03ConsumeMessage
				else
					ThirstLevelMessage = RND_ThirstLevel03ConsumeMessageB
				endif
		
			elseif RND_ThirstPoints.GetValue() >= RND_ThirstLevel04.GetValue() 
				ThirstSpell = RND_ThirstSpell04
				if RND_1stPersonMsg.GetValue() == 1
					ThirstLevelMessage = RND_ThirstLevel04ConsumeMessage
				else
					ThirstLevelMessage = RND_ThirstLevel04ConsumeMessageB
				endif
		
			endif
			if PlayerRef.HasSpell(ThirstSpell)
				ThirstLevelMessage.Show()
			else
				RemoveThirstSpells()
				PlayerRef.AddSpell(ThirstSpell, false)
				ThirstLevelMessage.Show()
			endif
			
		endif		
		
	EndFunction
	
	Bool Function IsDesperate()
		If PlayerRef.HasMagicEffect(RND_ThirstEffect04) || PlayerRef.HasMagicEffect(RND_HungerEffect05)
			Return true
		EndIf
		Return false
	EndFunction

	Function RemoveHungerSpells()
		PlayerRef.RemoveSpell(RND_HungerSpell00)
		PlayerRef.RemoveSpell(RND_HungerSpell01)
		PlayerRef.RemoveSpell(RND_HungerSpell02)
		PlayerRef.RemoveSpell(RND_HungerSpell03)
		PlayerRef.RemoveSpell(RND_HungerSpell04)
		PlayerRef.RemoveSpell(RND_HungerSpell05)
	EndFunction

	Function RemoveThirstSpells()
		PlayerRef.RemoveSpell(RND_ThirstSpell00)
		PlayerRef.RemoveSpell(RND_ThirstSpell01)
		PlayerRef.RemoveSpell(RND_ThirstSpell02)
		PlayerRef.RemoveSpell(RND_ThirstSpell03)
		PlayerRef.RemoveSpell(RND_ThirstSpell04)
	EndFunction
	
EndState

; Empty State ===============================================================================
Bool Function IsNeedsModActive()
	Return false
EndFunction

Function Eat(Int FoodPoints)
EndFunction

Function Drink(Int WaterPoints)
EndFunction

Bool Function IsDesperate()
	Return false
EndFunction

Function RemoveHungerSpells()
EndFunction

Function RemoveThirstSpells()
EndFunction


; Vanilla Properties

Actor Property PlayerRef Auto

; CLEAN UP ===========================================================
ReferenceAlias RndPlayerAlias



; Rnd Properties
MagicEffect Property RND_HungerEffect00 Auto Hidden
MagicEffect Property RND_HungerEffect01 Auto Hidden
MagicEffect Property RND_HungerEffect02 Auto Hidden
MagicEffect Property RND_HungerEffect03 Auto Hidden
MagicEffect Property RND_HungerEffect04 Auto Hidden
MagicEffect Property RND_HungerEffect05 Auto Hidden

MagicEffect Property RND_ThirstEffect00 Auto Hidden
MagicEffect Property RND_ThirstEffect01 Auto Hidden
MagicEffect Property RND_ThirstEffect02 Auto Hidden
MagicEffect Property RND_ThirstEffect03 Auto Hidden
MagicEffect Property RND_ThirstEffect04 Auto Hidden

MagicEffect Property RND_SleepEffect00 Auto Hidden
MagicEffect Property RND_SleepEffect01 Auto Hidden
MagicEffect Property RND_SleepEffect02 Auto Hidden
MagicEffect Property RND_SleepEffect03 Auto Hidden
MagicEffect Property RND_SleepEffect04 Auto Hidden

; Food Properties
GlobalVariable Property RND_HungerPoints Auto Hidden
GlobalVariable Property RND_HungerPointsPerHour Auto Hidden
GlobalVariable Property RND_HungerLastUpdateTimeStamp Auto Hidden

GlobalVariable Property RND_AnimEat Auto Hidden
GlobalVariable Property RND_1stPersonMsg Auto Hidden

GlobalVariable Property RND_FoodPoints  Auto  Hidden ; ***********
GlobalVariable Property RND_ForceSatiation Auto Hidden

GlobalVariable Property RND_HungerLevel00 Auto Hidden
GlobalVariable Property RND_HungerLevel01 Auto Hidden
GlobalVariable Property RND_HungerLevel02 Auto Hidden
GlobalVariable Property RND_HungerLevel03 Auto Hidden
GlobalVariable Property RND_HungerLevel04 Auto Hidden
GlobalVariable Property RND_HungerLevel05 Auto Hidden

Spell Property RND_HungerSpell00 Auto Hidden
Spell Property RND_HungerSpell01 Auto Hidden
Spell Property RND_HungerSpell02 Auto Hidden
Spell Property RND_HungerSpell03 Auto Hidden
Spell Property RND_HungerSpell04 Auto Hidden
Spell Property RND_HungerSpell05 Auto Hidden

Message Property RND_HungerLevel00ConsumeMessage Auto Hidden
Message Property RND_HungerLevel01ConsumeMessage Auto Hidden
Message Property RND_HungerLevel02ConsumeMessage Auto Hidden
Message Property RND_HungerLevel03ConsumeMessage Auto Hidden
Message Property RND_HungerLevel04ConsumeMessage Auto Hidden
Message Property RND_HungerLevel05ConsumeMessage Auto Hidden

Message Property RND_HungerLevel00ConsumeMessageB Auto Hidden
Message Property RND_HungerLevel01ConsumeMessageB Auto Hidden
Message Property RND_HungerLevel02ConsumeMessageB Auto Hidden
Message Property RND_HungerLevel03ConsumeMessageB Auto Hidden
Message Property RND_HungerLevel04ConsumeMessageB Auto Hidden
Message Property RND_HungerLevel05ConsumeMessageB Auto Hidden

; Drink Properties
GlobalVariable Property RND_ThirstPoints Auto Hidden
GlobalVariable Property RND_ThirstPointsPerHour Auto Hidden
GlobalVariable Property RND_ThirstLastUpdateTimeStamp Auto Hidden
GlobalVariable Property RND_AnimDrink Auto Hidden

GlobalVariable Property RND_ThirstLevel00 Auto Hidden
GlobalVariable Property RND_ThirstLevel01 Auto Hidden
GlobalVariable Property RND_ThirstLevel02 Auto Hidden
GlobalVariable Property RND_ThirstLevel03 Auto Hidden
GlobalVariable Property RND_ThirstLevel04 Auto Hidden

Spell Property RND_ThirstSpell00 Auto Hidden
Spell Property RND_ThirstSpell01 Auto Hidden
Spell Property RND_ThirstSpell02 Auto Hidden
Spell Property RND_ThirstSpell03 Auto Hidden
Spell Property RND_ThirstSpell04 Auto Hidden

Message Property RND_ThirstLevel00ConsumeMessage Auto Hidden
Message Property RND_ThirstLevel01ConsumeMessage Auto Hidden
Message Property RND_ThirstLevel02ConsumeMessage Auto Hidden
Message Property RND_ThirstLevel03ConsumeMessage Auto Hidden
Message Property RND_ThirstLevel04ConsumeMessage Auto Hidden

Message Property RND_ThirstLevel00ConsumeMessageB Auto Hidden
Message Property RND_ThirstLevel01ConsumeMessageB Auto Hidden
Message Property RND_ThirstLevel02ConsumeMessageB Auto Hidden
Message Property RND_ThirstLevel03ConsumeMessageB Auto Hidden
Message Property RND_ThirstLevel04ConsumeMessageB Auto Hidden

 

Posted (edited)
8 hours ago, VergilDMX said:

Maybe something similar could be done in this mod

Exactly what I'm trying to avoid ! Thats a lot of tracking of mods installed - and everything you see that tracking cannot possibly 

hope to account for all different needs mods out and their variants. And thats a script load the slow Game engine has constantly 

check every time you load a game - if Rnad mod found - has to run all those GetFormFromFile checks  - its filling them into Property vars

that that mod force controls hunger and thirst when I suppose cum is swallowed. Anf thats just script for rnad - how many needs mods are out their ?

 

Possible , but I'd rather not as its beyond the scope for Domination. I just want whatever needs mod a user has installed to update itself

when Player gets domed and Dom's mcm is enabled for hunger or thirst. - simple no checks - light weight - Fast  - and it works !

 

The raw beef should not have been in your inventory - as Domination adds one item - consumes that item - as it should have left inventory.

Probably something I did wrong in the script, and can be easily rectified.

 

If it didn't trigger needs mod to update - it should as long as your needs mods knows that food. Its vanilla forms - I didnt 

change that so the needs mods should auto detect it being consumed. Further it wouldn't matter if Ineed or Rnad or Caco 

or whatever they should detect all vanilla foods. If they dont then I need find out why!

 

The adjust position is implemented in the test. I tested it myself and it worked - somewhat ! By the time I got it adjusted the

damn animation was over . 

Edited by Dg75
Posted
2 hours ago, Dg75 said:

Exactly what I'm trying to avoid ! Thats a lot of tracking of mods installed - and everything you see that tracking cannot possibly 

hope to account for all different needs mods out and their variants. And thats a script load the slow Game engine has constantly 

check every time you load a game - if Rnad mod found - has to run all those GetFormFromFile checks  - its filling them into Property vars

that that mod force controls hunger and thirst when I suppose cum is swallowed. Anf thats just script for rnad - how many needs mods are out their ?

 

Possible , but I'd rather not as its beyond the scope for Domination. I just want whatever needs mod a user has installed to update itself

when Player gets domed and Dom's mcm is enabled for hunger or thirst. - simple no checks - light weight - Fast  - and it works !

 

The raw beef should not have been in your inventory - as Domination adds one item - consumes that item - as it should have left inventory.

Probably something I did wrong in the script, and can be easily rectified.

 

If it didn't trigger needs mod to update - it should as long as your needs mods knows that food. Its vanilla forms - I didnt 

change that so the needs mods should auto detect it being consumed. Further it wouldn't matter if Ineed or Rnad or Caco 

or whatever they should detect all vanilla foods. If they dont then I need find out why!

 

The adjust position is implemented in the test. I tested it myself and it worked - somewhat ! By the time I got it adjusted the

damn animation was over . 

 

Alright, I tested with iNeed and it is working! I don't know why is not working with RND, maybe there is something wrong in my load order cuz I tried to eat this raw beef by itself, and it's not being recognized. The version of RND I'm using has a plugin that it should recognize any kind of food/drinks without patching.

 

However, I noticed that only the hunger is working but not the thirst for the piss drinking.

Posted
3 minutes ago, VergilDMX said:

 

Alright, I tested with iNeed and it is working! I don't know why is not working with RND, maybe there is something wrong in my load order cuz I tried to eat this raw beef by itself, and it's not being recognized. The version of RND I'm using has a plugin that it should recognize any kind of food/drinks without patching.

 

However, I noticed that only the hunger is working but not the thirst for the piss drinking.

Did you adjust the Domination needs value. if testing in the test idle - mcm - it dont go off paf states because the mcm dont know what a paf state is

it instead goes specificly off your mcm selection for needs. If 1 will implement pee and try to line up mouth to vagina, if set to two will only implement 

hunger and try to line mouth to anus. - or somewhat reasonably close I hope. 

 

In the scripts in Domination while in a skit - it goes off actual paf states - and mcm setting. if set 1 - it will never implement hunger - only thirst.

if set 2 - will depend on paf state and will if pooping at all will line up mouth to anus - and apply hunger n thirst per paf state.

Posted
33 minutes ago, Dg75 said:

Did you adjust the Domination needs value. if testing in the test idle - mcm - it dont go off paf states because the mcm dont know what a paf state is

it instead goes specificly off your mcm selection for needs. If 1 will implement pee and try to line up mouth to vagina, if set to two will only implement 

hunger and try to line mouth to anus. - or somewhat reasonably close I hope. 

 

In the scripts in Domination while in a skit - it goes off actual paf states - and mcm setting. if set 1 - it will never implement hunger - only thirst.

if set 2 - will depend on paf state and will if pooping at all will line up mouth to anus - and apply hunger n thirst per paf state.

 

Alright, I will test that and let you know. I have solved the issue with RND, and it is working now. I placed all my RND plugins almost at the end of my load order and it recognized the vanilla food. The only issue now is that when the animation finishes, it consumes the vanilla food but it adds 3 raw beef steaks to my inventory that I think are added by CACO. I don't know why this is happening but I think I will stick to iNeed for now as I was before

Posted

Ok, so I tested setting the MCM to 1 for pee as u said and it worked as intended :D 

Regarding the animation adjustment, I understand that by pressing CTRL it will move the actor to the left, ALT forward and UP if both keys are pressed. However, nothing is happening, I've tried ticking and unticking the modifier option in the MCM, tried with ctrl, alt, shift from the left side of the keyboard and the right side and I don't see any change in the submissive actor.

Posted (edited)
2 hours ago, VergilDMX said:

Ok, so I tested setting the MCM to 1 for pee as u said and it worked as intended :D 

Regarding the animation adjustment, I understand that by pressing CTRL it will move the actor to the left, ALT forward and UP if both keys are pressed. However, nothing is happening, I've tried ticking and unticking the modifier option in the MCM, tried with ctrl, alt, shift from the left side of the keyboard and the right side and I don't see any change in the submissive actor.

The toggle in the mcm just sets weather its the left keys or right keys. 

it use Left side Alt/CTRL/Shift by default. so leave it disabled to use left side. 

You have to be pressing and holding one of the modifier keys as you press the Domination Action key.

 

I'm fixing to load my game and I'll test it again. .

 

edit: I tested again via test idle and mod skit - position adjusters worked for forward and left/right movement - 

the z up/down would try to move but didnt actually  move the actor.  Probably doing something wrong or z up an actor maybe 

don't work cuz gravity wont allow it ? IDk. 

 

It uses Event OnKeydown detected when use the main domination action key, and also if holding down any of the mod keys. 

 

In script it use function - sets position(x,y,z) 

 

ActorToMove is in lying down idle actually looking up - I have to assume the GetAngleZ is strictly a directional rotation of n/s/e/w

the frwrd/back and L/R adjustments work fine the z dont work. If anyone know WTF I'm doing wrong pleas indulge !

 

Function AdjustPosition(Actor ActorToMove, Float _unit = 2.0, Int _directional = 0)
    if  !ActorToMove
        Return
    endif
    Float _zAngle = ActorToMove.GetAngleZ()
    Float xPo = ActorToMove.GetPositionX()
    Float yPo = ActorToMove.GetPositionY()
    Float zPo = ActorToMove.GetPositionZ()
    if  _directional == 0                                               ;forward and with shift unit is -val(Back)
        xPo += (_unit * Math.Sin(_zAngle))
        yPo += (_unit * Math.Cos(_zAngle))
    elseif _directional == 1                                          ;Left and with shift unit is -val(right)
        xPo += (_unit * Math.Sin(_zAngle + 90))
        yPo += (_unit * Math.Cos(_zAngle + 90))
    else
        zPo += _unit                                                       ; this one dont work - up/down 
    endif
    ActorToMove.SetPosition(xPo, yPo, zPo)
EndFunction

Edited by Dg75
Posted
7 hours ago, Dg75 said:

The toggle in the mcm just sets weather its the left keys or right keys. 

it use Left side Alt/CTRL/Shift by default. so leave it disabled to use left side. 

You have to be pressing and holding one of the modifier keys as you press the Domination Action key.

 

I'm fixing to load my game and I'll test it again. .

 

edit: I tested again via test idle and mod skit - position adjusters worked for forward and left/right movement - 

the z up/down would try to move but didnt actually  move the actor.  Probably doing something wrong or z up an actor maybe 

don't work cuz gravity wont allow it ? IDk. 

 

It uses Event OnKeydown detected when use the main domination action key, and also if holding down any of the mod keys. 

 

In script it use function - sets position(x,y,z) 

 

ActorToMove is in lying down idle actually looking up - I have to assume the GetAngleZ is strictly a directional rotation of n/s/e/w

the frwrd/back and L/R adjustments work fine the z dont work. If anyone know WTF I'm doing wrong pleas indulge !

 

Function AdjustPosition(Actor ActorToMove, Float _unit = 2.0, Int _directional = 0)
    if  !ActorToMove
        Return
    endif
    Float _zAngle = ActorToMove.GetAngleZ()
    Float xPo = ActorToMove.GetPositionX()
    Float yPo = ActorToMove.GetPositionY()
    Float zPo = ActorToMove.GetPositionZ()
    if  _directional == 0                                               ;forward and with shift unit is -val(Back)
        xPo += (_unit * Math.Sin(_zAngle))
        yPo += (_unit * Math.Cos(_zAngle))
    elseif _directional == 1                                          ;Left and with shift unit is -val(right)
        xPo += (_unit * Math.Sin(_zAngle + 90))
        yPo += (_unit * Math.Cos(_zAngle + 90))
    else
        zPo += _unit                                                       ; this one dont work - up/down 
    endif
    ActorToMove.SetPosition(xPo, yPo, zPo)
EndFunction

 

Oh I see, thanks for the info! I wasn't pressing the domination action key before, now it works. I noticed there is a fade out every time when I adjust position but I guess that's normal.

  • 2 weeks later...
Posted (edited)

Regarding some ideas I suggested before, I have created these scat overlays for slave tats. It would be nice to apply them automatically after the scat eating skit and make the PC get dirty by listening to the mod "Dirt and blood" :D

I made textures for the face and body.

SlaveTats Scat.zip

Edited by VergilDMX
Posted
15 hours ago, VergilDMX said:

Regarding some ideas I suggested before, I have created these scat overlays for slave tats. It would be nice to apply them automatically after the scat eating skit and make the PC get dirty by listening to the mod "Dirt and blood" :D

I made textures for the face and body.

SlaveTats Scat.zip 248.22 kB · 0 downloads

Kool I'll take look

Posted (edited)
3 hours ago, VergilDMX said:

I made another overlay but for the golden shower/piss drinking that could be applied as well. I took the textures of the mod "Follow me for sex" as a base.

SlaveTats Watersports.rar 240.25 kB · 0 downloads

Just checking stuff out. 

above you mentioned: make the PC get dirty by listening to the mod "Dirt and blood"  - just looking into Dirt and Blood , it just looks like it apply its overlay

via spells and hit shaders  - constant effects, or until cleaned. It does not appear to use Slave Tats in any way, Unlike Paf, use slave tats to apply its dirt. 

It would definitely probably easier to apply via spell than Slave tats. IDK ? either way I need to figure out a scheme to apply it and when to 

clean it off and tie it all into Domination scripts. Any ideas would be great.

 

I mean I guess, get dirty and stay dirty until cleaned - this would require a cleaning integration, BISR or KIC 

or can just time it and once spell wears off the overlays should disappear. I think. . . Working with overlay is new to me so I have to figure out WTF 

I'm doing here. 

 

Just now getting to messing with this, I just finished building my own Equip mod - Fricking AH hotkeys broke and stopped working

so I got teed off and built my own. Lol It works. . kinda of

 

 

Edited by Dg75
Posted
8 hours ago, Dg75 said:

Okay so I wiped up a quick test to view the textures you uploaded in game: 

Results are - Only the Scat_Face show up, the rest don't show. 

I just created a couple Effect Shader's to apply your textures, and not via slave tats. 

Here is my Scat test if anyone want to take a look at it. Maybe I did something wrong IDK, but the Scat Face looks good at least. 

I don't know squat about texturing, I managed to install gimp, but couldn't get over the scratching my ass part trying to figure out what 

to do with it. So any help here would be greatly appreciated.

 

This is just an in game test to get a quick view at the Textures, To use this - install with Mod manager, then in game use console to Add a spell - like this:

Open console and type < Help ScatSpell 4 >   ; without the < > 

It should pop up an Id for the spell.   Type in  < Player.AddSpell ID > 

its an illusion spell, self cast, equip it and cast it. It will cycle between the four Textures, scatFace, UrinFace, ScatBody, UrinBody , with a 15 second wait in between. 

No animations or anything - its just a looksy at the textures. except for me only the first one ScatFace showed. I personally tried in reverse too and same result.

You may want to prep your PC - undress and be clean of any other overlay before casting. When done dont save - exit and trash the test - it aint good to keep it.

ScatTestEffect.7z 422.16 kB · 1 download

 

I just made a quick test, made sure of removing all the slavetats applied on my PC, take a bath to remove all the dirty stains and even removed the tattoos applied through racemenu, but the spell doesn't seem to be working. I also placed the .esp almost at the end of my load order but it is not working. I cast the spell but I don't see any textures being applied. I don't know if perhaps I'm missing something.

 

If you need any help to create or modify textures, I have photoshop skills, so I can help with that 👍

Posted
13 hours ago, Dg75 said:

Just checking stuff out. 

above you mentioned: make the PC get dirty by listening to the mod "Dirt and blood"  - just looking into Dirt and Blood , it just looks like it apply its overlay

via spells and hit shaders  - constant effects, or until cleaned. It does not appear to use Slave Tats in any way, Unlike Paf, use slave tats to apply its dirt. 

It would definitely probably easier to apply via spell than Slave tats. IDK ? either way I need to figure out a scheme to apply it and when to 

clean it off and tie it all into Domination scripts. Any ideas would be great.

 

I mean I guess, get dirty and stay dirty until cleaned - this would require a cleaning integration, BISR or KIC 

or can just time it and once spell wears off the overlays should disappear. I think. . . Working with overlay is new to me so I have to figure out WTF 

I'm doing here. 

 

Just now getting to messing with this, I just finished building my own Equip mod - Fricking AH hotkeys broke and stopped working

so I got teed off and built my own. Lol It works. . kinda of

 

 

 

You're right. I got confused with this mod when actually PAF handles this dirty effect by using slavetats. But the idea it is basically the same, applying the scat/urine overlays after finishing a domination skit and apply the same debuffs that PAF applies.

Posted
2 hours ago, VergilDMX said:

I cast the spell but I don't see any textures being applied. I don't know if perhaps I'm missing something.

Does it matter what the body type is ?  What the main skin texture is ? 

I tried the test several times and every time same result, only Scat face showed. Strange wont show for you.

Posted
On 4/9/2025 at 6:00 PM, Dg75 said:

Does it matter what the body type is ?  What the main skin texture is ? 

I tried the test several times and every time same result, only Scat face showed. Strange wont show for you.

 

I don't know what it could be tbh :/ I'm testing with the modlist Nefaram

Posted
17 hours ago, VergilDMX said:

 

I don't know what it could be tbh :/ I'm testing with the modlist Nefaram

Well shit. It may be the effect shader records I made. I just used Dirt and blood as a template. And have the shader use your textures. 

The blend values may be off or something.  The shader blend values effect how the shader renders. Id have to test some more or

IDk hell ill wip up a slave tat script in a test and see if I get different results. 

 

  • 2 weeks later...
Posted (edited)
On 4/8/2025 at 3:13 PM, VergilDMX said:

I made another overlay but for the golden shower/piss drinking that could be applied as well. I took the textures of the mod "Follow me for sex" as a base.

I uploaded new version 3.3.1

this has your golden shower textures, I finally got them to work. They are fantastic!

I ended up remaking the poop dirt,  credits sexlab cum. I just copied and recolored. 

Only issue, I noticed after Player got dressed they seemed to fade - the debuffs stuck, Don't know why overlay fade when getting dressed unless its 

something to do with 32 body clothing covering it up. It makes the dirt on face fade. I'll have to research the shader properties for Effect Shaders 

 

This version will require the new pfa update - 3.9.7

so cleaning works. I added a mod event to pfa Bathe function just for this.

Edited by Dg75
Posted
16 hours ago, Dg75 said:

I uploaded new version 3.3.1

this has your golden shower textures, I finally got them to work. They are fantastic!

I ended up remaking the poop dirt,  credits sexlab cum. I just copied and recolored. 

Only issue, I noticed after Player got dressed they seemed to fade - the debuffs stuck, Don't know why overlay fade when getting dressed unless its 

something to do with 32 body clothing covering it up. It makes the dirt on face fade. I'll have to research the shader properties for Effect Shaders 

 

This version will require the new pfa update - 3.9.7

so cleaning works. I added a mod event to pfa Bathe function just for this.

 

That's amazing! great work! I just tested it and the debuffs work flawlessly as intended. However, for some reason, the overlays aren't being applied unfortunately. I don't know if this is cuz I'm using a custom race, but before I was using breton and had the same problem as well. This can be solved just by applying the textures manually for now through Slavetats.

How are you applying the textures currently? I noticed that PAF just handles this by applying a texture through Slavetats when the PC gets dirty after defecating and the textures remain without issues until you clean them, so maybe by following the same approach could fix this issue of the fading textures or not appearing at all.

Posted (edited)

Btw, another suggestion based on the idea originally posted by the user @Johnnyone  that would be amazing to see implemented, but probably for a new PFA addon.

 

Spoiler

The Human Toilet

 

This idea is based on the Pee and Shit Mods. Peeing or shitting is now a normal thing for the player and maybe some NPCs. The thing is, doing it on properties is forbidden. But this would cost a lot of money for the people to build public toilets... So why not having a slave that would be your own moveable toilet!

 

Changes:

1. In big towns are now some "public toilet slaves".

2. Some NPCs have personal toilets.

4. The player can use a public toilet, have an own personal toilet, become a public toilet or become a personal toilet.
 

The slaves are naked and in bondage. They have a chastity belt with plugs, a plugable gag and the arms are tied up. When someone wants to use a toilet, they remove the plug, make their things and then putting the plug back in. They are also coverd in tattoos so everyone can clearly see who toilet is and who just a normal slave is. The player can turn his/her slave into a personal toilet. You can also just buy one from the town.

 

How to end up as a toilet:

1. When the player commits a crime he becomes a public toilet.

2. Peeing or shitting in a town and not using a toilet is a crime.

3. Peeing or shitting on someones property makes you a toilet to the owner.

4. Other mods.

5. As a public toilet, the player can be bought by some random rich NPC (a poor person maybe saved alot of money to buy himself a toilet so the NPC doesn't have to be rich).

6. Taking it as a normal job (in big towns) to earn some money! But it is a dirty business where you could end up sold as a personal toilet!

7. Taking it as a normal job for someone who is rich and can affort a personal toilet.

 

Gameplay:

1. As a public toilet, you are not allowed to leave! When you try to escape you get a high bounty. Maybe there are different work shifts. Which means you work like 8 hours per day and then you can do something else, but you have to be back at your boss before your shift starts again. I think maybe it could be boring to walk around for 8 hours just to be used as a toilet, so maybe additionally you have to do town business like cleaning the streets, working as supplier for food or letters (or things like that), helping town visitors where they can find things, feeding the animals and so on. At the end of your shift you have to empty your body. In every town is a place where the toilets can empty their body.

 

2. A toilet can be "full". Which means they body is full of pee and shit (like yellow and brown spots on the body) and their bellys are big. I don't know if NPCs can get "full" because it would cause alot of scripting i guess, but atleast they have the visuel effects. The player on the other hand has to go to the "toilet room". This is a small room in every town where the player can empy this body and clean himself. In this room is also the boss that takes of your bondage gear for that. When you take this as a normal job you also get paid from him. When you are a personal toilet, the master will tell you to go to the toilet room or bring it out to the woods. A person with a house maybe has his own toilet room.

 

3. As a personal toilet you have to follow your master everywhere he/she goes. Maybe you have to buy things, cook something, clean his/her house, taking care of his/her pets. When the master has a family you are then a family toilet (maybe also for their pets?).

 

4. Wanderes don't need a toilet because they can do it in the woods, but what when they visit a town and they don't want to use the public toilet? Maybe they can buy at the entrance a personal toilet for a day or so.

 

5. With other Mods: When the player becomes slave to a faction (like the forsworn or bandits) they become automatically the faction toilet.

 

6. When walking around with a follower, you are able to use the follower as a toilet and the follwer is able to use you as a toilet.

 

Another good addition to this idea that I would like to suggest is that whereas you are working as human toilet, you are not allowed not consume other food/drinks than only shit and urine. So, this feature could also satisfy the hunger/thirst needs like this addon.

Edited by VergilDMX
Posted
10 hours ago, VergilDMX said:

the overlays aren't being applied unfortunately. I don't know if this is cuz I'm using a custom race, but before I was using breton and had the same problem as well. This can be solved just by applying the textures manually for now through Slavetats.

They show for me as intended, but as soon as player dresses the poop overlay disappears, your pee overlay seems to stick, but its very light and not as noticable.

I applied same way sexlab applies cum effects - via spell with magiceffect that has EffectShaders. these are constant effects- they persists until removed.

If I cannot figure how to make them stick or why its not working for you, then yes I will have to resort to slavetats like pee and fart. 

I was trying to avoid that, because theirs more script work and tracking involved - a lot more in comparison to just cast spell and be done.

 

But while the scat is happening they do show flawlessly for me, just when PC get dressed - poof its gone.

I'm using female Nord, I dont know but maybe race and body textures have much to do with it. Maybe slave tats handle it better IDK. 

Sexlab on the other hand use same method as I do and cum sticks even after dressing and undressing, so still something I'm missing here!

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