| Latest revision |
Your text |
| Line 1: |
Line 1: |
| {{plink|Fire Rate}}, also known as '''Bullets Per Second''', is a stat that | | {{plink|Fire Rate}}, also known as '''Bullets per sec''', is a stat that determines the amount of [[ammo]] that will be fired by the weapon per second. Several heroes have abilities that can increase their fire rates to shoot faster, but it can also be decreased, primarily through other enemy's items. |
| determines the amount of [[ammo]] that will be fired by the weapon per second. | |
| Its inverse is called ''gun cycle time'', which instead measures
| |
| '''seconds per bullet'''.
| |
|
| |
|
| Several heroes have [[abilities]] that increase their Fire Rate to shoot faster,
| | == Sources == |
| and it can also be decreased, primarily through enemy [[items]]. All bonuses and
| |
| slows are combined into a single '''total modifier''', which is then applied to
| |
| the hero's base Fire Rate.
| |
| | |
| == Calculation ==
| |
| === Total modifier ===
| |
| Bonuses and slows are combined under separate rules: positive bonuses are additive, while slows are multiplicative.
| |
| | |
| :<math>\text{Total Modifier} = (\text{Sum of Bonuses}) - \left(1 - \text{Total Slows}\right)</math>
| |
| | |
| Where:
| |
| * '''Sum of Bonuses''' = all positive bonuses added together (e.g., {{#tag:math|{{#expr: {{DataProp|Ricochet|BonusFireRate}}/100 }} + {{#expr: {{DataProp|Swift Striker|BonusFireRate}}/100 }} }})
| |
| * '''Total Slows''' = the result of multiplying the remaining values of each slow: <math>(1 - \text{Slow}_1) \times (1 - \text{Slow}_2) \times \dots</math>
| |
| | |
| Any total modifier lower than '''-50%''' is capped at that value.
| |
| | |
| === Applying the modifier ===
| |
| The total modifier is not applied the same way in both directions. Its effect depends on its sign:
| |
| | |
| * If the total modifier is '''positive''', it increases Fire Rate directly:
| |
| :<math>\text{Final Fire Rate} = \text{Base Fire Rate} \times (1 + \text{Total Modifier})</math>
| |
| * If the total modifier is '''negative''', it instead increases the gun cycle time, the interval between shots:
| |
| :<math>\text{Final Fire Rate} = \frac{\text{Base Fire Rate}}{1 + |\text{Total Modifier}|}</math>
| |
| | |
| Because a negative modifier lengthens the interval rather than shortening the rate, it reduces the number of bullets fired per second by less than its stated value:
| |
| * A '''-10%''' modifier leaves '''{{#expr: 100 / 1.1 round 1}}%''' of base Fire Rate.
| |
| * A '''-25%''' modifier leaves '''{{#expr: 100 / 1.25 round 1}}%''' of base Fire Rate.
| |
| * A '''-50%''' modifier, the maximum, leaves '''{{#expr: 100 / 1.5 round 1}}%''' of base Fire Rate, a reduction of only {{#expr: 100 - 100 / 1.5 round 1}}% in bullets per second.
| |
| | |
| Positive modifiers have no equivalent discrepancy: a +50% modifier grants a full 50% more bullets per second. The in-game UI reports the total modifier itself, not the resulting change in bullets per second.
| |
| | |
| === Examples ===
| |
| ==== Combined bonuses and slows ====
| |
| For an example with multiple sources:
| |
| * '''+{{DataProp|Ricochet|BonusFireRate}}%''' Fire Rate from {{ItemIcon|Ricochet}}
| |
| * '''+{{DataProp|Swift Striker|BonusFireRate}}%''' Fire Rate from {{ItemIcon|Swift Striker}}
| |
| * '''-{{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}%''' Fire Rate Slow from {{HeroIcon|Sinclair}}'s {{AbilityIcon|Vexing Bolt}}
| |
| * '''-{{DataProp|Suppressor|FireRateSlow}}%''' Fire Rate Slow from an enemy's {{ItemIcon|Suppressor}}
| |
| | |
| First, the groups are calculated separately:
| |
| * '''Bonuses:''' {{#tag:math|{{#expr: {{DataProp|Ricochet|BonusFireRate}}/100 }} + {{#expr: {{DataProp|Swift Striker|BonusFireRate}}/100 }} {{=}} {{#expr: ({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 }} }}
| |
| * '''Slows:''' {{#tag:math|(1 - {{#expr: {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100 }}) \times (1 - {{#expr: {{DataProp|Suppressor|FireRateSlow}}/100 }}) {{=}} {{#expr: 1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100 }} \times {{#expr: 1 - {{DataProp|Suppressor|FireRateSlow}}/100 }} {{=}} {{#expr: (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100) }} }}
| |
| | |
| They are then combined into the total modifier:
| |
| :{{#tag:math|\text{Total Modifier} {{=}} {{#expr: ({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 }} - (1 - {{#expr: (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100) }}) {{=}} {{#expr: ({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 }} - {{#expr: 1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100) }} {{=}} {{#expr: (({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100))) round 4 }} }}
| |
| | |
| Because the total modifier is negative, it is applied to the gun cycle time:
| |
| :{{#tag:math|\text{Final Fire Rate} {{=}} \frac{\text{Base Fire Rate} }{1 + {{#expr: abs(({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100))) round 4 }} } {{=}} {{#expr: (1 / (1 + abs(({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100))))) round 3 }} \times \text{Base Fire Rate} }}
| |
| | |
| The hero therefore fires '''{{#expr: ((1 - 1 / (1 + abs(({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100))))) * 100) round 1 }}%''' fewer bullets per second, while the in-game UI displays the total modifier of '''{{#expr: (({{DataProp|Ricochet|BonusFireRate}} + {{DataProp|Swift Striker|BonusFireRate}})/100 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100))) * 100 round 0 }}%''', rounded to the nearest whole number.
| |
| | |
| ==== Maximum slow reduction ====
| |
| For an example with only slows applied:
| |
| * No positive Fire Rate bonuses (0)
| |
| * '''-{{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}%''' Fire Rate Slow from {{HeroIcon|Sinclair}}'s {{AbilityIcon|Vexing Bolt}}
| |
| * '''-{{DataProp|Suppressor|FireRateSlow}}%''' Fire Rate Slow from an enemy's {{ItemIcon|Suppressor}}
| |
| * '''-{{DataProp|Rusted Barrel|FireRateSlow}}%''' Fire Rate Slow from an enemy's {{ItemIcon|Rusted Barrel}}
| |
| | |
| The calculation is:
| |
| :{{#tag:math|0 - (1 - ({{#expr: 1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100 }} \times {{#expr: 1 - {{DataProp|Suppressor|FireRateSlow}}/100 }} \times {{#expr: 1 - {{DataProp|Rusted Barrel|FireRateSlow}}/100 }}))}}
| |
| :{{#tag:math|0 - (1 - {{#expr: (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100) * (1 - {{DataProp|Rusted Barrel|FireRateSlow}}/100) }}) {{=}} {{#expr: (0 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100) * (1 - {{DataProp|Rusted Barrel|FireRateSlow}}/100))) round 4 }} }}
| |
| | |
| This results in a calculated modifier of '''{{#expr: (0 - (1 - (1 - {{DataProp|Vexing Bolt|Upgrades.1.FireRateSlow}}/100) * (1 - {{DataProp|Suppressor|FireRateSlow}}/100) * (1 - {{DataProp|Rusted Barrel|FireRateSlow}}/100))) * 100 round 2 }}%'''. Due to the cap, the value is raised to the maximum of '''-50%''', which is then applied to the gun cycle time:
| |
| :{{#tag:math|\text{Final Fire Rate} {{=}} \frac{\text{Base Fire Rate} }{1 + 0.5} {{=}} {{#expr: 1 / 1.5 round 3 }} \times \text{Base Fire Rate} }}
| |
| | |
| Even under the maximum possible slow, the hero still fires two thirds of the bullets per second of an unslowed hero.
| |
| | |
| == Base Fire Rate ==
| |
| Values referenced from [[Hero Comparison Table]].
| |
| | |
| {{#invoke:HeroDataArrays|heroRoundsPerSecondTable}}
| |
| Notes:
| |
| * Due to a bug, {{HeroIcon|The Doorman}}'s and {{HeroIcon|Paige}}'s weapons have incorrect fire rate values listed in the game UI. The values listed here are accurate.
| |
| * {{HeroIcon|McGinnis}}' and {{HeroIcon|Victor}}'s weapons have a wind-up time before reaching maximum fire rate.
| |
| | |
| == Sources == | |
| === Fire Rate === | | === Fire Rate === |
| {{Item stat table|Fire Rate}} | | {{Item stat table|Fire Rate}} |
| * {{ItemIcon|Burst Fire}} additionally increases Fire Rate by +{{#invoke:ItemData|get_prop|Burst Fire|ActivatedFireRate}}% for {{#invoke:ItemData|get_prop|Burst Fire|AbilityDuration}} seconds after hitting an enemy hero. | | * {{ItemIcon|Burst Fire}} additionally increases Fire Rate by +30% after hitting an enemy hero for four seconds. |
| * {{ItemIcon|Heroic Aura}}'s Fire Rate bonus is doubled for nearby player minions within its {{#invoke:ItemData|get_prop|Heroic Aura|ActiveRadius}} radius. | | * {{ItemIcon|Heroic Aura}} increases Fire Rate by +40% to nearby player minions in a 20m radius. |
| * {{ItemIcon|Golden Goose Egg}} grants random [[Permanent Buffs]], including Fire Rate.
| |
| ==== Map Spawns ====
| |
| * [[Golden Statue]]s can provide a permanent increase: +'''{{MiscData|firerate_permanent_pickup|Modifer|ScriptValues|1|value}}'''% Fire Rate before 10 minutes, +'''{{MiscData|firerate_permanent_pickup_lv2|Modifer|ScriptValues|1|value}}'''% Fire Rate after 10 minutes, and +'''{{MiscData|firerate_permanent_pickup_lv3|Modifer|ScriptValues|1|value}}'''% Fire Rate after 30 minutes.
| |
| * [[Powerup]] runes can provide a temporary Gun buff that provides +'''{{MiscData|gun_powerup_pickup|Modifer|ModifierValues|1|valueMin}}'''% to +'''{{MiscData|gun_powerup_pickup|Modifer|ModifierValues|1|valueMax}}'''% Fire Rate for {{MiscData|casting_powerup_pickup|Modifer|Duration}} seconds (scaling with game time from 5 to 40 minutes).
| |
|
| |
|
| === Fire Rate Slow === | | === Fire Rate Slow === |
| {{Item stat table|Fire Rate Slow}} | | {{Item stat table|Fire Rate Slow}} |
| | |
| | === Map spawns === |
| | * [[Golden Statue]]s can provide a permanent increase: +<b>1.5</b>% Fire Rate before 15 minutes, or +<b>2</b>% Fire Rate after 15 minutes. |
| | * Power up runes can provide a temporary Gun buff that provides +<b>20</b>% Fire Rate for 160 seconds. |
|
| |
|
| {{Stat Navbox}} | | {{Stat Navbox}} |
| [[Category:Stats]]
| |