Jump to content

Dynamic Timescale 2.1

   (0 reviews)

2 Screenshots

This mod changes how quickly time passes in-game depending on where you are and what you're doing. Now traveling on foot between cities will take an appropriately long amount of in-game time (since Vvardenfell is supposed to be much larger than it appears), while time slows down in other situations so days won't pass while exploring a dungeon. This mod is based roughly on the Oblivion mod of the same name.
There are different timescales for town interiors, dungeons, town exteriors, other named exterior locations and wilderness areas. There are also different timescales triggered by various activities, and you can have time pass at a different rate at night than during the day. In addition, you can significantly speed up the passage of time by holding down a configurable hotkey (use the control key as well to speed up time even more). All of these features and a number of other settings are configurable in the Mod Config Menu.

Finally, the mod includes a feature allowing other mods to temporarily disable this mod, potentially allowing for compatibility with other MWSE-lua mods that change the timescale.
Timescale Priority List
The timescale is the number of seconds of in-game time that pass per real-time second. Vanilla Morrowind uses a timescale of 30.
Timescales are applied with the following priority, from highest to lowest:

Blocked: If another MWSE-lua mod has temporarily blocked Dynamic Timescale, then this mod will do nothing, allowing the other mod to control the timescale.
Turbo Mode: If you're holding down the configurable hotkey plus the control key, the Turbo timescale will be applied. (Default: 3600, or one hour per second)
Fast Forward Mode: If you're holding down the hotkey without using control, the Fast Forward timescale will be applied. (Default: 360, or six minutes per second)
Combat: If you're in combat, the combat timescale will be used. This can be disabled entirely in the MCM. (Default: 10)
Sneaking: While you're in sneak mode. This can also be disabled. (Default: 10)
Wary: Wariness means you're paying careful attention to your surroundings. By default, the following actions trigger wariness: attacking, being attacked, casting (or attempting to cast) a spell, taking a certain amount of damage, or activating an object. (Default: 10)
The wary timescale can be disabled entirely in the MCM, and each wariness trigger can be disabled individually. You'll remain wary for a certain length of time after any of the enabled trigger events occur, and this length of time is also configurable. (Default: 10 seconds)
In addition, the amount of damage you must take in a single attack or other damaging event to trigger wariness is also configurable. (Default: 5 percent of max health)
Still: While you're remaining still, i.e. not moving at all (not counting just looking around). This is so you can stop in the wilderness and take in the view without time passing too quickly. (Default: 5)
Once you've remained still for a configurable length of time (default: 5 seconds), the still timescale will be applied until you move again. The still timescale, like the other activity-based timescales, can be disabled in the MCM.
Note that due to the way the game tracks movement, the still timescale will never be applied when you're in sneak mode, even if the sneaking timescale is disabled (the game considers you to be walking when you're in sneak mode, even if you're not actually moving).
If none of the above apply, the timescale used by the mod will depend on what type of cell you're in.
Town interiors: This includes all interior cells in towns and other civilized areas. Specifically, this means any interior cell that it's illegal to sleep in. (Default: 10)
Dungeons: Tombs, caves, ruins and the like. Specifically, any interior cell that's legal to sleep in. (Default: 15)
Town exteriors: Exterior cells that are part of a town or city. This is determined by checking whether or not a cell is legal to sleep in, so it should work with mod-added cities as long as it's illegal to sleep in them. Note that this includes the "exterior" Mournhold cells even though they're technically interiors. (Default: 20)
Named exterior locations: Other named exteriors such as major ruins and strongholds (e.g. Ald Daedroth, Valenvaryon, Bal Isra). This means any exterior cell that's legal to sleep in but has a specific name. (Default: 30)
Wilderness: Everywhere else, i.e. any exterior cell that's legal to sleep in and does not have a specific name. (Default: 120)
Additional Options
A few other settings are configurable:
Night timescale adjustment: The MCM includes a multiplier to be applied to the timescale at night. Whichever of the above timescales apply (except the fast forward and turbo timescales), it will be modified by this value. The default multiplier is 1.0, which means time will pass at the same speed at night as during the day.
The time that night begins and ends for the purpose of applying the multiplier can also be configured. By default, night begins at 6:00 PM and ends at 6:00 AM (the same as the default sunset and sunrise times in Morrowind.ini).
Fast travel time adjustment: You can adjust the time that elapses during fast travel to be proportional to the configured wilderness timescale. (By default this feature is disabled.) With the default wilderness timescale of 120, fast travel will take about four times longer than in vanilla Morrowind (with its timescale of 30). This works by changing the fTravelTimeMult GMST.
For example, the boat ride from Ebonheart to Sadrith Mora takes 11 hours in vanilla Morrowind. With this feature enabled and using a wilderness timescale of 120, the same trip will take 46 hours.
Note that, if this feature is enabled, a different adjustment will apply to gondola travel. Since travel by gondola takes place entirely within a city, the time elapsed will be proportional to the town exterior timescale rather than the wilderness timescale.
"Kogoruhn, Charma's Breath" treated as wilderness: This cell connects the Kogoruhn stronghold with a geographically distant exit, so it "should" be much larger than it's depicted. This option causes this cell to be treated as a wilderness cell rather than a dungeon cell. Thanks to SpaceDevo for suggesting this feature. By default this feature is disabled.
Display messages: Controls whether the mod displays a message whenever it changes the timescale (default no).
This mod requires MGE XE and the latest version of MWSE 2.1. Just install MGE XE and run MWSE-Update.exe to download the latest build.


Dynamic Timescale should be compatible with most mods that aren't timescale mods. Don't use Pass the Time with this mod. This mod incorporates the functionality of Pass the Time, but implements it in a slightly different way due to how this mod works.

There are likely to be conflicts with other mods that change the timescale. However, other MWSE-lua mods can use the interop functionality of this mod to temporarily disable it, allowing the other mod to manage the timescale. See the interop section below for details.
It should be perfectly compatible with any mods that add new cities/towns (such as Tamriel Rebuilt). As long as the mod makes it illegal to sleep outside in its towns, this mod will detect them as towns and apply the correct timescale.
However, there will be problems with any mod that makes drastic changes to the "illegal to sleep here" flag. For example, the Settings module of the original BTB's Game Improvements makes it illegal to sleep in every exterior cell, which would mean every exterior cell would be detected as a town. Use the Necro Edit version of BTBGI instead, which omits this change (and use No Rest Without Beds to prevent sleeping in the wilderness).


This mod includes interop functionality enabling other mods to temporarily disable this one. This potentially allows for compatibility with other MWSE-lua mods that need to manage the timescale.
To establish the interface, do something like this:

local dynamicTimescale = include("DynamicTimescale.interop")

You can then instate a block on Dynamic Timescale like so:

if dynamicTimescale then
    dynamicTimescale.blocks["my mod"] = true

Now you can set the timescale as desired. Once you no longer need to manage the timescale, remove your block on Dynamic Timescale by setting it to false (or nil).
It's possible for there to be blocks from more than one mod at once, and Dynamic Timescale will be disabled as long as any of those blocks are active. However, in that case, the other mods are likely to conflict with each other unless their authors take special care to make them compatible.
Blocks do not survive game load; they will be cleared on the "load" event. You can then reinstate your block as needed on the "loaded" event.
Feel free to contact me on the Nexus or Moddinghall with any comments or suggestions. You can also find me on Discord as Necrolesian#9692.

Edited by Necrolesian

What's New in Version 2.1   See changelog


- Added an interop file that other mods can use to temporarily disable Dynamic Timescale (this potentially allows for compatibility with other MWSE-lua mods that change the timescale).
- Coding improvements that might slightly improve performance.

Use a mod management tool such as Wrye Mash, or just copy the MWSE directory to your Data Files directory.


Thanks to the folks at the Morrowind Modding Community Discord for fixing my bad code and bad ideas.
You can use this however you want.


User Feedback

You may only provide a review once you have downloaded the file.

There are no reviews to display.

  • Create New...