the Sim Settlements forums!

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Question SetNoBleedoutRecovery not being set back to false after Gunner Raids from SS2

Cyberslas

Active Member
Messages
117
I'm fairly certain this is a WSFW issue, since the Raids from SS2 are based off of the WSFW Assault system. After every Raid, I have one settler who is stuck in the bleedout state with negative health. I cannot say that it is only limited to a single settler at a time, as it may be only one settler has been coincedentally "killed" during every Raid. They will not get up until I call cf ResetHealthAndLimbs (just so they don't die) and then cf SetNoBleedoutRecovery false on them through the console. Every time this has happened, the settler was an Actor marked as unique.

Looking through the source, I wasn't able to see any real reason why it is not set back to normal. Since the code that sets SetNoBleedoutRecovery back to true (seen here) is supposed to give settlers positive health and it doesn't, it may just not be running on them for whatever reason. I've seen some reports of Knockout Framework potentially causing problems, but I don't have that mod installed.
 
Looking through the source, I wasn't able to see any real reason why it is not set back to normal.
From what I see, RestoreBleedoutRecovery checks Attackers and SubdueToComplete but not Defenders. I may be failing to comprehend it correctly, but it looks like for an attack on a settlement, the settlement actors + player would be defenders.

I think this should be added to RestoreBleedoutRecovery
Code:
i = 0
while(i < Defenders.GetCount())
    Actor thisActor = Defenders.GetAt(i) as Actor
    if(thisActor.HasKeyword(BleedoutRecoveryStopped))
        ; First make sure they have some health or they will immediately drop dead
        Float fCurrentHealth = thisActor.GetValue(HealthAV)
        Float fRestore = 10.0
        
        if(fCurrentHealth < 0)
            fRestore += fCurrentHealth * -1
        endif
        
        thisActor.RestoreValue(HealthAV, fRestore)
        
        thisActor.SetNoBleedoutRecovery(false)
        thisActor.RemoveKeyword(BleedoutRecoveryStopped)
    endif
    
    i += 1
endWhile
 
Top