Outputs a value based on input value run through calculations. Used for things like weapon stat scaling, soul level cost, max HP, resistances, etc.
Calculations can be simplified by using CalcCorrectGraph Calculation Tool
Relevant values for example
calcCorrectGraph is being used for 200 strength scaling, 0 dexterity scaling weapon.
Players strength stat (input) is 10
stageMaxVal0 = 0stageMaxVal1 = 20stageMaxGrowVal0 = 12stageMaxGrowVal1 = 50
Since the player's strength stat is 10, parameter fields for stage 0 to stage 1 will be used, as it lies between stageMaxVal0(0) and stageMaxVal1(20)
output = stageMaxGrowVal0 + ((stageMaxGrowVal1 - stageMaxGrowVal0) * ((input - stageMaxVal0) / (stageMaxVal1 - stageMaxVal0)))
Calculate ratio of input value and maximum output stage value
Max output stage value for stage 0 to 1: stageMaxVal1(20)
Input = PlayerStrengthStat(10)
(Input(10) - stageMaxVal0(0)) / (stageMaxVal1(20) - stageMaxVal0(0)) = .5, aka 50%
This means that the final output value will be 50% of the output value potential.
(note: this part is affected by adjPt_maxGrowVal0-5 when present, which adds an additional calculation making ratio growth non-linear)
Calculate output value potential for stage 0 to 1
Min output stage value for stage 0 to 1: stageMaxGrowVal0(12)
Max output stage value for stage 0 to 1: stageMaxGrowVal1(50)
Output value potential for stage 0 to 1: stageMaxGrowVal1(50)-stageMaxGrowVal0(12) = 38
Calculate Output
Calculate input value ratio (.5 aka 50%) with output value potential, then add output stage value minimum for final output value
OutputValuePotential(38) * InputRatio(.5) = 19 + MinimumOutputValue(12) = 31
The final output value is 31, which in the case of weapon stat calculations will be applied as a multiplier to stat scaling. Meaning the weapon will effectively use 31% of the maximum stat scaling. 31% of StrengthStatScaling(200) = 62
| Field | Type | Offset | Description | Notes |
|---|---|---|---|---|
| stageMaxVal0 | f32 | 0x0 | Stat Level Cap corresponds to the level of a certain stat | |
| stageMaxVal1 | f32 | 0x4 | Stage cap corresponds to the level of a certain stat | |
| stageMaxVal2 | f32 | 0x8 | Stage cap corresponds to the level of a certain stat | |
| stageMaxVal3 | f32 | 0xc | Stage cap corresponds to the level of a certain stat | |
| stageMaxVal4 | f32 | 0x10 | Stage cap corresponds to the level of a certain stat | |
| stageMaxGrowVal0 | f32 | 0x14 | Stage growth is a multiplier of the maximum growth that will occur in a certain stage, as an example a chart such as this: Growth Stage 0 - Growth = 20 - 20% of the total scaling is reached at stage 0. Growth Stage 1 - Growth = 25 - 25% of the total scaling is reached at stage 1. Growth Stage 2 - Growth = 50 - 50% of the total scaling is reached at stage 2. Growth Stage 3 - Growth = 80 - 80% of the total scaling is reached at stage 3. Growth Stage 4 - Growth = 90 - 90% of the total scaling is reached at stage 4. As you can see, in this specific chart 100% is never reached, 100% could be reached if only the value of growth stage 4 was 100% This is not limited to 100% as an example growth stage 4 could reach 200%. The level cap of a growth stage is specified in the corresponding Stat Level Cap Field | |
| stageMaxGrowVal1 | f32 | 0x18 | Stage growth is a multiplier of the maximum growth that will occur in a certain stage, as an example a chart such as this: Growth Stage 0 - Growth = 20 - 20% of the total scaling is reached at stage 0. Growth Stage 1 - Growth = 25 - 25% of the total scaling is reached at stage 1. Growth Stage 2 - Growth = 50 - 50% of the total scaling is reached at stage 2. Growth Stage 3 - Growth = 80 - 80% of the total scaling is reached at stage 3. Growth Stage 4 - Growth = 90 - 90% of the total scaling is reached at stage 4. As you can see, in this specific chart 100% is never reached, 100% could be reached if only the value of growth stage 4 was 100% This is not limited to 100% as an example growth stage 4 could reach 200%. The level cap of a growth stage is specified in the corresponding Stat Level Cap Field | |
| stageMaxGrowVal2 | f32 | 0x1c | Stage growth is a multiplier of the maximum growth that will occur in a certain stage, as an example a chart such as this: Growth Stage 0 - Growth = 20 - 20% of the total scaling is reached at stage 0. Growth Stage 1 - Growth = 25 - 25% of the total scaling is reached at stage 1. Growth Stage 2 - Growth = 50 - 50% of the total scaling is reached at stage 2. Growth Stage 3 - Growth = 80 - 80% of the total scaling is reached at stage 3. Growth Stage 4 - Growth = 90 - 90% of the total scaling is reached at stage 4. As you can see, in this specific chart 100% is never reached, 100% could be reached if only the value of growth stage 4 was 100% This is not limited to 100% as an example growth stage 4 could reach 200%. The level cap of a growth stage is specified in the corresponding Stat Level Cap Field | |
| stageMaxGrowVal3 | f32 | 0x20 | Stage growth is a multiplier of the maximum growth that will occur in a certain stage, as an example a chart such as this: Growth Stage 0 - Growth = 20 - 20% of the total scaling is reached at stage 0. Growth Stage 1 - Growth = 25 - 25% of the total scaling is reached at stage 1. Growth Stage 2 - Growth = 50 - 50% of the total scaling is reached at stage 2. Growth Stage 3 - Growth = 80 - 80% of the total scaling is reached at stage 3. Growth Stage 4 - Growth = 90 - 90% of the total scaling is reached at stage 4. As you can see, in this specific chart 100% is never reached, 100% could be reached if only the value of growth stage 4 was 100% This is not limited to 100% as an example growth stage 4 could reach 200%. The level cap of a growth stage is specified in the corresponding Stat Level Cap Field | |
| stageMaxGrowVal4 | f32 | 0x24 | Stage growth is a multiplier of the maximum growth that will occur in a certain stage, as an example a chart such as this: Growth Stage 0 - Growth = 20 - 20% of the total scaling is reached at stage 0. Growth Stage 1 - Growth = 25 - 25% of the total scaling is reached at stage 1. Growth Stage 2 - Growth = 50 - 50% of the total scaling is reached at stage 2. Growth Stage 3 - Growth = 80 - 80% of the total scaling is reached at stage 3. Growth Stage 4 - Growth = 90 - 90% of the total scaling is reached at stage 4. As you can see, in this specific chart 100% is never reached, 100% could be reached if only the value of growth stage 4 was 100% This is not limited to 100% as an example growth stage 4 could reach 200%. The level cap of a growth stage is specified in the corresponding Stat Level Cap Field | |
| adjPt_maxGrowVal0 | f32 | 0x28 | Determines the exponent used to calculate the curve. The growth values are normalised to be between the level range and the growth range dictated, Such that: 0 level is the lower bound of the stage, and 1 level is the upper bound 0 growth is the lower bound of the stage, and 1 growth is the upper bound This curve is, at a value of 1, linear, meaning direct proportion between each stage. At a value of 2, it is quadratic (in fact, it will be flat exactly at 0, and have steepness 2 at 1) Note that a steepness of 2 means the growth per level is double the average growth per level. At a value of 0.5, it is a square root. Below 0, negative powers are not used as this would create asymptotes and infinite values. Instead, the axes are flipped. If you consider the graph 0 to 1 by 0 to 1, it is rotated 180 degrees. At a value of -1, it is linear again. At a value of -2, it is quadratic, however the origin is at the upper bound. Note this means there is a steepness of 2 at the lower bound and it is flat at the upper bound. At a value of -0.5, it is a square root graph again, but rotated 180. | |
| adjPt_maxGrowVal1 | f32 | 0x2c | Determines the exponent used to calculate the curve. The growth values are normalised to be between the level range and the growth range dictated, Such that: 0 level is the lower bound of the stage, and 1 level is the upper bound 0 growth is the lower bound of the stage, and 1 growth is the upper bound This curve is, at a value of 1, linear, meaning direct proportion between each stage. At a value of 2, it is quadratic (in fact, it will be flat exactly at 0, and have steepness 2 at 1) Note that a steepness of 2 means the growth per level is double the average growth per level. At a value of 0.5, it is a square root. Below 0, negative powers are not used as this would create asymptotes and infinite values. Instead, the axes are flipped. If you consider the graph 0 to 1 by 0 to 1, it is rotated 180 degrees. At a value of -1, it is linear again. At a value of -2, it is quadratic, however the origin is at the upper bound. Note this means there is a steepness of 2 at the lower bound and it is flat at the upper bound. At a value of -0.5, it is a square root graph again, but rotated 180. | |
| adjPt_maxGrowVal2 | f32 | 0x30 | Determines the exponent used to calculate the curve. The growth values are normalised to be between the level range and the growth range dictated, Such that: 0 level is the lower bound of the stage, and 1 level is the upper bound 0 growth is the lower bound of the stage, and 1 growth is the upper bound This curve is, at a value of 1, linear, meaning direct proportion between each stage. At a value of 2, it is quadratic (in fact, it will be flat exactly at 0, and have steepness 2 at 1) Note that a steepness of 2 means the growth per level is double the average growth per level. At a value of 0.5, it is a square root. Below 0, negative powers are not used as this would create asymptotes and infinite values. Instead, the axes are flipped. If you consider the graph 0 to 1 by 0 to 1, it is rotated 180 degrees. At a value of -1, it is linear again. At a value of -2, it is quadratic, however the origin is at the upper bound. Note this means there is a steepness of 2 at the lower bound and it is flat at the upper bound. At a value of -0.5, it is a square root graph again, but rotated 180. | |
| adjPt_maxGrowVal3 | f32 | 0x34 | Determines the exponent used to calculate the curve. The growth values are normalised to be between the level range and the growth range dictated, Such that: 0 level is the lower bound of the stage, and 1 level is the upper bound 0 growth is the lower bound of the stage, and 1 growth is the upper bound This curve is, at a value of 1, linear, meaning direct proportion between each stage. At a value of 2, it is quadratic (in fact, it will be flat exactly at 0, and have steepness 2 at 1) Note that a steepness of 2 means the growth per level is double the average growth per level. At a value of 0.5, it is a square root. Below 0, negative powers are not used as this would create asymptotes and infinite values. Instead, the axes are flipped. If you consider the graph 0 to 1 by 0 to 1, it is rotated 180 degrees. At a value of -1, it is linear again. At a value of -2, it is quadratic, however the origin is at the upper bound. Note this means there is a steepness of 2 at the lower bound and it is flat at the upper bound. At a value of -0.5, it is a square root graph again, but rotated 180. | |
| adjPt_maxGrowVal4 | f32 | 0x38 | This value is not used. | |
| init_inclination_soul | f32 | 0x3c | Growth Soul Slope of the early graph 1 | |
| adjustment_value | f32 | 0x40 | Growth soul Early soul adjustment 2 | |
| boundry_inclination_soul | f32 | 0x44 | Affects the slope of the graph after the growth soul threshold 3 | |
| boundry_value | f32 | 0x48 | Growth soul threshold t | |
| pad | dummy8 | 0x4c | This field is padding. |