BoobaMaster69 Posted September 18 Posted September 18 (edited) Very cool mod! You could release it also on Nexus Mods. It would fit there much better and also get much more recognition than this perverted site lol Also, a hotkey to toggle the mod on/off would be nice Edited September 18 by BoobaMaster69
OverseerPrimeXF Posted Saturday at 11:51 AM Author Posted Saturday at 11:51 AM On 9/17/2026 at 1:43 AM, myhouseatl said: Can you do the opposite? EG: Dialogue that asks if you want to sit on my lap? Giving the PC the ability to sit on NPC lap. For female players... this is exactly what Immersive lap sitting does. in this mod, i will not do the same thing.
RadioHead89 Posted Saturday at 08:23 PM Posted Saturday at 08:23 PM Spoiler Steps to reproduce: 1. Have at least one follower, "sit with player" enabled in MCM. 2. Sit or lie on any furniture in a location with no other valid sit furniture in search radius (e.g., a crypt interior). OnEnterFurniture fires, GetAllFurniture() returns an empty array. 3. Check Logs/Script/Papyrus.0.log. Observed behavior (endless spam, index increments by 1 each line): error: Array index 411705055 is out of range (0-4294967295) stack: [Active effect 28 on (00000014)].swm_FurnitureCheckerScript.FillChairAliases() - "..." Line ? [Active effect 28 on (00000014)].swm_FurnitureCheckerScript.OnEnterFurniture() - "..." Line ? Root cause — in FillChairAliases(): While (actors_to_sit_remaining > 0) If (free_spaces_on_furniture[furniture_index]) ; out of bounds when array is empty ... If (all_furniture.Length < furniture_index || SitPlaceAliases.Length < alias_index || total_free_spaces <= 0) actors_to_sit_remaining = 0 EndIf EndIf furniture_index += 1 EndWhile The loop's exit condition is INSIDE the If block, which only runs on a successful (in-bounds) array access. When the furniture/free-spaces array is empty, the bounds check is never reached and the loop never terminates. Papyrus silently returns 0 for out-of-bounds reads, so the loop spins until the counter overflows. Note: "all_furniture.Length < furniture_index" is also off by one — should be "<=". A similar unbounded index exists in ActorToSitPlaceAllocator(): when trailing furniture has 0 free spaces, current_furniture_index is incremented and then used to read free_spaces_on_furniture[current_furniture_index] with no bounds check, so it also runs past the end of the array. Suggested fix: 1. Move the bounds check into the While condition: While (actors_to_sit_remaining > 0 && furniture_index < free_spaces_on_furniture.Length) 2. Early exit in OnEnterFurniture when nobody needs a seat: If (validated_followers.Length == 0) return EndIf 3. Guard the index in ActorToSitPlaceAllocator after incrementing: current_furniture_index += 1 If (current_furniture_index >= free_spaces_on_furniture.Length) debug.Notification("Followers didn't find enough space to sit: " + (followers.Length - total_followers_allocated)) return EndIf spaces_remaining = free_spaces_on_furniture[current_furniture_index] The mod otherwise works great — hope this helps. Thanks for the mod! When the player enters ANY furniture while "sit with player" is enabled and there is no valid sit furniture found nearby, swm_FurnitureCheckerScript.FillChairAliases() enters an unbounded While loop. Papyrus writes an "Array index out of range" error on EVERY iteration, producing millions of log lines per minute. In my case Papyrus.0.log reached ~28 GB in a single session (older rotated logs: 12–34 GB each). Total disk space lost: ~200 GB. A fresh 4 GB log accumulates within a few minutes of play.
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