Non-military rifle spawn audit

I’ve often been annoyed by my inability to find common weapons and the strange plethora of somewhat exotic ones found ingame. I’d like to discuss several itemgroups in particular that I find annoying, provide potential changes as well as sources backing up why I want to change them, and receive feedback on those proposed changes.
The first itemgroup I would like to audit is cop_weapons as it started this desire for an audit in me.
It is the itemgroup used in Police Cars and police zombies and is the source of most of the Cx4 Storms I find ingame. After doing a little research it appears the Cx4 and the P90 are very rarely used by police in the US, and the MP5 is mostly used by SWAT officers. The longguns_cop itemgroup that is a subset of the cop_weapons group has the following items in it;

  { "item": "ar15", "prob": 15, "charges": [ 0, 30 ] },
  { "item": "cx4", "prob": 20, "charges": [ 0, 15 ] },
  { "item": "fn_p90", "prob": 5, "charges": [ 0, 50 ] },
  { "item": "hk_mp5", "prob": 10, "charges": [ 0, 30 ] },
  { "item": "mossberg_500", "prob": 15, "charges": [ 0, 6 ] },
  { "item": "remington_700", "prob": 5, "charges": [ 0, 4 ] },
  { "item": "remington_870", "prob": 20, "charges": [ 0, 5 ] }

I would suggest that Cx4s, P90s, and MP5s be removed from this list. It should probably look something like this.

  { "item": "ar15", "prob": 20, "charges": [ 0, 30 ] },
  { "item": "mossberg_500", "prob": 10, "charges": [ 0, 6 ] },
  { "item": "remington_700", "prob": 5, "charges": [ 0, 4 ] },
  { "item": "remington_870", "prob": 10, "charges": [ 0, 5 ] }

This would mean that you have an equal shot at a shotgun or an AR-15, with a much lower chance for a remington 700.

The second itemgroup I’d like to look at is guns_survival which is used in basement gunsafes, mansions, LMOE shelters, bandit camps, and survivor zombies.

  { "group": "guns_improvised", "prob": 200 },
  { "item": "ar15", "prob": 5, "charges-min": 0, "charges-max": 30 },
  { "item": "ar_pistol", "prob": 3, "charges-min": 0, "charges-max": 30 },
  { "item": "mossberg_500", "prob": 5, "charges-min": 0, "charges-max": 6 },
  { "item": "remington_870", "prob": 5, "charges-min": 0, "charges-max": 5 },
  { "item": "ruger_1022", "prob": 15, "charges-min": 0, "charges-max": 10 },
  { "item": "shotgun_410", "prob": 10, "charges-min": 0, "charges-max": 1 },
  { "item": "shotgun_s", "prob": 10 },
  { "item": "shotgun_d", "prob": 10, "charges-min": 0, "charges-max": 2 },
  { "item": "sten", "prob": 20, "charges-min": 0, "charges-max": 32 },
  { "item": "sks", "prob": 10, "charges-min": 0, "charges-max": 10 },
  { "item": "aksemi", "prob": 5, "charges-min": 0, "charges-max": 30 }

This is much less clear cut. To start off I’ll list the guns I have numbers on. All numbers are averages of estimates I will provide sources of later. The AR number is for estimates in the US in civilian hands, all others are total production numbers.
AR-15: 14.8 million
Mossberg 500: 10 million
Remington 870: 11 million
Ruger 10/22: 6.5 million
Winchester M37 (shotgun_410 here, it’s specified as that model elsewhere): 1,015,554
SKS: 900 thousand (chinese only, very rough estimate)

Single and double barrel shotguns aren’t given model listings and would thus be extremely difficult (and fruitless) to try to aggregate.
Sten guns are vanishingly rare, you’d only expect them in museums and mansions.
Semi auto AKs I couldn’t find any numbers on. These are 7.62x39mm only and not 74 derivatives but regardless I couldn’t find any estimates.
I also couldn’t find any numbers for AR pistols, but would like to take the opportunity to say it should use the Rifles skill unless Zombie ATF Agents are added.

Now, obviously these guns aren’t meant to represent a perfectly average sample of american longarms, but neither is it currently representing guns you’d expect to be scrounged later after the best targets have already been hit as it doesn’t contain any hunting rifles.
Given all this, here is what I would suggest changing this itemgroup to.

  { "group": "guns_improvised", "prob": 150 },
  { "item": "ar15", "prob": 13, "charges-min": 0, "charges-max": 30 },
  { "item": "ar_pistol", "prob": 2, "charges-min": 0, "charges-max": 30 },
  { "item": "mossberg_500", "prob": 10, "charges-min": 0, "charges-max": 6 },
  { "item": "remington_870", "prob": 11, "charges-min": 0, "charges-max": 5 },
  { "item": "ruger_1022", "prob": 7, "charges-min": 0, "charges-max": 10 },
  { "item": "shotgun_410", "prob": 1, "charges-min": 0, "charges-max": 1 },
  { "item": "shotgun_s", "prob": 10 },
  { "item": "shotgun_d", "prob": 10, "charges-min": 0, "charges-max": 2 },
  { "item": "sks", "prob": 1, "charges-min": 0, "charges-max": 10 },
  { "item": "aksemi", "prob": 2, "charges-min": 0, "charges-max": 30 },
  { "item": "mosin44", "prob": 2, "charges-min": 0, "charges-max": 5 },
  { "item": "remington700_270", "prob": 1, "charges-min": 0, "charges-max": 4 },
  { "item": "remington_700", "prob": 4, "charges-min": 0, "charges-max": 4 },
  { "item": "garand", "prob": 1, "charges-min": 0, "charges-max": 8 }

When available I change the probability to the number of millions of examples in the US. For double and single barrel 12 gauges as well as semi auto AKs I guessed, while Garands I put at 1 because it seemed to be under 1 million in the US market. I reduced the improvised gun probability to keep it at a roughly 2:1 ratio as it was before.

Next I’ll look at guns_rifle_common, which is probably the most egregious itemgroup I’ve yet seen. I’ll just post it so you can see it’s nonsensical wonder.

  { "item": "browning_blr", "prob": 25, "charges-min": 0, "charges-max": 4 },
  { "item": "ar_pistol", "prob": 52, "charges-min": 0, "charges-max": 30 },
  { "item": "garand", "prob": 65, "charges-min": 0, "charges-max": 8 },
  { "item": "ar10", "prob": 20, "charges-min": 0, "charges-max": 20 },
  { "item": "ar15", "prob": 30, "charges-min": 0, "charges-max": 30 },
  { "item": "cx4", "prob": 45, "charges-min": 0, "charges-max": 15 },
  { "item": "ksub2000", "prob": 30, "charges-min": 0, "charges-max": 15 },
  { "item": "m1a", "prob": 50, "charges-min": 0, "charges-max": 5 },
  { "item": "marlin_9a", "prob": 80, "charges-min": 0, "charges-max": 19 },
  { "item": "mosin44", "prob": 15, "charges-min": 0, "charges-max": 5 },
  { "item": "mosin91_30", "prob": 25, "charges-min": 0, "charges-max": 5 },
  { "item": "remington700_270", "prob": 50, "charges-min": 0, "charges-max": 4 },
  { "item": "ruger_1022", "prob": 70, "charges-min": 0, "charges-max": 10 },
  { "item": "ruger_mini", "prob": 60, "charges-min": 0, "charges-max": 5 },
  { "item": "sks", "prob": 40, "charges-min": 0, "charges-max": 10 },
  { "item": "win70", "prob": 15, "charges-min": 0, "charges-max": 3 },
  { "item": "1895sbl", "prob": 15, "charges-min": 0, "charges-max": 6 },
  { "item": "aksemi", "prob": 35, "charges-min": 0, "charges-max": 30 }

Wow, so this is bad. Mini 14s are twice as likely as AR-15s despite there being fifteen times as many in the US. A lot of these are difficult or impossible to find numbers for. Those will default to 1.

  { "item": "browning_blr", "prob": 1, "charges-min": 0, "charges-max": 4 },
  { "item": "ar_pistol", "prob": 1, "charges-min": 0, "charges-max": 30 },
  { "item": "garand", "prob": 1, "charges-min": 0, "charges-max": 8 },
  { "item": "ar10", "prob": 1, "charges-min": 0, "charges-max": 20 },
  { "item": "ar15", "prob": 15, "charges-min": 0, "charges-max": 30 },
  { "item": "cx4", "prob": 1, "charges-min": 0, "charges-max": 15 },
  { "item": "ksub2000", "prob": 1, "charges-min": 0, "charges-max": 15 },
  { "item": "m1a", "prob": 1, "charges-min": 0, "charges-max": 5 },
  { "item": "marlin_9a", "prob": 2, "charges-min": 0, "charges-max": 19 },
  { "item": "mosin44", "prob": 1, "charges-min": 0, "charges-max": 5 },
  { "item": "mosin91_30", "prob": 1, "charges-min": 0, "charges-max": 5 },
  { "item": "remington700_270", "prob":1, "charges-min": 0, "charges-max": 4 },
  { "item": "remington_700", "prob": 4, "charges-min": 0, "charges-max": 4 },
  { "item": "ruger_1022", "prob": 7, "charges-min": 0, "charges-max": 10 },
  { "item": "ruger_mini", "prob": 1, "charges-min": 0, "charges-max": 5 },
  { "item": "sks", "prob": 1, "charges-min": 0, "charges-max": 10 },
  { "item": "win70", "prob": 2, "charges-min": 0, "charges-max": 3 },
  { "item": "1895sbl", "prob": 1, "charges-min": 0, "charges-max": 6 },
  { "item": "aksemi", "prob": 2, "charges-min": 0, "charges-max": 30 }

I will copy the probabilities here to the unloaded itemgroup which is otherwise identical.
I’ve reviewed the other rifle itemgroups and for the most part I can’t think of an objective way to change them. I believe they would be better made sane by an audit of where they’re used. For example, guns_rifle_milspec is used in gun stores, the vast majority of which do not have full auto current issue rifles in reality. I believe an audit of police stations, gun stores, police vehicles, hunting supply/outdoorsman stores and similar should be done later to make sure they’re in line with reality.

Here is a list of my data which admittedly has many holes in it and not great sources. https://docs.google.com/spreadsheets/d/1LCLrshdFdZxvUPBFY15MbTfqAcOXrUbwP8yUSSNiV_s/edit?usp=sharing

I’m going to make a PR and link here so I don’t have to rewrite all of this.

1 Like

Sounds reasonable and in line with what the devs are going for. You should make a PR to fix things.

https://github.com/CleverRaven/Cataclysm-DDA/pull/43978 Did so

2 Likes