From the Oblivion ConstructionSet Wiki
Jump to navigation
Jump to search
Description
|
The number by which the player's endurance is multiplied to calculate the amount of health to be added when the character levels up. The value produced is rounded down to the nearest whole number. If this value is set to 0.0, character health will be based directly on endurance, with no level bonuses. This only affects the player. Levelled NPC and monster health is calculated on a case by case basis, according to multipliers specified in their stats.
The player starts with (Endurance * FPCBaseHealthMult) amount of health points (FPCBaseHealthMult defaults to 2), and on levelling up, health is recalculated to (Endurance * FPCBaseHealthMult) + (Endurance * FStatsHealthLevelMult) taking into account any endurance stat changes.
For instance, a player with 50 endurance will have 100 health points at level 1, and, upon reaching level 2, and raising endurance to 52, will have (52*2) + (52*0.1) = 109 health points. If they did not raise endurance, they would have (50*2) + (50*0.1) = 105 health points. At level 3, if endurance was still not changed, they would have 110 health points.
To calculate the player health at a given level, let:
- endurance_delta = CurrentEndurance - StartingEndurance
- optimal_lvls = floor(endurance_delta / iLevelUp10Mult)
- partial_lvls = endurance_delta mod iLevelUp10Mult
- remain_lvls = CurrentLevel - optimal_lvls - 1
- base_health = (CurrentLevel - 1) * StartingEndurance
- lvl_health = (optimal_lvls + 1) * iLevelUp10Mult * optimal_lvls / 2
- max_base = base_health + lvl_health + (endurance_delta * remain_lvls)
- min_base = base_health + lvl_health + (partial_lvls * (optimal_lvls + 1))
With these terms, the maximum possible health for a given level, assuming endurance was raised as early as possible, is:
- floor((CurrentEndurance * FPCBaseHealthMult) + (FStatsHealthLevelMult * max_base))
Likewise, the minimum possible health for a given level, assuming endurance was raised as late as possible, is:
- floor((CurrentEndurance * FPCBaseHealthMult) + (FStatsHealthLevelMult * min_base))
Example: Consider a Breton with starting endurance of 35. At level 46, with maxed (100) endurance:
- endurance_delta = CurrentEndurance - StartingEndurance
- = 100 - 35
- = 65
- optimal_lvls = floor(endurance_delta / iLevelUp10Mult)
- = floor(65 / 5)
- = 13
- partial_lvls = endurance_delta mod iLevelUp10Mult
- = 65 mod 5
- = 0
- remain_lvls = CurrentLevel - optimal_lvls - 1
- = 46 - 13 - 1
- = 32
- base_health = (CurrentLevel - 1) * StartingEndurance
- = 45 * 35
- = 1575
- lvl_health = (optimal_lvls + 1) * iLevelUp10Mult * optimal_lvls / 2
- = 14 * 5 * 13 / 2
- = 455
- max_base = base_health + lvl_health + (endurance_delta * remain_lvls)
- = 1575 + 455 + (65 * 32)
- = 4110
- min_base = base_health + lvl_health + (partial_lvls * (optimal_lvls + 1))
- = 1575 + 455 + (0 * 14)
- = 2030
Maximum possible health is:
- = floor((CurrentEndurance * FPCBaseHealthMult) + (FStatsHealthLevelMult * max_base))
- = floor((100 * 2) + (0.1 * 4110))
- = 611
Minimum possible health is:
- = floor((CurrentEndurance * FPCBaseHealthMult) + (FStatsHealthLevelMult * min_base))
- = floor((100 * 2) + (0.1 * 2030))
- = 403
|
Default value
|
0.1
|
References
|
See FPCBaseHealthMult and Health
|