Difference between revisions of "Template:Cs-solve"
Line 34: | Line 34: | ||
And 'raw' or 'log' is not currently implemented. | And 'raw' or 'log' is not currently implemented. | ||
+ | |||
''x'' is always the changing value you want to generate the final result for. This may be a combination of talents, stats, or something else; it's up to you to provide meaningful values. In the example above, ''x'' is defined as 0.07*Str*talent_level. | ''x'' is always the changing value you want to generate the final result for. This may be a combination of talents, stats, or something else; it's up to you to provide meaningful values. In the example above, ''x'' is defined as 0.07*Str*talent_level. | ||
Line 42: | Line 43: | ||
*x_low=0 | *x_low=0 | ||
*y_high=40 | *y_high=40 | ||
− | * | + | *x_high=35 |
*power, shift, add have default values | *power, shift, add have default values | ||
+ | |||
+ | Therefore: | ||
combatScale(self:getStr(7, true) * self:getTalentLevel(t), 5, 0, 40, 35) for (str=30, talent_level=3) is: | combatScale(self:getStr(7, true) * self:getTalentLevel(t), 5, 0, 40, 35) for (str=30, talent_level=3) is: | ||
− | <pre>{{cs-solve|x=6.3|y_low=5|x_low=0|y_high=40| | + | <pre>{{cs-solve|x=6.3|y_low=5|x_low=0|y_high=40|x_high=35}}</pre> = {{cs-solve|x=6.3|y_low=5|x_low=0|y_high=40|x_high=35}} |
Latest revision as of 15:00, 1 March 2016
This template is used to generate values for scaling which uses the combatScale function. See also: Template:cs.
Contents
Format
{{cs-solve |x= |y_low= |x_low= |y_high= |x_high= |power= (default 0.5, optional) |shift= (default 0, optional) |add= (default 0, optional) |digit= (default 0, optional) }}
Use
When given a function of type:
combatScale(self:getStr(7, true) * self:getTalentLevel(t), 5, 0, 40, 35)
These values map to:
combatScale(x, y_low, x_low, y_high, x_high, power, add, shift)
And 'raw' or 'log' is not currently implemented.
x is always the changing value you want to generate the final result for. This may be a combination of talents, stats, or something else; it's up to you to provide meaningful values. In the example above, x is defined as 0.07*Str*talent_level.
Therefore, we can use the following:
- x=(input desired value)
- y_low=5
- x_low=0
- y_high=40
- x_high=35
- power, shift, add have default values
Therefore:
combatScale(self:getStr(7, true) * self:getTalentLevel(t), 5, 0, 40, 35) for (str=30, talent_level=3) is:
{{cs-solve|x=6.3|y_low=5|x_low=0|y_high=40|x_high=35}}= 19.85
Other parameters
digit defines the rounding of the final result. If digit=1, it will be rounded to the nearest whole number. Otherwise (if omitted), it will be rounded to two decimal places.
You should not usually need to override these.
Math
(replace all 'high' with 'y_high', 'low' with 'y_low') Input: power(=0), add(=0), shift(=0), x_low (=1), x_high(=5), y_low, y_high, (raw or log), t
Psuedo code for m:
- m = (y_high - y_low) / ( (x_high+shift)^power - (x_low+shift)^power )
- Expr for m: {{#expr:( ( {{{high|0}}} - {{{low|0}}} )/( ( {{{x_high|5}}} + {{{shift|0}}} )^ {{{power|0.5}}} - ( {{{x_low|1}}} + {{{shift|0}}} )^ {{{power|0.5}}} )) }}
Psuedo code for b:
- b = low - m*(x_low+shift)^power
- Expr for b (unexpanded): {{#expr:{{{low|0}}} - (m)*({{{xlow|1}}}+{{{shift|0}}})^{{{power|0.75}}} }}
- Expr for b (expanded): {{#expr:{{{low|0}}} - ({{#expr:( ( {{{high|0}}} - {{{low|0}}} )/( ( {{{x_high|5}}} + {{{shift|0}}} )^ {{{power|0.5}}} - ( {{{x_low|1}}} + {{{shift|0}}} )^ {{{power|0.5}}} )) }} )*({{{x_low|1}}}+{{{shift|0}}})^{{{power|0.75}}} }}
Psuedo code for the whole thing:
- Output = m * (t+shift)^power + b + add
- Expr for output (unexpanded): (m)* {{#expr:({{{t|0}}}+{{{shift|0}}})^{{{power|0.5}}} }} + (b) + add
- Expr for output (expanded): {{#expr: ({{#expr:( ( {{{high|0}}} - {{{low|0}}} )/( ( {{{x_high|5}}} + {{{shift|0}}} )^ {{{power|0.5}}} - ( {{{x_low|1}}} + {{{shift|0}}} )^ {{{power|0.5}}} )) }} ) * {{#expr:({{{t|0}}}+{{{shift|0}}})^{{{power|0.5}}} }} + ({{#expr:{{{low|0}}} - ({{#expr:( ( {{{high|0}}} - {{{low|0}}} )/( ( {{{x_high|5}}} + {{{shift|0}}} )^ {{{power|0.5}}} - ( {{{x_low|1}}} + {{{shift|0}}} )^ {{{power|0.5}}} )) }} ) *({{{x_low|1}}}+{{{shift|0}}})^{{{power|0.50}}} }}) + {{{add|0.5}}} }}