Bane Master Posted September 11, 2025 Author Posted September 11, 2025 1 hour ago, Ariaan said: If the follower dies, handle it with FSM I am assuming that by "Dies" - you mean enters bleedout 1 hour ago, Ariaan said: If the player runs away and leave the follower behind, the follower is enslaved (handled via FSM). That is the current outcome with FSM - however for a follower to be enslaved The follower must have been assaulted after being defeated To be a valid master an aggressor has to have either hit or had sex with the follower during the encounter The selected aggressor must also be a valid FSM Master and be ActorTypeNPC or in the list of valid Slaver Races in Utility.json Each aggressor can only enslave one Follower The aggressor must be within 200' of the Follower when the enslave event fires. The player must either be > 25' from the Follower or also have been Defeated.
Ariaan Posted September 12, 2025 Posted September 12, 2025 19 hours ago, Bane Master said: I am assuming that by "Dies" - you mean enters bleedout 100% Bane, I mean enter bleedout. 19 hours ago, Bane Master said: That is the current outcome with FSM - however for a follower to be enslaved The follower must have been assaulted after being defeated To be a valid master an aggressor has to have either hit or had sex with the follower during the encounter The selected aggressor must also be a valid FSM Master and be ActorTypeNPC or in the list of valid Slaver Races in Utility.json Each aggressor can only enslave one Follower The aggressor must be within 200' of the Follower when the enslave event fires. The player must either be > 25' from the Follower or also have been Defeated. Yip, I'm aware of these requirements. I want to change the requirements to be only: The selected aggressor must be ActorTypeNPC or in the list of valid Slaver Races in Utility.json Each aggressor can only enslave one Follower The aggressor must be within 200' of the Follower when the enslave event fires. The player must either be > 25' from the Follower or also have been Defeated. By no means do I yet understand all of your script, so please, what I might be assuming the script does can be completely wrong! And if I am wrong, I am really sorry! I am looking at State BleedOut. Your description says that "This state handles Followers that have not been assigned to SLDefeat or SLDefeatNVN slots". In its OnBeginState it checks if fsm_SLDefeatMon is True. If it is true, then it directs the script back to Monitor. If fsm_SLDefeatMon is False, it performs a few more checks and if those meet the requirement, then the follower is sent to `FSMEnslave` State. So at the moment, even though SLDefeat is not monitoring the Follower (when SLDefeat is installed but it is Disabled in respect of the follower, i.e. when NPC vs NPC is set to Disabled in SLDefeat MCM), the BleedOut State doesn't send the follower to FSMEnslave State because fsm_SLDefeatMon is True irrespective of this setting in the SLDefeat MCM. This is why I've been asking about fsm_SLDefeatMon. In my mind it should have a False value if NPC vs NPC is set as Disabled in SLDefeat and the Follower goes into bleedout, and then OnBeginState event of the BleedOut State will direct the script to BleedOut State's OnUpDate Event, which can then potentially send it to FSMEnslave State (GoToState("FSMEnslave")). But this doesn't currently happen because to me it looks like fsm_SLDefeatMon is always True when SLDefeat is installed, irrespective of what the NPC vs NPC boolean value is. If I'm completely missing the boat I apologize!
Bane Master Posted September 13, 2025 Author Posted September 13, 2025 22 hours ago, Ariaan said: If I'm completely missing the boat I apologize! I don't think you are but I'm struggling to get a clear idea of what the ultimate goal is. I think you want followers to be enslaved if they go into bleedout with defeat installed but no defeat assault having taken place. Is that correct?
Ariaan Posted September 13, 2025 Posted September 13, 2025 2 hours ago, Bane Master said: I think you want followers to be enslaved if they go into bleedout with defeat installed but no defeat assault having taken place. Is that correct? That's 100% correct Bane. Essentially if the follower is in Bleedout state (and they don't auto recover from this due to NFF setting) and I (the player) run away and leave them behind ("The player must either be > 25' from the Follower or ...") , or if I die and go into SLDefeat state ("... or also have been Defeated"), then the follower goes into FSMEnslave state.
Bane Master Posted September 13, 2025 Author Posted September 13, 2025 56 minutes ago, Ariaan said: That's 100% correct Bane. Ok - I need to give this some thought as I think any change needs to be an choice in FSM rather than implied by a setting in Defeat so as to not affect other users unless they explicitly choose the option.
Ariaan Posted September 13, 2025 Posted September 13, 2025 1 hour ago, Bane Master said: not affect other users unless they explicitly choose the option Oh no, I think you might have misunderstood me. I didn't expect or for one moment think you will be making changes in FSM at all. I am planning and trying to make some changes in my own local copy of FSM in order for FSM on my machine to work in the manner that I described to you. If a number of people are interested in having that option, and you feel like including it, then yes, it should definitely only be a choice in FSM and not implied! There are plenty of people who love it just the way it currently is!
Bane Master Posted September 14, 2025 Author Posted September 14, 2025 (edited) 22 hours ago, Ariaan said: I am planning and trying to make some changes in my own local copy of FSM in order for FSM on my machine to work in the manner that I described to you. OK No problem. It would be incredibly difficult to remove the SL assaulted requirement as the whole SLDefeat plugin is built around using that to identify potential slaves and Masters but I think I have a solution for you. In the FSM system Menu 1) Disable the Defeat Plugin 2) Set Follower Bleedout Enslavement to a % of your choice (or 100% for testing) This will cause Bleedout Enslavement to be handled by fsm_followerupkeepaliasscript rather than fsm_sldefeatfolloweraliasscript. fsm_followerupkeepaliasscript enslavement does not require an SL assault to have occurred. Please note that the other standard requirements for enslavement still apply. If you want to make any tweaks to enslavement trigger conditions they are in Function bIsProtected() at line 165 of fsm_followerupkeepaliasscript. Edited September 14, 2025 by Bane Master 2
Ariaan Posted September 15, 2025 Posted September 15, 2025 On 9/14/2025 at 1:03 PM, Bane Master said: I think I have a solution for you Oh wow! I didn't think of that. Just Disable the Defeat Plugin... Such an easy way to get what I was looking for! Thanks a million @Bane Master! I was making myself ready for hours and hours of learning (on how to do mod dev for Skyrim using CK, Papyrus and xEdit) and then editing your script. The only game dev experience I have is intermediate level coding and development in Unity. 1
Ariaan Posted September 17, 2025 Posted September 17, 2025 On 9/14/2025 at 1:03 PM, Bane Master said: In the FSM system Menu 1) Disable the Defeat Plugin 2) Set Follower Bleedout Enslavement to a % of your choice (or 100% for testing) I made these changes, and also had to specifically disable NPC vs NPC in SLDefeat. BleedOut is then, like you said, handled by fsm_followerupkeepaliasscript. I've now picked up another peculiarity. Inside FSMEnslave you use GetAggressorSlaver function that's defined in fsm_utilityscript.psc to get the name of the kMaster. Actor kMaster = FSM.GetAggressorSlaver(kActor, 4096.0) However, what I've picked up is that when a player is inside a cave, it always returns kMaster as None (well, for me it always did. Maybe in some caves it doesn't). I then had a closer look at GetAggressorSlaver. What I've picked up is that when I'm inside a cave it returns the same ridiculously large distance between the follower and the slaver. kFollower.GetDistance(kSlaver) = 340282346638528859811704183484516925440.000000 And due to that it doesn't want to allocate a slaver because it's larger than the 4096 threshold. Obviously if I omit a distance and just use Actor kMaster = FSM.GetAggressorSlaver(kActor) a slaver is allocated when inside a cave. But ideally I would like the enslavement to be to a slaver that is in the vicinity of the cave I am in, so I would like to use some distance check. Perhaps not 4096. I thought of using 1512768 (the distance between Whiterun and Riverwood). But when I'm inside a cave it always returns a distance of 340282346638528859811704183484516925440.000000 It's like the function doesn't work properly when inside the cave. Have you come across this Bane? Is there a way to fool the GetDistance function and pretend the follower is outside the cave when doing the distance calculation? I'm including the filtered and full papyrus script for you. FSM Papyrus Log.txt Papyrus.0.log
Bane Master Posted September 17, 2025 Author Posted September 17, 2025 (edited) 1 hour ago, Ariaan said: It's like the function doesn't work properly when inside the cave. Have you come across this Bane? GetDistance only works when Objects are in the same interior, or same worldspace. Your result indicates that the Actors are not in the same interior. I'm not sure how this is happening - what interior are you testing in? Edited September 17, 2025 by Bane Master
Ariaan Posted September 17, 2025 Posted September 17, 2025 (edited) 2 hours ago, Bane Master said: what interior are you testing in? I've tested inside caves, as well as on the big map. On the big map (i.e. open world) it works perfectly fine. It's when I'm inside a cave that I get these crazy big numbers. One of the caves is Uttering Hills Cave, and the other was Movarth's Lair . Does that help? So what you are telling me is this should not be happening? Something else that I'm wondering about is if you look at the EditorID of the potential masters it is iterating through, it seems to always be the same subset of master EditorIDs. I'm not sure why? I did the testing on different locations across the map. Any ideas of where I should be troubleshooting? Edited September 17, 2025 by Ariaan
Bane Master Posted September 17, 2025 Author Posted September 17, 2025 (edited) 2 hours ago, Ariaan said: it seems to always be the same subset of master EditorIDs. That would explain what you are seeing as those masters would not be in the same interior as the follower. In that case GetDistance() would return a huge number. The Master IDs should be updated for the cave you are in so that gives me a potential issue to explore - I'll take a look. Final question - what version of Skyrim are you using? Edited September 17, 2025 by Bane Master
Ariaan Posted September 17, 2025 Posted September 17, 2025 2 hours ago, Bane Master said: what version of Skyrim are you using? I've been doing the testing on Skyrim 1.6.1170 1
Bane Master Posted September 17, 2025 Author Posted September 17, 2025 (edited) 2 hours ago, Ariaan said: I've been doing the testing on Skyrim 1.6.1170 Ok - I've made a small change to the script to ensure that Actors from previous fights are properly cleared from the kAggressors[] array in fsm_followerupkeepaliasscript I've tested in both Uttering Hills and Halted Stream Camp interior and enslavement worked as expected, so import these into your test setup and see what happens. There's some debug in the console that shows the array being reset for a new fight and then growing as aggressors are detected fsm_followerupkeepaliasscript.pex fsm_followerupkeepaliasscript.psc Edited September 17, 2025 by Bane Master
Ariaan Posted September 18, 2025 Posted September 18, 2025 19 hours ago, Bane Master said: I've tested in both Uttering Hills and Halted Stream Camp interior and enslavement worked as expected Thanks for the new files Bane. I saw it is creating new entries in the in-game console (~). It is still not working on my test environment though. It is still trying to use the same slavers, 000C5697 & 000C5696. And I still get the same ridiculously long distance between follower and slaver (kFollower.GetDistance(kSlaver) = 340282346638528859811704183484516925440.000000). If it is working on your side there must be something different in the environments. I'm including my environment and papyrus log, I'll test it in VR also a bit later. Papyrus.0.log MO2 mod list.txt
Bane Master Posted September 18, 2025 Author Posted September 18, 2025 1 hour ago, Ariaan said: It is still trying to use the same slavers, 000C5697 & 000C5696 Those are the Bandits located in UtteringHillsCaveExterior01 so checking the distance to them whilst inside Uttering Hills will indeed generate that result. I took Iona to UHC exterior and got her enslaved by those bandits - then killed them to free her, took her inside and she was enslaved by the next group of bandits with no issues. I suspect the issue is with your save game or test environment as I cannot reproduce this issue. Are you playing with a new save in test or trying the updated scripts on your old save? Also in your load order all the Follower Mods are active - I assume for Playtesting you disable all but one? Can you share your Debug Code Please
Ariaan Posted September 18, 2025 Posted September 18, 2025 11 minutes ago, Bane Master said: Are you playing with a new save in test or trying the updated scripts on your old save? I tried the new script on a current save. I've checked the save I'm using with ReSaver and it doesn't have any unattached instances, undefined elements, scripts with no or missing parents. 17 minutes ago, Bane Master said: Also in your load order all the Follower Mods are active All of their esp & esm files are disabled in the Plugins section, so they don't get loaded. I only have them in the load order so their script files are available for when I compile any psc files. I'm attaching my debug code 26 minutes ago, Bane Master said: I suspect the issue is with your save game Let me start a new game and see if that solves the error. Will let you know. fsm_utilityscript.pex fsm_followerupkeepaliasscript.pex fsm_followerupkeepaliasscript.psc fsm_utilityscript.psc 1
Bane Master Posted September 19, 2025 Author Posted September 19, 2025 22 hours ago, Ariaan said: I tried the new script on a current save. I may have worked out what is going on in your test. When combat ends for an Actor FSM waits 60 seconds before resetting their aggressor list in case they enter bleedout and recover to continue fighting. If a fight takes place outside the entrance to a cave and the follower then enters the cave and starts combat the (dead) Aggressors from Outside won't have been cleared and hence would give the GetDistance error when checked. I'll add an OnLoad clear to cover this scenario 2
Bane Master Posted September 20, 2025 Author Posted September 20, 2025 What's New in Version 1.731 Released Just now The list of potential Bleedout Mode aggressor Slavers will now be cleared when a follower passes through a Load Door 2
DonQuiWho Posted September 20, 2025 Posted September 20, 2025 (edited) 3 hours ago, Bane Master said: What's New in Version 1.731 Released Just now The list of potential Bleedout Mode aggressor Slavers will now be cleared when a follower passes through a Load Door It's been interesting, and a pleasure to watch, you and @Ariaan have that recent, clear, civilised, and courteous discourse, leading to a useful update. Thanks for that. Edited September 20, 2025 by DonQuiWho 2
r235711 Posted September 21, 2025 Posted September 21, 2025 After updating, the sex scene between the master and slave starts on the floor instead of on a bed.
gender65 Posted September 21, 2025 Posted September 21, 2025 Thank you so much for updating your wonderful mod. It works great on LE. 1
Bane Master Posted September 21, 2025 Author Posted September 21, 2025 (edited) 3 hours ago, r235711 said: After updating, the sex scene between the master and slave starts on the floor instead of on a bed. Staring with Version 1.73 Use beds is disabled in slave SL scenes Edited September 21, 2025 by Bane Master
r235711 Posted September 21, 2025 Posted September 21, 2025 6 hours ago, Bane Master said: バージョン1.73から、スレーブSLシーンでベッドの使用が無効になります Thanks for your reply. Is there a way to enable the use of beds?
Bane Master Posted September 21, 2025 Author Posted September 21, 2025 25 minutes ago, r235711 said: Thanks for your reply. Is there a way to enable the use of beds? Not atm but l will look at adding an MCM toggle next time I update
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now