Jump to content

Remove Every Single NPC Mod


Frippian

Recommended Posts

Hello,

 

As the title suggests, I am searching for a way to remove every single NPC from Oblivion. I am aware that this may create the most unenjoyable experience of oblivion that might be imagined, but, I still want to do it. I am writing this post to find out if there is some simple solution to my problem, a difficult one, or if it is impossible.

 

I have NEVER used the Oblivion construction set, but I'm going to look and consider my options. I really don't mind monotony, so I'm willing to delete each NPC, human or otherwise, individually, if that is the only option.

 

Thank you.

Link to comment
Share on other sites

Delete them in the CS or in their cells.

Right, I did that, directly after having written this post. My procedure was to simply select open the oblivion.esm, kotn .esp and theshiveringisles esp, and then from the window with the objects in it, select all actors in both the NPC and Creature subclasses. Having done that, saved the .esp. The game crashes at the load screen before the title. Chances

are, I'm missing something simple.

 

Thank you, Oblivion Addicted!

Link to comment
Share on other sites

The game is hardwired to end when/if Martin dies ... could be that deleted is the same as dead to the game engine.

Link to comment
Share on other sites

The game is hardwired to end when/if Martin dies ... could be that deleted is the same as dead to the game engine.

I suppose it could be that, but the game crashes to desktop from the initial load screen, without so much as moving the load bar one iota.

 

I had thought it might be because I deleted the player character, but having undone that and still failing, I'm stumped.

Link to comment
Share on other sites

One of the things that TES4Edit fixes when cleaning mods is deleted vanilla objects (the UDR part of UDR/ITM ... stands for Un-Delete & Restore if I'm not mistaken). The game doesn't like it when it's assets are deleted I guess.

 

What happens if you set Initially Disabled to those NPCs/creatures (I'd start with someone other than Martin myself) instead of deleting?

Link to comment
Share on other sites

One of the things that TES4Edit fixes when cleaning mods is deleted vanilla objects (the UDR part of UDR/ITM ... stands for Un-Delete & Restore if I'm not mistaken). The game doesn't like it when it's assets are deleted I guess.

 

What happens if you set Initially Disabled to those NPCs/creatures (I'd start with someone other than Martin myself) instead of deleting?

Initially disabled, eh? There is something I'll need to look in to... I wonder if there is a batch action I might be able to perform. Either way, if what you suggest works, I'll do 'em one by one if necessary... with the exception of Martin, as you say, at least until the last.

 

Here is to hoping.

Link to comment
Share on other sites

It might also be possible to write some scripts script to dynamically disable all NPCs, even from mods and other spawns. A sort of automated way to do things on-the-fly in-game. But I think it might still have some issues with breaking quests and other game-breaking oddities and all sorts of other unwelcome surprises. Especially if an NPC has an enable parent. If I remember correctly, a reference with an enable parent cannot be disabled (at least not using the console) and requires the enable parent to be disabled or disconnected. I am not exactly sure, though, I need to test it first. But it should be possible to write a script to dynamically disable all NPCs, but it can cause issues and will break things. I can try writing something later today.

 

Also, if I have understood it correctly (which sometimes happens, most of the time not), the things to disable would be the references, not the base objects. The base objects (I think that was what they were called) are the ones in the object window lists, I think, and they are a bit like blueprints. References are actual instances of those objects, placed in the gameworld, sort of physical objects built using those blueprints (like an instance of a base Martin Septim: one Martin Septim constructed using the Martin Septim blueprints and placed in the Cloud Ruler Temple, or elsewhere). Removing the 'blueprints' could break something, if/when other mods need them, one way or the other. The same goes for the references in the gameworld - deleting them could cause issues (crashes) when something needs to somehow access that reference but it is nowhere to be found (deleted by a mod that was loaded earlier?). Maybe. Something like that... ? But disabling the references in the gameworld (so that they still are there, but disabled, and therefore invisible) might definitely be a better option? From what I have noticed, that would seem to be the idea behind disabling things, to make them unnoticeable to the player while still keeping them there when something else needs them? Anyone feel free to correct me, I seem to be making a lot more false assumptions and other mistakes than usual. :blush:

 

Edit: It seems to be possible to write a small script to dynamically disable NPCs. It works, and disabled NPCs, but it is not really smooth in any way and I do not think it would be much better than manually disabling everything. At least not using the functions to get actors, as the actors apparently need to be close enough to get registered? Also some actors in low level AI processing do not seem to get disabled. If someone finds it useful, the function is below (more of a test, nothing final, and definitely nothing anyone should use, but an idea):

 

 

scriptname NPCDisablerFunctionScript

ref TempRef
array_var Actor
array_var ActorList
array_var TempArr
array_var RefChain

begin _Function {}

    foreach ActorList <- ( ar_Map "high"::( GetHighActors ), "middle-high"::( GetMiddleHighActors ) ) ; , "low"::( GetLowActors ) ) <-- had some issues
        foreach Actor <- ActorList["value"]
            let TempRef := Actor["value"]
            if eval ( TempRef.GetDisabled )
                continue
            endif
            PrintToConsole "NPCD: level (" + $( ActorList["key"] ) + "), actor (%n, %i)"  TempRef TempRef
            let RefChain := ar_List TempRef
            let TempRef := TempRef.GetParentRef
            while ( TempRef )
                ar_Insert RefChain 0 TempRef
                let TempRef := TempRef.GetParentRef
            loop
            foreach TempArr <- RefChain
                let TempRef := TempArr["value"]
                if ( TempRef.IsActor )
                    TempRef.SetActorsAI 0
                endif
                TempRef.Disable
                PrintToConsole "NPCD: disabled %i" TempRef
            loop
        loop
    loop

    let RefChain := ar_Null
    let ActorList := ar_Null

end

 

 

Edited by Contrathetix
Link to comment
Share on other sites

Contrathetix,

 

Thank you very much for your time spent writing that response, and the time writing the script. I'm greatful that you took time to do all of that, but unfortunately, my compute required a complete reset, and not having backed up most of my files of lesser import, oblivion, and all my mod files were deleted. When I get the time, I'll have to reinstall, and attempt as you suggest, which really does make a lot of sense. When I would delete the base object, a window appeared asking if I wanted to delete the instances of that object, so I would imagine that you are right, and I need to delete the instances of the objects, not the blueprints. I totally should have thought of that!

 

Thank you again, Contrathetix, and Striker879, Oblivion Addictted. Very kind of you all!

Edited by Frippian
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...