File Details

Download this file | Go to files list

Realistic Leveling

Version: 1.13
Author: Donovan Baarda (

** ATTENTION: This mod requires OBSE v0016 or greater, and should be installed with OBMM v1.1.2 or greater!**

This mod changes leveling and attribute advances to be more realistic and provide better game play. Level and attributes will increase naturally as your skills improve, without the need to micromanage them or worry about what skills to use to optimise your advancement.

Inspired by the mods "NaturalLeveling and More" by InbredMonkey, "Simplified Leveling" by Digizen, "Kobu's Character Advancement System" by Kobu, "AF Level Mod" by Auryn and Fraktyl, and "Better Leveling" by grandcalabash. Designed to work together with Realistic Fatigue and Realistic Health, but does not require them. Also works together well with any skill advancement mods including Progress, which is available as an OMOD with install script in ABOs OMOD Collection.


This is a modification for Elderscrolls:Oblivion that improves how attribute and level advancement works. It attempts do to it in a way that is minimal and clean, without excessive overhauling or scripting. It avoids excessive configurability and options, focusing instead on making it right and keeping it simple. It also aims to be as compatible with other mods as possible.

In Vanilla Oblivion, there are many flaws with how attributes and levels advance. These flaws encourage bizarre behaviour to optimise advancement, like avoiding certain skills to delay leveling, intentionally using "out of character" skills to boost attributes, or focusing on endurance skills early to boost your health at later levels. The game turns into an annoying task of micro-managing and tracking skill advancements to "make sure I get +5 strength next level". I find this neither realistic nor fun.

There are also flaws in how attributes and skills are set when starting. Class skills and racial bonuses mean some skills get an initial boost with no regard for how this affects advancement. In practices this initial boost means there is less advancement room left for that skill, which means less advancement opportunity for the corresponding attribute. Stacking your class skills on top of your class specialisation and and race bonuses can give you a high initial skill level, which ironically can mean you cannot max out the corresponding attribute.

There are many other mods that attempt to address these problems, but none of them matched my requirements. Most of them have their own flaws in how advancement works. Some of them were too complicated and changed the game too much. Most of them had bugs or incompatibilities with other mods that introduced new races or abilities. Many of them require you start a new character. All of them fail to take into account the advancement impact of initial class skills.

I wanted a leveling mod that was simple, unobtrusive, and natural. I want advancement to be smooth, with no particular advantages to focusing on particular skills. I wanted all attributes and skills to be treated the same with no special cases that bias certain behaviours. I also wanted a mod that could be used on an existing character, and that worked well with other mods. This is my attempt. Its key features are;

* very simple... 1 quest, 1 small script, 1 settings file, and a replacement leveling menu. The code is very small and clean, and only touches attributes and levels. It also is very efficient and lightweight.

* uses OBSE to look up class, race, and ability bonuses so it should be fully compatible with any custom classes, races, or strange abilities (like vampire and zombie mods etc...).

* only uses skill values, and doesn't touch how skills advance. This means it should be fully compatible with any mods that adjust how skills advance.

* tries very hard to not change the Oblivion advancement curve; attributes and levels should advance at the same rate to the same limits as vanilla Oblivion, except without class skills penalising their related attributes.

* uses the KCAS "wheel" concept to allow skills to contribute a small amount to related attributes as well as their primary attribute. It does this in a simple and balanced way without significantly changing how skills relate to attributes.

* can be used on an existing character savegame. Just enable it, and when your game loads it will re-calculate and adjust your attributes and level based on your skill advancements. If you don't like what it has done, don't save it.

* can be used with a new game, and starts working immediately. If you hang around in the sewers long enough you could level up before you leave. All class changes will be handled correctly and advancements preserved when you finally venture out.

* treats class skill bonuses the same as normal earned skill advances for advancing attributes. This means your starting attributes will be affected by your class skills. If your class training was in sword, you will be stronger than a guy who's class training didn't include any strength skills.

* Attributes and level will advance naturally as your skills advance with no need to sleep. Health will automatically be adjusted for level or endurance advances and applied retro-actively. There is no need to level endurance early.

* Luck will advance naturally in a similar way as other attributes, except using fame, infamy, and level as the related skills. Your fame, infamy, and skill draw the attention of the gods who favour you with luck.

* Different modes of operation; "vanilla leveling" to only advance attributes and use vanilla leveling, "silent leveling" where you level up with no fanfare, "verbose leveling" where the normal levelup messagebox appears, or "sleep leveling" where you are notified when you need to sleep to levelup.

* Fully configurable using a RealisticLeveling.ini settings file. The default settings provided should work for most users. Optional settings can be enabled to adjust skill advancement rates if you don't use skill advancement rate mods.


You do not need to perform any special uninstall operations when switching from other leveling mods or upgrading from previous versions. Your level and attributes will be automatically adjusted to what they would be if you had been using this mod from the start of the game. 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 RealisticLeveling.ini file and replace all the tags with values, otherwise this mod will not work correctly.

If you are upgrading from v1.6 or earlier, be aware that some default values of settings have slightly changed so your attributes and level may change. The new configurable expPow setting was effectively hardcoded before v1.7 to 2.0, and now defaults to 2.5 to more accurately reflect skill experience. If you generalised and used many different skills you will find your attributes and level slightly lower. If you specialised and focused on your major skills you will find your level and attribute slightly higher.

Since v1.7 the level progress meter on the stats menu will work correctly. Other UI mods like DarnUI can provide alternative levelup menus compatible with AFLeveling, KCAS, and RealisticLeveling. However these alternative menus are also normally bundled with alternative stats menus that remove the level progress meter. If you want to see the progress meter, do not install other UI mod's AFLeveling/KCAS compatible menus and install the levelup menu provided with RealisticLeveling.

If you are upgrading from v1.12 there are some tiny changes in v1.13 to how level is calculated that may trigger a drop in level if your character only just leveled. The change is very small, so you should be very close to leveling back up again.


It is safe to just deactivate this mod. Any attribute or level changes applied by this mod will still exist in any savegames. These changes can be undone at the console by typing things like "player.setlevel 7" and "player.setav strength 40". Also, if you wish to go back to using vanilla leveling, you will need to reset the major skill advance count.

Realistic Leveling, like nearly every other leveling mod, changes the iLevelUpSkillCount to a large value. Oblivion internally keeps a count of all major skill advances, and every time you advance a level this count is decremented by iLevelUpSkillCount. Setting iLevelUpSkillCount to a large value ensures that this count never gets large enough to trigger vanilla leveling. Realistic Leveling also uses OBSE to adjust the major skill advance count to a fraction of iLevelUpSkillCount so that the level progress meter on the stats menu works.

However, this means that the internal count does not reflect the number of major skill advances since your last levelup. For other leveling mods it often becomes a very large negative number. This count will still be wrong after you disable the leveling mod, which means you could need many thousands of major skill advances before your next level up. This is not a problem if you are switching to another leveling mod; they will also use a large iLevelUpSkillCount setting and will not use the internal count.

If you do want to go back to vanilla leveling after using a leveling mod, you will need to reset this internal count. Often the number of training sessions used is also wrong. Fixing these used to be hard, but with OBSE v0016 it can now be done easily at the console after deactivating the leveling mod by doing;


Where is the major skill advance count you want, and is the number of training sessions used you want. At this point you can save your game and continue using vanilla leveling.


You don't need to do anything special to use this mod. Just deactivate any other leveling mods and activate this one. When you load a savegame your attributes and level will be recalculated and set to what they would be if this mod had been used from the start of the game.

The configuration file OblivionDataRealisticLeveling.ini can be edited to adjust how the mod operates. See this file for more information on all the settings. To switch to a different leveling mode, change the mode setting;

set aaRealisticLeveling.mode to

Where the different modes are;

0 - do nothing, only calculate values but don't apply them (for debugging).
1 - vanilla leveling, only advance attributes, so level advancement will be handled by vanilla.
2 - silent leveling, where levelups happen without any fanfare dialog box.
3 - verbose leveling (default), where levelups have the normal dialog box.
4 - sleep leveling (default), where you are notified when you need to sleep to levelup.

To adjust the level and attribute advancement rates, you set levelMax/attrMax to change the level and attribute reached when all skills reach 100. Note that attrMax is the maximum attribute value not including racial, class, or star bonuses, which can push attributes beyond that limit. Uncapper mods that allow skills to exceed 100 will also allow attribute and level to exceed these settings. To increase the level advancement rate to be closer to vanilla if you focus on major skills;

set aaRealisticLeveling.levelMax to 75

To adjust related attribute advancement you set wheelMult1/wheelMult2/wheelMult3 to adjust contributions from primary/secondary/tertiary attribute skills. Small values mean less contributions from those skills, and they should all add up to 1.0. To turn off related attribute advancement set;

set aaRealisticLeveling.wheelMult1 to 1.0
set aaRealisticLeveling.wheelMult2 to 0.0
set aaRealisticLeveling.wheelMult3 to 0.0

There are options to set several game settings including iLevelUpCount, iTrainingSkills, and all the skill advancement settings. By default the skill advancement settings are not enabled.

There are options to set several game settings to adjust how health is calculated, including fPCBaseHealthMult, fStatsHealthStartMult, and fStatsHealthLevelMult.There is also a new fStatsHealthLevelBase setting that can be used to add a base offset to starting health. By default none of these settings are enabled, and fStatsHealthLevelBase is set to 0.0.

You can also trigger events and test these settings at the console, but the settings will be reloaded from RealisticLeveling.ini whenever a savegame is loaded. To force recalculation of attributes and level using the current mode do;

set aaRealisticLeveling.sumStats to 0

To see all attribute values and level with decimal points to indicate how close you are to the next advancement or levelup, do the following. Note this will show lots of other variables used inside this mod;

sqv aaRealisticLeveling

This mod will occasionally print diagnostic messages to the console prefixed with "RL:". Open the console by pressing '~' to see these messages.


In Vanilla Oblivion, skills advance based on "Experience Points" (XP) earned through usage. As skills advance, you need increasing amounts of experience to advance them. This means just counting skill advancements is not a very good way to calculate attribute and level advancements; going from skill level 80 to 90 requires a lot more experience than going from 30 to 40.... why should these both count as equal when calculating if you should advance an attribute or level? What matters is how much XP you earn on strength, not which particular strength skill you earn it on.

The amount of experience required to increase a skill has a skill^1.5 curve. This means the total experience required to advance to a particular skill level has skill^2.5 curve, and it is possible to calculate the XP required to reach a particular skill level. It was "NaturalLeveling and More" by InbredMonkey that suggested using a sqrt() of the sum of the squares of related skills for calculating attributes, and it turns out this formula is pretty close to using the total skill XP for calculating attribute advancement. RealisticLeveling uses skill^expPow, where expPow is a configurable setting that defaults to 2.5.

"Kobu's Character Advancement System" has the "wheel", where attributes are arranged in a circle with related attributes next to each other. Skills contribute mostly to their main attribute, but also slightly to the related attributes. This mod uses a "wheel" of strength <-> speed <-> agility <-> personality <-> intelligence <-> willpower <-> endurance <->... The actual formula used is;

expAttribute = (advSkillA^expPow + advSkillB^expPow + advSkillC^expPow)
aMax = (expMax/7)^(1/expPow)
aMin = (expMin/7)^(1/expPow)
attrMult = (attrMax - attrMin) / (aMax - aMin)
attrBase = -attrMult * aMin
attribute = baseAttribute + attrBase + attrMult * (wheelMult1*expAttribute +
wheelMult2*(expSecondaryA + expSecondaryB)/2 + wheelMult3*(expTertiaryA + expTertiaryB)/2)^(1/expPow)


expMin = 4*30^expPow + 3*25^expPow + 3*10^expPow + 11*5^expPow
expMax = 21*100^expPow
attrMin = 40
attrMax = 100
wheelMult1 = 0.6667
wheelMult2 = 0.2222
wheelMult3 = 0.1111
advSkill[ABC] = skill advances earned for directly related skills; ie player.getBaseAV strength - race bonuses - fortify abilities
expAttribute = experience earned for this attribute by directly related skills
expSecondary[AB] = experience earned for secondary related attributes; ie for Strength this would be expEndurance and expSpeed
expTertiary[AB] = experience earned for tertiary related attributes; ie for Strength this would be expWillpower and expAgility
baseAttribute = starting attribute value including any racial bonus, class attribute bonus, or fortify ability

The expMin setting is the average experience at level 1 after only class skills are applied. The expMax setting is the total experience when all skills have advanced by 100. The attrMult and attrBase values are derived from attrMin and attrMax using a formula that makes starting attributes approximately the same as for vanilla Oblivion, and attributes "max out" to attrMax plus any race/class/star bonuses when all related skills are maxed out. The wheelMult is chosen so that directly related skills contribute 2x as much as other skills, and secondary skills contribute 2x as much as tertiary skills.

The starting skill values and class skill bonuses are treated the same as any other skill advance, whether it be through training, reading books, etc... having a class just means you trained in those skills and get all the benefits that training should give. When you play a new game from the start, you don't yet have any skill bonuses, and your attributes reflect this. At the point in the sewer tutorial where you get a class your class skill bonuses kick in and your attributes advance accordingly.

Race skill bonuses are not treated the same way. Race skill bonuses are explained as natural aptitudes, not actual training, so they don't contribute to attributes. This does mean that racial skill bonuses slightly undermine attribute advancement potential, but this is compensated for by the racial attribute bonuses that are also treated as bonuses on top of experience based advances.

Luck uses a similar formula, using Fame, Infamy, and Level as the three related sklls. It uses a fixed x^2 curve instead of x^expPow because fame and infamy don't advance differently for different fSkillUseExp settings. It does not use wheelMult because there are no related attributes. It does not use attrBase because there is no class skill related advancements to offset. It uses a configurable luckMult setting instead of attrMult;

expLuck = Fame^2 + Infamy^2 + Level^2
luck = baseLuck + luckMult * sqrt(expLuck)

The XP accumulated for skills is also used for level advancements. Note that there is a mode=1 where level advancements can be turned off so that other mods can handle leveling. If you use this mod for leveling, the level is calculated as;

lMin = expMin^(1/expPow)
lMax = expMax^(1/expPow)
levelMult = (levelMax - levelMin) / (lMax - lMin)
levelBase = levelMin - levelMult * lMin
level = max(1, levelBase + levelMult * (expStrength + expIntelligence + ....)^(1/expPow))


levelMin = 1
levelMax = 65
exp[Strength|Intelligence|...) = experience earned for each attribute, excluding racial bonuses

The levelBase and levelMult constants are derived from levelMin and levelMax using a formula that makes the starting level for an average character after all class skill advances is 1.0, and after all skills have "maxed out" the level has also "maxed out" to levelMax. The minimum limit of 1 is applied so that your level is not negative at the start of the game before any class skill advances have been applied.

Health increases automatically as your skills advance. It advances using the normal game formula except endurance advances apply retro-actively as if endurance had been smoothly earned at each level. Note that the health attribute includes a dynamic and static component. Only the static part is set on the player, and the game automatically calculates and adds the dynamic part. By using the actual game settings here we ensure this mod is compatible with other mods that adjust health by adjusting these settings. We also include an extra setting fStatsHealthLevelBase that can be used to add a base offset. The formula used is;

staticHealth = fStatsHealthLevelBase + fStatsHealthLevelMult*(level-1)*(baseEndurance + endurance)/2 + baseHealth
health = endurance*fPCBaseHealthMult*fStatsHealthStartMult + staticHealth


baseEndurance - base starting race endurance modified by class attribute bonus and fortify abilities
baseHealth - any health fortify bonuses
fStatsHealthLevelBase - an extra base health offset setting
f*Mult - the normal game settings

The following game settings in RealisticLeveling.ini are used to remove limits on training per level and provide 1% resolution on the stats menu level progress meter. OBSE is used to set PCMajorSkillUps to reflect your leveling progress and to reset PCTrainingSessionsUsed at levelups when using silent leveling. In modes >=2 iLevelUpSkillCount is forced to 100 and any setting in RealisticLeveling.ini is ignored;

iLevelUpSkillCount = 100
iTrainingSkills = 100

The replacement levelup_menu.xml is copied from "AF Level Mod" by Auryn and Fraktyl. It changes the levelup dialog box to remove the checkboxes for selecting which attributes should be advanced.

Known Issues

Recalculation will be delayed when the player is in combat. This is to avoid annoying levelups mid combat, and is explained rationaly as the need for some time to reflect before you can benefit from your experiences. However, recalculation is forced when a savegame is loaded to adjust for any changed config settings. This means savegames taken mid combat can suddenly trigger levelups when they are reloaded. It is also possible for levelups after long sustained combat to advance several levels at once. Recalculation can be forced at any time by setting aaRealisticLeveling.sumStats to 0 at the console.

Any mod that attempts to modify base attributes or health using "player.setAV" will have its effects removed at the next skill advance or message box. Only a small number of existing quests and mods do this, as the vast majority use "player.modAV" or fortify abilities which work fine with this mod and is the recommended way to do it.

Any mod that modifies base skills using "player.setAV" will affect attributes and level at the next skill advance or message box. If base skills are decreased this way, then attributes and level can go backwards. No mods should do this for temporary skill changes, instead they should be using "player.modAV", "player.modAV2", or fortify/drain abilities.

Any mod that advances minor skills using "advancePCSkill" or "modPCSkill" without using "SetPCMiscStat 2, n" or showing a message box will not affect attributes until the next message box or skill advance. Skills advanced with these functions do not show up as a "Skill Increase" in "GetPcMiscStat". "GetPCMajorSkillUps" and "GetPcMiscStat" changes are used to trigger recalculating attributes. Displaying a message box also triggers recalculating to work around this limitation.

Any mod that applies large skill or attribute drain abilities that drain the stat to zero will delay recalculation until the drain ability is removed. These large truncated drain abilities make it impossible to correctly calculate experience and set attributes. A debug message will be printed to the console when recalculation is aborted because of large drain abilities.

The Oghma Infinium book normally increases some skills and attributes by +10. The script for this book (which includes bugs fixed in the Unofficial Oblivion Patch) uses player.setAV to adjust the attributes, With this mod only skills will increase by +10, but these skill bonuses will be treated as normal advancements and will boost related attributes by the calculated amount. Note that this means the "Path of Steel" will benefit Strength and Endurance, not Strength and Speed.

When operating in silent leveling mode (mode 2), levelups will not cause the world to "level up" with the player until he/she goes through a loading door or changes cells.

When operating in sleep leveling mode (mode 4), level changes caused by changing settings that make your level go backwards will use "verbose leveling" to set your level backwards. Settings changes that cause your level to advance many levels will not be immediately applied and you will need to sleep to trigger the levelup.


1.0 by Donovan Baarda (abo)
- Initial Release.

1.1 by Donovan Baarda (abo)
- Disabled attribute and level advancement when in combat.
- Added recalculating attributes after MessageBox menus for quests that advance skills without advancing stats.
- Fixed bug causing temporary health boost after leveling.
- Slightly cleaned up script code.
- Improved readme documentation, adding Usage and Known Issues

1.2 by Donovan Baarda (abo)
- Adjusted level and attribute advancement to be more equal for starting characters that spread vs focus their skills.
- Introduced the "wheel" related attribute advancement that evens out attribute advancements a bit more.
- Made only fortify abilities and race bonuses not count as skill advances for calculating attribute and level experience.
- Changed attrBase/attrMult from -8.0/0.44 to -12.0939/0.4625.
- Changed levelBase/levelMult from -8.0/0.14 to -10.25/0.1461.
- Added OBMM install script to check for OBSE.

1.3 by Donovan Baarda (abo)
- Swapped Intelligence and Personality order in the wheel to copy KCAS and keep stealth and mage specialisation skills together.
- Added tertiary attribute contributions to the wheel, changing wheelMult* from 0.6/0.4 to 0.6667/0.2222/0.1111.
- Changed attribute/level advancement so they max out to +60/50 when skills reach +100 instead of +90.
- Changed attrBase/attrMult from -12.0939/0.4625 to -11.1648/0.4109.
- Changed levelBase/levelMult from -10.25/0.1461 to -8.8948/0.1285.

1.4 by Donovan Baarda (abo)
- Added extra de-installation instructions to Readme.
- Changed install script to support alternative levelup menu mods like DarnUI.
- Increased level advancement rate by ~10% so it maxes out to 55 when skills reach +100.
- Changed attrBase/attrMult from -11.1648/0.4109 to -12.0206/0.4158.
- Changed levelBase/levelMult from -8.8948/0.1285 to -9.8185/0.1414.

1.5 by Donovan Baarda (abo)
- Added attrMax and levelMax tuning constants.
- Changed attrBase/attrMult to be automatically derived from attrMax.
- Changed levelBase/levelMult to be automatically derived from levelMax.
- Increased level advancement rate ~9% by changing levelMax from 55 to 60.

1.6 by Donovan Baarda (abo)
- Added RealisticFatigue.ini settings file for mod options and game settings.
- Added luckMult setting to adjust luck advancement rate, default value 0.4000.
- Added optional support for adjusting skill advancement rates.

2009-01-14 v1.7 by Donovan Baarda (abo)
- Add using setPCMajorSkillUps to make the level progress meter work.
- Add using setPCTrainingSessionsUsed to reset training on silent levelup.
- Add expPow setting and change initial settings calculations to use it.
- Change default effective expPow 2.0 -> 2.5.
- Change default luckMult setting 0.4 -> 0.2.
- Improve comments in RealisticLeveling.ini.
- Update deinstall instructions for OBSE v0016.
- Update OMOD install script with info about using other UI mods.

2009-01-27 v1.8 by Donovan Baarda (abo)
- Fix premature levelup notification for new games when level < 1.
- Change default levelMax from 60 to 65.
- Add optional fPCBaseHealthMult, fStatsHealthStartMult, and fStatsHealthLevelMult settings.

2009-02-05 v1.9 by Donovan Baarda (abo)
- Fix premature levelup icon problem.
- Fix low starting health problem.
- Fix debug mode = 0 to not levelup.
- Add sleep levelup mode = 4.
- Add advancePCSkill/modPCSKill major skill advancement detection.
- Change to force iLevelUpSkillCount = 100 for mode >= 2.
- Change default iLevelUpSkillCount setting to commented out.
- Improve setup to configure mode, levelMax, and iTrainingSkills settings.
- Improve config comments and layout.

2009-02-21 v1.10 by Donovan Baarda (abo)
- Add trigger skill experience recalculation after loading config.
- Fix config comments on how retroactive health is calculated.
- Improve setup configuration prompts and descriptions.

2009-03-07 v1.11 by Donovan Baarda (abo)
- Fix acrobatics changes on load if fortified/drained (thanks Inickens and myfyr).
- Fix don't recalculate attributes/level at death.
- Fix premature levelup icon problem when in combat.
- Add check if config has correctly loaded.
- Fix install script OBSE requirement message.

2009-03-27 v1.12 by Donovan Baarda (abo)
- Add protection against advSkill settings going negative if other mods decrease base skills.
- Add correct handling of drain health/attribute/skill ability spells.
- Change to clear levelup icon in combat only for mode>=2 and force iLevelUpSkillCount = 100.
- Change to always recalculate on loading or when sumStats is cleared even in combat.
- Fix install script OBMM version check to 1.1.2.
- Improve Readme explanation about side effects from other mods using setAV.

2010-03-11 v1.13 by Donovan Baarda (abo)
* Add delay recalculation if a large skill or attribute drain ability is detected.
* Add expMin, expMax, levelMin, and attrMin advanced settings to config.
* Add fStatsHealthLevelBase base health offset setting to config.
* Change expMin default from best possible to average starting values.
* Change levelMin default from 1.9 to exactly 1.
* Clean up code for handling bad configurations.
* Document delayed recalculation during combat issues.
* Document large drain abilities issues.
* Document new settings usage in calculations.

Download this file | Go to files list