# Top 10 Weapons at Every Level: Simulation Results Video & Spreadsheet

## Recommended Posts

Like the title says! Links for spreadsheet and video here. "Best" weapons here had the most kills before exhaustion or before breaking, with results shown for every weapon skill level. More simulations to follow to find the best on other measures: What do you want to see?

Results:

##### Share on other sites

Your explanation of weapon condition is different to what I thought it was - have you checked in the code to confirm that's how it works?

I thought it was chance to lower + (maintenance * 2), e.g. a crowbar would have a 1 in 70 + (maintenance * 2) chance of losing condition per hit.

##### Share on other sites

8 hours ago, Hugo Qwerty said:

Your explanation of weapon condition is different to what I thought it was - have you checked in the code to confirm that's how it works?

I thought it was chance to lower + (maintenance * 2), e.g. a crowbar would have a 1 in 70 + (maintenance * 2) chance of losing condition per hit.

Yeah, that was older Wiki information.  I remember seeing that as before, which I think comes down to the ultimate calculation below and might be something Trombonaut missed.

The 2 * Maintenance value, may be referring the Maintenance "Modifier" that Trombonaut calculated correctly without factoring in it gets doubled afterwards.

The wiki at this time suggests that "The modifier is calculated by adding the Maintenance level with half of the weapon proficiency level rounded down, dividing the result by 2 rounded down, and multiplying by 2."

Putting it into math terms would result in 2 * (RoundDown (Maintenance + (RoundDown(Weapon Skill / 2)) ) / 2).

That is to say that that weapon skills provide half their level as a maintenance bonus to the maintenance skill, and you only get an actual maintenance bonus at every even level.

So the example Trombonaut gave of 4 weapon skill, and 4 maintenance skill.  Should ultimately add 6 to the "Condition Lower Chance One in" value, rather than the 3 he states.  Which will likely have impacts across all of the weapons he tested in this video and how quickly they rise up.

I do have a minor quibble about him calling the odds of losing Condition on a weapon as the "Condition", but that's more due to knowing how the variables are actually referenced on items.  You can view that in the items_weapon.txt which the wiki has excerpts of.  Condition is the remaining number of failures you can have on a weapon, ConditionMax is the maximum amount of those, and then the chance to lose a point of Condition is referenced as "ConditionLowerChanceOneIn" which is what weapons gain a bonus from both Maintenance and relevant Weapon Skill.

##### Share on other sites

Relying on the wiki to be accurate before going to all effort of running these simulations is probably not wise.

Reading the Lua (or the decompiled Java), and testing in game would be better.

##### Share on other sites

3 hours ago, Hugo Qwerty said:

Relying on the wiki to be accurate before going to all effort of running these simulations is probably not wise.

Reading the Lua (or the decompiled Java), and testing in game would be better.

Didn't say that he did rely on the wiki.  But your information is from a much older version of wiki content that you were commenting on.

##### Share on other sites

On 8/19/2022 at 11:33 AM, Hugo Qwerty said:

Relying on the wiki to be accurate before going to all effort of running these simulations is probably not wise.

Reading the Lua (or the decompiled Java), and testing in game would be better.

Don't worry, all comes straight from the java! Annnnd thanks to Reikou's thorough peer review here, I see I definitely completely left out the 2 times multiplier in my spoken example. I just double checked my code though and I caught the multiplier in there, so the numbers should be good.

Full formula in case you're curious (some variables renamed by me for clarity from "var2" etc)  is:

```if (Rand.Next(weapon.getConditionLowerChance() * breakchanceMultiplier + player.getMaintenanceMod() * 2) == 0) {
multiHitConditionAffected = true;```

Here, weapon.getConditionLowerChance is the value from the weapon, breakChanceMultiplier pertains to whether you're hitting a tree or not, and then getMaintenanceMod is like this:

```int maintenanceLevel = this.getPerkLevel(Perks.Maintenance);
maintenanceLevel += this.getWeaponLevel() / 2;
return maintenanceLevel / 2;```

Then as we can see in the full formula, that player.GetMaintenanceMod gets doubled. So to run the example again, 4 maintenance plus 4 weapon skill would give you a "getMaintenanceMod" result of 3, which then gets doubled up in the full formula. If anyone reading this can confirm order of operations for me, I'm pretty sure that in Java, multiplication here is happening before addition, so only the maintenance mod is doubled.

That said I'm just doing this in my spare time as I learn programming as a new hobby outside of work, so any/all of this is highly subject to human error at any point

##### Share on other sites

On 8/19/2022 at 10:24 AM, reikou said:

I do have a minor quibble about him calling the odds of losing Condition on a weapon as the "Condition", but that's more due to knowing how the variables are actually referenced on items.  You can view that in the items_weapon.txt which the wiki has excerpts of.  Condition is the remaining number of failures you can have on a weapon, ConditionMax is the maximum amount of those, and then the chance to lose a point of Condition is referenced as "ConditionLowerChanceOneIn" which is what weapons gain a bonus from both Maintenance and relevant Weapon Skill.

I'm with you on that lol. But, I was trying to explain it to some server friends who don't read the wiki or txt files let alone the code, and "condition" just made more sense to them. Sacrificed some accuracy here for the "focus group"/ audience

##### Share on other sites

4 hours ago, trombonaught said:

I'm with you on that lol. But, I was trying to explain it to some server friends who don't read the wiki or txt files let alone the code, and "condition" just made more sense to them. Sacrificed some accuracy here for the "focus group"/ audience

Yeah, I kinda figured, which is why I said minor quibble.

Thank you also for breaking down the full formula from the game files, glad to see that the Wiki has accurate information on that at this time, and now I know where to look for this in the gamefiles in the future in case there are changes.  Also happy to hear that your code for the tests included the final doubling! I would hate to hear that you had to re-run those tests, so glad it was only the verbal example and not the results impacted.