Difference between revisions of "Talk:Gun Spread Formula"

1,474 bytes added ,  00:47, 29 December 2008
imported>SnakeChomp
(→‎Clearer Formatting: Update my last comment with more information about nonstandard base+mult*value instances)
imported>Quetzilla
Line 79: Line 79:
::::Also, don't forget that this isn't the only formula page. Among all the formula pages, there are three known cases where the ''base + mult * value'' style does not hold. On the [[Weapon Damage Formula]] page you have <tt>WeaponDamage * fDamageSkillBase + ActorSkillValue * fDamageSkillMult</tt>, and on this formula page you have <tt>fGunSpreadWalkBase * (''IsWalking'' || !''IsMoving'') + fGunSpreadWalkMult * ''IsWalking''</tt> and <tt>(fGunSpreadRunBase + fGunSpreadRunMult) * ''isRunning''</tt>. (Note that your mockup page is incorrect when it describes the WalkFactor and RunFactor.) Instead of trying to explain what things like <tt>foo * (''IsWalking'' || !''IsMoving'')</tt> mean, I tried to use regular sentences to say that certain values are 0 in certain situations. In looking at the mockup page using a <tt>foo * ''IsWalking''</tt> style again, it doesn't seem so unreasonable to do it this way, but I am a programmer in my day job, so things like that make perfect sense to me. I cannot really know what makes more sense to non programmers. I think it's safe to say that <tt>fGunSpreadWalkBase * (''IsWalking'' || !''IsMoving'')</tt> would require an english explanation for non programmers to understand it.
::::Also, don't forget that this isn't the only formula page. Among all the formula pages, there are three known cases where the ''base + mult * value'' style does not hold. On the [[Weapon Damage Formula]] page you have <tt>WeaponDamage * fDamageSkillBase + ActorSkillValue * fDamageSkillMult</tt>, and on this formula page you have <tt>fGunSpreadWalkBase * (''IsWalking'' || !''IsMoving'') + fGunSpreadWalkMult * ''IsWalking''</tt> and <tt>(fGunSpreadRunBase + fGunSpreadRunMult) * ''isRunning''</tt>. (Note that your mockup page is incorrect when it describes the WalkFactor and RunFactor.) Instead of trying to explain what things like <tt>foo * (''IsWalking'' || !''IsMoving'')</tt> mean, I tried to use regular sentences to say that certain values are 0 in certain situations. In looking at the mockup page using a <tt>foo * ''IsWalking''</tt> style again, it doesn't seem so unreasonable to do it this way, but I am a programmer in my day job, so things like that make perfect sense to me. I cannot really know what makes more sense to non programmers. I think it's safe to say that <tt>fGunSpreadWalkBase * (''IsWalking'' || !''IsMoving'')</tt> would require an english explanation for non programmers to understand it.
::::--[[User:SnakeChomp|SnakeChomp]] 03:40, 29 December 2008 (UTC)
::::--[[User:SnakeChomp|SnakeChomp]] 03:40, 29 December 2008 (UTC)
::indenting for clarity:
::I hadn't looked at the weapon damage formula page, but looking at it now, I can tell you that it's wrong in terms of the example you listed above:
<tt>WeaponDamage * fDamageSkillBase + ActorSkillValue * fDamageSkillMult</tt>
::should be
<tt>WeaponDamage * (fDamageSkillBase + (fDamageSkillMult * ActorSkillValue))</tt>
::According to your formula, weapon damage as listed in the GECK is cut in half, and then (skill*0.5) is added to the damage.  If that were true, then at 100 skill, each weapon would do damage equal to: BaseWeapDmg/2 + 50!  Which is obviously wrong.  When you use my formula above, you discover that the full damage formula becomes:
<tt>BaseWeaponDamage * ConditionFactor * SkillFactor</tt>
::Where each Factor is a proper base/mult pair.
::This is how Bethesda sets up their formulas, so that you have a base value and then you add or multiply related values, where each value is a base/mult pair.  Gun Spread is just confusing because the aim is a lower value, rather than higher in the case of weapons, and we don't have a concrete way of measuring the exact final spread to be 100% confident that the formula is correct, such as in this case:
<tt>fGunSpreadWalkBase * (''IsWalking'' || !''IsMoving'') + fGunSpreadWalkMult * ''IsWalking''</tt>
::where I'm not 100% sure that that's actually true, but I'm taking your word on it because I'm too lazy to test it.
::--[[User:Quetzilla|Quetzilla]] 04:47, 29 December 2008 (UTC)


== Formula still needs work ==
== Formula still needs work ==
Anonymous user