Link to the ReadMe for v3.0 and below

Table of Contents
  1. Description
  2. Installation and Compatibility
  3. First Timer's Guide to DLL
  4. Automatic Patrol System Overview
  5. FAQ
  6. Reporting Bugs
  7. Troubleshooting
  8. Future Plans / ToDo
  9. Credits
  10. Legality
  11. Change Log


DLL aims to redefine how we customize leveled lists.

Dynamic Leveled Lists is a set of algorithms that rework the Leveled Lists in your mods to make your dungeon raiding experience more unpredictable and exciting.

DLL's algorithms eliminate any need for hand tweaking by modders, and offers players the ability to choose for themselves -exactly- how they want things to spawn for them in game.

What Does DLL do?

Your mods and overhauls decide:
  1. Where spawnpoints are placed.
  2. What creatures -can- spawn there. (the contents of the LList)

DLL comes in afterwards and decides:
  1. -Which- and -when- of those monsters will spawn. Will it be:

    Each of these options were already on the LList from the beginning.
    But if your PC was level 1, you would NEVER see Paris, or an epic lich, or anything above... level 1.
    (see this article)

  2. How many creatures will spawn?

    • A single goblin
    • Or a goblin barbeque party

  3. Which spawns should go on DLL's Automatic Patrol system.
  4. Which actors should be Blocked, or should be considered a Boss, and many other special criteria that you can customize.

What Does this Mean for You?

  • Take advantage of every creature and villain your game has to offer:
    • No enemy is left unintegrated
  • Customize your spawning system however you desire:
    • Want harder creatures to spawn earlier?
    • Want easier spawns?
    • Want the world to remain the same no matter your level?
    • Want more creatures to spawn at once?

    Whatever you choose, DLL will make sure it happens no matter what mods you have.

  • Automatic Patrols: Sets the world on automatically generated patrol routes, giving much more life to the world.
  • The EPIC button: Gives each encounter a small percentage chance to spawn creatures way above your level.
  • Never another "FCOM - Slightly More Spawns" patch. Just tweak your DLL settings to give you exactly the spawning results what you want.
  • Never another "MMM - No Slimes" patch. Get rid of any creature you dislike by just typing keywords into DLL's exception system.
  • A better increased count system. Spawn several unique creatures instead of multiples of the same, as is found in many increased spawns ESP patches.

  • Simplifies most Leveled Lists to only need one of each creature
    DLL handles the probabilities.
  • Never hand-tweak a Leveled List again.
  • Leave the spawning setup to the users. Or not! Add your Leveled Lists to an exception list to prevent DLL from tampering with your desired setup.

How does DLL work? Why is it capable of working with any mod you throw at it?
  1. DLL comes with a Java application that automatically combs through your mods and locates all the Leveled Lists.
  2. The application then creates a customized patch so that all of your LLists will spawn a DLL dummy creature.
  3. When these dummy creatures spawn, the DLL scripts run and the dummy places the correct creatures before disabling themselves. There is no save game bloat from this, for those of you wondering. 8)

The Goals of DLL
  1. To be as compatible as possible.
    If you sense any incompatibility with any mod, please let me know!
  2. To give the users as much customization as possible.
    Any ideas for further customization are welcome!
  3. To be completely safe and removable.
DLL should be painless, simple, powerful, and compatible with everything.

Go to table of contents



Installation Process
  1. Drag and Drop into your data folder:
    • DynamicLeveledLists.jar (a Java executable file)
    • The "DynamicLeveledLists" folder

    If you are using Wrye Bash to install:

    • Make sure to activate the 'Has Extra Directories' option, or the necessary files won't be extracted.
    • In general, files seem to not get installed right when using this method. I'd recommend just doing good 'ol Drag and Drop, but it's up to you.

  2. Update your Java
    Just to make sure everything runs okay. (Link)
  3. Use the .bat file to run the DLL Application to process your current active mods and create the customized patch. This application will also be used to set your preferred settings. Using the .bat file gives DLL more memory to work with, and will make import/export faster on large mod lists.
  4. Put the generated DynamicLeveledLists.esp at the END of your load order.

    It should even be after your Bashed Patch.

DLL should be compatible with almost anything. It was designed to be able to take in anything and work with it. This means any set of mods, with any patches, with any load order.

DLL could have an incompatibility with mods that makes use of OBSE Leveled List changing functions. I don't know of any mods that do so, however.

DLL also can have some technical conflicts with mods that do immediate reference-walk checks when changing cells (Ashes to Ashes is an example).
Specifics: The conflict is due to the fact that the reference-walk -may- execute before DLL populates the world, resulting in an incomplete ref-walk. The other issue is that Oblivion doesn't handle references on things placed in the world less than about .05 seconds ago too well, and sometimes results in faulty pointers when scripts are run on DLL-placed actors -immediately- after they have spawned.

To combat the above incompatibility, DLL has a growing "Script Attachment" section that will fix the issue for discovered mods who's authors consent to allowing DLL to include them.

While DLL doesn't have any other "incompatibilities", it will override and replace most patches that change when creatures spawn. This means that your "Slightly Less Spawns" patch won't cause any problems, in fact, it won't have any effect on your game at all. The only thing that will matter will be your DLL settings.

Go to table of contents

First Timer's Guide to DLL

At first glace of the settings, DLL may seem overwhelming with all its settings and tweaks. DON'T FEAR! The aim of this guide is to make things as easy as possible on you. In the end, you will hopefully have built a good understanding of what DLL can do, and how to achieve it.

First off, what are some of the things DLL can do for us?
  • Manage how much higher/lower in level an can be actor to spawn.
  • Change how often actors bigger/smaller than us spawn.
  • Make actors spawn in groups on occasion.
  • Make epically hard actors spawn once in a blue moon.
  • Prevent anything with a name containing a keyword from spawning.
  • Prevent an entire LList from spawning.
  • Prevent boss type actors from spawning frequently.
  • Willfully ignore DLL moderation of any faction, LList, or actor.

DLL can do all things like this for any mod setup. Awesome! How do we do it?

First, let's pretend your PC is level 10.

To keep things simple, let's focus on one thing at a time. Actors smaller than us, let's call them "Low Tier" actors; How do we want them to spawn?

Low Tier Spawn Settings
The main idea is this: we of course want actors around our level to spawn most often.
But as actors get smaller and smaller, we want them to spawn less and less.

At what point should they start spawning less?

Okay, we've decided we want any actor more than two levels lower than us to start spawning less often.
Just set [Low Tier Reduction Line] to 2.

Visually, we can see this on the graph by circle #3. This setting moves that corner left and right.

Now, we also have to choose at what point we want actors to stop spawning altogether.
Lets say we want actors that are more than 6 levels below us to not spawn at all.
Set [Low Tier Cut Line] to 6.

Visually, we can see this on the graph by circle #2. This setting moves that corner left and right.

Okay, let's take a step back and look at the overall picture here.
your PC level =
[Low Tier Reduction Line] =
[Low Tier Cut Line] =

With these settings,
  • Low Tier is any actor from levels 4-7.
  • Actors level 7 will spawn -almost- as often as Normal Tier.
  • Actors level 4 will barely spawn at all, as they're almost past the cutoff line.
  • Actors levels 1-3 won't spawn at all, since they're past the cut line.

Killer! Now, what about actors higher than us?

On The Chart:

High Tier Spawn Settings
This is the mirror opposite of Low Tier. As actors get higher and higher, we want them to spawn less often.

As you would expect, we have a similar pair of settings:
[High Tier Reduction Line]
[High Tier Cut Line]

Let's say we want actors more than 1 level above us to start spawning less, and actors more than 6 levels above us to stop spawning altogether.

You know what to do, right?
Set [High Tier Reduction Line] to 1, and
Set [High Tier Cut Line] to 6.

With these settings,
  • High Tier is any actor from levels 12-16.
  • Actors level 12 will spawn -almost- as often as Normal Tier.
  • Actors level 16 will barely spawn at all, as they're almost past the cutoff line.
  • Actors levels 17+ won't spawn at all, since they're past the cut line.
Hmm, this is all fine and dandy, but wouldn't it be cool to have a -smmmaaall- tiny chance of having an unbeatable behemoth chase you around the dungeon? Yes, yes it would be.

On The Chart:

Epic Tier Spawn Settings
Epic Tier is any actor TOO BIG to be in High Tier.
In nerd terms: The start of Epic Tier = PC Level + [High Tier Cut Line]

Epic Tier has a few more settings than the other tiers, and is slightly different.

First, there is "the EPIC button". This has to be on in order for Epic Tier to be considered at all.
set [Enable Epic Tier Spawns] to on.

Now let's say we want an EPIC actor to spawn 2% of the time.
Just set [Epic Tier Percent Chance] to 2.

Visually, we can see this on the graph by circle #8. This setting moves that corner up and down.

So, now we need to decide what will make the bulk of the Epic Tier spawns, let's say the first eight levels past High Tier.
set [Epic Tier Soft Cut Line] to 8.

Visually, we can see this on the graph by circle #10. This setting moves that corner left and right.

Actors past the [Epic Tier Soft Cut Line] line, but within the [Epic Tier Cut Line] will only have one single entry in the LList, and will have whatever miniscule spawning probability that gives them.
Let's set [Epic Tier Cut Line] to 15.

Visually, we can see this on the graph by circle #7. This setting moves that corner left and right.

Actors past the [Epic Tier Cut Line] are just TOO scary and big for you to handle, and won't spawn ever... but of course, you can set the cut line to 0 if you want there to be no limit at all. 8)

With these settings,
  • Epic Tier is any actor from levels 17-32.
    How did we get this number?
    Our PC is level 10 + [DLLHighTierCutLine] of 6 + 1 to get past High Tier and into Epic Tier.
  • Since we set [Epic Tier Percent Chance] to 2, DLL guarantees that an epic actor will spawn 2% of the time. (if there is one on the list)
  • Actors 17-24 will make up most of the Epic Tier spawns.
  • Actors 25-31 will only have one entry, and will spawn very rarely.
  • Actors 32+ are past the [Epic Tier Cut Line] and won't spawn at all.
This may have all gotten confusing. I think it's easier to visualize things using the chart on the settings page of the application. Try messing around with it and see if it helps you.

Awesome! You've now just customized your whole Oblivion world to spawn when you want it to! 8)

Now, wouldn't it be cool to have groups of actors spawn every so often?

On The Chart:

Spawn Count Settings

To begin, enable the [Manage Spawn Count] check box.

Now, picture yourself turning a corner and running headlong into a goblin birthday party, oh snap! They're pissed. How many actors should be at that party?
Let's say, worst case scenario, around 10 goblins should be there.

Set [Max to Spawn] to around 4.

Why 4 and not 10?
Because the max determines how many can spawn at -one- spawnpoint. Lots of locations have 2-3 spawnpoints.

3 Spawnpoints * [Max to Spawn] of 10 => 30 goblins?! Too much.

A good rule of thumb is to divide your true "max" by 2-3, and put that into [Max to Spawn].

The next question on the list is:
How often do you want at least more than one actor to spawn?

Let's say you want 25% of the time for there to be more than one actor.
Set [Base Percent] to 25.

Visually, we can see this on the graph by circle #8.

Okay, now.. how rare should the chances of the max number of actors spawning be... compared to the chances that just two spawn?

Lets say you want your mob of 4 actors to spawn about 20% as often as a mob of just two.
Set [Base Percent] to 20.

Visually, we can see this on the graph by circle #10.

With these settings,
  • The max amount of actors that will spawn at one spawnpoint is 4.
  • More than one actor will spawn 25% of the time.
  • The 4 actors will spawn 20% as often as 2 actors, or 5% overall (20% of 25%).
Yay! Now there should be various get-togethers and meetings all over Tamriel!

Now, let's say you're an arachnophobe and just -HATE- spiders. Or perhaps you like how a certain mod's setup as is, and don't want DLL to mess with it. How do we deal with that?

On The Chart:

The Exception System

So, let's say we hate spiders, or slimes, or balrogs, or all of the above.
Simply open up the Exceptions Manager in the application, open the "Block" panel, and type in three keywords:

You're good to go! 8)

Now DLL will stop any actor from spawning that has any of those keywords in their name.

Now, lets say you don't want ALL the slimes blocked... just the purple ones. You could block that specific name by keyword "Purple Slime". However, that's a bit unreliable, as it has to match exactly (case in-sensitive).

A better way to block a specific actor is to switch over to "By Entry" mode and find the specific FormID (if you know what that is), and add it that way instead.

DLL can also omit mods from being managed.
Lets say you have "Scary Halloween Dungeon the II", and for some -craAAZzy- reason you don't want DLL to mess with it.
Just open the Exception Manager's "Omit a Mod" pane, select the mod, and add it to the list.

You can also ignore specific actors/LLists so that DLL doesn't moderate them, mark actors as "Boss" actors, and lots of other cool stuff. You can mess around with the Exception Manager yourself to learn more. It has lots of help information.


Hopefully this guide has given you a pretty tangible idea of what DLL is capable of and how to do it. If there's anything you feel needs more explaining, or anything you think DLL should do that it doesn't, please contact me! 8)

- Leviathan1753

Go to table of contents

Automatic Patrol System Overview

The automatic patrol system allows DLL to put actors it spawns on a patrol route around the dungeon/wilderness.

The patrol script can be very lightweight with the correct settings (won't bog down your CPU), and will only affect "unimportant" actors (ones without a script attached already, or a more specialized AI package)

Internal System Design
When DLL spawns a actor, it will attach a patrol script to the actor if it doesn't have an existing script, and if the actor only has basic AI packages (wander, sleep, etc).

The patrol script then picks 2-5 path grid nodes in the area as patrol goal points (including its current position).

The actor is assigned one of 200ish pre-created "Patrol Goal" packages (a goal creature, and an AI package that is assigned to travel to the paired goal creature). The patrol goal is placed at the actor's first patrol point, and once it is reached, the goal moves to the next point to continue the patrol route.

The system for determining whether a actor has reached its goal is lightweight -> it does NOT check for distance every frame on every actor on patrol. Instead, a singleton patrol quest iterates through the patrol goal packages and checks distance on one package once every .1 seconds. Each patrol goal is guaranteed to be checked at least once every 15-20ish seconds. This makes the system extremely CPU light, and allows for a little variation (actors may sit at their patrol goal for a bit before moving on).

One issue with this system:

Since there is a predefined amount of patrol goal packages, once they have been exhausted, they will be reused. It is assumed that the "owner" of a reused package has been purged from the memory. If the PC enters an area where the patrol goals have been removed to be reused elsewhere, an OnLoad block will run on the patrolling actors that will move the patrol goal back into the cell.

If all 200ish predefined packages are used before the first few are purged from memory, then there is a chance the OnLoad block will not run, and the goal will not be moved back to the correct cell. Thus, I recommend not setting your Oblivion game to keep an excessive amount of cells saved in memory. This shouldn't be a huge issue, as I believe 200 packages is enough to guarantee safe recycling.

If you have a setup where this isn't enough predefined packages for you, please inform me, and I'll look into adding more.

Go to table of contents

Frequently Asked Questions

Will DLL mess up my FCOM / Nehrim / (other) overhaul?


DLL does one job: enhancing what is already there.
Your overhaul is the ingredients, and DLL is the chef.

Your overhaul does hard work in providing a gigantic and diverse setup. DLL is applied as an enhancer. It -uses- the vast diversity supplied by the overhauls to do even more amazing things.

DLL doesn't change what your overhaul has, it takes what is supplied by the overhaul and simply adjusts it to be more interesting.

DLL thrives on having overhauls, and without them, would be extremely boring.

I already have a mod that makes harder monsters spawn earlier, why do I need DLL?

Okay, so you have Frans, and you think it does the job.

Mods like Frans are usually not using the leveled lists to their full potential,
and are static and hardcoded so they cannot be customized.

Consider this:
  • You're not seeing everything that these mods AREN'T doing. Lots of actors/situations are left out simply because of the difficulty in hand-tweaking things in that fashion.
  • They won't spawn actors from other mods ahead of time, like they do their own.
  • When they spawn multiple actors, they're a mob of the same duplicate actor. DLL will spawn multiple -different- actors.
  • They mix things in "simply", while DLL can make very complex probability scenarios.
  • Their setups are hardcoded, while DLL can be changed to follow any desired spawning preferences.

Now, understand that these mods are -AMAZING- and do a lot of work that is -NECESSARY- for DLL to flourish. See the above FAQ.

So do not remove them if you intend to use DLL.

How does DLL decide what to spawn? Will it break immersion?

DLL uses what's already on a LLists, and never adds anything that wasn't originally there.

It never decides on its own that "Oh, and this LList will also contain a Spriggan", and ruin any immersion/setup. It uses what's handed to it, and whips up something interesting.

What is "Force Levels" and why would I want it on?

Force Levels makes DLL use an actors "True" in-game level in its calculations.
This may deviate from certain modder-intended scenarios where they label actors with levels different than their true levels.

This is a good thing in some cases, and subjective in others.

Good case:
In the example of un-leveled mod setups (TIE/WAC/WarCry) this setting is -absolutely- necessary in order for DLL's settings to have any effect on them.

This is because these setups have all of their LList entries marked as level 1, and without Force Levels on, DLL is clueless what to do (there is no High/Low/Epic tier to choose from, everything is the same level).

Subjective case:
Most mod setups fall under this camp (FCOM/OOO/MMM). Force Levels is not necessary, but it does make your DLL a bit more accurate to the settings you choose. Turning Force Levels off in these cases might skew your settings a bit if certain LLists have an entry marked strangely.

In general:
It's a good idea to keep Force Levels on unless you know your mod setup very well, and understand exactly what Force Levels will do to it.

You don't want to turn Force Levels off and accidentally end up in the first (unleveled) case, as DLL will have no effect on your setup.

Why do I want to keep "Revive Dead LLists" on?

Revive Dead LLists is a safety net.

If there's ever a case where a spawnpoint will not spawn anything due to your DLL spawn settings, Revive Dead LLists saves the day and makes sure something spawns.

If you turn this off, you could very well run into an empty dungeon, depending on the scenario.

Only turn this off if you know your mod setup very well, and it has spawnpoints that specifically aren't supposed to spawn anything at certain levels.

What's with those long version numbers?

Good news! DLL v4. is out!
Well, each point symbolizes a different thing in my mind

v4 - represents what version the over arching structure of DLL is based upon

(3.0 relied completely on in-game scripts, and didn't make a patch like 4.0; 2.0 didn't use dummies at all, and relied solely on OBSE LList functions)

v4.(X) - represents a large feature introduction

v4.(X).(X) - represents a small feature introduction

v4.(X).(X).(X) - represents a bugfix

The more you know!

Go to table of contents

Reporting Bugs

I need and love your bug reports.
DLL is a complex program that is hard to fully test in all situations. It has to be extremely smart, pliable, and adapt to any and every mod in your load order, no matter what mistakes or abnormalities other modders do. This is a hard thing to accomplish without testing every mod out there.

It is my goal to make DLL the best it can be, and to do so I need your feedback!
If you have an issue, please contact me so we can get it straightened out and make DLL an even more robust program.


If your issue has to do with problems in-game,
  1. Turn on [DLLdelaySpawns] AND [DLLdebug]/[DLLPatrolDebug] in your .ini
  2. Then grab Conscribe, and trigger the issue again.
  3. Send me an email with the conscribe log containing the issue debug data, which should show up in Data/Conscribe Logs/Static Log.txt

Don't try to send me the log over message/forums, it's far too big:

If your issue has to do with the DLL application,
Please include your OS specifications, and the ENTIRE debug folder
/ Data / DynamicLeveledListsFiles / DLLProgramDebugOutput .

This can get big, so just zip it up and email it to me:

Go to table of contents


There's no esp file! Why is that?

This is because DLL 4.0 creates a customized patch for each user, and so it doesn't come with an initial .esp file.

Instead, you need to run the Java application (DynamicLeveledLists.jar), which will evaluate and process your mod list and create a customized patch just for you.

The DLL Application isn't running properly.

This issue can be from a few sources:

  • Your Java is out of date.

    Try updating your Java. Make sure you install the correct 32/64 bit version.

  • You have the wrong version (32/64 bit) of Java installed. Users who install the wrong version typically don't export right, and/or the application never exits during the export.

    Confirm you have the correct 32-bit or 64-bit version of Java installed.

  • The registries in your Windows system don't have Java as the default "runtime environment", but rather a strange web version of Java.

    You can easily tell this is the case if when you open the DLL application, a window that says "Java" pops up, and it looks like it's loading up the application. When DLL is working properly, you should NOT see a Java loading window, but rather, the application should open immediately to the DLL user interface.

    1. You need "Admin" rights to manually edit the Win7 registry.
    2. Run regedit program via the Windows "Start" menu, type regedit in the run window there.
    3. In the left-hand pane, go down to this subdirectory of the regedit file: Computer ==> HKEY_CLASSES_ROOT ==> Applications ==> javaw.exe ==> shell ==> open ==> command
    4. In the right-hand pane, right-click on "Name" and choose "change" or "edit". A little window pops open.
    5. On the lower line for the Value, delete anything AFTER the ...bin\ and put this instead:

      javaw.exe" -jar "%1" %*

      You can copy-paste this line. Make sure it is written exactly as above, with the quotes and everything. Afterwards the new value should read something like this:

      "C:\Program Files(x86)\Java\jre6\bin\javaw.exe" -jar "%1" %*

      This assumes that you have the Java JRE installed in C:\Program Files(x86)\...

    Thanks to Tommy_H for the fix!

    Original Link (in german):

  • You have Oblivion installed in your Program Files folder, and the application isn't allowed access to create the patch.

    "Select the folder (program files/bethesda/oblivion), right-click, and select properties. You go to security, and click on the edit permissions button. Make sure to allow ANYONE, and I mean ANYONE, to do everything with the folder. (Obviously, you'll need an admin-account to do so). The system will set the properties of the entire folder accordingly." - Oldbook

Otherwise, please submit a report to me, including the debug log located in your:
/ Data / DynamicLeveledListsFiles / DLLProgramDebugOutput / folder.

The DLL Application is running slowly while importing or creating a patch for a large mod setup.

This is due to the fact that the default memory size given to DLL to use is too small for many large mod setups. This causes massive slowdowns when the program hits its memory limit.

Use the "DynamicLeveledListsStarter.bat" to start DLL from now on.

The BAT file isn't working.

Some versions of the Java installer don't modify the correct registries for the default bat file to work properly. A more direct/customized approach is needed.

Open your BAT file.

"start javaw -jar DynamicLeveledLists.jar -Xms500m -Xmx2g"

To: "start C:\"Program Files (x86)"\Java\jre6\bin\javaw.exe -jar DynamicLeveledLists.jar -Xms500m -Xmx2g

Where the path is directed to wherever your javaw.exe is located. This is usually in the path setup shown above.

Other notes:
- Any directories with spaces need to be enclosed in speech marks / quotation marks, as above. Putting the full path in speech marks / quotation marks does not work.

- Batch file needs to be stored in and run from the same directory as DynamicLeveledLists.jar.

Your .esp was created, but Wrye Bash or Tes4edit are having trouble with the .esp, or are showing the .esp has errors!

This is probably due to a "bad mod" in your load order. Someone probably did something abnormal and DLL's app wasn't ready to deal with it.

DLL's app actually picks through the binary of all your files, and interprets/recognizes patterns as different records (Leveled Lists, Actors, NPCs). If someone does something really abnormal, DLL can have issues reading the records in.

Send me a bug report with your App Debug folder.

I'll figure out which mod caused the error, figure out what it did wrong/differently, and adjust DLL to be more robust and handle any similar abnormalities in the future.
Yay! You improved DLL!

You're running into dungeons with absolutely nothing in them.

This can happen for "natural" reasons, as well as unnatural ones.

Consider this case:
  • Force Levels and Revive Dead LLists are off.
  • You've entered an area with unleveled LLists (ones with all their entries marked as level 1).
  • You're settings/PC-level put level 1 actors below the scope of Low Tier.
In this scenario, Force Entries is off, so everything will be evaluated at their marked level of 1. Unfortunately, level 1 is outside of Low Tier, and has a spawn chance of 0%. Revive LLists is off, and so the LList remains dead and nothing spawns. Oh no, you have an empty dungeon.

FIX: Turn Force Levels or Revive Dead LLists on.


A few people have reported this happening to them randomly for unknown reasons, but there is an easy fix that seems to work.

  1. Deactivate DLL
  2. Make a clean save
  3. Manually delete your DynamicLeveledLists.esp
  4. Run the DLL app again
  5. Activate the new generated .esp
Thanks to Old Book for the fix!

You're experiencing stuttering just after installing DLL, or starting a new game.

Every time a LList is spawned for the first time, it is processed a bit more than usual, perhaps causing a wee bit of stutter for the first bit of playing.

Just keep playing. It'll go away.

However, if you've played for quite some time, and the stuttering is constant and doesn't seem to be diminishing, please contact me with a log.

You think DLL is causing cell transition CTDs.

I believe this isn't due completely to DLL, but rather Oblivion being an unreliable, if not majestic, beast. However, I have come up with a system to hopefully lessen DLL's contribution to a cell transition CTD:

Turn on the DLLdelaySpawning setting.

This will delay DLL's spawns by a few seconds, so they don't happen immediately upon cell transition. Hopefully this gives Oblivion some "breathing room" to sort out whatever shinnanigans it does during cell transitions.

You've increased the Max Count settings a good amount, and you're experiencing a lot of crashing / stuttering / FPS loss.

DLL gives you the ability to set any count settings you want, however, it comes with a price. If you increase the amount of actors that are spawning at every LList, you're computer might not handle the results too well.

FIX: Try lowering your count settings to hopefully prevent overloading your computer with actors.

You saw two unique type actors at once! Whether it be two "Tom the Thief" NPCs or two "Epic Demon from Hell" actors, you don't think there should've been two of them there.

Congrats! You've found a actor/NPC that hasn't been added to the Boss Exceptions list yet.

We need your help to improve it! Please contact Leviathan1753 with a message about which actor it was so that it can be added to the list for others.

Tip: You can use Tes4edit to locate/find the offending FormID, or you can use Wrye Bash's "details" option to list all the formIDs to help locate a whole group. Just right click the mod and click "details", and scroll down to the NPC_ or CREA tag. If neither of those options work for you, just contact Leviathan1753 and let him know they exist, at least. 8)

Your character is a high level and there doesn't seem to be any epic spawns, and
all the spawns seem to be equal/lower than you.

Yes, once you get to a high level, things get a bit more "boring".

All the non-PC offset actors get left behind in low tier,
and all you have left is PC offset actors.

PC offset actors are what they are: always around your PC level. So, at a higher level with only PC offset actors to choose from, DLL will stop spawning as "epically" since there aren't any actors above your level to choose from.

This might not be the case if you install Frans, WarCry, or any other mod that adds lots of new actors. Those mods will hopefully give some big baddies for DLL to play with. 8)

HOPEFULLY this will change once OBSE comes out with a way to delete cloneforms. Once they do that, I can force PC offset actors to spawn higher, and create epic spawns artificially

You keep seeing groups of actors larger than what you set as the count max.

This probably is happening because there are two or more spawn points near each other.
2 Spawn Points * [Max To Spawn] each => Twice as many actors as you wanted!!

Unfortunately, DLL just moderates how many will spawn at ONE spawn point; there's no way for DLL to know about (or fix) the fact that an area may have more than one spawn point.

FIX: Just lower [Max to Spawn] a bit.

You're seeing actors that are extremely small level, even though you set the Low Tier Cutoff higher than their level.

You're probably seeing the effects of the [Revive Dead LLists] setting.

If a LList only has non-PCoffset actors and they're all too low to spawn, then the LList will have nothing in range to spawn for you.

Instead of spawning nothing, DLL "revives" the LList to spawn -something-, even if it's a pansy weakling rat that is 30 levels lower than you.

Fix: You have to decide whether you want DLL to spawn that super-small actor, or nothing, when a LList is "dead" and empty. Set [Revive Dead LLists] to 1 if you want it to keep spawning pansy actors, or 0 if you'd rather it just spawn nothing.

Go to table of contents

Future Plans / ToDo
  • Add ability to make Increased Spawns only spawn "related" monsters at the same spawnpoint, where two monsters would be related if they were on the same LList and had matching keywords in their name (eg. "Frost Imp" and "Mystical Imp").
  • Add a feature to make spawns harder the farther the PC was away from "Civilization". This could possibly be done by measuring the distance to the closest road/town. Also, the option to make spawns harder the farther you are from your inital starting position when you began the game, so the difficulty radiates in difficulty the farther you explore.
  • Add an option to erase actor save-data once their cell has been reset. (Oblivion doesn't do this until you actually -visit- that cell, making your savegame bigger than necessary)
  • Allow the user to select static levels to have certain spawn percentages, rather than always being based off the difference to the PClevel, for those that want a static world without having -every- level spawn equally.
  • Add an option to increase/decrease spawn rate of a specific Actor, or based on whether the PC is outside/inside, and/or based on whether the actor is in the "Prey" faction or not (to increase/decrease passive wildlife in the world, for ex).
  • Add patrol routes to friendlies.
  • Put an option to also process Items/Loot. Once the item system is in place:
    • An option to "block" loot from certain actors (bandits with daedric armor, etc).
    • An option to implement Luck into loot drops, making lucky people more... Lucky! (It'll finally be useful!)
    • Make sure archer actors drop more than 2 arrows.
  • Add a feature that won't spawn rival factions at the same spawnpoint.
  • Option to attach a script to halt combat AI until the PC got near, allowing for any fights to happen with the PC present.
  • An option to force actors that are lower than you spawn with higher counts (when a weak actors spawn, they spawn in a mob)
  • Might implement an option to make pc-offset actor's levels vary a bit, so the same actor doesn't ALWAYS spawn the same exact level.
  • Create a FCOM/WAC/OWC-ND actor/item merge patch that uses DLL to "normalize" the LLists
  • Have the DLL Application "mine for lost actors". If DLL sensed a actor had been on a LList, but was overruled by a winning mod in the load order, it would add that lost actor to the final LList, and it would show up in-game.

    This would be good for "shoving together" mods that conflict, and automatically make them compatible -> both mod's actors would be found in the final LList.

Go to table of contents


  • Thanks to all the people that helped on the forums! It's amazing to have a community that gives help freely.
  • The OBSE team that makes real Oblivion modding possible
  • Tes4edit - Almost taken for granted sometimes. I probably wouldn't ever gotten into modding Oblivion if it wasn't for this program
  • All the users who've spent their time helping me bugsquash DLL. Without your patience and cooperation, DLL wouldn't be nearly as strong as it is now.
    • Thanks Omeletted, Ndervish, and Illius!
  • JFreeChart for being free and amazing
  • Waruddar for helping me figure out NPC_ decompression
  • Hickory for being a forum watchdog
  • All the modders who make great content for DLL to twist to its will, thanks! 8D
    (Here goes my FCOM/WAC/OWC-ND combination project! Woot!)

Go to table of contents

Go to table of contents

Change Log

v4.2.3.2 (12/14/11)
  • Added the dummy recognition script change from last patch that was accidentally reverted before release. My bad!
  • Fixed a concurrency issue with the latest patcher changes.
v4.2.3.1 (12/10/11)
  • The Java runtime environment that DLL uses has a default maximum memory usage that is too low for large modlists. This results in extreme slowdowns of the program when it runs out of memory, causing patch times that are up to 2 minutes longer than they should be. If you are experiencing these issues, look here.
  • Adjusted Omit a Mod exception to better do its job.
  • Adjusted the dummy entry recognition script, as it was still misbehaving. I made the function more CPU heavy, but Oblivion should *fingers crossed* respect it 100% of the time now.
  • Fixed a bug in the patrol route creation system that would put Oblivion in an infinite loop (freeze) if the location was too small to support a proper patrol route.
  • Adjusted the master list compliation to exclude mods that only have actors and aren't referenced by any LList DLL monitors.
v4.2.3 (11/29/11)
  • All buttons that will change your settings now show and highlight the changes when the user hovers over them.
  • A "Presets" area has been added to the Manage Actors panel. Current presets are: "Unleveled", "Vanilla" (for comparison), "Hard". Feel free to offer up any presets you guys have! 8)
  • A "Script Attachment" section has replaced the Automatic Patrols section. This section will let users pick and choose between various script attachment mods (from consenting authors) to apply to their setup.

    The main reason for this addition is that many script attaching mods will fail to execute when DLL has just recently (about < .05 seconds) placed the actors. Mods in this section will instead by applied directly by the DLL patch, to ensure their presence.
  • Adjusted the patch-required sensor, as it was failing in certain situations.
  • Fixed the new decompression protocol from 4.2.2.
  • The adjusted the chance-none probability protocol. Before, if an entry with chance-none found itself as the only entry of it's level, then its chance-none would have no effect. This has been fixed.
  • Adjusted the order protocol a bit. If a user had delay spawns on, and DLL was in the middle of averaging LLists, then the spawnpoint would be delayed until averaging was done. Instead, the spawnpoint will spawn immediately, and then averaging will continue.
  • The Revive LLists function had a boolean conditional inverted was not working as intended. Thanks WalkerInShadows!
v4.2.2.1 (11/25/11)
  • Fixed the LList Modeler so it opens properly.
v4.2.2 (11/24/11)
  • Fixed the interior/town black-screen freeze bug some users were reporting. This was caused by a numerical constant still-unexplainedly being misread only in towns, which was causing dummies to appear on their own spawning lists, spawning again and again leaving the game frozen. The failing function has been rewritten, so this bug should cease.
  • Fixed the PC-offset patching. Some "high level" creatures weren't getting proper mins if they were part of certain nested LList structures, where the final LList had all the entries at level 1. (ex. Greater Minotaur Lords from MMM 044DB1).
  • Redid the chance-none handling system, as it still had issues in some cases. When a chance-none entry didn't have any other entries of the same level on the LList, the entry's chance-none would essentially be disregarded.
  • The application now sense when/if a patch needs to be created, allowing for quicker settings tweaks without having to do all the processing every time. It goes by the following rules:

    1. If a user has added/removed any mods, then DLL will require at least an import.
    2. After importing, if a mod was added that contains necessary data that wasn't present in the last patch creation, a patch will be made.
    3. After importing, if a mod that contained necessary data was removed since the last patch, a new patch will be created.
    4. If a user changes any exceptions, a patch will be required.
    5. If a new DLL version has been installed, a patch will be required.
    If none of these rules apply, the application will now exit immediately upon user request.
  • A new "Force Patch Creation" checkbox is present if you want DLL to create a new patch, even if the program doesn't think you need a new one. (This checkbox is removed if DLL deems a patch necessary).
  • Adjusted the progress bar to be more accurate.
  • Corrected the DLL patch master list code.
  • Modified the NPC decompression protocol to go about 5x quicker, resulting in much quicker importing.
  • Changed the numerical settings to "spinners" that have min/max settings.
  • A "Tools and Information" pane has been added to support any random utilities added in the future.
  • The LList Modeler GUI has been revamped to use a Tree structure.
  • A "Conscribe Viewer" has been added to the Tools section that I made to narrow down debug logs to be only useful information (Not too helpful to many users, I suppose). This will be expanded/improved as need arises.
  • Added "OWC - Seaworld.esp" to the default Omit Mod exceptions list.
  • Thoroughly edited the ReadMe to remove information relevant to older DLL versions.
v4.2.1.2 (10/21/11)
  • Added a "Confirm Dummy Spawn" setting (DEFAULT: Off). This will toggle the in-game script that does a ref-walk every time you change a cell that double checks all dummies in the area have spawned. This was on all the time before, but I deemed it should be an optional feature.
  • The "Delay Spawns" setting has been lowered to delay only .5 to 1 seconds instead of 2-4.
  • The Pie Chart was a bit off on the Manage Counts page. I tweaked both it, and the in-game count probability roller. They should match perfectly now.
  • Exceptions weren't outputing properly with the new exceptions manager. All GUI added exceptions should export to patch as intended now.
  • The LList Modeler would only display one of two items if both items had the same level and name, but different FormIDs. It now displays both properly.
  • The application now marks each LList that contains only Always Spawn entries as having an Always Spawn exception itself before exporting to the patch.
  • Stopped the "Hide Unused" checkbox from being changed when Default/Saved settings buttons are clicked.
  • The DLL application now excludes any circular LLists from being managed, and treats them as Ignored anytime they show up in a managed LList. Circular LLists will still spawn, they just won't have DLL's probabilities. Rather than add recovery code to everything, I decided to just cut the naughty ones out.
  • Added more fish LLists to the default Ignore list.
  • Tweaked the "Add Selection" button's execution code.
v4.2.1 (10/19/11)
  • Replaced the excel helper file that used to be included in the zip with built in GUI charts next to the settings areas. This includes a pie chart for the Manage Counts section, and an Area Chart for the Manage Actors section.
  • Added exception management to the GUI. User will now add/remove exceptions via the GUI rather than editing text files. The manager will be directly linked to the database gathered from the user's mods, so it won't be possible to mistype a FormID.
  • Application now imports FACT records to support the above feature.
  • Widened the central setting area to fit the exception manager.
  • Fixed a bug that could occur if the user didn't take advantage of the dummy spawn buffer, and left the buffer uninitialized.
  • Application now throws away some unnecessary data from overridden mods to save on memory usage.
  • Added more help panels.
v4.2 (10/11/11) One month to Skyrim!
  • Added a LList Modeler feature to the application. This will let you pick any single LList in your setup and see the probabilities of every entry in real-time, as you modify settings.
  • Accompanying the above addition is a new setting: "Spawn Tracker". This setting will export single console log entries of everything it spawns, and the LList it spawned from. Using Conscribe, the user will be able pinpoint any spawn they are curious about, find out which LList spawned it, and look at the probabilities in the modeler.
  • Fixed the issue of "PC-offset abuse". An override in the patch will be made for each PC-offset actor that could potentially be abused. This will add overrides to adjust the actor's minimum level to match the lowest marked level found on LLists, if the actor's current min was lower (probably 0).
  • Fixed the issue where sub-LList's chance-none setting wasn't being taken into consideration.
  • Added a LList "shrinking" feature, that will lessen CPU load upon spawn. This system merges multiple entries into a single entry.

    Probabilities still remain true to the original structure, as creatures that are merged have an accompanying probability multiplier.
  • The LList averaging system has been simplified. Instead of a full weighted average, a LList's level will equal the level of its entry closest to the current PC-level. This change of protocol does a few good things:

    1. It lessens the initial extreme CPU choking when DLL first encounters a LList.
    2. It also makes LLists behave more closely to what I had initially wanted, which was to prevent LLists that were super far from the bell curve from being spawned too often. The old averaging system would make LList entries spawn slightly less than non-LList entries, which I didn't like.

      This new system ensures LLists Epic Tier will still be marked as a high level, but LLists that have a range of levels will spawn as often as a normal entry around the PC level.
    I wanted to remove the averaging system completely (e.g. have LLists calculate their evaluated levels every time, with no storage/maintenance of it), but this proved to be too CPU intensive for large overhauls to calculate every spawn. The storage system of the evaluated levels remains in order to lessen the CPU load.

  • Overall major restructuring done to the Java application. Gutted and reworked the entire importing/exporting/database system. It now uses a self-parsing recursive structure that will allow for very easy expansion in the future (for DLL with items, Skyrim, etc). Whew.. this was a doozy.
  • The mod importer now stops scanning through a mod once it has received all the record types it's looking for. This will cut down on import time. However:
  • The application now imports -all- facets of NPCs and Creatures to properly export them as overrides in the patch. This counteracts the above benefit slightly, as the import takes longer.
  • The images used in the application are now built into the application, and no longer require an external folder of images. The application will delete the unneeded folder automatically.
  • The in-game scripts now warn the user if they don't have the required OBSE v20.
  • Added Alive Waters to the default "Mods To Omit" list. We don't need fish taking up DLL spawn CPU power and getting patrol routes.
v4.1.2 (09/18/11)
  • The in-game percentage scripts were a bit off from the 3.0 to 4.0 transfer. They've been investigated and adjusted to work as intended again.
  • The chance-none attribute of LLists was not being transferred correctly to the final patch, thus some actors were spawning too often.
  • I was misusing OBSE strings in some of my scripts, which was causing savegame bloat. This has been fixed. You can remove the excess space from previous versions by doing a clean save of DLL.
  • If any GUI setting contains nothing, it will automatically be reverted to default settings on exit.
v4.1.1.2 (09/18/11)
  • Addressed an issue concerning OBSE not always putting dummies on the Delay Spawn buffer, and how to handle the exception.
  • Added basic help information to the GUI settings.
  • Changed "Delay Spawning" and "Dummy Cleanup" defaults to OFF.
v4.1.1.1 (09/17/11)
  • Fixed an issue with the percentage text fields in the GUI.
v4.1.1 (09/17/11)
  • Added a new setting: Dummy Cleanup, and Cleanup Number. This is used to cut down on save-game file size, by removing dummy creatures from the savefile.

    With this setting turned on, dummies will be moved to a DLL-owned cell. Once there are more dummies in the cell than the Cleanup Number, the cell will be purged of dummies by teleporting the PC to/from the cell within .1 seconds.

    This setting waits until the PC is not in combat for 5 seconds before doing the blip.
  • Adjusted the "Delay Spawning" and "Confirm Dummies Have Spawned" functions.
  • Fixed the link between the ini file and the in-game scripts that was messed up in 4.1. Your settings will now have the correct effect in-game. Yay!
  • The GUI "Revert to Saved" button was linked to the default settings rather than the saved settings. Fixed.
  • Added main checkboxes next to the major setting categories.
v4.1 (09/16/11)

WARNING: DLL versions up until this patch may have introduced "invalid/unstable" actors. I recommend doing a full cell reset (wait inside for 7 or so days) before continuing your game. Sorry!
  • Introducing the new DLL GUI! Enjoy a much more organized interface for changing settings, all while DLL imports your mods and creates the patch in the background!

    The GUI only features basic ini settings and patch creation, but will be expanded upon in the DLL v4.1 series to contain a great deal more features.
  • Fixed a bug introduced in with the .esm/.esp detection code. ESP files should now be recognized correctly and added to the list (they were being skipped over before)
v4.0.5.4 (09/14/11)
  • Added some scripts to make it so users don't have to do a clean save when they upgrade DLL. (as I'm sure lots of you weren't doing anyway! Naughty)
  • Fixed a bug introduced with the "DLLdelaySpawning" setting.
v4.0.5.3 (09/14/11)
  • Added messagebox popup when DLL knows it didn't complete a valid patch, it then deletes the invalid patch, so the user doesn't try to play with it.
  • Fixed a syntax issue that was causing issues for older Java versions.
v4.0.5.2 (09/14/11)
  • Added more debug output information to the mini-GUI console.
  • Added more debug output to the "DLLdelaySpawning" setting.
v4.0.5.1 (09/13/11)
  • Added a mini-GUI console to the application, to get/see output before debug files are created (for those who run the program and don't even get debug files generated.)

    Just an addition to help squash other bugs.
v4.0.5 (09/13/11)
  • Added a performance setting: DLLdelaySpawning (defaulted OFF)

    This will delay the spawning of dummies by 2-4 seconds, after which they will be spawned one by one every .3 seconds.

    This has been implemented as a test to help lessen the load upon cell transitions (and hopefully reduce any CTDs associated with them). The downside to this setting is that you might see creatures appear in front of you a few seconds after entering a cell -> immersion breaker?
v4.0.4.2 (09/12/11)
  • If a mod had a LList with all the records removed to make it essentially illegitimate, DLL would have issues. Fixed.

    Thanks trollatuofs!
  • Also forced .esms to be loaded before .esps, even if their dates suggested a different load order.
v4.0.4.1 (09/11/11)
  • There was a boolean flag being used before it was initialized. This didn't cause a problem for some, but it was crashing the program for a few. This has been fixed.

    Thanks omgwtfh8!
v4.0.4 (09/10/11)
  • Since DLL doesn't moderate any LList with a script, most all daedra LLists weren't being monitored. I added Oblivion script DaedraLeveledListSCRIPT (0000A8EE) to the "safe scripts" list, so that daedra LLists could be monitored.

    I felt this script was just leftover from some early Bethesda development that wasn't necessary anymore. Contact me if you feel different.
  • Prepended "DLLdummy-" to all the dummy names, for easy recognition in-game, should they ever appear.
  • Added a check that will be done once per cell that confirms each dummy has spawned properly, and deals with any oddities. This check reports to the console if a dummy is found with a strange script (meaning some template or mod messed with it).
v4.0.3 (09/10/11)
  • Figured out how to decompress NPC_ records, and now can import all of their data.
  • All exceptions work for NPCs now.
v4.0.2 Hotfix (09/09/11)
  • Addressed an issue concerning the recognition of NPC_ records.
  • Addressed an edge condition for when a LList entry can not be matched to an Actor (like when the above bug occurred)
v4.0.2 (09/09/11)
  • Implemented the exception system into the 4.0 environment.
    NOTE!: Keyword exceptions, and the Non-Hostile FACTION exceptions will NOT work for NPCs yet.
    They WILL work for Creatures, though.
  • Expanded application to import NPC FormIDs.
    (I can't import anything else as I haven't figured out NPC_ decompression yet)
  • Expanded application to import CREA Factions.
  • Reworked the dummy spawning script to be more organized and understandable.
  • Fixed EpicTierCutLine set to 0 to equal infinity rather than 0.
v4.0.1.1 (09/08/11)
  • Hotfix addressing a chance for a NULL error in one of the 4.0.1 scripts.
v4.0.1 (09/08/11)
  • Changed the way templates were handled from the initial 4.0 release. This is a much more reliable system, as it uses Oblivion's own template system. This also means a LOT less blacklisted LLists, meaning more DLL in your world! 8)

    A new DLL-owned, empty, templated LList is created and paired to each templated LList DLL wants to manage.

    When a templated LList spawns in game, the DLL dummy places the "winning" creature on the paired empty LList and spawns that instead.

    The creature will be the only thing that can spawn, and the template will automatically be applied by Oblivion.
  • Adjusted the DLLsource location system to give better, more obvious, debug output when the app fails to locate it.
  • Changed the patrol percentage settings to reflect the marked default.
v4.0 (09/06/11)
  • Made a large overhaul to the internal organization of the app.
  • Added app functionality to import CREA records.
  • Added app functionality to import LList template information, and changed in-game scripts to apply them to spawned creatures.
  • At the moment, it blocks a lot of LLists that are "unsafe". The number of LList blocks will be cut down in the future.

Previous Changelog Info

Go to table of contents