Jump to content

Recommended Posts

Posted (edited)
On 1/6/2023 at 5:24 PM, spicydoritos said:

Closested Crossbreeder race selector functions can now be called directly from PVPK_ControllerScript. One function resets the array and adds a new race, while the other just adds a new race to the array.

 

Working on the integration I had in mind for this and I noticed a minor problem with the implementation. Since ClosetedCrossbreeder_ChosenRace is an array rather than a formlist, you don't get inherent set-like deduplication so repeated calls to AddClosetedCrossbreederRace() with the same race can theoretically bloat the array over time. Also since it's not a property I can't think of a way via soft integration for an external script to check the array contents first in order to avoid adding duplicate entries.

 

Do you have a better idea? Or would you consider starting the function with something like this to make subsequent attempts to add the same race a no-op?

 

If ClosetedCrossbreeder_ChosenRace.Find(CrosshairRace) >= 0
    Return
EndIf

 

Edited by vaultbait
Posted
1 hour ago, vaultbait said:

 

Working on the integration I had in mind for this and I noticed a minor problem with the implementation. Since ClosetedCrossbreeder_ChosenRace is an array rather than a formlist, you don't get inherent set-like deduplication so repeated calls to AddClosetedCrossbreederRace() with the same race can theoretically bloat the array over time. Also since it's not a property I can't think of a way via soft integration for an external script to check the array contents first in order to avoid adding duplicate entries.

 

Do you have a better idea? Or would you consider starting the function with something like this to make subsequent attempts to add the same race a no-op?

 

If ClosetedCrossbreeder_ChosenRace.Find(CrosshairRace) >= 0
    Return
EndIf

 

 

Hmm, yeah.  Sorry it's so resistant to manipulation, it was really only set up for internal use originally.  There's no de-duplication because it's assumed that the array will be cleared before each new addition.  There are ways to soft call other script properties, including arrays, but those wouldn't apply since the race array isn't defined as a property.

 

By far the easiest thing is for me to incorporate a duplicate race check.  In the meantime, you may want to clear the array once in a while (using the UpdateClosetedCrossbreederRace function) if you can manage it.

Posted
17 minutes ago, spicydoritos said:

Hmm, yeah.  Sorry it's so resistant to manipulation, it was really only set up for internal use originally.  There's no de-duplication because it's assumed that the array will be cleared before each new addition.  There are ways to soft call other script properties, including arrays, but those wouldn't apply since the race array isn't defined as a property.

 

No need to apologize! I sincerely appreciate that you even entertained the possibility to begin with. And yeah, I thought of property manipulation before I realized it was locally defined (but also that's a pain since I don't think SetPropertyValue() can manipulate arrays, which only leaves subclassing in a proxy script and calling into that for soft integration).

 

17 minutes ago, spicydoritos said:

By far the easiest thing is for me to incorporate a duplicate race check.  In the meantime, you may want to clear the array once in a while (using the UpdateClosetedCrossbreederRace function) if you can manage it.

 

If I get close to releasing this before you've updated the function, I will definitely add mitigations, but I think I'm still a ways off from having this mod ready anyway.

Posted
27 minutes ago, vaultbait said:

but also that's a pain since I don't think SetPropertyValue() can manipulate arrays

 

Turns out this is totally possible!  I learned this while making my Town Bicycle perk.  Workshop happiness is managed by setting values in an array attached to WorkshopParentScript.

 

Nonetheless, here's a simpler demo.  It soft calls Provocative Perks' script via two MCM commands:

1- Prints the contents of the AnalAndVagTags string array property to your notification window.

2- Inserts "Hello World" into position zero of the AnalAndVagTags array, and then prints all contents to the notification window.

 

As far as I can tell, once you call an array from elsewhere, you can manipulate it the same as any local array.

SoftCallPropertyDemo.zip

Posted
20 minutes ago, spicydoritos said:

 

Turns out this is totally possible!  I learned this while making my Town Bicycle perk.  Workshop happiness is managed by setting values in an array attached to WorkshopParentScript.

 

Nonetheless, here's a simpler demo.  It soft calls Provocative Perks' script via two MCM commands:

1- Prints the contents of the AnalAndVagTags string array property to your notification window.

2- Inserts "Hello World" into position zero of the AnalAndVagTags array, and then prints all contents to the notification window.

 

As far as I can tell, once you call an array from elsewhere, you can manipulate it the same as any local array.

SoftCallPropertyDemo.zip 3.39 kB · 0 downloads

 

If I'm reading that correctly, it's roughly equivalent to the subclassing approach I mentioned, since you'd still have to avoid calling into the SPCD_Script if PVPK isn't present or else Papyrus is going to log errors due to not being able to resolve the AnalAndVagTags attribute even if it never calls the functions defined in the script, right?

Posted
5 minutes ago, vaultbait said:

 

If I'm reading that correctly, it's roughly equivalent to the subclassing approach I mentioned, since you'd still have to avoid calling into the SPCD_Script if PVPK isn't present or else Papyrus is going to log errors due to not being able to resolve the AnalAndVagTags attribute even if it never calls the functions defined in the script, right?

 

That's why I have these lines in succession:

Quote

    PVPKControllerScript = Game.GetFormFromFile(0x00000800, "ProvocativePerks.esp") as PVPK:PVPK_ControllerScript
    if PVPKControllerScript

          ; do PVPK stuff here

 

If PVPK isn't installed, PVPKControllerScript doesn't fill.  The check fails and we avoid trying to manipulate an array that doesn't exist.

Posted
4 minutes ago, spicydoritos said:

That's why I have these lines in succession:

 

If PVPK isn't installed, PVPKControllerScript doesn't fill.  The check fails and we avoid trying to manipulate an array that doesn't exist.

 

Right, but won't the parser try to resolve all the symbols in the script when it calls into it, before even invoking the function itself? I recall running into that when trying to add soft integration for something else months ago, but maybe I'm misremembering and it was only the compiler that cared...

Posted
10 minutes ago, vaultbait said:

 

Right, but won't the parser try to resolve all the symbols in the script when it calls into it, before even invoking the function itself? I recall running into that when trying to add soft integration for something else months ago, but maybe I'm misremembering and it was only the compiler that cared...

 

Not in my experience.  The running engine just goes in code succession.  How could you soft integrate anything otherwise?

 

It's easy enough to test.  Load the demo into your favorite testing environment without Provocative Perks.  Press one of the MCM functions, see the message box, exit, and check your own log.  No errors in mine from this test.

 

Compiling wasn't an issue either.  The compiler sees that PVPKControllerScript is defined via GetFormFromFile and then stops checking further validity for actions involving PVPKControllerScript (because it can't, since you're not compiling against the PVPK script).  At this point the compiler assumes you know what you're doing.  That's why we can look for the AnalAndVagTags array without defining it.  As long as the formatting is correct, papyrus will give you plenty of rope to hang yourself here.  I inserted a string into a string array, although the compiler would have let me insert anything at all... with subsequent papyrus errors during the game.

Posted
4 minutes ago, spicydoritos said:

Not in my experience.  The running engine just goes in code succession.  How could you soft integrate anything otherwise?

 

It's easy enough to test.  Load the demo into your favorite testing environment without Provocative Perks.  Press one of the MCM functions, see the message box, exit, and check your own log.  No errors in mine from this test.

 

Compiling wasn't an issue either.  The compiler sees that PVPKControllerScript is defined via GetFormFromFile and then stops checking further validity for actions involving PVPKControllerScript (because it can't, since you're not compiling against the PVPK script).  At this point the compiler assumes you know what you're doing.  That's why we can look for the AnalAndVagTags array without defining it.  As long as the formatting is correct, papyrus will give you plenty of rope to hang yourself here.  I inserted a string into a string array, although the compiler would have let me insert anything at all... with subsequent papyrus errors during the game.

 

Oh, now I remember. It's specifically method calls from soft-added ScriptObjects which are illegal, hence the need for CallFunction() in such cases, which is only capable of serializing some kinds of function parameters due to packing them in var arrays (so for example you can't use it to call a function which takes an array as a parameter because arrays can't contain other arrays). Looks like for accessing script variables directly it's fine, yes.

Posted
1 hour ago, vaultbait said:

 

Oh, now I remember. It's specifically method calls from soft-added ScriptObjects which are illegal, hence the need for CallFunction() in such cases, which is only capable of serializing some kinds of function parameters due to packing them in var arrays (so for example you can't use it to call a function which takes an array as a parameter because arrays can't contain other arrays). Looks like for accessing script variables directly it's fine, yes.

 

Ooh, okay interesting.  I've never tried to do so, although the limitation makes perfect sense.

Posted

I was thinking about the Mind break from Sex Attributes and make it would be nice to have have a perk that allows even from consensual sex so could happen during Life of the Party.

 

Not quite sure if the idea should be it's own perk with a benefit to go with the being able to mind from consensual sex or if it would fit better being rolled into a another perk that's already there. Like maybe being rolled into life of the party or something.

Posted
31 minutes ago, Spaceguest991 said:

I was thinking about the Mind break from Sex Attributes and make it would be nice to have have a perk that allows even from consensual sex so could happen during Life of the Party.

 

Not quite sure if the idea should be it's own perk with a benefit to go with the being able to mind from consensual sex or if it would fit better being rolled into a another perk that's already there. Like maybe being rolled into life of the party or something.

 

Triggering mind break is pretty easy (I have another mod in the works where I fiddle a bit with SA's mind health as an effect of certain interactions and legendary equipment), but what's the point of triggering it for consensual scenes? Just for the visuals and pop-up message I guess? SA isn't going to add perversions from broken mind orgasms during consensual scenes, which is the only functional reason to do it.

Posted (edited)
29 minutes ago, vaultbait said:

but what's the point of triggering it for consensual scenes? Just for the visuals and pop-up message I guess?

 

Hmm... I didn't get far in my thinking, Like you said mostly just for the sake for visuals and pop-up messages for roleplay now that I think about it.

Edited by Spaceguest991
Posted

Easy Prey - I'm really in two minds about this idea for an update, but maybe add the SH Fan Drink to potentially trigger EP.

 

Not sure if it's not a bit OTT but might work if it had it's own slider or toggle

Posted
29 minutes ago, Slorm said:

Easy Prey - I'm really in two minds about this idea for an update, but maybe add the SH Fan Drink to potentially trigger EP.

 

Not sure if it's not a bit OTT but might work if it had it's own slider or toggle

I rhink the drink should trigger it

Posted
2 minutes ago, ebbluminous said:

I rhink the drink should trigger it

 

Well, it already has a chance to trigger a knockout and unconscious rape scene in SH itself, so having PP do something similar would at best be redundant and remove the point of it being any sort of dilemma over the decision to accept, at worst it could lead to conflicts if both mods want to fight over the characters to put them in an AAF scene.

Posted (edited)
55 minutes ago, Slorm said:

Easy Prey - I'm really in two minds about this idea for an update, but maybe add the SH Fan Drink to potentially trigger EP.

 

Not sure if it's not a bit OTT but might work if it had it's own slider or toggle

 

I was thinking the same thing! However, there are 2 kinds of SH Fan Wine - the good one and the bad one. If the approacher gives PC bad wine it will trigger SH event. However, if approacher NPC gives PC good wine - there should be a configurable chance for Easy Prey events to trigger. The good Fan Wine should be treated as vanilla alcohol since it is just that - alcohol.

 

On top of that, and this is just suggestion, I'd really like to see further integration between Sex Harassment (and Sex Attributes!) and some of the perks. Here are some suggestions:

Spoiler

1) 'Kick in the head' event (additional Easy Prey event)

 

Basically, when moving around certain (evil) NPCs, there's a chance for one of them to kick PC (presumably with a bat, but no animation is necessary!) in the head causing blackout and starting Easy Prey event. This would, in my mind, create a bit more dangerous environment for PC. Also, I think that SH Impression as well as SA Willpower should play a role when it comes to calculation for triggering the event. The better the Impression and the higher the Willpower, the less chance there is for kick to happen. However, the kick chance should never be < 1. To keep things interesting.

 

2) Town Bicycle improvements

 

Don't get me wrong, TB works perfectly fine as-is. However, it lacks some details. Would it be possible to integrate Sex Harassment approaches to it (or any approaches, for that matter)? Basically, current trigger is for PC to start AAF scene with any settler in a settlement. However, I feel like it'd be much more immersive if settlers were approaching the player, as they're the ones that are unsatisfied. If you could somehow manipulate SH approaches so they're blocked when Player is in settlement(s) and active once Player leaves, it'd be amazing! During the time when Player is in the settlement(s), approaches should trigger basically immediately one after another, with very short time between them (after each event; say 5 in-game minutes, or something similar). I know it sounds complicated and it would be (I assume) difficult to do, but it'd probably work very well!

 

2.1) TB - furniture

 

I'd like to have custom furniture (beds, couches, etc.) that are buildable and usable only by PC. Once PC uses it, it immediately attracts a settler, if it's able to find one. This is alternative to my 2nd suggestion (TB improvements). This would allow the Player to be a hero when wandering the wasteland, and a simple prostitute when in settlements. Oh, and also, Good NPCs would pay a few caps after the event, but Neutral and Evil NPCs wouldn't, and Evil ones will play only aggressive (non-consensual) animations.

 

3) Homewrecker - visible Jealousy

 

The title says it all. Homerwecker is absolutely fine and I've had no issues with it. However, I'd really like to see the Jealousy stats. There are a bunch of ways you can make it, but I feel like a MCM button (with configurable hotkey!) would be enough. Also, does Homewrecker report Jealousy updates in form of top-left notification? Genuinely asking here as it's been a while since I played with that particular perk and can't remember. Anyways, if it doesn't - it definitely should.

 

I certainly hope you'll consider some of these suggestions. Don't get me wrong here - PP is absolutely fine as-is, but if you decide to update it sometime in the near future (and are, obviously, taking other players' suggestions/requests), I certainly hope to see something implemented.

 

Nonetheless, thank you so much for creating and sharing the mod! I can't imagine playing without it!

 

Keep up the great work and take care!

 

Edited by rubber_duck
Posted
30 minutes ago, vaultbait said:

 

Well, it already has a chance to trigger a knockout and unconscious rape scene in SH itself, so having PP do something similar would at best be redundant and remove the point of it being any sort of dilemma over the decision to accept, at worst it could lead to conflicts if both mods want to fight over the characters to put them in an AAF scene.

Oh yeah forgot bout that :/ Too much work not enough games atm so super tired

Posted (edited)
1 hour ago, rubber_duck said:

 

I was thinking the same thing! However, there are 2 kinds of SH Fan Wine - the good one and the bad one. If the approacher gives PC bad wine it will trigger SH event. However, if approacher NPC gives PC good wine - there should be a configurable chance for Easy Prey events to trigger. The good Fan Wine should be treated as vanilla alcohol since it is just that - alcohol.

 

 

Yes. I should have made my earlier suggestion a bit clearer, thank you for pointing out the difference in fan approaches.

 

I was thinking of the good wine, wouldn't be much point in it firing at the same time as SH

Edited by Slorm
Posted
6 hours ago, rubber_duck said:

The title says it all. Homerwecker is absolutely fine and I've had no issues with it. However, I'd really like to see the Jealousy stats. There are a bunch of ways you can make it, but I feel like a MCM button (with configurable hotkey!) would be enough. Also, does Homewrecker report Jealousy updates in form of top-left notification? Genuinely asking here as it's been a while since I played with that particular perk and can't remember. Anyways, if it doesn't - it definitely should.

 

I'm still not quite in a position to make major perk updates, but feel free to leave suggestions in the thread.  I'll go through them in seriousness when the time comes.

 

There probably should be some way to view jealousy via MCM.  If you just want to know the values for now, you have to use console.  Type "help jealousy 0" and that should bring them all up.

Posted
On 1/24/2023 at 2:29 AM, spicydoritos said:

Hmm, yeah.  Sorry it's so resistant to manipulation, it was really only set up for internal use originally.  There's no de-duplication because it's assumed that the array will be cleared before each new addition.  There are ways to soft call other script properties, including arrays, but those wouldn't apply since the race array isn't defined as a property.

 

By far the easiest thing is for me to incorporate a duplicate race check.  In the meantime, you may want to clear the array once in a while (using the UpdateClosetedCrossbreederRace function) if you can manage it.

 

Testing integration, I've found another latent bug here. The ClosetedCrossbreeder_ChosenRace array is only ever initialized in UpdateClosetedCrossbreederRace() so if I call AddClosetedCrossbreederRace() directly I get an error about being unable to add elements to a None array unless I've first used the MCM to set one via crosshairs. Initializing it to a new empty array there if it's None, before calling its Add() method, would presumably solve that.

Posted (edited)

Small thought I had is maybe after the blackout scene from Homewrecker the player gets a crippled head or maybe some damage to the dead since they got hit hard enough to knock them out.

Edited by Spaceguest991
Posted

Sorry for the double post I had another thought. With the Easy Prey I think I'd like it if there was more time between the double vision effect starting and being knocked out like maybe 10-15 seconds? since for me the double vision happens pretty much right before the knock out takes effect (that could be a just a mod I have messing with it maybe?) and maybe if you wanted to get really fancy during that 10-15 when you have double vision before being knocked out running and sprinting was disabled so you could only walk like your character is starting stagger and lose control. Perhaps with the double vision and being forced to walk lasting a little bit after the waking up from being knocked out?

 

Or maybe I'm just carried away, up to you!

Posted

Bug Report - Minor

 

Seen this a couple of times in UN (just now in Jamaica Plains). Protectron is teleport to pc but is still in an inactive state so the animation looks rather odd.

Posted
17 minutes ago, Slorm said:

Bug Report - Minor

 

Seen this a couple of times in UN (just now in Jamaica Plains). Protectron is teleport to pc but is still in an inactive state so the animation looks rather odd.

 

Are you using 1.04?  I thought I fixed that behavior.  If so, I'll try to see why it's not working.

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