OBLIVION
Realistic Fatigue by abo
Oblivion » Gameplay Effects and Changes
Added: 14/05/2007 - 02:40AM
Updated: 06/04/2013 - 03:05PM

369 Endorsements

2.4 Latest version

27,749 Unique D/Ls

37,980 Total D/Ls

150,435 Total Views

Uploaded by abo2

Description

Last updated at 15:05, 6 Apr 2013 Uploaded at 2:40, 14 May 2007

Realistic Fatigue
=================

Version: 2.4
Author: Donovan Baarda (abo@minkirri.apana.org.au)

** ATTENTION: This mod requires OBSE v0015 or greater! **

Tweaks all fatigue/encumbrance/movement settings to be more realistic and provide better gameplay. Adds immersive blur/pant fatigue warnings. Adds to all actors fatigue drains for health/encumbrance, fatigue burns for standing/walking/climbing, fatigue/movement based chance of stagger/trip, and NPC/creature panting/grunting. Includes repair fatigue utility.

Inspired by the mods "More Realistic Encumberment and Fatigue" by Bayli & Mentalor, "Immersive Health Indication" by Oblivionmasta, and "Running Revised" by Deathless Aphrodite. Thanks to hfffoman for providing the NPC panting sounds. Designed to work together with Realistic Health, Realistic Leveling, and Carry Sacks but does not require them.

Introduction
------------

This is a modification for Elderscrolls:Oblivion that improves how fatigue, encumbrance, and movement work. In Oblivion by default, any character can regenerate fatigue while running, even when carying as much as they can lift. Endurance has no impact on regeneration rate of fatigue, and it recovers so fast fatigue affecting potions and spells are useless. Encumbrance has no affect on fatigue at all. If you go over the magic encumbrance limit, you can't move, but if you are just below it, you can run forever. Fatigue and health have only bars to indicate how low they are. Right up until the moment of death or collapse you appear unimpaired, making your death a suprise every time it happens.

The mod attempts to address these problems and provide a better gaming experience by making fatigue more important and realistic. It affects all actors equally and doesn't just disadvantage the player. It attempts to be simple and easily configurable, with minimal game changes so it should be highly compatible with other mods. It has the following features;

* Fully configurable using a RealisticFatigue.ini settings file. The default settings provided should work for most users. All features can be adjusted or turned off if required. Supports both advanced and simple modes where advanced settings can be set directly or auto-calculated from simple high level settings.

* Adds immersive visual blur and panting sounds that gradually increase in intensity and frequency as player fatigue gets lower. You will notice when you are getting fatigued.

* Tweaks all fatigue, encumbrance, and movement game settings to be more realistic and provide better gameplay. The settings are based on research into real human fatigue, encumbrance, and movement models.

* Uses a Fatigue Effects ability applied to all actors so that scripted effects are applied equally to all actors including creatures, NPCs, and the player. Even your horse will start to whinny and stumble if you ride it too hard.

* Adds fatigue drains for low health and high encumbrance. Your fatigue reserve is reduced when you are over encumbered and when your health drops.

* Adds extra encumbrance based fatigue burns for standing, walking, and climbing uphill. Fatigue burns for walking and running are slightly reduced when going downhill. Sitting removes any encumbrance based fatigue drains and burns, so your fatigue will recover faster if you sit down.

* Adds fatigue, movement, and terrain based chances of staggering or tripping. You are most likely to stagger or trip on landing or hitting a step. Running sidewards or backwards increases the chance of tripping or staggering, and high agility and luck reduce it. The chance increases as fatigue gets low, so you will see your enemies start to stagger and trip as you wear them down.

* Adds no fatigue recovery when underwater without water-breathing.

* Adds experience earned for strength, endurance and agility skills for high encumbrance, low fatigue, and trip chances. Lifting heavy stuff will slowly increase all your strength skills. Often having low fatigue will slowly increase all your endurance skills. Performing actions that risk trip/stagger will slowly increase your agility skills.

* Adds NPC lipsynced panting for NPCs and creature "hit" grunting sounds when they get low fatigue. You can hear when your enemy is getting worn down, or your horse is being ridden too hard and might stumble.

* Adjusts all horse's fatigue to be more realistic so that horses are harder to knock out and don't get fatigued as easily.

* Uses OBSE to find and apply effects to all actors in a way that does not leave anything behind in savegames, so it can be safely deactivated with no special install/uninstall requirements or risks.

* Very clean and efficient scripts that should not cause any noticeable FPS impact on even low end machines.

* Includes a repair fatigue utility to repair fatigue drains left behind by deactivated mods. At the console just run "startQuest aaRFRepair".

With the default settings in practice these changes make endurance, encumbrance, and fatigue matter. Endurance and encumbrance now directly impact on fatigue in highly visible ways. A higher endurance makes your fatigue regenerate faster, but it recovers slow enough that fatigue affecting potions and spells are useful. Standing, walking, running, climbing, and jumping now drain fatigue depending on how much you are carrying. Only the mightiest athletes wearing just a loincloth can run forever. Everyone else running will eventually start to blur, pant, stagger, and trip. Though the encumbrance limit is higher, carrying too much drains your fatigue more. You can lift more if you have to, but more than 50% encumbrance is unsustainable and can only be done for short bursts with rests in between. You should try to stay below 33% encumbrance to be effective in combat, but the lower the better.

I recommend my Carry Sacks mod as a convenient way to carry all your loot in a container that you can drop for combat and pick up again afterwards.

Installation
------------

You do not need to perform any special uninstall operations when upgrading from previous versions of Realistic Fatigue. The included fatigue repair utility will automatically remove any fatigue drains left behind by older versions. To install just;

1) Download and install OBSE v0016 or greater.

2) Download and install OBMM v1.1.0 or greater.

3) Run OBMM and create an OMOD by clicking on "Create; Add archive", selecting this archive, agreeing to import omod data, and clicking on "Create omod".

4) Activate this omod with OBMM.

5) Select the config options presented to suit your preferences.

Note OBMM automatically launches OBSE if you have it installed when launching Oblivion. If you really must install this without using OBMM then you will have to edit the RealisticFatigue.ini file and replace all the tags with values, otherwise this mod will not work correctly.

DeInstallation
--------------

You don't need to do anything special to uninstall this mod. It should be safe to just deactivate this mod in OBMM. Fatigue effects will be removed and fatigue will recover normally to the correct levels.

Usage
-----

You don't need to do anything special to use this mod. Just activate it with OBMM and you will start to feel the effects. Load order is not important, but you should be aware that game settings are set from the RealisticFatigue.ini file when games are loaded. Make sure that any other mods that change the same game settings via scripts and config files are using the same values. All features can be adjusted or disabled by settings in the RealisticFatigue.ini config file in the Oblivion\Data folder. See the config file for details on what all the settings are and how they work.

The repair fatigue utility is a quest that can be run at any time from the console. It fully restores your fatigue and removes any lingering drains that might have been applied by removed mods. It is automatically run when this mod is first loaded to remove any drains left behind by previous versions of RealisticFatigue. To run it manually at the console, just do;

startQuest aaRFRepair

Implementation
--------------

Writing this mod required a lot of research and experimenting to find out what all the undocumented settings do. This research behind the modified settings is now documented on the TES Oblivion wiki at;

http://cs.elderscrolls.com/constwiki/index.php/Fatigue_Game_Settings
http://cs.elderscrolls.com/constwiki/index.php/Movement_Game_Settings
http://cs.elderscrolls.com/constwiki/index.php/FActorLuckSkillMult

I also have very rough documentation on the encumbrance, fatigue, and movement research i did available on my wiki at;

http://minkirri.apana.org.au/wiki/RealisticFatigue

See the RealisticFatigue.ini configuration file for details of all the settings changed. New settings similar to the running and jumping settings have been added as quest variables for standing, walking and climbing fatigue burns. The standing fatigue burn is a bit different and uses fFatigueStandMult*encumbLevel^2. This means fatigue burned standing is minimal unless you are lifting very large amounts. Most values are scaled between 0 and 1 using the following values;

healthLevel = (1 - health/healthBase)
fatigueLevel = (1 - fatigue/fatigueBase)
encumbLevel = encumb/encumbMax

The fatigue drain for low health or high encumbrance uses the following formula, where healthGain defaults to 1.05 and encumbGain defaults to 1.0. This makes you collapse just before zero health or at full encumbrance. At 1/2 health your fatigue will be drained by 1/4. At 1/2 encumbrance your fatigue will be drained by 1/4;

fatigueDrain% = healthDrainGain*healthLevel^2 + encumbDrainGain*encumbLevel^2

The blur effect uses the hitshader with increasing intensity and frequency for each heartbeat every 1.0 to 0.3333 seconds (60 to 180 beats per minute). The pant effect plays increasing volume panting sounds every 4 heartbeats. The blur and pant effect intervals and intensities use the following formulas, where blurGain defaults to 2.0 and pantGain defaults to 1.0. This makes you start to very faintly blur/pant at 1/2 fatigue. At 1/4 fatigue you blur/pant noticably, and as you approach zero fatigue you blur/pant excessively;

blurInterval = 1.0 - 0.6666 * fatigueLevel^2
blurLevel = blurGain * fatigueLevel^3
pantInterval = 4 * blurInterval
pantLevel = pantGain * fatigueLevel^2

The NPC lipsync panting uses the same formulas but uses different single-pant sounds every 2 heartbeats, and does not include any blur. For creatures, the creature's "hit" sound is played every 4 heartbeats. The setting used to adjust the intensity for NPC's and creatures is npcPantGain.

The probability of tripping and staggering depends on fatigue, movements, and agility modified by luck (see FActorLuckSkillMult on CS wiki). The percentage chance of tripping every 1secs, or when you land or hit a step uses the following formula, where staggerGain defaults to 0.04 and tripGain defaults to 0.02. These settings are approximately the probabilty of staggering/tripping when running backwards or with zero fatigue. The fatigueTripGain and moveTripGain settings can be used to adjust how much affect fatigue and movement have, and both default to 1.0.

agilityModifier = 66 / (agility + luckModifier + 33) ; scales beween 0.1 -> 0.5 for agility 33 -> 100
directionModifier = (0.01 + isMovingSidewards*0.24 + isMovingBackwards*0.99)
moveTripLevel = moveTripGain * directionModifier * (dt + abs(az/512))
fatigueTripLevel = fatigueTripGain * fatigueLevel^4 * dt
tripLevel = agilityModifier * (fatigueTripLevel + moveTripLevel)
if not isRunning:
tripLevel = 0.25 * tripLevel
staggerChance = staggerGain * tripLevel
tripChance = tripGain * tripLevel

The skill experience earned is applied to all strength, endurance, and agility skills per second based on the encumbLevel^2, fatigueLevel^2, and each chance of tripping;

strengthXP = encumbLevel^2 * fSkillStrengthEncumb * dt
enduranceXP = fatigueLevel^2 * fSkillEnduranceFatigue * dt
agilityXP = tripLevel * fSkillAgilityTrip

By default horses have only 50 fatigue which is stupidly low. Also, riders and rider equipment do not count as encumbrance. The horseEncumbMult (default 0.2) scales horse encumbrance to take into account horses are large and can carry more than their 50 strength gives. When the fatigue ability is applied to horses it will adjust their fatigueBase and calculate their encumbrance as;

fatigueBase = strength + endurance + agility + willpower + health/2
encumbrance = horseEncumbMult * (encumbrance + riderEncumbrance + rider.getScale*riderWeight)

Known Issues
------------

Sometimes after waiting the ability running on nearby actors seems to be stalled until something interacts with them. This means they will not have any of the scripted fatigue effects until you interact with them.

ChangeLog
---------

1.0 by Donovan Baarda (abo)
- Initial Release.

1.1 by Donovan Baarda (abo)
- Reduced fatigue burn RunBase/JumpBase from 10/20 to 3/6.
- Reduced pant/blur noticeable fatigue levels from ~50% to ~30%.

1.2 by Donovan Baarda (abo)
- Introduced different volume panting sounds so that panting
gradually increases in volume as well as frequency with fatigue.
- Lowered blur peak intensity from 4.0 to 3.0.
- Changed blur/pant intensity formula from x^4 to x^3 so onset is
more gradual.

1.3 by Donovan Baarda (abo)
- Fixed collapse from fatigue drain when hit.
- Fixed overblown blur effect on collapse or death.
- Lowered fFatigueReturnBase from 1.0 to 0.5 and fFatigueReturnMult from 0.1 to 0.05.
- Added x^4 encumbrance fatigue drain.
- Added Wounded/Encumbered fatigue drain message.
- Added *Gain variables for tuning effect intensities.
- Added OBSE dependency.

1.4 by Donovan Baarda (abo)
- Added OBMM install script to check installed OBSE version.
- Increased fatigue regen and lowered fatigue burn rates.
- Changed fFatigueReturnBase from 0.5 to 0.1 and fFatigueReturnMult from 0.05 to 0.08.
- Changed fFatigueRunBase from 3.0 to 5.0 and fFatigueRunMult from 20.0 to 15.0.
- Changed fFatigueJumpBase from 6.0 to 10.0 and fFatigueJumpMult from 40.0 to 30.0.
- Corrected script blur variable name from shaderGain to blurGain.
- Added verbose setting to turn off Encumbered/Wounded warnings.

1.5 by Donovan Baarda (abo)
- Fixed and tuned all fatigue settings to be less harsh for low level characters.
- Changed fFatigueReturnBase from 0.1 to 2.0 and fFatigueReturnMult from 0.08 to 0.06.
- Changed fFatigueRunBase from 5.0 to 6.0 and fFatigueRunMult from 15.0 to 12.0.
- Changed fFatigueJumpBase from 10.0 to 12.0 and fFatigueJumpMult from 30.0 to 24.0.
- Added settings fFatigueAttackWeaponBase 4.0 and fFatigueAttackWeaponMult 0.1.

1.6 by Donovan Baarda (abo)
- Added settings to make block and marksman fatigue burn less harsh for low level characters.
- Added fFatigueBlock* and fMarksmanFatigue* settings.

1.7 by Donovan Baarda (abo)
- Changed collapse on zero fatigue to a trip probability based on luck-modified acrobatics.
- Added tripGain variable for tuning trip probability.
- Changed collapse fatigue damage from 10.0 to 3.0.
- Changed wounded/encumbered fatigue drain to restore fatigue on health/encumbrance restore.
- Changed fMarksmanFatigueBurnPerSecond from 10.0 to 8.0.
- Changed pant frequency from 4.0->0.5secs to 3.0->0.4secs.

1.8 by Donovan Baarda (abo)
- Fixed bug when health, fatigue, or encumbrance is modified outside normal limits by other effects.
- Removed Encumbered/Wounded warnings and verbose setting.
- Turned off fatigue effects if dead.
- Turned off pant sound if swimming.
- Changed collapse fatigue damage from 3.0 to 6.0.
- Changed fFatigueRunBase from 6.0 to 5.0 and fFatigueRunMult from 12.0 to 10.0.
- Changed fFatigueJumpBase from 12.0 to 10.0 and fFatigueJumpMult from 24.0 to 20.0.
- Changed fPerkAthletics*FatigueMult from 1.0->0.6 to 1.0->0.80.

1.9 by Donovan Baarda (abo)
- Fixed bug where fatigueLevel was not limited <=1.0 causing excessive blur/pant.
- Introduced variable heartbeat to smoothly scale blur/pant intervals.
- Totally tuned pant sounds, intensities, and intervals to scale much better.
- Added drown sounds for fatigue when swimming.
- Reduced blurGain from 3.0 to 2.0.
- Added fPerk*Armor*SpeedMult settings.
- Added hard variant selectable via omod install script.

1.10 by Donovan Baarda (abo)
- Rearranged script so that blur/pant effects react faster to fatigue drain changes.
- Added IsUnderWater detection for pant sounds when swimming on the surface.
- Changed heartbeat blurInterval equation from x^3 to x^2.
- Changed hard variant to be an additional esp containing only changed game settings.

1.11 by Donovan Baarda (abo)
- Optimized and improved IsUnderWater detection to work better for different sized races.

1.12 by Donovan Baarda (abo)
- Fixed fFatigueReturnBase in "hard" version so that it actually makes it harder, not easier.

1.13 by Donovan Baarda (abo)
- Switched to using new OBSE v0013 IsUnderWater detection.

2009-01-08 v2.0 by Donovan Baarda (abo)
- Added RealisticFatigue.ini configuration file.
- Revamped all settings based on researched fatigue/encumbrance models.
- Added Fatigue Affects ability to apply effects to all actors.
- Changed encumbrance fatigue drains from encumb^4 to encumb^2 now it affects all actors.
- Added extra stand/walk/climb fatigue burns.
- Added slightly reduced fatigue burn walking/running when going downhill.
- Changed tripping to include fatigue, run/backward/sideward movement, and terrain.
- Added stagger chance similar to trip chance.
- Added NPC lipsynced panting.
- Added aaRFRepair quest fatigue repair utility.
- Changed everything to use modAV2 to prevent leftover drains on uninstall.

2009-01-12 v2.1 by Donovan Baarda (abo)
- fixed config setting fFatigueClimbBase/Mult 8.0/16.0 -> 4.0/8.0
- changed config setting staggerGain 0.1 -> 0.05
- fixed ability/indicator potential onload race condition
- fixed ability/indicator/repair to include fortify/drain health/fatigue effects
- fixed climb fatigue burn no longer happens on lifts
- changed fatigue burns do not make fatigue negative
- changed isKnocked detection to use standup isIdlePlaying animation
- changed and simplified trip/stagger chance calculations
- added lowpass filters for dz and az step detection
- added console trip/stagger debugging output
- added experience for strength/endurance/acrobatics skills 0.01/0.01/0.01
- optimised indicator to use ability fatigueLeve/healthLevel values

2009-03-04 v2.2 by Donovan Baarda (abo)
- Add creature low fatigue hit sound "pant" so you hear when creatures are fatigued.
- Fix incorrect fatigue/health fortify/drain spell effect compensation.
- Add restore fatigue on death so resurected actors have full fatigue.
- Add turn off pant/blur indicators on player death.
- Change encumb/health fatigue drains/undrains to be immediate.
- Change stagger/trip from acrobatics to agility based.
- Change stagger/trip experience from acrobatics to agility skills.
- Change config setting fSkillAcrobaticsTrip to fSkillAgilityTrip.
- Fix negative trip experience accumulation for tripChance < 0.
- Change trip agility experience to be independent of tripGain.
- Change encumb strength experience to be independent of encumbDrainGain.
- Change strength and endurance experience to require activity.
- Add console debug output for experience.
- Change base tripLevel trip/stagger chance from 0 -> 2.5 to 0 -> 1.0.
- Change trip step detection inverval 0.1 -> 0.2 and z accel 1000 -> 400.
- Change trip interval calc to include any activity for trip/stagger chance.
- Change trip/stagger to use rand instead of getRandomPercent.
- Improve script to reset ability by remove/add when its state gets cleared.
- Improve script ability by reducing the number of local vars.
- Change config recommended tripGain 0.01 -> 0.05.
- Change config recommended staggerGain 0.05 -> 0.25.
- Change config recommended fActorStrengthEncumbranceMult 10.0 -> 8.0
- Change config recommended encumbMult 2.0 -> 1.6
- Improve config comments explaining settings.
- Add config option choices to setup script.

2009-08-23 v2.3 by Donovan Baarda (abo)
- Fix don't add ability to the player again when dead.
- Add no fatigue recovery underwater if not waterbreathing.
- Add lowpass filter for pz with RC=0.1, and remove filters for vz and az, to smooth climb fatigue burn calculation.
- Change vertical movement fatigueBurn compensation to only apply when on ground.
- Change default climbGain from 1.0 to 1.5 to account for better climb fatigue burn calculation.
- Change encumbDrain to also apply when knocked to fix collapse/stand cycle.
- Change knocked state detection to not include standup animation.
- Change trip ledge detection tripInterval from 0.2 -> 0.1 and az from 400.0 -> 512.0.
- Change trip to delay collapse recovery based on fatigueLevel2.
- Add tripFatigueDamage=16 setting to control trip collapse duration.
- Add fix horse fatigue to strength+endurance+agility+willpower+health/2
- Add include rider and equipment in horse encumbrance.
- Add riderWeight=100.0*fActorStrengthEncumbranceMult/encumbMult setting for horse rider encumbrance.
- Add horseEncumbMult=0.2 setting to scale horse encumbrance.
- Improve fatigueLimit application to minimize fatigue "flutter" effect.
- Add config tweaks for actor combat AI game settings.

2009-11-01 v2.4 by Donovan Baarda (abo)
* Add config file load success detection
* Change riderWeight not autocalculated for mode=1
* Improve trip model
* Add fatigueTripGain and moveTripGain trip settings
* Minimize horse trip to always recover next frame
* Reduce panting when collapsed, and stop panting when knocked out.
* Change config recommended climbMult from 1.5 -> 1.0
* Change config min/recommended/max tripGain from 0.01/0.05/0.10 to 0.01/0.02/0.04
* Change config min/recommended/max staggerGain from 0.05/0.25/0.50 to 0.02/0.04/0.08
* Change health based fatigueLimit changes to have less immediate effect on fatigue
* Tidy pz/dz swimming offset calculation code