Jump to content

Changing EscapeRapeVPlayer


Recommended Posts

Hello again, I'm once again looking to modifying one of the many esps or scripts from the Lovers mods and after editing a few other I noticed Rapes aren't very immersive.
 

If you disable the "Rape is an Attack" option in the LoversSettings, guards that pass by while you are getting gangraped will just ignore you, despite of what the "dialogue" cries for help say.

If it's enabled however, chaos occurs when a rape triggers and there's still enemies around, also on scripted rapes such as those of LoversTrueCrimeEx, specially in prison since guards will almost always come in and cancel whatever is happening and sometimes cause the game to crash. Also, during the scripted Rapes of LoversTrueCrimeEx, the escape feature is completely disabled, I know they call some form of different "intialize" script so it doesn't exactly count as a rape in the action, however the counter for the diary confirms "raped" tokens are added.

 

My idea is to make changes to the script and allow it to "start combat" with the aggressor (or victim) if a button is pressed, like Left Mouse Button, to simulate a cry for help. my main problem is that the script for the escape doesn't have the reference for the player or the offender/act1/xme or respective reference required to achieve this. I would like to know if another option already exists or if it's possible to make a new script altogether.

Link to comment

Well, part of the problem is you have things backwards:

Lovers Escape Rape V Player - you prevent rape on your own with the block key

Lovers Help Rape V Player - companions rescue you from rape

 

There is an updated version of lovers help (others come to help you):  https://www.loverslab.com/files/file/1853-lovershelprapevplayer-updated/

The most current version of lovers escape (you prevent rape by using the block key - careful timing is required):  https://www.loverslab.com/files/file/355-lovers-supplemental-plugin-pack/

 

 

Link to comment

Thanks, I saw the updated esp sometime ago but forgot to download it, couldn't find it again.

 

I will try it and see if it disrupts any of the features of TrueCrimeEx.

 

Also, the reason for changing a mod like this is that I want to make asking for help optional with a button press while keeping the escape function. I'll see what I can do with this for the time being.

Link to comment

I modified the HelpRapeVPlayer script, first I removed the IsActorEvil and IsActorEssential checks that prevented the player from doing anything if this happened. Then I added a condition on which you must press or hold Left Click to have valid NPCs come to help. Additionally I added a barebones "Escape" function if you Press or Hold Right-click, you will attempt escape, I believe it's best to hold the buttons in due to how I believe the QuestDelayTimer works.

 

Spoiler

scn xLoversHelpRapeVPlayerQuestScript

float fQuestDelayTime
ref me
ref assailant    
ref tmpr
short tmps
float f0

Begin GameMode

    set fQuestDelayTime to 0.75
    if player.GetItemCount xLoversPkrIdentifier != 4
        return    ;player not being raped
    else
        let me := player
        let assailant := Call xLoversCmnGetPartner me
        if assailant == 0
            return    ;rape may be finished or rapist may be needed elsewhere
        else
            if IsControlPressed 4
                let tmpr := GetFirstRef 69 2
                while( tmpr )
                    set tmps to 0
                    if tmpr.GetDisabled==0 && tmpr!=assailant && tmpr.GetDead==0 && tmpr.GetIsCreature==0 && tmpr.GetUnconscious==0 && tmpr.GetKnockedState==0 && tmpr.GetSleeping==0 && tmpr.GetInFaction DremoraFaction==0 && tmpr.IsActorEvil == 0 && tmpr.GetItemCount xLoversPkrIdentifier==0
                        if Call xLoversCmnIsCompanion tmpr
                            set tmps to 1
                        elseif player.GetLOS tmpr && (tmpr.IsGuard || tmpr.GetIsClass Knight || tmpr.GetInFaction ImperialLegion)
                            set tmps to 1
                        endif
                        if tmps && tmpr.IsInCombat && tmpr.GetCombatTarget == assailant
                            set tmps to 0    ;already helping
                        else
                            set f0 to 0 - tmpr.GetDisposition assailant
                            tmpr.ModDisposition assailant f0
                            tmpr.StartCombat assailant
                        endif
                    endif
                    set tmpr to GetNextRef
                loop
            endif
            if IsControlPressed 6
                if GetRandomPercent < 15
                    player.AddItemNS xLoversPkrAbort 1
                endif
            endif
        endif
    endif
End

 

I still would like to change a few things, such as also allow the player to abort rape or any sex act, "force" a cry for help on player's victims to cause NPCs to attack the player instead, change how the Line of sight condition works, currently if guards help you when you're on exteriors, they will come from very far away, much farther than they usually help you in regular combat.

Link to comment
Spoiler

scn xLoversHelpRapeVPlayerQuestScript

float fQuestDelayTime
ref victim
ref assailant    
ref tmpr
short tmps
float f0

Begin GameMode

    set fQuestDelayTime to 0.75
    if player.GetItemCount xLoversPkrIdentifier == 0 || player.GetItemCount xLoversPkrIdentifier >= 5 ; just to make sure
        return    ;player not in sex or rape
    else
        if IsControlPressed 6
            if player.GetItemCount xLoversPkrIdentifier == 1 || player.GetItemCount xLoversPkrIdentifier == 2
                player.AddItemNS xLoversPkrAbort 1
            else
                if GetRandomPercent < 15
                    player.AddItemNS xLoversPkrAbort 1
                endif
            endif
        endif
        if player.GetItemCount xLoversPkrIdentifier == 4
            let victim := player
            let assailant := Call xLoversCmnGetPartner victim
        elseif player.GetItemCount xLoversPkrIdentifier == 3
            let assailant := player
            let victim := Call xLoversCmnGetPartner assailant
        endif
        if assailant == 0 || victim == 0
            return    ;rape may be finished or rapist may be needed elsewhere
        else
            if IsControlPressed 4
                let tmpr := GetFirstRef 69 2
                while( tmpr )
                    set tmps to 0
                    if tmpr.GetDisabled==0 && tmpr!=assailant && tmpr!=victim && tmpr.GetDead==0 && tmpr.GetIsCreature==0 && tmpr.GetUnconscious==0 && tmpr.GetKnockedState==0 && tmpr.GetSleeping==0 && tmpr.GetInFaction DremoraFaction==0 && tmpr.IsActorEvil == 0 && tmpr.GetItemCount xLoversPkrIdentifier==0
                        if Call xLoversCmnIsCompanion tmpr
                            if assailant != player
                                set tmps to 1
                            endif
                        elseif tmpr.IsGuard || tmpr.GetIsClass Knight || tmpr.GetInFaction ImperialLegion
                            if player.GetLOS tmpr && player.GetDistance tmpr <= 600
                                set tmps to 1
                            elseif player.GetDistance tmpr <= 400
                                set tmps to 1
                            endif
                        else
                            if player.GetLOS tmpr && player.GetDistance tmpr <= 400
                                set tmps to 1
                            elseif player.GetDistance tmpr <= 200
                                set tmps to 1
                            endif
                        endif
                        if tmps && tmpr.IsInCombat && tmpr.GetCombatTarget == assailant
                            set tmps to 0    ;already helping
                        elseif tmps == 1
                            set f0 to 0 - tmpr.GetDisposition assailant
                            tmpr.ModDisposition assailant f0
                            tmpr.StartCombat assailant
                        endif
                    endif
                    set tmpr to GetNextRef
                loop
            endif
        endif
    endif
End

 

 

Above is the most recent edited script, I'm also putting it here so everyone can see and playtest it, I've so far tested all "features" I wanted to add and it seems to work, I also made tweaks regarding things that could have been oversighted such as companions targetting the player if they are the off/assailant/rapist.

 

Also noticed a major flaw with the previous iteration:

Spoiler

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

                        if Call xLoversCmnIsCompanion tmpr
                            set tmps to 1
                        elseif player.GetLOS tmpr && (tmpr.IsGuard || tmpr.GetIsClass Knight || tmpr.GetInFaction ImperialLegion)
                            set tmps to 1
                        endif

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

% This section of the code checks for companions or guards so a tag/flag is checked so the comparators below proceed, however none of them actually require the tmps to
% be set to tmps 1 to begin assisting, so guards wouldn't help the player because of being in LOS, instead, they assisted regardless of where they were, this also was true for

% every other actor rendered in the game, including companions.


                        if tmps && tmpr.IsInCombat && tmpr.GetCombatTarget == assailant
                            set tmps to 0    ;already helping dsaasd
                        else  <<<--- Doesn't even check for the tmps
                            set f0 to 0 - tmpr.GetDisposition assailant
                            tmpr.ModDisposition assailant f0
                            tmpr.StartCombat assailant
                        endif

 

The simple list of "features" this script edit adds:

  • Allow the player to attempt escaping rapes while keeping the help counterpart together, essentially merging the capabilities.
  • Players can now immediately abort Sex by holding Right-click.
  • If player is the rapist, they still can attempt to "escape" with the same chance (this could be changed to also have a 100%).
  • Crying for help is now optional, holding left-click will cause nearby NPCs to help if you if elligible, if they have Line of Sight the distance on which they may help you increases by 200, if the NPC is also a guard the distance is increased an additional 200, Companions will always assist you, regardless of line of sight.
  • If the player is the rapist, the same as above will happen, this time the player being the combat target, Companions should not attack you, haven't tested this yet.
  • EDIT: Also allows to escape scripted rapes such as those initialized the same way as TrueCrimeEx! It generally causes sex/rape acts occur faster after waking up, I haven't seen anything get majorly broken due to these changes.

I think that's all for now, I didn't know exactly where in the CS I could find what the Identifiers came from, so I made sure it only counted the ones I could see in the game.

 

I appreciate all the help so far, if anyone has any comments or ideas that could help improve this I will appreciate them.

LoversHelpRapeVPlayer.esp

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