-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Kai the Calamitous
— 11/5/25, 4:53 AM
@darkwind the Dark Duck
Image
Image
I don't know why but there seems to be a discrepancy between the two
Kai the Calamitous — 11/5/25, 5:01 AM
also, is it just me or are BC autocannons kinda dogshit
Aingar, King of FLServer — 11/5/25, 9:59 AM
Which stat exactly, I'm not seeing the discrepancy
Aingar, King of FLServer — 11/5/25, 10:08 AM
Oh, the sustained dps
Darkwind the Dark Duck — 11/5/25, 11:43 AM
i use next formulas for sustained damage for burst firing guns, i guess u have it differently
num_barrels := 1
if num_barrels_value, ok := gun_info.NumBarrels.GetValue(); ok {
num_barrels = num_barrels_value
gun.NumBarrels = ptr.Ptr(num_barrels_value)
}
if ammo, ok := gun_info.BurstAmmo.GetValue(); ok {
gun.BurstFire = &BurstFire{
Ammo: ammo,
}
gun.BurstFire.ReloadTime = gun_info.BurstReload.Get()
// (magCapacity * RefireDelay + Reload time) / Mag Capacity = This should be average refire delay
gun.BurstFire.SustainedRefire = 1 / ((gun_info.RefireDelay.Get()*float64(gun.BurstFire.Ammo) + gun.BurstFire.ReloadTime) / float64(gun.BurstFire.Ammo))
}
if gun.BurstFire != nil {
gun.BurstFire.SustainedHullDamagePerSec = float64(gun.HullDamage) * gun.BurstFire.SustainedRefire * float64(num_barrels)
gun.BurstFire.SustainedEnergyDamagePerSec = float64(gun.EnergyDamage) * gun.BurstFire.SustainedRefire * float64(num_barrels)
gun.BurstFire.SustainedAvgShieldDamagePerSec = float64(gun.AvgShieldDamage) * gun.BurstFire.SustainedRefire * float64(num_barrels)
gun.BurstFire.SustainedPowerUsagePerSec = float64(gun.PowerUsage) * gun.BurstFire.SustainedRefire * float64(num_barrels)
}
Aingar, King of FLServer
— 11/5/25, 11:44 AM
float damagePerMagazine = max(GetShieldDamage(proj), proj->fHullDamage) * data.magCapacity * barrelCount;
float fullMagazineCycleTime = data.reloadTime * (data.magCapacity / (float)data.reloadAmount);
if (!data.keepReloadingOnFire)
{
fullMagazineCycleTime += (gun->fRefireDelay * data.magCapacity);
}
PrintStat(L"Sustained DPS: ", ftos(damagePerMagazine / fullMagazineCycleTime, 0));
Darkwind the Dark Duck — 11/5/25, 11:46 AM
battlecruiser autocannon has 0.25 average modifier against shields hm, perhaps because of it we see different stuff?
nah, we should be seeing Hull Damage in this case equal between each other
i use gun.BurstFire.SustainedRefire = 1 / ((gun_info.RefireDelay.Get()*float64(gun.BurstFire.Ammo) + gun.BurstFire.ReloadTime) / float64(gun.BurstFire.Ammo))
u use mag capacity, may be that's difference
Aingar, King of FLServer
— 11/5/25, 11:48 AM
Slightly different approaches, yes
I just calculate the time to reload a full magazine and dump it divided by damage dealt by that magazine
the dumping part only is included if the reload timer resets upon firing
otherwise only reload time is important since you can dump it while the next magazine is loading
Darkwind the Dark Duck — 11/5/25, 11:51 AM
in its turn i just tried to calculate refire rate in sustained way we can say khm
gun.BurstFire.SustainedRefire = 1 / ((gun_info.RefireDelay.Get()*float64(gun.BurstFire.Ammo) + gun.BurstFire.ReloadTime) / float64(gun.BurstFire.Ammo))
(Ammo * delay + reload time) / Why is it divided by ammo khm?
// (magCapacity * RefireDelay + Reload time) / Mag Capacity = This should be average refire delay ah u told me this
that's how this formula got born
Aingar, King of FLServer
— 11/5/25, 11:54 AM
You don't seem to include the 'keep reloading on fire' variable at all
that one is somewhat new
Also I'm not sure if your reload time takes the reload amount into consideration
Darkwind the Dark Duck — 11/5/25, 11:55 AM
burst_fire = 25, 1, 5, false fourth value i presume
Aingar, King of FLServer
— 11/5/25, 11:55 AM
a weapon with reloadamount of 5 and capacity of 10 would need to run the reload timer twice to fully reload
Aingar, King of FLServer
— 11/5/25, 11:55 AM
Yes, that's the 'keep reloading on fire'
Darkwind the Dark Duck — 11/5/25, 11:56 AM
remind me description of other burst_fire values all
so i could match them to your formula
i suspect third value is reload_amount
BurstAmmo: semantic.NewInt(section, cfg.Key("burst_fire")),
BurstReload: semantic.NewFloat(section, cfg.Key("burst_fire"), semantic.Precision(2), semantic.OptsF(semantic.Order(1))),
NumBarrels: semantic.NewInt(section, cfg.Key("num_barrels")),
I read only first two burst fire values 😄
third value is new to me too
Aingar, King of FLServer
— 11/5/25, 11:57 AM
burst_fire = intMagCapacity, floatReloadTime, intReloadAmount, boolKeepReloadWhenFiring
Darkwind the Dark Duck — 11/5/25, 11:59 AM
all right, that will be enough information for me to fix stuff
Aingar, King of FLServer
— 11/5/25, 12:00 PM
if reloadAmount is 0, assume it's the same as maxCapacity
unsure how Haste populated those values
Metadata
Metadata
Assignees
Labels
Type
Projects
Status