Jump to content

Recommended Posts

Posted
On 5/20/2024 at 4:47 AM, stillnofunnylogin said:

Hi,

    Windhelm's Palace of the Kings doesn't get scanned, followers aren't captivated. I looked in xedit, and I can't find it in _ddScanCells.

 

Was this a choice, an oversight, or am i just blind?

 

Follow up question: does it hurt anything to have a cell entered twice in _ddScanCells? Say I added something I didn't see was already there.

 

"WindhelmPalaceoftheKings "Palace of the Kings" [CELL:0001677C]"

 

Thanks

 

It doesn't matter if it's entered twice. It just means the scan happens twice and the second scan does nothing.

Posted
On 5/23/2024 at 4:39 AM, sfdrake said:

whenever you update this again I'd add inigo, kaiden, Thogra's esp to the official blacklist.( possibly Lucien and Auri too)
Inigo and Kaiden are already in captivity  and Thogra is on death's doorstep outside that one tavern where the dude who does not sleep hides out. ( Captive Lucien would not make much sense and neither would auri and add a few more that are locked behind an area, think coldsun has one that is inside the college of winterhold)

 

Ok, sure, I will add these to the blacklist.

Posted (edited)

I would like to +1 the request for a follower whitelist for mods to captivate. I just found a stray follower in the Falkreath Hall of the Dead.

 

FalkreathHouseofArkay "Hall of the Dead" [CELL:00013A71]

 

In the short term, does anyone have Formlist Manipulator installed? I think I have the syntax correct. Create a _FLM.ini file then add the following. At game boot, this should add the Hall of the Dead to the _ddScanCells formlist (still requires a new game so Captive Followers processes the cells).

 

FormList = 0xA96~CaptiveFollowers.esp|0x13A71

 

Edit: fixed a type

 

Edit 2: OK, reinstalled Captive Followers for a clean esp sans edits and started a new game with the attached captivefollowers_flm.ini. The follower in the Falkreath Hall of the Dead absent from the cell, so I believe it worked.

 

EditorIDs worked for me, like so:

     FormList = _ddScanCells|FalkreathHouseofArkay

CaptiveFollowers_FLM.ini

Edited by stillnofunnylogin
Attached a file
Posted (edited)

I uploaded version 1.3, containing more scanned cells in _ddScanCells, as requested. The changes are:

 

- added more cells to the list of scanned cells, including exterior cells inside Solitude, Whiterun, Riften, Windhelm and Markarth

- added a few custom follower mods to the config blacklist 

 

  "BlacklistedMods": [
    "Skyrim.esm",
    "Dawnguard.esm",
    "Dragonborn.esm",
    "Hearthfires.esm",
    "LegacyoftheDragonborn.esm",
    "SexLab-AmorousAdventures.esp",
    "Minerva.esp",
    "nwsJennaFollower.esp",
    "0Kaidan.esp",
    "DK_Thogra.esp",
    "Lucien.esp",
    "Inigo.esp"
  ],

Edited by darkdesires04
Posted (edited)

I see you've just updated, so this might already be fixed, but I'm playing v1.2 and have run across an issue. I've got two followers that normally spawn inside the Windpeak Inn in Dawnstar (Frida and Shargar). For some reason they were imprisoned inside the Windpeak Inn, but without any visible restraints. They behaved as they should, as in they were freed when I interacted with them, and when I got outside the Dawnstar region they suited up and strolled back to Dawnstar as expected.

 

I'm not sure, but Windpeak Inn may have been added as in imprisonment cell as well as a scan cell? Either that or my Smashed patch is playing up, as it does sometimes.

 

That aside, it's been working like a charm this time around. Is it safe to update mid-game from 1.2 to 1.3, as long as I copy my exclusion list into the new ini file?

Edited by eldritch68
Posted (edited)

Thanks for the quick update!

 

FWIW, The formlist manipulator option seems to be working. Even on 1.3, its log reports four forms added to the _ddscancells list. We can add cells in between updates, or just add infrequently used cells like the Pelagia Wing.

 

FormList _ddScanCells "" [51000A96]
         4 new Forms added, skipped 8 duplicates.

 

Here are the four cells not listed in 1.3, from my captivefollowers_FLM.ini:

 

FormList = _ddScanCells|WindhelmPalaceoftheKings
FormList = _ddScanCells|BluePalaceWing01
FormList = _ddScanCells|WhiterunDragonsreachJarlsQuarters
FormList = _ddScanCells|RiftenThievesGuildHeadquarters

 

Edited by stillnofunnylogin
Shortened for brevity
Posted
1 hour ago, eldritch68 said:

I see you've just updated, so this might already be fixed, but I'm playing v1.2 and have run across an issue. I've got two followers that normally spawn inside the Windpeak Inn in Dawnstar (Frida and Shargar). For some reason they were imprisoned inside the Windpeak Inn, but without any visible restraints. They behaved as they should, as in they were freed when I interacted with them, and when I got outside the Dawnstar region they suited up and strolled back to Dawnstar as expected.

 

I'm not sure, but Windpeak Inn may have been added as in imprisonment cell as well as a scan cell? Either that or my Smashed patch is playing up, as it does sometimes.

 

That aside, it's been working like a charm this time around. Is it safe to update mid-game from 1.2 to 1.3, as long as I copy my exclusion list into the new ini file?

 

It's fine to update mid game and you can copy your exclusion list, but nothing will happen mid game, since the changes I made only apply at the beginning of the game when the scan runs.

 

Posted

Is there any way to look and see what followers the mod has captured after it runs? Just started a new game and it only grabbed around 20 followers and I want to put the rest in Follower Slavery Mod

Posted (edited)

Hello, look as I mentioned before, I have many mods and I decided to put together a program that literally copies the name of all my plugins and passes them to the black list in the json, it already works, now I will improve it to add a section of the mods That's what I want them to manage with your incredible mod. Thank you, I will improve this over time.

 

import tkinter as tk
from tkinter import filedialog, messagebox
import json

class App:
    def __init__(self, root):
        self.root = root
        self.root.title("Seleccionar Archivos")

        # Botón para seleccionar Config.json
        self.config_button = tk.Button(root, text="Seleccionar Config.json", command=self.select_config)
        self.config_button.pack(pady=10)

        # Botón para seleccionar loadorder.txt
        self.loadorder_button = tk.Button(root, text="Seleccionar loadorder.txt", command=self.select_loadorder)
        self.loadorder_button.pack(pady=10)

        # Botón para seleccionar MODS included.txt
        self.mods_included_button = tk.Button(root, text="Seleccionar MODS included.txt", command=self.select_mods_included)
        self.mods_included_button.pack(pady=10)

        # Botón para realizar la acción
        self.action_button = tk.Button(root, text="Actualizar JSON", command=self.perform_action)
        self.action_button.pack(pady=10)

        # Variables para almacenar las rutas de los archivos
        self.config_path = None
        self.loadorder_path = None
        self.mods_included_path = None

    def select_config(self):
        self.config_path = filedialog.askopenfilename(title="Seleccionar Config.json", filetypes=[("JSON files", "*.json")])
        if self.config_path:
            messagebox.showinfo("Archivo seleccionado", f"Config.json seleccionado: {self.config_path}")

    def select_loadorder(self):
        self.loadorder_path = filedialog.askopenfilename(title="Seleccionar loadorder.txt", filetypes=[("Text files", "*.txt")])
        if self.loadorder_path:
            messagebox.showinfo("Archivo seleccionado", f"loadorder.txt seleccionado: {self.loadorder_path}")

    def select_mods_included(self):
        self.mods_included_path = filedialog.askopenfilename(title="Seleccionar MODS included.txt", filetypes=[("Text files", "*.txt")])
        if self.mods_included_path:
            messagebox.showinfo("Archivo seleccionado", f"MODS included.txt seleccionado: {self.mods_included_path}")

    def perform_action(self):
        if self.config_path and self.loadorder_path and self.mods_included_path:
            try:
                # Leer el archivo loadorder.txt omitiendo la primera línea
                with open(self.loadorder_path, 'r') as loadorder_file:
                    loadorder_lines = loadorder_file.readlines()[1:]

                # Leer el archivo MODS included.txt
                with open(self.mods_included_path, 'r') as mods_included_file:
                    mods_included_lines = [line.strip() for line in mods_included_file.readlines()]

                # Filtrar las líneas de loadorder.txt excluyendo las presentes en MODS included.txt
                filtered_lines = [line.strip() for line in loadorder_lines if line.strip() not in mods_included_lines]

                # Leer el contenido del archivo Config.json
                with open(self.config_path, 'r') as config_file:
                    config_data = json.load(config_file)

                # Actualizar la sección "BlacklistedMods" en el JSON
                config_data["BlacklistedMods"] = filtered_lines

                # Guardar los cambios en el archivo Config.json
                with open(self.config_path, 'w') as config_file:
                    json.dump(config_data, config_file, indent=4)

                messagebox.showinfo("Éxito", "Config.json actualizado correctamente")

            except Exception as e:
                messagebox.showerror("Error", f"Ocurrió un error: {e}")
        else:
            messagebox.showwarning("Advertencia", "Debe seleccionar todos los archivos antes de realizar la acción.")

if __name__ == "__main__":
    root = tk.Tk()
    app = App(root)
    root.mainloop()

 

edit: It was easier than I thought, I already converted it to .exe format and it has this logo, I'll do some tests and I'll see if it passes.

 

001.png

Edited by anon202269
Posted
2 hours ago, ekion said:

Is there any way to look and see what followers the mod has captured after it runs? Just started a new game and it only grabbed around 20 followers and I want to put the rest in Follower Slavery Mod

Depends, it writes the mods/followers it processed to the papyrus file. That's not super easy to sift through, but it works.

Posted
4 hours ago, anon202269 said:

Hello, look as I mentioned before, I have many mods and I decided to put together a program that literally copies the name of all my plugins and passes them to the black list in the json, it already works, now I will improve it to add a section of the mods That's what I want them to manage with your incredible mod. Thank you, I will improve this over time.

 

import tkinter as tk
from tkinter import filedialog, messagebox
import json

class App:
    def __init__(self, root):
        self.root = root
        self.root.title("Seleccionar Archivos")

        # Botón para seleccionar Config.json
        self.config_button = tk.Button(root, text="Seleccionar Config.json", command=self.select_config)
        self.config_button.pack(pady=10)

        # Botón para seleccionar loadorder.txt
        self.loadorder_button = tk.Button(root, text="Seleccionar loadorder.txt", command=self.select_loadorder)
        self.loadorder_button.pack(pady=10)

        # Botón para seleccionar MODS included.txt
        self.mods_included_button = tk.Button(root, text="Seleccionar MODS included.txt", command=self.select_mods_included)
        self.mods_included_button.pack(pady=10)

        # Botón para realizar la acción
        self.action_button = tk.Button(root, text="Actualizar JSON", command=self.perform_action)
        self.action_button.pack(pady=10)

        # Variables para almacenar las rutas de los archivos
        self.config_path = None
        self.loadorder_path = None
        self.mods_included_path = None

    def select_config(self):
        self.config_path = filedialog.askopenfilename(title="Seleccionar Config.json", filetypes=[("JSON files", "*.json")])
        if self.config_path:
            messagebox.showinfo("Archivo seleccionado", f"Config.json seleccionado: {self.config_path}")

    def select_loadorder(self):
        self.loadorder_path = filedialog.askopenfilename(title="Seleccionar loadorder.txt", filetypes=[("Text files", "*.txt")])
        if self.loadorder_path:
            messagebox.showinfo("Archivo seleccionado", f"loadorder.txt seleccionado: {self.loadorder_path}")

    def select_mods_included(self):
        self.mods_included_path = filedialog.askopenfilename(title="Seleccionar MODS included.txt", filetypes=[("Text files", "*.txt")])
        if self.mods_included_path:
            messagebox.showinfo("Archivo seleccionado", f"MODS included.txt seleccionado: {self.mods_included_path}")

    def perform_action(self):
        if self.config_path and self.loadorder_path and self.mods_included_path:
            try:
                # Leer el archivo loadorder.txt omitiendo la primera línea
                with open(self.loadorder_path, 'r') as loadorder_file:
                    loadorder_lines = loadorder_file.readlines()[1:]

                # Leer el archivo MODS included.txt
                with open(self.mods_included_path, 'r') as mods_included_file:
                    mods_included_lines = [line.strip() for line in mods_included_file.readlines()]

                # Filtrar las líneas de loadorder.txt excluyendo las presentes en MODS included.txt
                filtered_lines = [line.strip() for line in loadorder_lines if line.strip() not in mods_included_lines]

                # Leer el contenido del archivo Config.json
                with open(self.config_path, 'r') as config_file:
                    config_data = json.load(config_file)

                # Actualizar la sección "BlacklistedMods" en el JSON
                config_data["BlacklistedMods"] = filtered_lines

                # Guardar los cambios en el archivo Config.json
                with open(self.config_path, 'w') as config_file:
                    json.dump(config_data, config_file, indent=4)

                messagebox.showinfo("Éxito", "Config.json actualizado correctamente")

            except Exception as e:
                messagebox.showerror("Error", f"Ocurrió un error: {e}")
        else:
            messagebox.showwarning("Advertencia", "Debe seleccionar todos los archivos antes de realizar la acción.")

if __name__ == "__main__":
    root = tk.Tk()
    app = App(root)
    root.mainloop()

 

edit: It was easier than I thought, I already converted it to .exe format and it has this logo, I'll do some tests and I'll see if it passes.

 

001.png

 

Thanks, good work, if you want to blacklist all of them.

 

Posted (edited)

Would it be possible to make it so once you save someone they can potentially get taken again (grace window of 3 days). Maybe with a custom(this mod) follower or 3. I know it's very similar to follower slaver mod. Also, expanding on that maybe they could have extra dialogue the second+ time they are captured? Like maybe some not so subtle hints that they enjoy getting kidnapped/raped. Another thing that'd be neat is during rescue if they acknowledge the enemies around them. Like complaining about draugr maggoty/decayed cum, being a bandits cum dump, falmers charaus breeder etc... If I don't like having to many follower mods, that'd be a great way to extend longevity.

 

I haven't played with this mod, can they be found in monster dens(bears, spiders, trolls etc...)? or giants area?

Edited by Midnight Blues
Posted

I'm having issues in Fort Neugrad Prison, where a lot of the cell is missing, particularly the lower areas. Disabling this mod and re-entering fixes the issue, so i'm guessing this mod is to blame. I have no interior lighting mods, and the only other thing that comes close to altering the cell is Dynamic Things Alternate.

Posted

This is a great idea for a mod. I have two questions, the first being if this would be safe to install on an existing save or needs to be run on a fresh game? The mod description suggests it can be installed mid-game but wanted to double check.

 

My second question is about how the initialization is handled. Will the script run as soon as the mod is detected and the scripts initialized, or will we need to save then reload first? I ask because I think it would be nice if there was a way for us to decide when the script runs for the first time, like maybe an option in the MCM to enable the mod so we can follow the usual practice of creating a new game, waiting in the alternate start cell for all our debug log messages to stop, then save/reload before we start configuring mod options through the MCM. Would probably be a nice QoL feature for those of us with modlists that can already be quite script heavy when starting a new game.

Posted (edited)
9 hours ago, asdj1239 said:

This is a great idea for a mod. I have two questions, the first being if this would be safe to install on an existing save or needs to be run on a fresh game? The mod description suggests it can be installed mid-game but wanted to double check.

 

My second question is about how the initialization is handled. Will the script run as soon as the mod is detected and the scripts initialized, or will we need to save then reload first? I ask because I think it would be nice if there was a way for us to decide when the script runs for the first time, like maybe an option in the MCM to enable the mod so we can follow the usual practice of creating a new game, waiting in the alternate start cell for all our debug log messages to stop, then save/reload before we start configuring mod options through the MCM. Would probably be a nice QoL feature for those of us with modlists that can already be quite script heavy when starting a new game.

 

Thanks, you can install it mid game, it just scans for followers and restrains them. The script runs as soon as the mod is detected and pauses for 60 seconds before continuing to scan for followers. During the time you can configure the MCM. Disabling the mod until the user enables it in the MCM just to start the script is another way to do it, but then nothing would happen unless the user opens the MCM to start it, instead of being automated. Well I like it automated so I did it this way, and I too have a bunch of scripts that run at the beginning of the game along with this script. There is no need to reload the save. The thing I could do in another release is add a feature to pause the script in the MCM during the 60 seconds.

 

 

 

 

Edited by darkdesires04
Posted (edited)
10 hours ago, igorkeri said:

I'm having issues in Fort Neugrad Prison, where a lot of the cell is missing, particularly the lower areas. Disabling this mod and re-entering fixes the issue, so i'm guessing this mod is to blame. I have no interior lighting mods, and the only other thing that comes close to altering the cell is Dynamic Things Alternate.

 

It's possible the mod edits the cell in a way that causes the cell to be missing when combined with another mod. But I also have the captive followers mod installed and also think that I don't have any other mods that alter forts and it works fine in Fort Neugrad Prison. So one of us has a conflicting mod that alters the fort layout or there is something else going on. If I find out what it is I will fix it. 

 

Edited by darkdesires04
Posted (edited)
15 hours ago, Midnight Blues said:

Would it be possible to make it so once you save someone they can potentially get taken again (grace window of 3 days). Maybe with a custom(this mod) follower or 3. I know it's very similar to follower slaver mod. Also, expanding on that maybe they could have extra dialogue the second+ time they are captured? Like maybe some not so subtle hints that they enjoy getting kidnapped/raped. Another thing that'd be neat is during rescue if they acknowledge the enemies around them. Like complaining about draugr maggoty/decayed cum, being a bandits cum dump, falmers charaus breeder etc... If I don't like having to many follower mods, that'd be a great way to extend longevity.

 

I haven't played with this mod, can they be found in monster dens(bears, spiders, trolls etc...)? or giants area?

 

Yes, it would be an immersive expansion. Getting followers to say things if they use a standard voice, or maybe some of them are getting sexually abused there along with the player if player gets there from Simple Slavery or defeat. I will think about it, and see if I have time to enhance it or if I mod something else. Right now the followers can be found in forts, dungeons and caves, not monster dens, more like vampire and bandit caves.

 

Edited by darkdesires04
Posted

Amazing mod, everything seems to be done right, however...

 

I'm having some trouble with recruiting followers, any saved follower that has "acquaintance" and has not "friend" or higher relationship tag will be following me forever. You see, I'm trying to play without everyone being too friendly, at the start gaining their trust by giving gifts or money like a Misthios. Easy fix: tag again every follower with a "friend" relationship.

 

I noticed this bug with "Swiftly Order Squad - Follower Commands UI" everytime I teleport back (my followers) they will just appear near me counting as an actual followers, then they will just walk off without following me.

 

Could've been even more immersive if had dialogs like "damsels in distress" added to the followers by the moment, no need to be voiced tho, just the dialog options might do.

 

tldr

Recruiting is bugged if I save an "acquaintance" relationship follower and only if I don't tell them to "Follow me, I need your help" then dismiss them from the party.

 

Overall, I really like this mod for solid gameplays, it's simple and immersive.

Posted

Thanks for making this mod! I didn't think I would add many followers to the game until I saw this. I am about to try this out, but I just noticed that some dungeon mods may conflict with this. For example, Thanedom of Treva's Watch turns Treva's Watch into a settlement after the vanilla quest is finished, so even if it works with this mod, it makes little sense to have a follower captured there. Would it be possible to also have a blacklist for the locations?

 

Also, I have a suggestion: it would be nice to have the innkeepers of the inns talking about a traveler hasn't visit the inn for a while to indicate that there is still a follower from that inn has not been saved. Sort of like the innkeeper dialogue in Follower Slavery Mod.

Posted (edited)
5 hours ago, MaftyX105 said:

Thanks for making this mod! I didn't think I would add many followers to the game until I saw this. I am about to try this out, but I just noticed that some dungeon mods may conflict with this. For example, Thanedom of Treva's Watch turns Treva's Watch into a settlement after the vanilla quest is finished, so even if it works with this mod, it makes little sense to have a follower captured there. Would it be possible to also have a blacklist for the locations?

 

Also, I have a suggestion: it would be nice to have the innkeepers of the inns talking about a traveler hasn't visit the inn for a while to indicate that there is still a follower from that inn has not been saved. Sort of like the innkeeper dialogue in Follower Slavery Mod.

 

I guess I could add a blacklist for locations, but will it work? ZAZ furniture will still be there without captive followers.

 

Innkeepers could provide a vague hint of a follower that was there before, and a location. But there could be many, let's say 5 or so from a single inn.

 

Edited by darkdesires04
Posted
On 5/24/2024 at 12:28 PM, hotrack said:

 

Technically, the modder is a permissioned LE to SE porter, not the original follower creator. All the blurbs pretty much says it all. 

 

Yeah. I think all of his are ports. They're good followers, though. I DO wish he had combined a bunch of them into a single mod, however.

On 5/24/2024 at 5:03 PM, darkdesires04 said:

 

Ok, sure, I will add these to the blacklist.

 

Are you still taking requests for followers to add to blacklists?

I think hypothetically it's probably for the best to always include followers that are either part of other quest-based mods (like Helgen Reborn) or standalone followers that have their own questlines (like Katana; https://www.nexusmods.com/skyrimspecialedition/mods/69622/ ) if only because putting them somewhere else in the game could, conceivably, break their questline.

Posted (edited)
16 hours ago, darkdesires04 said:

I guess I could add a blacklist for locations, but will it work? ZAZ furniture will still be there without captive followers.

Thanks for the reply. I think that is fine, as there is already some torture furniture in the castles in vanilla game. It would be better if they could be automatically disabled, but I'll just disable them in console if I find them out of place.

 

16 hours ago, darkdesires04 said:

 

Innkeepers could provide a vague hint of a follower that was there before, and a location. But there could be many, let's say 5 or so from a single inn.

It could be some greetings like "Have you seen [name], an adventurer like you? She/He used to come here every day, but I haven't seen she/him for quite a while." They just randomly pick one name to ask like a radiant quest, or maybe just as a reminder (no location info given) that there are still followers to rescue.

Edited by MaftyX105
Posted

The only thing that would make this better is a 'Dirt and Blood' patch. For now i'm applying the dirt myself via console, seems odd they'd be all clean and pristine when you find them.

Posted
On 5/26/2024 at 4:13 PM, igorkeri said:

I'm having issues in Fort Neugrad Prison, where a lot of the cell is missing, particularly the lower areas. Disabling this mod and re-entering fixes the issue, so i'm guessing this mod is to blame. I have no interior lighting mods, and the only other thing that comes close to altering the cell is Dynamic Things Alternate.

 

Same problem here. A hole in the floor right down the bottom in the junk room that exits into the lake out back. I do have Imperial Stone and Lux installed, which might be contributing to the problem, though I can't see any major conflict in SSEEdit.

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...