diff --git a/FModel/Creator/Bases/FN/BaseIconStats.cs b/FModel/Creator/Bases/FN/BaseIconStats.cs index 5db374fb..35a04550 100644 --- a/FModel/Creator/Bases/FN/BaseIconStats.cs +++ b/FModel/Creator/Bases/FN/BaseIconStats.cs @@ -84,40 +84,47 @@ public class BaseIconStats : BaseIcon weaponStatHandle.TryGetValue(out UDataTable dataTable, "DataTable") && dataTable.TryGetDataTableRow(weaponRowName.Text, StringComparison.OrdinalIgnoreCase, out var weaponRowValue)) { - if (weaponRowValue.TryGetValue(out int bpc, "BulletsPerCartridge")) + weaponRowValue.TryGetValue(out float dmgPb, "DmgPB"); //Damage at point blank + weaponRowValue.TryGetValue(out float mdpc, "MaxDamagePerCartridge"); //Max damage a weapon can do in a single hit, usually used for shotguns + weaponRowValue.TryGetValue(out float dmgCritical, "DamageZone_Critical"); //Headshot multiplier + weaponRowValue.TryGetValue(out int clipSize, "ClipSize"); //Item magazine size + weaponRowValue.TryGetValue(out float firingRate, "FiringRate"); //Item firing rate, value is shots per second + weaponRowValue.TryGetValue(out float armTime, "ArmTime"); //Time it takes for traps to be able to be set off + weaponRowValue.TryGetValue(out float reloadTime, "ReloadTime"); //Time it takes for a weapon to reload + weaponRowValue.TryGetValue(out int bpc, "BulletsPerCartridge"); //Amount of pellets shot by a weapon at once, usually for shotguns { var multiplier = bpc != 0f ? bpc : 1; - if (weaponRowValue.TryGetValue(out float dmgPb, "DmgPB") && dmgPb != 0f) + if (dmgPb != 0f) { _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "35D04D1B45737BEA25B69686D9E085B9", "Damage"), dmgPb * multiplier, 200)); } - if (weaponRowValue.TryGetValue(out float mdpc, "MaxDamagePerCartridge") && mdpc >= 0f) + if (mdpc > 0f && dmgPb * dmgCritical * multiplier > mdpc) { _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "0DEF2455463B008C4499FEA03D149EDF", "Headshot Damage"), mdpc, 200)); } - else if (weaponRowValue.TryGetValue(out float dmgCritical, "DamageZone_Critical")) + + else if (dmgCritical != 0f) { _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "0DEF2455463B008C4499FEA03D149EDF", "Headshot Damage"), dmgPb * dmgCritical * multiplier, 200)); } } - - if (weaponRowValue.TryGetValue(out int clipSize, "ClipSize") && clipSize != 0) + if (clipSize != 0) { _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "068239DD4327B36124498C9C5F61C038", "Magazine Size"), clipSize, 50)); } - if (weaponRowValue.TryGetValue(out float firingRate, "FiringRate") && firingRate != 0f) + if (firingRate != 0f) { _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "27B80BA44805ABD5A2D2BAB2902B250C", "Fire Rate"), firingRate, 15)); } - if (weaponRowValue.TryGetValue(out float armTime, "ArmTime") && armTime != 0f) + if (armTime != 0f) { - _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "3BFEB8BD41A677CC5F45B9A90D6EAD6F", "Arming Delay"), armTime, 125)); + _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "3BFEB8BD41A677CC5F45B9A90D6EAD6F", "Arming Delay"), armTime, 5)); } - if (weaponRowValue.TryGetValue(out float reloadTime, "ReloadTime") && reloadTime != 0f) + if (reloadTime != 0f) { _statistics.Add(new IconStat(Utils.GetLocalizedResource("", "6EA26D1A4252034FBD869A90F9A6E49A", "Reload Time"), reloadTime, 15)); }