Jump to content

Devious Devices Framework Development/Beta


Recommended Posts

I did a quick test with the gags and it seems to be blocking all the food in my inventory but none of my drinks or is that intentional? I generally play with hardcore mode off so I can't tell. (Side note: I guess it makes sense. While not impossible, It would be a little awkward to drink mead through a ballgag)

 

Edit: it blocks potions too so now I'm really confused.

Link to comment

With the latest build of DDx/DDi:

 

Wearing a "Yoke" the PC w/restraints key asked follower to help.  Follower removes the yoke but PC hands stayed up.  Could still fight/cast spells, but normal idles were still "arms in yoke".

 

For the "try to escape" devices you get the choice to "Cut device" even when you have no weapons in inventory.  Proceed with the attempt, but you don't get a message about not having anything to cut with.  (Unlike the lock pick scenario where you do get a message if you have no lock picks).

 

When the "tug at your belt" animation is triggered it sometimes doesn't stop by itself.

 

Link to comment

I did a quick test with the gags and it seems to be blocking all the food in my inventory but none of my drinks or is that intentional? I generally play with hardcore mode off so I can't tell. (Side note: I guess it makes sense. While not impossible, It would be a little awkward to drink mead through a ballgag)

 

Edit: it blocks potions too so now I'm really confused.

 

That is by design. Has been for a while. Anything that obstructs the mouth would make drinking anything difficult/impossible.

Link to comment

New build up on the DDi repo! (Also requires the latest DDx dev build)

  • ZAP should no longer have any influence on player controls and bound combat, our devices are now controlled entirely by the DD framework. Users (and modders) should avoid mixing ZAP and DD devices and keywords. Users (and modders) who fail to abide by this warning forfeit their warranty. The Devious Development Team takes no responsibility for loss of limb, life, mental or physical health, damage to the user's software, hardware, self-esteem or any aspect of personal life, occurrence of alien invasions, AI uprisings, zombie infections, natural and unnatural disasters, unfavourable election results, temporal, spatial, quantum or any other dimensional, extradimensional, transdimensional, postdimensional, protodimensional, adimensional or antidimensional anomalies.
  • Also fixed an issue causing sneaking controls to get permanently disabled after putting on Hobble Dress/Ankle Chains. In order to fix it in an ongoing game, please unequip and re-equip all currently worn devices.

Up next on my immediate agenda:

  • Investigate and fix multiplication issue with Prisoner Chains HDT graphics (confirmed reproducible, theoretical solution available, pending implementation)
  • Implement prototype devices for the remaining AA sets (Breast Yoke, Front Cuffs and their Hobble variants)
  • Implement struggling animations for the above
  • Investigate the reports of AAs getting stuck after unequipping relevant devices (pending successful reproduction)
Link to comment

Question about events - I am trying to troubleshoot a custom event in Parasites.

 

The event is registered as a zadBaseEvent on a Player quest alias.

 

I do see this in the logs:

[06/06/2017 - 12:24:42AM] [Zad]: [parasiteOrganicEvent] Loaded: 70%

Which seems to indicate the event was registered.... but I do not see it in the list of events in MCM and I cannot manually tweak the frequency in-game.

 

Any idea what can be causing this?

Link to comment

I had some time to test the latest build and here are the problems/bugs I found :

-It's possible to remove other restraints while having arms bound (manipulation of clothes seems to be forbidden correctly except for expansion variants)

-chastity belt/harness/bra/corset are only visible with an open straitjacket, they are invisible with a regular straitjacket
-when arms are bound by an armbinder, elbowbinder or a yoke, and weapons unsheathed, arms are popping out of them while moving (expansion and no expansion restraints)
-straitjacket colors preview in expansion are not what expected (everything is black, no red or white)
 
Keep up the good work and don't hesitate to ask more precisely what you need to have tested !
Link to comment

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

post-167058-0-18102600-1496898515_thumb.png

post-167058-0-02267000-1496898521_thumb.png

post-167058-0-21808600-1496898532_thumb.png

Link to comment

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

This bug is usually caused by not having the loose version of SexLab Aroused installed. To compile DD, you will need that. CK cannot fetch source code from BSA archives.

Link to comment

 

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

This bug is usually caused by not having the loose version of SexLab Aroused installed. To compile DD, you will need that. CK cannot fetch source code from BSA archives.

 

 

I've reinstalled Sexlab Aroused like you suggested and the problems still persisted.

 

I seriously don't think it's that.

 

Link to comment

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

Which version of the CK are you using? The original or the new one?

Link to comment

 

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

Which version of the CK are you using? The original or the new one?

 

 

There's a new one?

 

I've only been using the original one. I didn't know there was a new one.

 

Unless you're talking about the SE Creation Kit, in which case, no. Definitely not.

 

Link to comment

 

 

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

Which version of the CK are you using? The original or the new one?

 

 

There's a new one?

 

I've only been using the original one. I didn't know there was a new one.

 

Unless you're talking about the SE Creation Kit, in which case, no. Definitely not.

 

 

 

Just wondering as the buttons to minimize, make full screen and close screen are different from mine as are the rounded corners (mine are square) and I am using Win 10.

 

Make sure you have the source scripts for every mod installed including SKSE (usually not included in the installer version but is in the zip version) as well as the source files for Sky UI.

Link to comment

 

 

 

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

Which version of the CK are you using? The original or the new one?

 

 

There's a new one?

 

I've only been using the original one. I didn't know there was a new one.

 

Unless you're talking about the SE Creation Kit, in which case, no. Definitely not.

 

 

 

Just wondering as the buttons to minimize, make full screen and close screen are different from mine as are the rounded corners (mine are square) and I am using Win 10.

 

Make sure you have the source scripts for every mod installed including SKSE (usually not included in the installer version but is in the zip version) as well as the source files for Sky UI.

 

 

I'm using Windows 7, so it does look different to Windows 10.

 

I do have the source scripts installed, but I will go over it all again just in case.

 

Link to comment

Question about events - I am trying to troubleshoot a custom event in Parasites.

 

The event is registered as a zadBaseEvent on a Player quest alias.

 

I do see this in the logs:

[06/06/2017 - 12:24:42AM] [Zad]: [parasiteOrganicEvent] Loaded: 70%

Which seems to indicate the event was registered.... but I do not see it in the list of events in MCM and I cannot manually tweak the frequency in-game.

 

Any idea what can be causing this?

 

Bump? (since it was lost at the very end of the previous page)

Link to comment

 

 

 

 

Been working with the new framework, and I've been running with a few script related bugs when trying to apply them to new devices.

 

I'm currently working on The Duder's Grab Bag of Fetish Items in the CK (scary, I know. Don't know how to utilize TES5Edit for this)

 

My problem is this: I go to add script, then after finding the script I need, it gets added like normal. Now, when I go to open the script, a dialogue box pops up saying "Error encountered while reloading the scripts" and then either a box with no scripts within pops up after closing the dialogue box, or one with very few scripts are in. (Gags for the latter, collars for the former in my case.)

 

I've attached pics showing my problem. (In pic 3, I have filled what I could access in already.)

 

Which version of the CK are you using? The original or the new one?

 

 

There's a new one?

 

I've only been using the original one. I didn't know there was a new one.

 

Unless you're talking about the SE Creation Kit, in which case, no. Definitely not.

 

 

 

Just wondering as the buttons to minimize, make full screen and close screen are different from mine as are the rounded corners (mine are square) and I am using Win 10.

 

Make sure you have the source scripts for every mod installed including SKSE (usually not included in the installer version but is in the zip version) as well as the source files for Sky UI.

 

 

I'm using Windows 7, so it does look different to Windows 10.

 

I do have the source scripts installed, but I will go over it all again just in case.

 

 

 

Ok, it worked! Thanks for all your help!

 

I went through all the requesits, and updated what needed updating, and extracted the SkyUI scripts. Dunno EXACTLY what was actually needed, but I'm glad I did it all! XD!

 

Link to comment

I spent some time dissecting the event registration system to figure out why my events do not appear in the MCM menu.

 

It seems the issue is that the new events are registered AFTER the event slots array is built.

 

I saw there is an event to refresh the array - SendModEvent("zadRegisterEvents")

 

When would you suggest is a good time to fire off that event?

 

I tried to apply it 'OnLoad' from the main control quest of Parasites but it seems to be firing off while the initial registration event loop is running.

 

So back to my original question - any tips on how to properly register custom device events so that they appear in MCM?

 

In case that helps, here is the code of my custom event so far:

 

 

Scriptname SLP_parasiteOrganicBaseEvent extends zadbaseevent


Keyword Property _SLPKP_OrganicVibrate Auto
Keyword Property _SLPKP_Parasite Auto
Keyword Property _SLPKP_SpiderEgg Auto
Keyword Property _SLPKP_SpiderPenis Auto
Keyword Property _SLPKP_ChaurusWorm Auto
Keyword Property _SLPKP_ChaurusWormVag Auto
Keyword Property _SLPKP_TentacleMonster Auto
Keyword Property _SLPKP_LivingArmor Auto
Keyword Property _SLPKP_FaceHugger Auto
Keyword Property _SLPKP_FaceHuggerGag Auto


bool Function HasKeywords(actor akActor)
return (akActor.WornHasKeyword(_SLPKP_OrganicVibrate) )
EndFunction

Function Execute(actor akActor)
if akActor.WornHasKeyword ( _SLPKP_SpiderEgg )
libs.NotifyPlayer("The eggs roll against each other inside your womb.")
libs.Moan(akActor)

Elseif akActor.WornHasKeyword ( _SLPKP_ChaurusWorm )
libs.NotifyPlayer("The worm twitches and squirms deep inside your ass.")
libs.Moan(akActor)

Elseif akActor.WornHasKeyword ( _SLPKP_ChaurusWormVag )
libs.NotifyPlayer("The worm twitches and squirms deep inside your womb.")
libs.Moan(akActor)

Elseif akActor.WornHasKeyword ( _SLPKP_TentacleMonster )
libs.NotifyPlayer("The slimy tentacles rub slowly against your swollen lips.")
libs.SexlabMoan(akActor)

Elseif akActor.WornHasKeyword ( _SLPKP_LivingArmor )
libs.NotifyPlayer("The oozing tendrils squeeze your skin relentlessly.")
libs.SexlabMoan(akActor)

Elseif akActor.WornHasKeyword ( _SLPKP_FaceHugger )
libs.NotifyPlayer("The tail of the critter pumps semen deep inside your womb.")
libs.Pant(akActor)

Elseif akActor.WornHasKeyword ( _SLPKP_FaceHuggerGag )
libs.NotifyPlayer("The tail of the critter pumps semen deep down your throat.")
libs.SexlabMoan(akActor)

EndIf

libs.Moan(akActor)
EndFunction

 

Link to comment

Question about event updates:

		if ProcessNum > 0 && !ProcessEvents(libs.PlayerRef) ; If we processed the last event, restart.
			if ProcessNum == 0
				libs.Log("Finished processing events. Re-Polling..")
				UpdateGlobalEvent()
			else
				DoRegister()
			EndIf
		else
			DoRegister()
		EndIf

In zadEventSlots.psc, you can find this piece of code above.

 

The first If statement checks if 'ProcessNum > 0'.

The second one looks if 'ProcessNum == 0'.

 

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

Link to comment

Question about event updates:

		if ProcessNum > 0 && !ProcessEvents(libs.PlayerRef) ; If we processed the last event, restart.
			if ProcessNum == 0
				libs.Log("Finished processing events. Re-Polling..")
				UpdateGlobalEvent()
			else
				DoRegister()
			EndIf
		else
			DoRegister()
		EndIf

In zadEventSlots.psc, you can find this piece of code above.

 

The first If statement checks if 'ProcessNum > 0'.

The second one looks if 'ProcessNum == 0'.

 

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

 

Is there no case where  ProcessEvents(libs.PlayerRef)  would be true and ProcessNum == 0 ?

 

Link to comment

 

 

 

 

Elseif akActor.WornHasKeyword ( _SLPKP_FaceHugger )

libs.NotifyPlayer("The tail of the critter pumps semen deep inside your womb.")

libs.Pant(akActor)

 

Elseif akActor.WornHasKeyword ( _SLPKP_FaceHuggerGag )

libs.NotifyPlayer("The tail of the critter pumps semen deep down your throat.")

libs.SexlabMoan(akActor)

 

 

Sorry to be a bit of a nitpicker, but the tail wouldn't be within either of those orifaces. It would be the creatures... well, reproductive organ, their version of a penis. You get what I mean. I'm rambling! XD!

 

May I suggest these as a proper alternative? (It's up to you, of course.)

 

"The critter's penis pumps semen deep inside your womb."

"The critter's penis pumps semen deep down your throat."

Link to comment

Hello,

 

Question about event updates:

		if ProcessNum > 0 && !ProcessEvents(libs.PlayerRef) ; If we processed the last event, restart.
			if ProcessNum == 0
				libs.Log("Finished processing events. Re-Polling..")
				UpdateGlobalEvent()
			else
				DoRegister()
			EndIf
		else
			DoRegister()
		EndIf

In zadEventSlots.psc, you can find this piece of code above.

 

The first If statement checks if 'ProcessNum > 0'.

The second one looks if 'ProcessNum == 0'.

 

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

 

just a wild guess from this snippet of code alone: this construct could be working if:

- ProcessNum's scope also is valid within the function ProcessEvents

- ProcessEvents manipulates ProcessNum via side effects

- therefore: if ProcessNum is e.g. 1 and ProcessEvents decreases it by one, then ProcessNum could actually be 0 at the second if statement.

 

Whether this is good style is a completely different matter though.

 

Link to comment

Hello,

 

Question about event updates:

		if ProcessNum > 0 && !ProcessEvents(libs.PlayerRef) ; If we processed the last event, restart.
			if ProcessNum == 0
				libs.Log("Finished processing events. Re-Polling..")
				UpdateGlobalEvent()
			else
				DoRegister()
			EndIf
		else
			DoRegister()
		EndIf

In zadEventSlots.psc, you can find this piece of code above.

 

The first If statement checks if 'ProcessNum > 0'.

The second one looks if 'ProcessNum == 0'.

 

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

 

just a wild guess from this snippet of code alone: this construct could be working if:

- ProcessNum's scope also is valid within the function ProcessEvents

- ProcessEvents manipulates ProcessNum via side effects

- therefore: if ProcessNum is e.g. 1 and ProcessEvents decreases it by one, then ProcessNum could actually be 0 at the second if statement.

 

Whether this is good style is a completely different matter though.

 

That would be assuming ProcessEvents is evaluated first in the condition.

If the condition is evaluated left to right in the code, the condition would fail right away and never get to evaluate ProcessEvent... but I concede there is a small chance that statement could be true.

 

That said, I doubt that was the intent :)

 

Edit: I looked at ProcessEvents and it doesn't touch ProcessNum.

However, it does return false if processEnum = 0, so it would fail as well in that case :)

 

Question about event updates:

 (...)

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

 

Is there no case where  ProcessEvents(libs.PlayerRef)  would be true and ProcessNum == 0 ?

 

 

 

If ProcessNum==0, then the first part of the AND statement is false and the whole condition would fail even if ProcessEvents is true.

 

For it to work, it would have to be become 0 sometime between the first and the second line of code, which is very unlikely but I agree, could be possible in the situation suggested above.

Link to comment

Chris knows. But it doesn't matter either way. Xaz, who was responsible for the coding side of ZAP, is still MIA, so the parts of ZAP that are relevant to us remain inadequate for our needs. Ultimately, ZAP limits us in areas that we are interested in expanding. And because none of us can commit to taking it over, we cannot trust it not to be abandoned or inherited by the wrong person again.

 

But regardless of anything else, we've been planning to do it for a long time. The recent incident merely convinced us that it was time to finally put the plan into motion. Given the uncertain future of ZAP, we have concluded that freeing DD from its dependency is the only way forward.

 

This is potentially huge for mods relying on ZAP keywords as shorthand for NPCs wearing collars or gags. 

 

I will have to deeply audit my mods for this.

 

Any rough idea of when you are planning to release this particular change? are we talking weeks, months?

Link to comment

 

Chris knows. But it doesn't matter either way. Xaz, who was responsible for the coding side of ZAP, is still MIA, so the parts of ZAP that are relevant to us remain inadequate for our needs. Ultimately, ZAP limits us in areas that we are interested in expanding. And because none of us can commit to taking it over, we cannot trust it not to be abandoned or inherited by the wrong person again.

 

But regardless of anything else, we've been planning to do it for a long time. The recent incident merely convinced us that it was time to finally put the plan into motion. Given the uncertain future of ZAP, we have concluded that freeing DD from its dependency is the only way forward.

 

This is potentially huge for mods relying on ZAP keywords as shorthand for NPCs wearing collars or gags. 

 

I will have to deeply audit my mods for this.

 

Any rough idea of when you are planning to release this particular change? are we talking weeks, months?

 

Well, looking at the commits in the dev branch, it seems that happened about a week ago...

At least that's when they removed the zap keywords from the items.

Link to comment

Hello,

 

 

Hello,

 

Question about event updates:

		if ProcessNum > 0 && !ProcessEvents(libs.PlayerRef) ; If we processed the last event, restart.
			if ProcessNum == 0
				libs.Log("Finished processing events. Re-Polling..")
				UpdateGlobalEvent()
			else
				DoRegister()
			EndIf
		else
			DoRegister()
		EndIf

In zadEventSlots.psc, you can find this piece of code above.

 

The first If statement checks if 'ProcessNum > 0'.

The second one looks if 'ProcessNum == 0'.

 

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

 

just a wild guess from this snippet of code alone: this construct could be working if:

- ProcessNum's scope also is valid within the function ProcessEvents

- ProcessEvents manipulates ProcessNum via side effects

- therefore: if ProcessNum is e.g. 1 and ProcessEvents decreases it by one, then ProcessNum could actually be 0 at the second if statement.

 

Whether this is good style is a completely different matter though.

 

That would be assuming ProcessEvents is evaluated first in the condition.

If the condition is evaluated left to right in the code, the condition would fail right away and never get to evaluate ProcessEvent... but I concede there is a small chance that statement could be true.

 

That said, I doubt that was the intent :)

 

Edit: I looked at ProcessEvents and it doesn't touch ProcessNum.

However, it does return false if processEnum = 0, so it would fail as well in that case :)


 

Question about event updates:

 (...)

There is no way that second one is ever true if the first one is true, so it probably never gets processed.

 

Is there no case where  ProcessEvents(libs.PlayerRef)  would be true and ProcessNum == 0 ?
 

 

 

If ProcessNum==0, then the first part of the AND statement is false and the whole condition would fail even if ProcessEvents is true.

 

For it to work, it would have to be become 0 sometime between the first and the second line of code, which is very unlikely but I agree, could be possible in the situation suggested above.

 

 

Had a look at that code now. In my version of the file (3.3b release) ProcessEvents does manipulate ProcessNum. Also it works with normal left-to-right evaluation. It goes roughly like this:

 

Lets assume ProcessNum is 1 when the first if-statement is reached:

 

The left half of the AND-statement is evaluated true, because 1 > 0. Then it enters the function ProcessEvents. In ProcessEvents the call to ProcessOneEvent evaluates to false, therefore the else-branch of the if-statement within ProcessEvents is reached. In this else-branch ProcessNum is set to 0 and false is returned.

 

Because of the returned false, the second half of the first if-statement is evaluated true (as it is checked with the negation-operator). So the complete if evaluates to true, and ProcessNum is set to 0. Which means, the following second if-statement is evaluated to true. To clarify: the statement within ProcessEvents is

"else

   ProcessNum = 0"

 

NOT

 

"else if ProcessNum == 0"

 

It's not a boolean evaluation, it's setting ProcessNum to 0 in case of the else-branch. At least in 3.3b

No idea if the development version of DDi has different code, but the code I see should work.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use