Jump to content

Recommended Posts

Posted

 

 

 

 

 

I'm get A LOT of papyrus errors in my logs. Even just loading to the main screen gives me a page full of xpo errors. Is this detrimental?

 

I'm using patch 4e with v033. The patch is loaded after the main esp.

 

 

 

[04/12/2015 - 07:50:41PM] Cannot open store for class "xposcenariobase", missing file?

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::LeadOut_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::LeadIn_var used in xposcenariocell.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.HeartbeatPeriod()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onBeginState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.onEndState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariocell.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPostLeadOut()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.HeartbeatPeriod()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnSceneEvent()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnPrepare()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.onBeginState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.onBeginState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.onEndState()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::xpo_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Error: Failed to find variable ::Config_var used in xposcenariopillory.OnHeartbeat()

[04/12/2015 - 07:50:41PM] Cannot open store for class "xpoJailProps", missing file?

[04/12/2015 - 07:50:41PM] Error: Unable to bind script xposcenariocell to xpoScenarioCell (8C04DC8E) because their base types do not match

[04/12/2015 - 07:50:41PM] Cannot open store for class "xpoParade_SF_MobPunish", missing file?

[04/12/2015 - 07:50:41PM] Error: Unable to bind script xpoParade_SF_MobPunish to  (8C05489E) because their base types do not match

 

 

 

 

 

 

 ~ snip ~

 

You can try the steps above as well,

 

PO reinstall and save cleaning.

 

 

What about my question about missing scripts?

 

 

 

I also checked the data section of MO.

xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files)

xposcenariobase is listed and originates from the main mod BSA.

 

Any of those scripts the ones you thought I was missing?

 

 

Edit: The clean re-install instructions you posted don't apply to my situation. I get those errors on loading into the main menu. I'm not loading a save. I also have it installed properly.

 

 

Posted

~ snip ~  

 

Edit: The clean re-install instructions you posted don't apply to my situation. I get those errors on loading into the main menu. I'm not loading a save. I also have it installed properly.

If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO.

Posted

 

If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO.

 

 

MO installs each mod to named folder, under \Mod Organizer\mods. The original mod has all packed, but Inte's patch has them spilled (and that is fine for a patch.) If you have installed both as separate mods and simply allowed patch overwrite XPO in left panel priority view, then the path should be:

 

<InstallationPaht>\Mod Organizer\mods\xazPrisonOverhaul_V033 Patch 04e\Scripts

 

If you have merged these mods, then look Scripts folder from xazPrisonOverhaul V033 folder, unless you have named the merged mod otherwise.

Posted

 

~ snip ~  

 

Edit: The clean re-install instructions you posted don't apply to my situation. I get those errors on loading into the main menu. I'm not loading a save. I also have it installed properly.

If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO.

 

 

You can view the virtual directory in MO. I did that and confirmed I had the three scripts I saw errors on

 

 

I also checked the data section of MO.

xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files)

xposcenariobase is listed and originates from the main mod BSA.

Posted

 

If you were using NMM I would tell you to go to ...Data\Scripts\xposcenariocell.pex and make sure that script is there and do the same for all the other scripts you seem to be missing. But with MO those scripts could be anywhere depending how you configured your MO.

 

MO installs each mod to named folder, under \Mod Organizer\mods. The original mod has all packed, but Inte's patch has them spilled (and that is fine for a patch.) If you have installed both as separate mods and simply allowed patch overwrite XPO in left panel priority view, then the path should be:

 

<InstallationPaht>\Mod Organizer\mods\xazPrisonOverhaul_V033 Patch 04e\Scripts

 

If you have merged these mods, then look Scripts folder from xazPrisonOverhaul V033 folder, unless you have named the merged mod otherwise.

 

@Morferous thanks for the MO explanation. :P

MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. :ph34r:

Posted

 

@Morferous thanks for the MO explanation. :P

MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. :ph34r:

 

 

The other way to check is using the Data feature. It lets you see the virtual data directory. That's what I was doing here:

 

 

I also checked the data section of MO.

xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files)

xposcenariobase is listed and originates from the main mod BSA.

 

Having said that, I did realize I misread the filename in the log error. The main mod BSA has the "xposcenariobase" file, but the papyrus log error says it's looking for "xposcenebase".

 

On further testing, I think it's your patch that's causing the script errors. When I disabled your patch and loaded to the main menu, those errors did not appear. It seems like your patch is looking for "xposcenariobase" when it should be looking for "xposcenebase"?

Posted

 

@Morferous thanks for the MO explanation. :P

MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. :ph34r:

 

The other way to check is using the Data feature. It lets you see the virtual data directory. That's what I was doing here:

 

I also checked the data section of MO.

xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files)

xposcenariobase is listed and originates from the main mod BSA.

 

Having said that, I did realize I misread the filename in the log error. The main mod BSA has the "xposcenariobase" file, but the papyrus log error says it's looking for "xposcenebase".

 

On further testing, I think it's your patch that's causing the script errors. When I disabled your patch and loaded to the main menu, those errors did not appear. It seems like your patch is looking for "xposcenariobase" when it should be looking for "xposcenebase"?

 

 

I see... "xposcenebase" :huh: there is no such script anywhere, neither should my patch be looking for that. xposcenariobase -- yes; xposcenebase -- not so much.

Perhaps your patch download was corrupted somehow, I suggest you uninstall it with MO, delete it from your download folder, and re-download it.

Posted

 

I see... "xposcenebase" :huh: there is no such script anywhere, neither should my patch be looking for that. xposcenariobase -- yes; xposcenebase -- not so much.

Perhaps your patch download was corrupted somehow, I suggest you uninstall it with MO, delete it from your download folder, and re-download it.

 

>_> my bad. I didn't look at the version column--I had v32 installed. v32 uses xposcenebase. v33 uses xposcenariobase.

 

Swapped in v33 and it's fine now on main menu load.

Posted

 

 

 

In CD I need to be able to tell if the player has been jailed and when they are released. I can do that easily enough with the normal jail system but I wanted to find out if this uses a different system (likely) and how to tell when capture and release happens.

 

@xaz can answer this a lot better then I, but as far as I can tell the player gets added to xpoFactionPrisoner while jailed.

 

 

 

I saw the faction but I was wondering if there is a mod event sent when the player is jailed or released so I can trigger my own events from those.

 

 

Yeap we definitely need @xaz for that, because I did not see that in the code.   

 

 

 

I just finished going through the scripts and didn't see anything I can easily grab on to. I can probably set something up to check if the player is in that faction at a regular interval and trigger what I need to once they are removed from it.

Posted

I just finished going through the scripts and didn't see anything I can easily grab on to. I can probably set something up to check if the player is in that faction at a regular interval and trigger what I need to once they are removed from it.

Maybe it's enough to check if the quest xpoPrisoner [xx002DBA] is running?

The xazPisonerQuest script has some events you maybe able to use, so you don't have to monitor things.

Posted

 

I just finished going through the scripts and didn't see anything I can easily grab on to. I can probably set something up to check if the player is in that faction at a regular interval and trigger what I need to once they are removed from it.

Maybe it's enough to check if the quest xpoPrisoner [xx002DBA] is running?

The xazPisonerQuest script has some events you maybe able to use, so you don't have to monitor things.

 

 

Unless an event is announced using RegisterModEvent (I think that is it) I can't detect it, normal events can't be picked up like those can.

 

I am guessing that the prisoner quest is what controls it overall? There isn't much there other than stage 10 is the shutdown stage.

 

 

What I am looking to do is detect when the player is released so I can send a courier to them.

Posted

I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. :)

Posted

I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. :)

 

Is there any sort of 'incarcerated' faction that the player is added to when in jail (and ideally removed from when released from jail) that could serve as a flag to pause events?  This might be a good idea even for dealing with non-XPO jail time as events triggering during an escape attempt would be problematic.

Posted

I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. :)

 

I could add such a flag in a patch, but that will make it dependent on one of my patches. But with @xaz MIA, not sure.

Speaking of flags, does DCL have something like that, I am looking to pause some of your quests and remove the devices while the player is in prison. I looked at your code a bit and I did not see anything like that.

BTW I plan to use some of your code in my next patch hope you don't mind, if you do then I am willing to wear some of your "high security" restraints in exchange. The code bellow is just for removing some keys, this is with no dependency.

 

 

INT Function RemoveAllKeys(Actor Slave, BOOL bStdKeysOnly = False) ;Adapted from Kimy's function. 
	zadLibs Libs = None
	INT iReturnBit = 0
	Libs = Game.GetFormFromFile(0x0000F624, "Devious Devices - Integration.esm") AS zadLibs
	
	If (Libs != None)
		INT iRestrKeys = Slave.GetItemCount(Libs.restraintsKey)
		INT iChastityKeys = Slave.GetItemCount(Libs.ChastityKey)
		INT iPiercTool = Slave.GetItemCount(Libs.PiercingKey)
			
		Slave.RemoveItem(Libs.restraintsKey, iRestrKeys, True) 
			If (iRestrKeys > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iRestrKeys+" restraints keys!")
			ElseIf (iRestrKeys <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any restraints keys! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only restraints key!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only restraints key!")
				EndIf
			EndIf
				
		Slave.RemoveItem(Libs.ChastityKey, iChastityKeys, True)  
			If (iChastityKeys > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iChastityKeys+" chastity keys!")
			ElseIf (iChastityKeys <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any chastity keys! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only chastity key!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only chastity key!")
				EndIf
			EndIf
			
		Slave.RemoveItem(Libs.piercingKey, iPiercTool, True)  
			If (iPiercTool > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iPiercTool+" piercing tools!")
			ElseIf (iPiercTool <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any piercing tools! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only piercing tool!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only piercing tool!")
				EndIf
			EndIf
	iReturnBit = iRestrKeys + iChastityKeys + iPiercTool
	Else 
		Debug.Trace("xpoMainPatches: RemoveAllKeys() -- Devious Devices - Integration.esm did not load!")
		iReturnBit = -1
	EndIf
	
	If (bDCL_On == True)
		dcur_library dclibs = None
		dclibs = Game.GetFormFromFile(0x00024495, "Deviously Cursed Loot.esp") AS dcur_library
		
		If (dclibs != None)
			Slave.RemoveItem(dclibs.dcumenu.dcur_catsuitkey , Slave.GetItemCount(dclibs.dcumenu.dcur_catsuitkey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveCollarKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveCollarKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagPlugKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagPlugKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_shockbootskey , Slave.GetItemCount(dclibs.dcumenu.dcur_shockbootskey), true) 	
			Slave.RemoveItem(dclibs.dcumenu.dcur_yokekey , Slave.GetItemCount(dclibs.dcumenu.dcur_yokekey), true) 		
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_handrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_handrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_headrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_headrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_bodyrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_bodyrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_legrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_legrestraintskey), true) 
			If Utility.RandomFloat(0.0, 100.0) < dclibs.dcumenu.slavebeltkeystealchance && (Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5) > 0)
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey1, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey2, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey3, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey4, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey5, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5), true) 
				If Slave.GetActorBase().GetSex() == 0
					Libs.Notify(Slave.GetDisplayName() + " lost all his keys, even the slave chastity belt keys!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost all her keys, even the slave chastity belt keys!")
				EndIf	
			Else
				If Slave.GetActorBase().GetSex() == 0
					Libs.Notify(Slave.GetDisplayName() + " lost all his precious keys!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost all her precious keys!")
				EndIf
			EndIf
				if dclibs.mcs.isworn_slavecollar == 2
					dclibs.mcs.isworn_slavecollar == 1
				endif
				if dclibs.mcs.isworn_slavegag == 2
					dclibs.mcs.isworn_slavegag == 1
				endif
				if dclibs.mcs.isworn_shockboots == 2
					dclibs.mcs.isworn_shockboots == 1
				endif
			else
				if Slave.GetActorBase().GetSex() == 0
					libs.notify(Slave.GetDisplayName() + " lost some of his precious keys!")
				else
					libs.notify(Slave.GetDisplayName() + " lost some of her precious keys!")
				endif
			endif
		Else 
			Debug.Trace("xpoMainPatches: RemoveAllKeys - Deviously Cursed Loot.esp could not be loaded!")
		EndIf
	
	RETURN iReturnBit
EndFunction

 

 

 

Do you have a similar function that will pause running quests and remove the items?

 

Posted

i think i found a bug, got imprisoned in Windhelm when the jailer took my char out of the cell he took her to Solitude to the stocks.

 

EDIT - after the parade punishment, the PC is taken to Solitude to the Stocks. is this something that is supposed to happen or is this a bug? 

Posted

 

I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. :)

 

I could add such a flag in a patch, but that will make it dependent on one of my patches. But with @xaz MIA, not sure.

Speaking of flags, does DCL have something like that, I am looking to pause some of your quests and remove the devices while the player is in prison. I looked at your code a bit and I did not see anything like that.

BTW I plan to use some of your code in my next patch hope you don't mind, if you do then I am willing to wear some of your "high security" restraints in exchange. The code bellow is just for removing some keys, this is with no dependency.

 

 

INT Function RemoveAllKeys(Actor Slave, BOOL bStdKeysOnly = False) ;Adapted from Kimy's function. 
	zadLibs Libs = None
	INT iReturnBit = 0
	Libs = Game.GetFormFromFile(0x0000F624, "Devious Devices - Integration.esm") AS zadLibs
	
	If (Libs != None)
		INT iRestrKeys = Slave.GetItemCount(Libs.restraintsKey)
		INT iChastityKeys = Slave.GetItemCount(Libs.ChastityKey)
		INT iPiercTool = Slave.GetItemCount(Libs.PiercingKey)
			
		Slave.RemoveItem(Libs.restraintsKey, iRestrKeys, True) 
			If (iRestrKeys > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iRestrKeys+" restraints keys!")
			ElseIf (iRestrKeys <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any restraints keys! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only restraints key!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only restraints key!")
				EndIf
			EndIf
				
		Slave.RemoveItem(Libs.ChastityKey, iChastityKeys, True)  
			If (iChastityKeys > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iChastityKeys+" chastity keys!")
			ElseIf (iChastityKeys <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any chastity keys! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only chastity key!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only chastity key!")
				EndIf
			EndIf
			
		Slave.RemoveItem(Libs.piercingKey, iPiercTool, True)  
			If (iPiercTool > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iPiercTool+" piercing tools!")
			ElseIf (iPiercTool <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any piercing tools! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only piercing tool!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only piercing tool!")
				EndIf
			EndIf
	iReturnBit = iRestrKeys + iChastityKeys + iPiercTool
	Else 
		Debug.Trace("xpoMainPatches: RemoveAllKeys() -- Devious Devices - Integration.esm did not load!")
		iReturnBit = -1
	EndIf
	
	If (bDCL_On == True)
		dcur_library dclibs = None
		dclibs = Game.GetFormFromFile(0x00024495, "Deviously Cursed Loot.esp") AS dcur_library
		
		If (dclibs != None)
			Slave.RemoveItem(dclibs.dcumenu.dcur_catsuitkey , Slave.GetItemCount(dclibs.dcumenu.dcur_catsuitkey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveCollarKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveCollarKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagPlugKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagPlugKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_shockbootskey , Slave.GetItemCount(dclibs.dcumenu.dcur_shockbootskey), true) 	
			Slave.RemoveItem(dclibs.dcumenu.dcur_yokekey , Slave.GetItemCount(dclibs.dcumenu.dcur_yokekey), true) 		
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_handrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_handrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_headrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_headrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_bodyrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_bodyrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_legrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_legrestraintskey), true) 
			If Utility.RandomFloat(0.0, 100.0) < dclibs.dcumenu.slavebeltkeystealchance && (Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5) > 0)
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey1, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey2, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey3, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey4, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey5, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5), true) 
				If Slave.GetActorBase().GetSex() == 0
					Libs.Notify(Slave.GetDisplayName() + " lost all his keys, even the slave chastity belt keys!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost all her keys, even the slave chastity belt keys!")
				EndIf	
			Else
				If Slave.GetActorBase().GetSex() == 0
					Libs.Notify(Slave.GetDisplayName() + " lost all his precious keys!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost all her precious keys!")
				EndIf
			EndIf
				if dclibs.mcs.isworn_slavecollar == 2
					dclibs.mcs.isworn_slavecollar == 1
				endif
				if dclibs.mcs.isworn_slavegag == 2
					dclibs.mcs.isworn_slavegag == 1
				endif
				if dclibs.mcs.isworn_shockboots == 2
					dclibs.mcs.isworn_shockboots == 1
				endif
			else
				if Slave.GetActorBase().GetSex() == 0
					libs.notify(Slave.GetDisplayName() + " lost some of his precious keys!")
				else
					libs.notify(Slave.GetDisplayName() + " lost some of her precious keys!")
				endif
			endif
		Else 
			Debug.Trace("xpoMainPatches: RemoveAllKeys - Deviously Cursed Loot.esp could not be loaded!")
		EndIf
	
	RETURN iReturnBit
EndFunction

 

 

 

Do you have a similar function that will pause running quests and remove the items?

 

 

Hey Inte - why not just push a modevent to allow other mods to be aware that the player is arrested and then released, the unpatched version will be no worse off and it will offer the chance of less conflicts for patch users if mod authors decide to listen for the event.

 

Also - in case you didn't know, sendmodevent("dhlp-Suspend") and sendmodevent("dhlp-Resume") can be used to suspend  and resume deviously helpless, I've used this in EC+ to stop dH attacks during tentacle scenes.

 

 

Posted

 

I'd also super appreciate an easy-to-check flag I could use to detect if XPO is currently running a scene, so I could make my own mod pause its events (that have the potential to break XPO scenes). SD+ is setting a StoreUtil flag, which is really convenient. :)

 

I could add such a flag in a patch, but that will make it dependent on one of my patches. But with @xaz MIA, not sure.

Speaking of flags, does DCL have something like that, I am looking to pause some of your quests and remove the devices while the player is in prison. I looked at your code a bit and I did not see anything like that.

BTW I plan to use some of your code in my next patch hope you don't mind, if you do then I am willing to wear some of your "high security" restraints in exchange. The code bellow is just for removing some keys, this is with no dependency.

 

 

INT Function RemoveAllKeys(Actor Slave, BOOL bStdKeysOnly = False) ;Adapted from Kimy's function. 
	zadLibs Libs = None
	INT iReturnBit = 0
	Libs = Game.GetFormFromFile(0x0000F624, "Devious Devices - Integration.esm") AS zadLibs
	
	If (Libs != None)
		INT iRestrKeys = Slave.GetItemCount(Libs.restraintsKey)
		INT iChastityKeys = Slave.GetItemCount(Libs.ChastityKey)
		INT iPiercTool = Slave.GetItemCount(Libs.PiercingKey)
			
		Slave.RemoveItem(Libs.restraintsKey, iRestrKeys, True) 
			If (iRestrKeys > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iRestrKeys+" restraints keys!")
			ElseIf (iRestrKeys <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any restraints keys! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only restraints key!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only restraints key!")
				EndIf
			EndIf
				
		Slave.RemoveItem(Libs.ChastityKey, iChastityKeys, True)  
			If (iChastityKeys > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iChastityKeys+" chastity keys!")
			ElseIf (iChastityKeys <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any chastity keys! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only chastity key!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only chastity key!")
				EndIf
			EndIf
			
		Slave.RemoveItem(Libs.piercingKey, iPiercTool, True)  
			If (iPiercTool > 1) 
				Libs.Notify(Slave.GetDisplayName() + " lost "+iPiercTool+" piercing tools!")
			ElseIf (iPiercTool <= 0)
				Libs.Notify(Slave.GetDisplayName() + " doesn't have any piercing tools! Hardcore!")
			Else 
				If (Slave.GetActorBase().GetSex() == 1)
					Libs.Notify(Slave.GetDisplayName() + " lost her only piercing tool!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost his only piercing tool!")
				EndIf
			EndIf
	iReturnBit = iRestrKeys + iChastityKeys + iPiercTool
	Else 
		Debug.Trace("xpoMainPatches: RemoveAllKeys() -- Devious Devices - Integration.esm did not load!")
		iReturnBit = -1
	EndIf
	
	If (bDCL_On == True)
		dcur_library dclibs = None
		dclibs = Game.GetFormFromFile(0x00024495, "Deviously Cursed Loot.esp") AS dcur_library
		
		If (dclibs != None)
			Slave.RemoveItem(dclibs.dcumenu.dcur_catsuitkey , Slave.GetItemCount(dclibs.dcumenu.dcur_catsuitkey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveCollarKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveCollarKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_slaveGagPlugKey , Slave.GetItemCount(dclibs.dcumenu.dcur_slaveGagPlugKey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_shockbootskey , Slave.GetItemCount(dclibs.dcumenu.dcur_shockbootskey), true) 	
			Slave.RemoveItem(dclibs.dcumenu.dcur_yokekey , Slave.GetItemCount(dclibs.dcumenu.dcur_yokekey), true) 		
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_handrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_handrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_headrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_headrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_bodyrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_bodyrestraintskey), true) 
			Slave.RemoveItem(dclibs.dcumenu.dcur_lb_legrestraintskey , Slave.GetItemCount(dclibs.dcumenu.dcur_lb_legrestraintskey), true) 
			If Utility.RandomFloat(0.0, 100.0) < dclibs.dcumenu.slavebeltkeystealchance && (Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4) > 0 || Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5) > 0)
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey1, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey1), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey2, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey2), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey3, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey3), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey4, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey4), true) 
				Slave.RemoveItem(dclibs.dcumenu.dcur_slavebeltkey5, Slave.GetItemCount(dclibs.dcumenu.dcur_slavebeltkey5), true) 
				If Slave.GetActorBase().GetSex() == 0
					Libs.Notify(Slave.GetDisplayName() + " lost all his keys, even the slave chastity belt keys!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost all her keys, even the slave chastity belt keys!")
				EndIf	
			Else
				If Slave.GetActorBase().GetSex() == 0
					Libs.Notify(Slave.GetDisplayName() + " lost all his precious keys!")
				Else
					Libs.Notify(Slave.GetDisplayName() + " lost all her precious keys!")
				EndIf
			EndIf
				if dclibs.mcs.isworn_slavecollar == 2
					dclibs.mcs.isworn_slavecollar == 1
				endif
				if dclibs.mcs.isworn_slavegag == 2
					dclibs.mcs.isworn_slavegag == 1
				endif
				if dclibs.mcs.isworn_shockboots == 2
					dclibs.mcs.isworn_shockboots == 1
				endif
			else
				if Slave.GetActorBase().GetSex() == 0
					libs.notify(Slave.GetDisplayName() + " lost some of his precious keys!")
				else
					libs.notify(Slave.GetDisplayName() + " lost some of her precious keys!")
				endif
			endif
		Else 
			Debug.Trace("xpoMainPatches: RemoveAllKeys - Deviously Cursed Loot.esp could not be loaded!")
		EndIf
	
	RETURN iReturnBit
EndFunction

 

 

 

Do you have a similar function that will pause running quests and remove the items?

 

 

Feel free to use as much of my code as you wish. :)

 

And yes, now that I have scenes as well, I better heed my own advice and add a flag for other mods to check. It will be in the next patch! :D

 

Also, if I may make a suggestion - I think the more natural way to integrate DD devices is not removing them on arrest and re-applying them on release but to just keep them on the prisoner during their incarceration and have PO take their presence into consideration ("Haha, she comes with her own restraints, so we don't have to chain her up. How convenient!"). That also would save some headaches about DD quest items (some DD quest items trigger quest relevant code upon equip and removal, at least some of mine do). Removing/re-applying them would break their respective quests.

 

 

Posted

Got arrested in Whiterun. Bounty was 1040. The punishment is only meant to last 60 seconds, but it just won't stop. My character is being Whipped. She's also not recieving any marks from the whipping.

Posted

Hi,

 

I haven't read through the forum yet. Just a ping to let you know I'm still alive. Currently working on the next Zaz Animation Pack update, which is taking a lot of time.

 

I'll return to this mod as soon as I can.

 

Again, and I don't think I can say this enough; Thanks Inte for taking care of this when I'm busy elsewhere.

 

Cheers!

(I'll now try to go back a few pages and answer any specific questions)

Posted

 

 

 

In CD I need to be able to tell if the player has been jailed and when they are released. I can do that easily enough with the normal jail system but I wanted to find out if this uses a different system (likely) and how to tell when capture and release happens.

 

@xaz can answer this a lot better then I, but as far as I can tell the player gets added to xpoFactionPrisoner while jailed.

 

 

I saw the faction but I was wondering if there is a mod event sent when the player is jailed or released so I can trigger my own events from those.

 

 

Yeap we definitely need @xaz for that, because I did not see that in the code.

 

No there isn't. This is something that could be easily added though. In the future, I hope that I will be able to add support for mods enslaving and releasing the actor. There is a lot to do, ... and so little time. :(

Posted

 

 

... don't tell @AwfulArchdemon. :ph34r:

No need to tell him.

He can smell such thing miles upwind. :lol:

 

 

I know... damn, I'm in trouble now. ;)

 

use WryeBash... the only mature tool for modders out there.

 

I use WryeBash for all modding projects, then MO to patch things up for playing etc. It's the only way to fly....

Posted

 

 

@Morferous thanks for the MO explanation. :P

MO is definitely the way to go ... I've been meaning to switch over from NMM just haven't got around to it yet ... don't tell @AwfulArchdemon. :ph34r:

 

The other way to check is using the Data feature. It lets you see the virtual data directory. That's what I was doing here:

 

I also checked the data section of MO.

xposcenariocell and xposcenariopillory are listed and originate from your patch (main mod's BSA don't contain those files)

xposcenariobase is listed and originates from the main mod BSA.

 

Having said that, I did realize I misread the filename in the log error. The main mod BSA has the "xposcenariobase" file, but the papyrus log error says it's looking for "xposcenebase".

 

On further testing, I think it's your patch that's causing the script errors. When I disabled your patch and loaded to the main menu, those errors did not appear. It seems like your patch is looking for "xposcenariobase" when it should be looking for "xposcenebase"?

 

 

I see... "xposcenebase" :huh: there is no such script anywhere, neither should my patch be looking for that. xposcenariobase -- yes; xposcenebase -- not so much.

Perhaps your patch download was corrupted somehow, I suggest you uninstall it with MO, delete it from your download folder, and re-download it.

 

I named those entities "Scenarios". Basically, a scenario is when you're put in the pillory, cage, roaming in the parade, and so on. Those all contain their own logic and routines for handling things.

 

Each scenario may then opt to play out different scenes, in particular, every scenario gets the option to play out scenes when moving the player. An example:

(Player starts off imprisoned)

 

XPO determines that a new scenario should play, it decides on the pillory scenario

# Cell scenario is told to terminate

## (OutOfCell scene) Cell scenario launches the scene where the jailer hauls the player out of prison

## When player is outside the prison cell, it tells the XPO logic it's done

 

# Pillory scenario is asked to start

## Pillory scneario determines that the player needs to move to a pillory

## (MoveToPillory scene) Pillory movement scene starts running

## Player is placed in the pillories

## After x hours in game, the pillory scenario decides that it's time for action

## (PunishPillory scenario) starts running

 

# After a bunch of repeats, the pillory scenario releases control to the cage scenario

## Pillory scenario plays the "out of scenario" scene (empty for the pillory, iirc)

## Cage scenario starts its "move to the cage" scene

 

Basically, scenarios contain all the logic needed to release and attach the player to a controlled position. A scenario will release the player from the cage, cell, pillory when terminated. It will also move a player into whatever is needed when started. XPO logic determines which scenario should run, then requests the currenly running scenario to stop. Once the running scenario has stopped, the player is in a good state to pick up by another scenario.

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