Blaze Away Rounding Issue causing unexpected behaviour with stacks

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
}
6 Likes

Just dropping some links so you don’t have to assume pseudocode:

Blaze away should simply build stacks every (correctly rounded) 10% of the BASE mag capacity of a weapon.
Even if the numbers were not rounded up every time, a bunch of weapons would still require a larger number of shots to stack up the blessing, when they have a higher ammo stat.
(which makes the weapon with higher ammo stat weaker, when engaging in firefights that do not involve emptying the entire mag at once).

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.