Jump to content

Recommended Posts

Posted
1 hour ago, spicydoritos said:

I thought this was a neat idea so I cobbled together a demo script and plugin for fellow modders/tinkerers.  Attach the script to any NPC(s) in CK.  Just fill in the morality value where you would normally populate script properties and you're good to go.  Default value is 0 so FPSH can still take over if you forget this step.  No need to edit the script or recompile.  Your plugin won't require Sexual Harassment as a master.

 

Perfect timing! I just added the first script to the mod I'm working on yesterday, similar approach attaching directly to a cage door so it would auto-close after a few seconds. It wasn't clear to me that you could do soft dependencies this way without having to compile against the other mod's sources, but I guess directly poking values without calling that mod's script functions makes it unnecessary. Thanks for the timely example!

Posted
23 hours ago, spicydoritos said:

I thought this was a neat idea so I cobbled together a demo script and plugin for fellow modders/tinkerers.  Attach the script to any NPC(s) in CK.  Just fill in the morality value where you would normally populate script properties and you're good to go.  Default value is 0 so FPSH can still take over if you forget this step.  No need to edit the script or recompile.  Your plugin won't require Sexual Harassment as a master.

 

Script text is in the spoiler.

 

This example worked great! I hard-coded it to set evil morality and also a high confidence on some unique super mutants, and created a similar script to give them the "Breeder Virus" STD perk from FPER (that was slightly trickier since it shares the same plugin name with FPE, so I added an additional check for the presence of the Wasteland Offspring plugin in order to tell FPER apart from normal FPE).

 

My next leap in scripting soft Harassment related integration is to make my teleport activator which sends the player to that cell also preemptively increase the FPSH_Value_HypnoLevel as well as reduce FPA_Value_Spirit and FPA_Value_Willpower (the premise is you've triggered a trap which gasses you unconscious, and you wake up drugged in your new "home").

Posted
1 hour ago, vaultbait said:

 

This example worked great! I hard-coded it to set evil morality and also a high confidence on some unique super mutants, and created a similar script to give them the "Breeder Virus" STD perk from FPER (that was slightly trickier since it shares the same plugin name with FPE, so I added an additional check for the presence of the Wasteland Offspring plugin in order to tell FPER apart from normal FPE).

 

My next leap in scripting soft Harassment related integration is to make my teleport activator which sends the player to that cell also preemptively increase the FPSH_Value_HypnoLevel as well as reduce FPA_Value_Spirit and FPA_Value_Willpower (the premise is you've triggered a trap which gasses you unconscious, and you wake up drugged in your new "home").

 

I like the idea!  And if you aren't already aware, the second post of the Sex Attributes thread contains loads of guidance for modders/scripting/integration.  :-)

Posted

I have a suggestion about the gag dialogues. Normally you click away as quickly as possible to get to the actual dialogues. The "Hmm Hmm Hmm" doesn't make sense.
But they would get the sense if, for example, no conversations are possible with Gag. Neither to traders nor to other NPCs. Eating and drinking should also be impossible when wearing a gag.


Then the gag would have a meaning.


To compensate, it would be useful if the option "take off a gag for sex or money" comes up a little more often when spoken to. But since I'm playing with standard settings, I may have overlooked an option here.

 

I know there was a workaround to disable the gag dialogs somewhere here. But I didn't use it, because I don't reject this feature in principle.

Posted
49 minutes ago, deathmorph said:

I have a suggestion about the gag dialogues. Normally you click away as quickly as possible to get to the actual dialogues. The "Hmm Hmm Hmm" doesn't make sense.
But they would get the sense if, for example, no conversations are possible with Gag. Neither to traders nor to other NPCs. Eating and drinking should also be impossible when wearing a gag.


Then the gag would have a meaning.

 

This is really more about the Devious Devices mod than Harassment, it just happens to have some features which take advantage of DD (though yes, Harassment could in theory change its own dialogue scenes if the player is wearing a gag, and it already does have some gag-specific interactions where the player can only mumble in response).

 

49 minutes ago, deathmorph said:

I know there was a workaround to disable the gag dialogs somewhere here. But I didn't use it, because I don't reject this feature in principle.

 

DD RC8 does at least make this toggleable, and also less intrusive (requires activation to initiate the gag dialogue, no more forced greets).

Posted
11 hours ago, deathmorph said:

OK, I didn't know that. I thought DD brought the hardware and SH the dialogs.

 

SH does have (quite a lot of) unique dialogue, but if you're talking about the general case of wearing a gag causing your initial interaction with another character to be a choice of four different mumbles after which they respond that they don't understand what you said, that's an affect applied by DD itself. In order to not more generally break game functionality, it lets you talk to an NPC a second time and get their normal dialogue prompts instead, though I suppose you could change that (and make the game a lot more unplayable in the process).

Posted

Yes, that's what I mean. The second dialog after the first with "Hmmm" actually makes the first dialog meaningless. Likewise, if a harasser walks up to my actress, sees the gag, and then says they don't get the words through the gag, and leaves. If "sex" or "money" comes up more often as compensation, then it wouldn't be unplayable.


In the meantime I've managed to avoid the second dialogue and I also don't eat or drink during the gag time. It's also fun, in a way.

Posted
2 hours ago, deathmorph said:

Yes, that's what I mean. The second dialog after the first with "Hmmm" actually makes the first dialog meaningless. Likewise, if a harasser walks up to my actress, sees the gag, and then says they don't get the words through the gag, and leaves. If "sex" or "money" comes up more often as compensation, then it wouldn't be unplayable.

 

Got it. Yes that's two separate mods handling dialogue in that case. The first dialogue is being intercepted by DD because you're wearing a gag. Harasser approach dialogue is provided by SH.

 

2 hours ago, deathmorph said:

In the meantime I've managed to avoid the second dialogue and I also don't eat or drink during the gag time. It's also fun, in a way.

 

That's basically what I do to role play it as well. No eating, drinking, smoking, or approaching people for conversation until I can get the damned thing off!

Posted
On 6/13/2022 at 3:40 AM, asdfer1234 said:

Slap stuff does really weird things to camera in first person.

Any chance for future update to force the camera to be into zoomed-out/3rd person before slap event?

 

+1 

Please

Posted (edited)
On 7/9/2022 at 8:24 PM, spicydoritos said:

I like the idea!  And if you aren't already aware, the second post of the Sex Attributes thread contains loads of guidance for modders/scripting/integration.  ?

 

Yep, that much is working great. I was also able to leverage the same pattern for soft dependency calls into some functions from Harassment's main quest script as well. Unfortunately, I'm running into challenges doing the same for Family Planning Enhanced (Redux really, but the functions in question are unchanged in this case). invoking its CallPlayerFunction utility function (details in a spoiler since it's getting off-topic).

 

Spoiler

This is the relevant bit of script from an activator which, among other things, is meant to heal damage to a fetus in the player's womb:

Scriptname My_Activator extends ObjectReference Const
Event OnActivate(ObjectReference akActionRef)
    If (akActionRef == Game.GetPlayer() as ObjectReference)
        If Game.IsPluginInstalled("FP_FamilyPlanningEnhanced.esp")
            Quest FPE = Game.GetFormFromFile(0x00000F99, "FP_FamilyPlanningEnhanced.esp") as Quest
            ScriptObject fpe_script =  FPE.CastAs("FPFP_Player_Script")
            var[] Subcommand = new var[1]
            Subcommand[0] = "FullyHealBaby"
            fpe_script.CallFunction("CallPlayerFunction", Subcommand)
        EndIf
    EndIf
EndEvent

Similarly running cqf FPE CallPlayerFunction FullyHealBaby from the console works though, so I know the function is plumbed into the game correctly. Injecting debug messages into the script I know it's reaching the fpe_script.CallFunction() too, and there's nothing related erroring in the Papyrus log. I've stared at the Papyrus scripting docs for all the relevant syntax, but must still be getting something subtly wrong.

 

Edited by vaultbait
Posted
32 minutes ago, vaultbait said:

 

Yep, that much is working great. I was also able to leverage the same pattern for soft dependency calls into some functions from Harassment's main quest script as well. Unfortunately, I'm running into challenges doing the same for Family Planning Enhanced (Redux really, but the functions in question are unchanged in this case). invoking its CallPlayerFunction utility function (details in a spoiler since it's getting off-topic).

 

  Hide contents

This is the relevant bit of script from an activator which, among other things, is meant to heal damage to a fetus in the player's womb:

Scriptname My_Activator extends ObjectReference Const
Event OnActivate(ObjectReference akActionRef)
    If (akActionRef == Game.GetPlayer() as ObjectReference)
        If Game.IsPluginInstalled("FP_FamilyPlanningEnhanced.esp")
            Quest FPE = Game.GetFormFromFile(0x00000F99, "FP_FamilyPlanningEnhanced.esp") as Quest
            ScriptObject fpe_script =  FPE.CastAs("FPFP_Player_Script")
            var[] Subcommand = new var[1]
            Subcommand[0] = "FullyHealBaby"
            fpe_script.CallFunction("CallPlayerFunction", Subcommand)
        EndIf
    EndIf
EndEvent

Similarly running cqf FPE CallPlayerFunction FullyHealBaby from the console works though, so I know the function is plumbed into the game correctly. Injecting debug messages into the script I know it's reaching the fpe_script.CallFunction() too, and there's nothing related erroring in the Papyrus log. I've stared at the Papyrus scripting docs for all the relevant syntax, but must still be getting something subtly wrong.

 

 

Silly question, but is the relevant FPER quest actually at FormID F99?  Nothing else really leaps out as incorrect.

Posted
45 minutes ago, spicydoritos said:

Silly question, but is the relevant FPER quest actually at FormID F99?  Nothing else really leaps out as incorrect.

 

Yep, no idea if that's a "standard" or a classic cargo cult phenomenon, but the main quests in FPSH, FPA and FPE(R) are all form F99 according to FO4Edit. Thanks for looking though! I'll keep fiddling and asking around.

Posted
On 5/26/2022 at 3:13 PM, twistedtrebla said:

1.16.5

  • CHANGED: Updated new animation (introduced in 1.16.4) to a quicker one that slaps the player quicker. Meant to make slaps less disruptive when player is being slapped on the move.

Was a fan of the previous animation where it was slower. Can I revert back to that without having to install older version?

Posted
On 7/12/2022 at 11:40 PM, spicydoritos said:

Nothing else really leaps out as incorrect.

 

So I was very close! Available documentation isn't real clear about the fact that the parameter array you pass in has to have exactly the same number of elements as the number of parameters the function accepts, even if some of those are optional. Padding out the array with a Null element did the trick. Working example in the spoiler in case anyone else ends up needing to do something similar.

Spoiler
Scriptname My_Activator extends ObjectReference Const
Event OnActivate(ObjectReference akActionRef)
    If (akActionRef == Game.GetPlayer() as ObjectReference)
        If Game.IsPluginInstalled("FP_FamilyPlanningEnhanced.esp")
            Quest FPE = Game.GetFormFromFile(0x00000F99, "FP_FamilyPlanningEnhanced.esp") as Quest
            ScriptObject fpe_script =  FPE.CastAs("FPFP_Player_Script")
            var[] Subcommand = new var[2]
            Subcommand[1] = Null
            Subcommand[0] = "FullyHealBaby"
            fpe_script.CallFunction("CallPlayerFunction", Subcommand)
        EndIf
    EndIf
EndEvent

 

 

Posted
9 hours ago, vaultbait said:

 

So I was very close! Available documentation isn't real clear about the fact that the parameter array you pass in has to have exactly the same number of elements as the number of parameters the function accepts, even if some of those are optional. Padding out the array with a Null element did the trick. Working example in the spoiler in case anyone else ends up needing to do something similar.

  Reveal hidden contents
Scriptname My_Activator extends ObjectReference Const
Event OnActivate(ObjectReference akActionRef)
    If (akActionRef == Game.GetPlayer() as ObjectReference)
        If Game.IsPluginInstalled("FP_FamilyPlanningEnhanced.esp")
            Quest FPE = Game.GetFormFromFile(0x00000F99, "FP_FamilyPlanningEnhanced.esp") as Quest
            ScriptObject fpe_script =  FPE.CastAs("FPFP_Player_Script")
            var[] Subcommand = new var[2]
            Subcommand[1] = Null
            Subcommand[0] = "FullyHealBaby"
            fpe_script.CallFunction("CallPlayerFunction", Subcommand)
        EndIf
    EndIf
EndEvent

 

 

 

Fascinating... I would not have expected the optional parameters to require null input.  Always more to learn!  And thank you very much for spreading the knowledge.

Posted

Hello! My companion has his own non-standard race. Animations from your mod are not played on it. Is it possible to add a race to the animation package? Thanks. Sorry for my English, google translator...

Posted

Hey everyone, so I was working on robo voices for SH for the past couple of days, and I was wondering if I can post it here if I can figure out how, if anyone is interested and of course if the author @twistedtrebla is cool with it.

 

Trying to learn moding and this is the first thing I learned, for some reason.

 

In Short:

VoiceFemale is Nora

Approacher and hacker are random, some including Nate's voice.

 

Unfortunately, no mutants, creatures or "robots".

Posted

I'm doing a bit of tuning on how long to keep the bimbo effect going, does anyone know how to check how much time is remaining.

 

I have tried searching in console against morph, bimbo and fpsh but aside from the global that holds the the value for how long the effect should run, I cannot find a countdown timer so I could calculate the remaining time

 

I currently have fpsh_setting_morphduration=1.00 as I don't want it to go on for too long. At 0.5 it seemed a bit too short but I can't fine tune it easily without knowing how much time is still remaining

 

Posted
31 minutes ago, Slorm said:

I'm doing a bit of tuning on how long to keep the bimbo effect going, does anyone know how to check how much time is remaining.

 

I have tried searching in console against morph, bimbo and fpsh but aside from the global that holds the the value for how long the effect should run, I cannot find a countdown timer so I could calculate the remaining time

 

I currently have fpsh_setting_morphduration=1.00 as I don't want it to go on for too long. At 0.5 it seemed a bit too short but I can't fine tune it easily without knowing how much time is still remaining

 

 

Unfortunately it looks like you'll have a tough time of that.  Here's the relevant script function from FPSH_Main:

Spoiler

Function UpdateBimboPerk()
    if playerRef.hasPerk(FPSH_Bimbo)
        ; Calculate how many ticks are needed for player to lose bimbo serum
        float ticksPerDay = FPSH_Setting_ScansPerHour.GetValue() * 24
        float ticksNeeded = FPSH_Setting_MorphDuration.GetValue() * ticksPerDay

        if ticksSinceLastSexCount >= ticksNeeded
            ; Player managed to not have sex for perk duration. remove perk
            debug.notification("You feel the bimbo serum effects fading away!")
            playerRef.removePerk(FPSH_Bimbo)
            RemoveMorph()
        endif
    endif
EndFunction

 

"ticksSinceLastSexCount" is a persistent variable within the script, rather than a global variable or actor value, which means you won't find it with just a console search.  Even if you managed to dump the value, "ticksNeeded" is calculated on the fly within this function and is not persistent.  I don't see a method of acquiring the remaining bimbo time without modifying the script and/or adding a custom function.

Posted (edited)
22 minutes ago, spicydoritos said:

 

Unfortunately it looks like you'll have a tough time of that.  Here's the relevant script function from FPSH_Main:

  Hide contents

Function UpdateBimboPerk()
    if playerRef.hasPerk(FPSH_Bimbo)
        ; Calculate how many ticks are needed for player to lose bimbo serum
        float ticksPerDay = FPSH_Setting_ScansPerHour.GetValue() * 24
        float ticksNeeded = FPSH_Setting_MorphDuration.GetValue() * ticksPerDay

        if ticksSinceLastSexCount >= ticksNeeded
            ; Player managed to not have sex for perk duration. remove perk
            debug.notification("You feel the bimbo serum effects fading away!")
            playerRef.removePerk(FPSH_Bimbo)
            RemoveMorph()
        endif
    endif
EndFunction

 

"ticksSinceLastSexCount" is a persistent variable within the script, rather than a global variable or actor value, which means you won't find it with just a console search.  Even if you managed to dump the value, "ticksNeeded" is calculated on the fly within this function and is not persistent.  I don't see a method of acquiring the remaining bimbo time without modifying the script and/or adding a custom function.

 

That's a great pity but many thanks for your reply. It will save me from chasing a phantom

 

EDIT:

 

I've found a very rough empirical way to check as I have the game time from the save I left Homeplate, then the save after going through Wilson Atomatoys.

 

I did fast travel to Sanctuary (ticks wouldn't be changed for that) and if I change the duration from 1.00 to 0.5 I can get the time when 12 game hours have elapsed.

 

It's real kludgy but it gives me some idea and seems to work

Edited by Slorm
Posted (edited)

Can't get rid of the bimbo effect for some reason. Set at "2" (body morph duration) and 72+ hours of sleeping (or fast travel) doesn't seem to cure it. Anyone have any idea what might be wrong?

Edited by ylurkes
Posted

Hey, I'm having a issue during approaches. There is no voices or subtitles, I have no idea what type of approach or requests are being asked. Is there something I'm doing wrong?

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   1 member

×
×
  • Create New...