Issue Description:
When using a Ripper Gun with a clip size of 20, continuous fire means you accumulate 5 stacks of Blaze Away after 10 rounds of continuous shooting.
However, when using a Ripper Gun with a clip size of 21, continuous fire means you accumulate 5 stacks of Blaze away after 15 rounds of continuous shooting.
By adding 1 to our max clip size, we have increased the number of bullets we need to fire to get max Blaze away by 5.
Steps to Reproduce:
Simply take any Ripper Gun with 20 ammo and fire it in the Psykanium and observe the stacks. Then repeat the process with any Ripper gun with 21 ammo.
Likely Cause
The likely cause of this is due to the implementation of the Blaze Away blessing. Below is likely the pseudocode I suspect is used.
BulletsPerStackofBlazeAway = ceil(ClipSize/10)
BulletsFired = 0
if (ShotFired){
BulletsFired++
BlazeAwayCooldownReset()
if (BulletsFired == BulletsPerStackofBlazeAway){
BlazeAwayStacks = min (BlazeAwayStacks+1,5)
BulletsFired = 0
}
}
if (BlazeAwayCooldownExpire==true){
BulletsFired = 0
BlazeAwayStacks = 0
}
The above code causes the issue where a clip size of 20/10 = 2, while a clip size of 21/10 = 2.1, which gets rounded up to 3. Thus you need 2 shots per stack of blaze away for 20 size clips, but 3 shots per stack of blaze away for 21 size clips
Solution
The better way to do this is to keep track of the number of bullets continuously fired, and setting the stacks to be equal to the BulletsFired * 10/max(10,ClipSize). The purpose of max(10,Clipsize) is to ensure Blaze Away works with clip size 1 weapons such as the rumbler by ensuring you never get more than 1 stack per shot fired. See the code below.
BulletsFired = 0
if (ShotFired){
BulletsFired++
BlazeAwayCooldownReset()
BlazeAwayStacks = min (ceil(BulletsFired*10/max(10,ClipSize)),5)
}
if (BlazeAwayCooldownExpire==true){
BulletsFired = 0
BlazeAwayStacks = 0
}