diff --git a/data/json/itemgroups/Locations_MapExtras/locations.json b/data/json/itemgroups/Locations_MapExtras/locations.json index 82c1d57a54e45..68762a47ca859 100644 --- a/data/json/itemgroups/Locations_MapExtras/locations.json +++ b/data/json/itemgroups/Locations_MapExtras/locations.json @@ -87,16 +87,14 @@ "ammo": 100, "subtype": "distribution", "entries": [ - { "group": "guns_pistol_common", "prob": 20 }, - { "group": "guns_rifle_common", "prob": 20 }, - { "group": "guns_shotgun_common", "prob": 20 }, - { "group": "guns_pistol_obscure", "prob": 60 }, - { "group": "guns_rifle_obscure", "prob": 60 }, - { "group": "guns_shotgun_obscure", "prob": 60 }, - { "group": "guns_survival", "prob": 30 }, - { "group": "ammo_obscure", "prob": 90 }, - { "group": "ammo_reloaded", "prob": 30 }, - { "group": "mags_obscure", "prob": 30 } + { "group": "guns_pistol_common", "prob": 162 }, + { "group": "guns_rifle_common", "prob": 36 }, + { "group": "guns_shotgun_common", "prob": 2 }, + { "group": "guns_pistol_obscure", "prob": 81 }, + { "group": "guns_rifle_obscure", "prob": 18 }, + { "group": "guns_shotgun_obscure", "prob": 1 }, + { "group": "ammo_obscure", "prob": 40 }, + { "group": "mags_obscure", "prob": 40 } ] }, { @@ -106,10 +104,10 @@ "ammo": 100, "subtype": "distribution", "entries": [ - { "group": "guns_pistol_common", "prob": 50 }, - { "group": "guns_rifle_common", "prob": 50 }, - { "group": "guns_shotgun_common", "prob": 50 }, - { "group": "guns_survival", "prob": 100 }, + { "group": "guns_pistol_common", "prob": 81 }, + { "group": "guns_rifle_common", "prob": 18 }, + { "group": "guns_shotgun_common", "prob": 2 }, + { "group": "guns_survival", "prob": 1 }, { "item": "flaregun", "prob": 25 }, { "item": "large_repairkit", "prob": 5, "charges": [ 0, 500 ] }, { "item": "signal_flare", "prob": 20 }, @@ -1473,11 +1471,11 @@ [ "tonfa_wood", 10 ], { "item": "shocktonfa_off", "prob": 25, "charges": [ 0, 500 ] }, { "item": "tazer", "prob": 25, "charges": [ 0, 500 ] }, - { "item": "remington_700", "prob": 5, "charges": [ 0, 4 ] }, - { "item": "3006", "prob": 5, "charges": [ 1, 20 ] }, - { "item": "ksg", "prob": 8, "charges": [ 0, 7 ] }, - { "item": "remington_870_express", "prob": 8, "charges": [ 0, 7 ] }, - { "item": "benelli_tsa", "variant": "mossberg_500_security", "prob": 8, "charges": [ 0, 6 ] }, + { "item": "remington_700", "prob": 1, "charges": [ 0, 4 ] }, + { "item": "3006", "prob": 1, "charges": [ 1, 20 ] }, + { "item": "ksg", "prob": 1, "charges": [ 0, 7 ] }, + { "item": "remington_870_express", "prob": 1, "charges": [ 0, 7 ] }, + { "item": "benelli_tsa", "variant": "mossberg_500_security", "prob": 1, "charges": [ 0, 6 ] }, { "item": "shot_beanbag", "prob": 25, "charges": [ 1, 10 ] }, { "item": "rm120c", "prob": 2, "charges": [ 0, 5 ] }, { "item": "rm20", "prob": 1, "charges": [ 0, 20 ] }, diff --git a/data/json/itemgroups/Locations_MapExtras/locations_commercial.json b/data/json/itemgroups/Locations_MapExtras/locations_commercial.json index 5e3c824f95575..242307ed8bae1 100644 --- a/data/json/itemgroups/Locations_MapExtras/locations_commercial.json +++ b/data/json/itemgroups/Locations_MapExtras/locations_commercial.json @@ -210,23 +210,9 @@ "type": "item_group", "id": "pawn_guns", "items": [ - [ "win70_458", 1 ], - [ "combination_gun", 1 ], - [ "458wm", 1 ], - [ "sw629", 3 ], - { "group": "modular_deagle_44", "prob": 2 }, - [ "m1911", 5 ], - [ "mosin91_30", 1 ], - [ "match_trigger", 3 ], - [ "remington_870", 9 ], - [ "browning_blr", 8 ], - [ "remington_700", 14 ], - [ "m1903", 1 ], - [ "garand", 2 ], - [ "moss_brownie", 5 ], - [ "cop_38", 5 ], - [ "rifle_flintlock", 1 ], - [ "pistol_flintlock", 1 ] + { "group": "guns_common", "prob": 100 }, + { "group": "guns_rare", "prob": 10 }, + { "group": "guns_obscure", "prob": 1 } ] }, { diff --git a/data/json/itemgroups/SUS/alien.json b/data/json/itemgroups/SUS/alien.json index 3ada88d79b470..03f9016679193 100644 --- a/data/json/itemgroups/SUS/alien.json +++ b/data/json/itemgroups/SUS/alien.json @@ -57,12 +57,12 @@ "entries": [ { "group": "SUS_exodii_storage_lowvalue", "prob": 30 }, { - "collection": [ { "item": "pamd68", "count": [ 15, 20 ] }, { "item": "pamd71z", "count": [ 10, 15 ] } ], - "prob": 30 + "collection": [ { "item": "pamd68", "count": [ 2, 3 ] }, { "item": "pamd71z", "count": [ 1, 2 ] } ], + "prob": 5 }, { - "collection": [ { "item": "exodiiminimag", "count": [ 30, 50 ] }, { "item": "exodiiBRmag", "count": [ 20, 40 ] } ], - "prob": 20 + "collection": [ { "item": "exodiiminimag", "count": [ 2, 5 ] }, { "item": "exodiiBRmag", "count": [ 2, 3 ] } ], + "prob": 5 }, { "distribution": [ @@ -81,14 +81,14 @@ "//2": "This group is for Exodii storage pods and lockers that processed ingots and the like, ready for use.", "subtype": "distribution", "entries": [ - { "collection": [ { "item": "pamd68", "count": [ 15, 20 ] }, { "item": "pamd71z", "count": [ 10, 15 ] } ], "prob": 20 }, + { "collection": [ { "item": "pamd68", "count": [ 2, 3 ] }, { "item": "pamd71z", "count": [ 1, 2 ] } ], "prob": 5 }, { "collection": [ - { "item": "exodiiminimag", "count": [ 30, 50 ] }, - { "item": "exodiiBRmag", "count": [ 20, 40 ] }, - { "item": "123ln", "count": [ 0, 200 ] } + { "item": "exodiiminimag", "count": [ 2, 3 ] }, + { "item": "exodiiBRmag", "count": [ 1, 2 ] }, + { "item": "123ln", "count": [ 0, 100 ] } ], - "prob": 20 + "prob": 5 }, { "distribution": [ diff --git a/data/json/itemgroups/SUS/gunstore.json b/data/json/itemgroups/SUS/gunstore.json index ee0518c822e9a..71b7d65c89af7 100644 --- a/data/json/itemgroups/SUS/gunstore.json +++ b/data/json/itemgroups/SUS/gunstore.json @@ -6,10 +6,10 @@ "//2": "This group is for the contents of gunsafes", "subtype": "collection", "entries": [ - { "group": "ammo_common_collection", "prob": 85 }, - { "group": "ammo_rare_collection", "prob": 20 }, - { "group": "ammo_obscure_collection", "prob": 10 }, - { "group": "guns_rare_display", "prob": 10 } + { "group": "ammo_common_collection", "prob": 100 }, + { "group": "ammo_rare_collection", "prob": 1 }, + { "group": "ammo_obscure_collection", "prob": 1 }, + { "group": "guns_rare_display", "prob": 1 } ] }, { @@ -26,7 +26,7 @@ }, { "collection": [ { "group": "guns_shotgun_obscure_display" }, { "group": "mags_shotgun_rare", "count": [ 1, 2 ] } ], - "prob": 10 + "prob": 1 }, { "collection": [ @@ -34,7 +34,7 @@ { "group": "mags_smg_common", "count": [ 1, 8 ] }, { "group": "mags_smg_rare", "count": [ 1, 8 ] } ], - "prob": 45 + "prob": 2 } ] }, @@ -93,9 +93,12 @@ "//2": "This group is for the contents of gunstore displaycases", "subtype": "distribution", "entries": [ - { "group": "guns_rifle_rare_display", "prob": 80 }, - { "group": "guns_pistol_rare_display", "prob": 40 }, - { "group": "guns_shotgun_rare_display", "prob": 5 } + { "group": "guns_pistol_common_display", "prob": 60 }, + { "group": "guns_rifle_common_display", "prob": 20 }, + { "group": "guns_shotgun_common_display", "prob": 2 }, + { "group": "guns_pistol_rare_display", "prob": 30 }, + { "group": "guns_rifle_rare_display", "prob": 10 }, + { "group": "guns_shotgun_rare_display", "prob": 1 } ] }, { diff --git a/data/json/itemgroups/Weapons_Mods_Ammo/arsenal/collections.json b/data/json/itemgroups/Weapons_Mods_Ammo/arsenal/collections.json index 7588442e6dc62..61c1df1f8df38 100644 --- a/data/json/itemgroups/Weapons_Mods_Ammo/arsenal/collections.json +++ b/data/json/itemgroups/Weapons_Mods_Ammo/arsenal/collections.json @@ -41,7 +41,7 @@ "items": [ { "group": "milspec_arsenal_9mm_gun&mags&cans", "prob": 96 }, { "group": "milspec_arsenal_9mm_sub_gun&mags&cans", "prob": 100 }, - { "group": "milspec_arsenal_shot_gun&mags&cans", "prob": 150 }, + { "group": "milspec_arsenal_shot_gun&mags&cans", "prob": 15 }, { "group": "milspec_arsenal_223_pouch_gun&mags&cans", "prob": 1000 }, { "group": "milspec_arsenal_223_mg_gun&mags&cans", "prob": 260 }, { "group": "milspec_arsenal_300blk_gun&mags&cans", "prob": 100 }, @@ -113,7 +113,7 @@ "items": [ { "group": "milspec_arsenal_9mm_gun&mags", "count": [ 1, 2 ], "prob": 96 }, { "group": "milspec_arsenal_9mm_sub_gun&mags", "count": [ 1, 2 ], "prob": 100 }, - { "group": "milspec_arsenal_shot_gun&mags", "count": [ 1, 2 ], "prob": 150 }, + { "group": "milspec_arsenal_shot_gun&mags", "count": [ 1, 2 ], "prob": 15 }, { "group": "milspec_arsenal_223_gun&mags", "count": [ 1, 2 ], "prob": 1000 }, { "group": "milspec_arsenal_223_mg_gun&mags", "count": [ 1, 2 ], "prob": 260 }, { "group": "milspec_arsenal_300blk_gun&mags", "count": [ 1, 2 ], "prob": 100 }, diff --git a/data/json/itemgroups/Weapons_Mods_Ammo/guns.json b/data/json/itemgroups/Weapons_Mods_Ammo/guns.json index eb987357ff960..3ab732de388dd 100644 --- a/data/json/itemgroups/Weapons_Mods_Ammo/guns.json +++ b/data/json/itemgroups/Weapons_Mods_Ammo/guns.json @@ -5,51 +5,16 @@ "//": "Pistols that are reasonably prolific amongst civilians, commonly owned and reliably obtainable by citizens and that are found in many locations.", "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ - { "group": "nested_glock_17", "prob": 35 }, - { "group": "nested_glock_19", "prob": 50 }, - { "group": "nested_glock_20", "prob": 4 }, - { "group": "nested_glock_21", "prob": 8 }, - { "group": "nested_glock_22", "prob": 35 }, - { "group": "nested_glock_29", "prob": 2 }, - { "group": "nested_glock_31", "prob": 15 }, - { "group": "nested_glock_40", "prob": 2 }, - { "group": "nested_m1911", "prob": 50 }, - { "group": "nested_m1911_10", "prob": 15 }, - { "group": "nested_STI_DS_10", "prob": 15 }, - { "group": "nested_m9", "prob": 30 }, - { "group": "nested_px4", "prob": 24 }, - { "group": "nested_px4_40", "prob": 20 }, - { "group": "nested_ruger_lcr_38", "prob": 10 }, - { "group": "nested_sig_mosquito", "prob": 15 }, - { "group": "nested_sw_22", "prob": 15 }, - { "group": "nested_sw_610", "prob": 20 }, - { "group": "nested_sw_619", "prob": 25 }, - { "group": "nested_model_10_revolver", "prob": 20 }, - { "group": "nested_taurus_spectrum", "prob": 15 }, - { "group": "nested_p220_10", "prob": 1 }, - { "group": "nested_p50", "prob": 2 }, - { "group": "nested_ruger_57", "prob": 2 }, - { "group": "nested_p226_357sig", "prob": 20 }, - { "group": "nested_p320_357sig", "prob": 10 }, - { "group": "nested_kp32", "prob": 10 }, - { "group": "nested_kp3at", "prob": 35 }, - { "group": "nested_rugerlcp", "prob": 35 }, - { "group": "nested_kpf9", "prob": 35 }, - { "group": "nested_hi_power_9mm", "prob": 5 }, - { "group": "nested_hi_power_40", "prob": 3 }, - { "group": "nested_walther_ppq_9mm", "prob": 9 }, - { "group": "nested_walther_ppq_40", "prob": 5 }, - { "group": "nested_walther_ppq_45", "prob": 3 }, - { "group": "nested_hptc9", "prob": 3 }, - { "group": "nested_hptcf380", "prob": 2 }, - { "group": "nested_hptjcp", "prob": 1 }, - { "group": "nested_hptjhp", "prob": 1 }, - { "group": "nested_xd_10", "prob": 3 }, - { "group": "nested_cz75", "prob": 18 }, - { "group": "nested_witness_10", "prob": 1 }, - { "group": "nested_walther_ccp", "prob": 8 }, - { "group": "nested_walther_p22", "prob": 13 }, - { "group": "nested_ruger_lcr_22", "prob": 13 } + { "group": "guns_pistol_common_9mm", "prob": 74 }, + { "group": "guns_pistol_common_22", "prob": 64 }, + { "group": "guns_pistol_common_45", "prob": 20 }, + { "group": "guns_pistol_common_380", "prob": 28 }, + { "group": "guns_pistol_common_40", "prob": 19 }, + { "group": "guns_pistol_common_357mag", "prob": 12 }, + { "group": "guns_pistol_common_38", "prob": 11 }, + { "group": "guns_pistol_common_44", "prob": 1 }, + { "group": "guns_pistol_common_10mm", "prob": 1 }, + { "group": "guns_pistol_common_other", "prob": 39 } ] }, { @@ -58,51 +23,16 @@ "id": "guns_pistol_common_everyday_carry", "//": "pistols with ammo loaded and ready for use but no additional magazines.", "items": [ - { "item": "glock_17", "prob": 35, "charges-min": 0 }, - { "item": "glock_19", "prob": 50, "charges-min": 0 }, - { "item": "glock_20", "variant": "glock_20", "prob": 4, "charges-min": 0 }, - { "item": "glock_21", "prob": 8, "charges-min": 0 }, - { "item": "glock_22", "prob": 35, "charges-min": 0 }, - { "item": "glock_29", "prob": 2, "charges-min": 0 }, - { "item": "glock_31", "prob": 15, "charges-min": 0 }, - { "item": "glock_40", "variant": "glock_40", "prob": 2, "charges-min": 0 }, - { "item": "m1911", "prob": 50, "charges-min": 0 }, - { "item": "m1911_10", "prob": 15, "charges-min": 0 }, - { "item": "STI_DS_10", "prob": 15, "charges-min": 0 }, - { "item": "m9", "variant": "m9", "prob": 30, "charges-min": 0 }, - { "item": "px4", "prob": 24, "charges-min": 0 }, - { "item": "px4_40", "prob": 20, "charges-min": 0 }, - { "item": "ruger_lcr_38", "prob": 10, "charges-min": 0 }, - { "item": "sig_mosquito", "prob": 15, "charges-min": 0 }, - { "item": "sw_22", "prob": 15, "charges-min": 0 }, - { "item": "sw_610", "prob": 20, "charges-min": 0 }, - { "item": "sw_619", "prob": 25, "charges-min": 0 }, - { "item": "model_10_revolver", "prob": 20, "charges-min": 0 }, - { "item": "taurus_spectrum", "prob": 15, "charges-min": 0 }, - { "item": "p220_10", "prob": 1, "charges-min": 0 }, - { "item": "p50", "prob": 4, "charges-min": 0 }, - { "item": "ruger_57", "prob": 6, "charges-min": 0 }, - { "item": "p226_357sig", "prob": 20, "charges-min": 0 }, - { "item": "p320_357sig", "prob": 10, "charges-min": 0 }, - { "item": "kp32", "prob": 10, "charges-min": 0 }, - { "item": "kp3at", "prob": 35, "charges-min": 0 }, - { "item": "rugerlcp", "prob": 35, "charges-min": 0 }, - { "item": "kpf9", "prob": 35, "charges-min": 0 }, - { "item": "hi_power_9mm", "prob": 5, "charges-min": 0 }, - { "item": "hi_power_40", "prob": 3, "charges-min": 0 }, - { "item": "walther_ppq_9mm", "prob": 9, "charges-min": 0 }, - { "item": "walther_ppq_40", "prob": 5, "charges-min": 0 }, - { "item": "walther_ppq_45", "prob": 3, "charges-min": 0 }, - { "item": "hptc9", "prob": 3, "charges-min": 0 }, - { "item": "hptcf380", "prob": 2, "charges-min": 0 }, - { "item": "hptjcp", "prob": 1, "charges-min": 0 }, - { "item": "hptjhp", "prob": 1, "charges-min": 0 }, - { "item": "xd_10", "prob": 3, "charges-min": 0 }, - { "item": "cz75", "prob": 18, "charges-min": 0 }, - { "item": "witness_10", "prob": 1, "charges-min": 0 }, - { "item": "walther_ccp", "prob": 8, "charges-min": 0 }, - { "item": "walther_p22", "prob": 13, "charges-min": 0 }, - { "item": "ruger_lcr_22", "prob": 35, "charges-min": 0 } + { "group": "guns_pistol_common_everyday_carry_9mm", "prob": 92 }, + { "group": "guns_pistol_common_everyday_carry_22", "prob": 73 }, + { "group": "guns_pistol_common_everyday_carry_45", "prob": 21 }, + { "group": "guns_pistol_common_everyday_carry_380", "prob": 28 }, + { "group": "guns_pistol_common_everyday_carry_40", "prob": 13 }, + { "group": "guns_pistol_common_everyday_carry_357mag", "prob": 4 }, + { "group": "guns_pistol_common_everyday_carry_38", "prob": 8 }, + { "group": "guns_pistol_common_everyday_carry_44", "prob": 1 }, + { "group": "guns_pistol_common_everyday_carry_10mm", "prob": 1 }, + { "group": "guns_pistol_common_everyday_carry_other", "prob": 52 } ] }, { @@ -111,51 +41,17 @@ "id": "guns_pistol_common_display", "//": "Empty and reasonably common pistols found exclusively in gun stores.", "items": [ - { "item": "glock_17", "prob": 35 }, - { "item": "glock_19", "prob": 50 }, - { "item": "glock_20", "variant": "glock_20", "prob": 4 }, - { "item": "glock_21", "prob": 8 }, - { "item": "glock_22", "prob": 35 }, - { "item": "glock_29", "prob": 2 }, - { "item": "glock_31", "prob": 15 }, - { "item": "glock_40", "variant": "glock_40", "prob": 2 }, - { "item": "m1911", "prob": 50 }, - { "item": "m1911_10", "prob": 15 }, - { "item": "STI_DS_10", "prob": 15, "charges-min": 0 }, - { "item": "m9", "variant": "m9", "prob": 30 }, - { "item": "px4", "prob": 24 }, - { "item": "px4_40", "prob": 20 }, - { "item": "ruger_lcr_38", "prob": 10 }, - { "item": "sig_mosquito", "prob": 15 }, - { "item": "sw_22", "prob": 15 }, - { "item": "sw_610", "prob": 20 }, - { "item": "sw_619", "prob": 25 }, - { "item": "model_10_revolver", "prob": 20 }, - { "item": "taurus_spectrum", "prob": 15 }, - { "item": "p220_10", "prob": 1 }, - { "item": "p50", "prob": 4 }, - { "item": "ruger_57", "prob": 6 }, - { "item": "p226_357sig", "prob": 20 }, - { "item": "p320_357sig", "prob": 10 }, - { "item": "kp32", "prob": 10 }, - { "item": "kp3at", "prob": 35 }, - { "item": "rugerlcp", "prob": 35 }, - { "item": "kpf9", "prob": 35 }, - { "item": "hi_power_9mm", "prob": 5 }, - { "item": "hi_power_40", "prob": 3 }, - { "item": "walther_ppq_9mm", "prob": 9 }, - { "item": "walther_ppq_40", "prob": 5 }, - { "item": "walther_ppq_45", "prob": 3 }, - { "item": "hptc9", "prob": 3 }, - { "item": "hptcf380", "prob": 2 }, - { "item": "hptjcp", "prob": 1 }, - { "item": "hptjhp", "prob": 1 }, - { "item": "xd_10", "prob": 3 }, - { "item": "cz75", "prob": 18 }, - { "item": "witness_10", "prob": 1 }, - { "item": "walther_ccp", "prob": 8 }, - { "item": "walther_p22", "prob": 13 }, - { "item": "ruger_lcr_22", "prob": 35 } + { "group": "guns_pistol_common_display_9mm", "prob": 78 }, + { "group": "guns_pistol_common_display_22", "prob": 78 }, + { "group": "guns_pistol_common_display_45", "prob": 23 }, + { "group": "guns_pistol_common_display_380", "prob": 28 }, + { "group": "guns_pistol_common_display_40", "prob": 11 }, + { "group": "guns_pistol_common_display_357mag", "prob": 4 }, + { "group": "guns_pistol_common_display_38", "prob": 11 }, + { "group": "guns_pistol_common_display_44", "prob": 1 }, + { "group": "guns_pistol_common_display_45colt", "prob": 5 }, + { "group": "guns_pistol_common_display_10mm", "prob": 1 }, + { "group": "guns_pistol_common_display_other", "prob": 46 } ] }, { @@ -164,39 +60,18 @@ "//": "Less common or prolific pistols that are still normally acquirable by civilians or that may need an NFA permit, i.e. integrally supressed or stocked handguns. This includes those weapons used by police and paramilitary forces, and older handguns which are no longer in production but that are still reasonably common to find.", "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ - { "group": "nested_90two", "prob": 30 }, - { "group": "nested_90two40", "prob": 10 }, - { "group": "nested_bond_410", "prob": 15 }, - { "group": "nested_modular_deagle_357", "prob": 4 }, - { "group": "nested_modular_deagle_44", "prob": 10 }, - { "group": "nested_modular_deagle_50", "prob": 6 }, - { "group": "nested_m1911a1_38super", "prob": 20 }, - { "group": "nested_fn57", "prob": 60 }, - { "group": "nested_sig_40", "prob": 35 }, - { "group": "nested_sig_p230", "prob": 45 }, - { "group": "nested_sw_500", "prob": 15 }, - { "group": "nested_sw629", "prob": 65 }, - { "group": "nested_usp_45", "prob": 50 }, - { "group": "nested_usp_9mm", "prob": 60 }, - { "group": "nested_walther_p38", "prob": 15 }, - { "group": "nested_p08", "prob": 20 }, - { "group": "nested_raging_bull", "prob": 10 }, - { "group": "nested_raging_judge", "prob": 10 }, - { "group": "nested_m714", "prob": 8 }, - { "group": "nested_mr73", "prob": 5 }, - { "group": "nested_m1911-460", "prob": 5 }, - { "group": "nested_bfr", "prob": 10 }, - { "group": "nested_cop_38", "prob": 10 }, - { "group": "nested_colt_saa", "prob": 8 }, - { "group": "nested_mauser_c96", "prob": 15 }, - { "group": "nested_TDI_10", "prob": 4 }, - { "group": "nested_draco", "prob": 20 }, - { "group": "nested_ar_pistol", "prob": 25 }, - { "group": "nested_plr16", "prob": 3 }, - { "group": "nested_makarov", "prob": 15 }, - { "group": "nested_tokarev", "prob": 15 }, - { "group": "nested_walther_ppk", "prob": 20 }, - { "group": "nested_minidraco556", "prob": 20 } + { "group": "guns_pistol_rare_9mm", "prob": 93 }, + { "group": "guns_pistol_rare_22", "prob": 1 }, + { "group": "guns_pistol_rare_223", "prob": 1 }, + { "group": "guns_pistol_rare_45", "prob": 15 }, + { "group": "guns_pistol_rare_40", "prob": 6 }, + { "group": "guns_pistol_rare_762", "prob": 1 }, + { "group": "guns_pistol_rare_357mag", "prob": 8 }, + { "group": "guns_pistol_rare_38", "prob": 1 }, + { "group": "guns_pistol_rare_44", "prob": 45 }, + { "group": "guns_pistol_rare_45colt", "prob": 30 }, + { "group": "guns_pistol_rare_10mm", "prob": 1 }, + { "group": "guns_pistol_rare_other", "prob": 45 } ] }, { @@ -205,36 +80,13 @@ "id": "guns_pistol_rare_display", "//": "Empty uncommon pistols found exclusively at gun stores.", "items": [ - { "item": "m9", "variant": "90two", "prob": 25 }, - { "item": "90two40", "prob": 10 }, - { "item": "bond_410", "prob": 10 }, - { "group": "modular_deagle_357", "prob": 4 }, - { "group": "modular_deagle_44", "prob": 10 }, - { "group": "modular_deagle_50", "prob": 4 }, - { "group": "nested_deagle_with_kits", "prob": 2 }, - { "group": "modular_deagle_complete", "prob": 1 }, - { "item": "m1911a1_38super", "prob": 25 }, - { "item": "fn57", "prob": 15 }, - { "item": "sig_40", "prob": 15 }, - { "item": "sig_p230", "prob": 15 }, - { "item": "sw_500", "prob": 15 }, - { "item": "sw629", "prob": 40 }, - { "item": "usp_45", "prob": 15 }, - { "item": "usp_9mm", "prob": 35 }, - { "item": "walther_p38", "prob": 10 }, - { "item": "p08", "prob": 10 }, - { "item": "raging_bull", "prob": 10 }, - { "item": "raging_judge", "prob": 20 }, - { "item": "mauser_m714", "prob": 15 }, - { "item": "m1911-460", "prob": 10 }, - { "item": "mr73", "prob": 5 }, - { "item": "bfr", "prob": 10 }, - { "item": "cop_38", "prob": 45 }, - { "item": "colt_saa", "prob": 8 }, - { "item": "mauser_c96", "prob": 15 }, - { "item": "makarov", "prob": 8 }, - { "item": "tokarev", "prob": 5 }, - { "item": "walther_ppk", "prob": 8 } + { "group": "guns_pistol_rare_display_9mm", "prob": 63 }, + { "group": "guns_pistol_rare_display_45", "prob": 9 }, + { "group": "guns_pistol_rare_display_40", "prob": 7 }, + { "group": "guns_pistol_rare_display_357mag", "prob": 22 }, + { "group": "guns_pistol_rare_display_44", "prob": 20 }, + { "group": "guns_pistol_rare_display_45colt", "prob": 18 }, + { "group": "guns_pistol_rare_display_other", "prob": 176 } ] }, { @@ -243,10 +95,10 @@ "id": "guns_pistol_hunting_display", "//": "Empty high-caliber pistols and revolvers found within hunting supply stores and related locations.", "items": [ - { "item": "glock_20", "variant": "glock_20", "prob": 15 }, - { "item": "glock_40", "variant": "glock_40", "prob": 15 }, - { "item": "sw_610", "prob": 20 }, - { "item": "sw_619", "prob": 25 }, + { "item": "glock_20", "variant": "glock_20", "prob": 1 }, + { "item": "glock_40", "variant": "glock_40", "prob": 1 }, + { "item": "sw_610", "prob": 1 }, + { "item": "sw_619", "prob": 40 }, { "item": "bfr", "prob": 10 }, { "item": "raging_bull", "prob": 15 }, { "item": "raging_judge", "prob": 15 }, @@ -264,13 +116,13 @@ "//": "US military specification pistols only ever found at military sites. These weapons must be pistols that are still in current inventory, and are still being issued in some capacity to American personnel.", "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ + { "group": "nested_glock_18c", "prob": 40 }, + { "group": "nested_glock_19", "prob": 30 }, { "group": "nested_m17", "prob": 100 }, { "group": "nested_m18", "prob": 100 }, - { "group": "nested_glock_18c", "prob": 40 }, { "group": "nested_usp_45_mk23", "prob": 5 }, { "group": "nested_m1911_MEU", "prob": 5 }, - { "group": "nested_glock_19", "prob": 30 }, - { "group": "nested_rm103a_pistol", "prob": 30 } + { "group": "nested_rm103a_pistol", "prob": 1 } ] }, { @@ -281,13 +133,12 @@ "items": [ { "group": "nested_af2011a1_38super", "prob": 1 }, { "group": "nested_bfr", "prob": 100 }, - { "group": "nested_cop_38", "prob": 100 }, + { "group": "nested_cop_38", "prob": 50 }, { "group": "nested_m1911-460", "prob": 3 }, { "group": "nested_makarov", "prob": 100 }, { "group": "nested_mauser_c96", "prob": 39 }, - { "group": "nested_moss_brownie", "prob": 100 }, - { "group": "nested_mr73", "prob": 5 }, - { "group": "nested_modular_deagle_gold", "prob": 10 }, + { "group": "nested_moss_brownie", "prob": 400 }, + { "group": "nested_mr73", "prob": 8 }, { "group": "nested_pistol_flintlock", "prob": 150 }, { "group": "nested_raging_bull", "prob": 100 }, { "group": "nested_raging_judge", "prob": 20 }, @@ -353,7 +204,7 @@ "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ { "group": "nested_calico", "prob": 30 }, - { "group": "nested_fn_p90", "prob": 50 }, + { "group": "nested_fn_p90", "prob": 10 }, { "group": "nested_mp40", "prob": 185 }, { "group": "nested_tommygun", "prob": 70 }, { "group": "nested_sten", "prob": 100 }, @@ -366,7 +217,6 @@ { "group": "nested_mac_10", "prob": 40 }, { "group": "nested_mac_11", "prob": 20 }, { "group": "nested_TDI", "prob": 10 }, - { "group": "nested_american_180", "prob": 50 }, { "group": "nested_briefcase_smg", "prob": 5 }, { "group": "nested_tec9", "prob": 50 } ] @@ -378,7 +228,7 @@ "//": "Less common full-auto SMGS which are illegal to sell.", "items": [ { "item": "calico", "prob": 30 }, - { "item": "fn_p90", "prob": 50 }, + { "item": "fn_p90", "prob": 10 }, { "item": "mp40", "prob": 185 }, { "item": "tommygun", "prob": 70 }, { "item": "sten", "prob": 100 }, @@ -391,7 +241,6 @@ { "item": "mac_10", "prob": 40 }, { "item": "mac_11", "prob": 20 }, { "item": "TDI", "prob": 10 }, - { "item": "american_180", "prob": 50 }, { "item": "briefcase_smg", "prob": 5 }, { "item": "tec9", "prob": 50 } ] @@ -401,8 +250,8 @@ "id": "guns_smg_milspec", "//": "Military specification SMGs only ever found at military sites.", "items": [ - { "group": "nested_hk_mp7", "prob": 100 }, - { "group": "nested_rm2000_smg", "prob": 50 }, + { "group": "nested_hk_mp7", "prob": 5 }, + { "group": "nested_rm2000_smg", "prob": 1 }, { "group": "nested_hk_mp5", "prob": 100 }, { "group": "nested_hk_mp5k", "prob": 10 }, { "group": "nested_hk_mp5sd", "prob": 5 } @@ -453,44 +302,15 @@ "//": "Rifles commonly owned by citizens and found in many locations.", "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ - { "group": "nested_browning_blr", "prob": 1 }, - { "group": "nested_ruger_pr", "prob": 1 }, - { "group": "nested_ruger_arr", "prob": 1 }, - { "group": "nested_ar_pistol", "prob": 1 }, - { "group": "nested_plr16", "prob": 1 }, - { "group": "nested_garand", "prob": 1 }, - { "group": "nested_ar10", "prob": 1 }, - { "group": "nested_ar15", "prob": 15 }, - { "group": "nested_cx4", "prob": 1 }, - { "group": "nested_ksub2000", "prob": 1 }, - { "group": "nested_m1a", "prob": 1 }, - { "group": "nested_marlin_9a", "prob": 2 }, - { "group": "nested_mosin44", "prob": 1 }, - { "group": "nested_mosin91_30", "prob": 1 }, - { "group": "nested_remington700_270", "prob": 1 }, - { "group": "nested_ruger_m77", "prob": 1 }, - { "group": "nested_remington_700", "prob": 4 }, - { "group": "nested_ruger_1022", "prob": 7 }, - { "group": "nested_ruger_mini", "prob": 1 }, - { "group": "nested_sks", "prob": 1 }, - { "group": "nested_win70", "prob": 2 }, - { "group": "nested_1895sbl", "prob": 1 }, - { "group": "nested_vz58ts", "prob": 1 }, - { "group": "nested_fn_ps90", "prob": 1 }, - { "group": "nested_aksemi", "prob": 2 }, - { "group": "nested_m1carbine", "prob": 1 }, - { "group": "nested_mk3", "prob": 1 }, - { "group": "nested_number4", "prob": 1 }, - { "group": "nested_ak556", "prob": 2 }, - { "group": "nested_bren2_762", "prob": 1 }, - { "group": "nested_bren2_556", "prob": 1 }, - { "group": "nested_mdrx", "prob": 1 }, - { "group": "nested_cz600", "prob": 1 }, - { "group": "nested_converted_ar15", "prob": 6 }, - { "group": "nested_converted_mdrx", "prob": 1 }, - { "group": "nested_converted_cz600", "prob": 1 }, - { "group": "nested_rdb_223", "prob": 1 }, - { "group": "nested_hpt3895", "prob": 1 } + { "group": "guns_rifle_common_22", "prob": 30 }, + { "group": "guns_rifle_common_223", "prob": 40 }, + { "group": "guns_rifle_common_762", "prob": 6 }, + { "group": "guns_rifle_common_308", "prob": 1 }, + { "group": "guns_rifle_common_3006", "prob": 1 }, + { "group": "guns_rifle_common_762R", "prob": 2 }, + { "group": "guns_rifle_common_270win", "prob": 1 }, + { "group": "guns_rifle_common_380", "prob": 1 }, + { "group": "guns_rifle_common_other", "prob": 12 } ] }, { @@ -499,45 +319,15 @@ "//": "Rifles commonly owned by citizens and found in many locations.", "//2": "This is for worn items so ammo should be handled elsewhere so that mods can be added directly.", "items": [ - { "item": "browning_blr", "prob": 1, "charges-min": 0, "charges-max": 4 }, - { "item": "ruger_pr", "prob": 1, "charges-min": 0, "charges-max": 5 }, - { "item": "ar_pistol", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "item": "plr16", "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 }, - { "group": "modular_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", "variant": "mosin44", "prob": 1, "charges-min": 0, "charges-max": 5 }, - { "item": "mosin91_30", "variant": "mosin91_30", "prob": 1, "charges-min": 0, "charges-max": 5 }, - { "item": "remington700_270", "prob": 1, "charges-min": 0, "charges-max": 4 }, - { "item": "ruger_m77", "prob": 1, "charges-min": 0, "charges-max": 4 }, - { "item": "ruger_arr", "prob": 1, "charges-min": 0, "charges-max": 3 }, - { "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": "hpt3895", "prob": 1, "charges-min": 0, "charges-max": 10 }, - { "item": "sks", "prob": 1, "charges-min": 0, "charges-max": 10 }, - { "item": "win70", "prob": 2, "charges-min": 0, "charges-max": 3 }, - { "item": "vz58ts", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "item": "fn_ps90", "prob": 1, "charges-min": 0, "charges-max": 50 }, - { "item": "1895sbl", "prob": 1, "charges-min": 0, "charges-max": 6 }, - { "item": "aksemi", "prob": 2, "charges-min": 0, "charges-max": 30 }, - { "item": "mk47", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "item": "m1carbine", "prob": 1, "charges-min": 0, "charges-max": 15 }, - { "item": "smle_mk3", "prob": 1, "charges-min": 0, "charges-max": 10 }, - { "item": "number4_mki", "prob": 1, "charges-min": 0, "charges-max": 10 }, - { "item": "ak556", "prob": 2, "charges-min": 0, "charges-max": 30 }, - { "item": "ak556", "variant": "zpapm90", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "item": "varmint_airgun", "prob": 1, "charges-min": 0, "charges-max": 1 }, - { "item": "bren2_762", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "item": "bren2_556", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "group": "mdrx", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "group": "cz600", "prob": 1, "charges-min": 0, "charges-max": 10 }, - { "item": "ak556", "variant": "zpapm90", "prob": 1, "charges-min": 0, "charges-max": 30 }, - { "item": "rdb_223", "prob": 1, "charges-min": 0, "charges-max": 30 } + { "group": "guns_rifle_common_worn_22", "prob": 29 }, + { "group": "guns_rifle_common_worn_223", "prob": 43 }, + { "group": "guns_rifle_common_worn_762", "prob": 7 }, + { "group": "guns_rifle_common_worn_308", "prob": 1 }, + { "group": "guns_rifle_common_worn_3006", "prob": 1 }, + { "group": "guns_rifle_common_worn_762R", "prob": 2 }, + { "group": "guns_rifle_common_worn_270win", "prob": 1 }, + { "group": "guns_rifle_common_worn_380", "prob": 1 }, + { "group": "guns_rifle_common_worn_other", "prob": 1 } ] }, { @@ -546,40 +336,14 @@ "id": "guns_rifle_common_display", "//": "Empty rifles commonly found in gun stores.", "items": [ - { "item": "ar10", "prob": 35 }, - { "group": "modular_ar15", "prob": 45 }, - { "item": "cx4", "prob": 30 }, - { "item": "hpt3895", "prob": 1 }, - { "item": "ksub2000", "prob": 10 }, - { "item": "remington700_270", "prob": 25 }, - { "item": "ruger_m77", "prob": 10 }, - { "item": "ruger_arr", "prob": 10 }, - { "item": "remington_700", "prob": 45 }, - { "item": "ruger_1022", "prob": 65 }, - { "item": "ruger_mini", "prob": 45 }, - { "item": "M24", "prob": 5 }, - { "item": "weatherby_5", "prob": 10 }, - { "item": "savage_111f", "prob": 10 }, - { "item": "sharps", "prob": 10 }, - { "item": "sks", "prob": 20 }, - { "item": "m1a", "prob": 30 }, - { "item": "vz58ts", "prob": 10 }, - { "item": "fn_ps90", "prob": 5 }, - { "item": "aksemi", "prob": 15 }, - { "item": "mk47", "prob": 10 }, - { "group": "mdrx", "prob": 10 }, - { "group": "cz600", "prob": 10 }, - { "item": "ak556", "prob": 15 }, - { "item": "ak556", "variant": "zpapm90", "prob": 10 }, - { "item": "varmint_airgun", "prob": 5 }, - { "item": "bren2_762", "prob": 6 }, - { "item": "bren2_556", "prob": 10 }, - { "item": "ak556", "variant": "zpapm90", "prob": 10 }, - { "item": "savage112", "prob": 10 }, - { "group": "nested_ar15_with_kits", "prob": 15 }, - { "group": "nested_mdrx_with_kits", "prob": 10 }, - { "group": "nested_cz600_with_kits", "prob": 10 }, - { "item": "rdb_223", "prob": 30 } + { "group": "guns_rifle_common_display_22", "prob": 130 }, + { "group": "guns_rifle_common_display_223", "prob": 390 }, + { "group": "guns_rifle_common_display_762", "prob": 85 }, + { "group": "guns_rifle_common_display_308", "prob": 1 }, + { "group": "guns_rifle_common_display_3006", "prob": 1 }, + { "group": "guns_rifle_common_display_270win", "prob": 10 }, + { "group": "guns_rifle_common_display_380", "prob": 1 }, + { "group": "guns_rifle_common_display_other", "prob": 36 } ] }, { @@ -588,45 +352,16 @@ "//": "Less common rifles including those only used by police/paramilitary forces.", "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ - { "group": "nested_m16_auto_rifle", "prob": 25 }, - { "group": "nested_colt_lightning", "prob": 15 }, - { "group": "nested_fn_fal", "prob": 40 }, - { "group": "nested_fn_fal", "prob": 40 }, - { "group": "nested_fs2000", "prob": 6 }, - { "group": "nested_m249_semi", "prob": 5 }, - { "group": "nested_hk_g3", "prob": 40 }, - { "group": "nested_hk_g36", "prob": 30 }, - { "group": "nested_henry_big_boy", "prob": 10 }, - { "group": "nested_m14ebr", "prob": 15 }, - { "group": "nested_M24", "prob": 15 }, - { "group": "nested_m4_carbine", "prob": 45 }, - { "group": "nested_m1903", "prob": 15 }, - { "group": "nested_mk3", "prob": 10 }, - { "group": "nested_number4", "prob": 10 }, - { "group": "nested_m1918", "prob": 30 }, - { "group": "nested_805_bren", "prob": 15 }, - { "group": "nested_mdrx", "prob": 30 }, - { "group": "nested_ak74", "prob": 18 }, - { "group": "nested_aks74", "prob": 10 }, - { "group": "nested_mosin44_ebr", "prob": 10 }, - { "group": "nested_psl", "prob": 5 }, - { "group": "nested_mosin91_30_ebr", "prob": 20 }, - { "group": "nested_remington_700", "prob": 20 }, - { "group": "nested_savage_111f", "prob": 15 }, - { "group": "nested_sharps", "prob": 15 }, - { "group": "nested_weatherby_5", "prob": 15 }, - { "group": "nested_hk417_13", "prob": 40 }, - { "group": "nested_iwi_tavor_x95_300blk", "prob": 10 }, - { "group": "nested_hk_usc45", "prob": 20 }, - { "group": "nested_savage112", "prob": 15 }, - { "group": "nested_mrad_smr", "prob": 6 }, - { "group": "nested_axmc", "prob": 6 }, - { "group": "nested_converted_axmc", "prob": 3 }, - { "group": "nested_zpapm90", "prob": 1 }, - { "group": "nested_zpap85", "prob": 1 }, - { "group": "nested_rfb_308", "prob": 5 }, - { "group": "nested_steyr_scout", "prob": 5 }, - { "group": "nested_greasegun", "prob": 1 } + { "group": "guns_rifle_rare_223", "prob": 210 }, + { "group": "guns_rifle_rare_762", "prob": 15 }, + { "group": "guns_rifle_rare_308", "prob": 194 }, + { "group": "guns_rifle_rare_3006", "prob": 35 }, + { "group": "guns_rifle_rare_44", "prob": 10 }, + { "group": "guns_rifle_rare_45", "prob": 21 }, + { "group": "guns_rifle_rare_45colt", "prob": 7 }, + { "group": "guns_rifle_rare_762R", "prob": 27 }, + { "group": "guns_rifle_rare_300blk", "prob": 10 }, + { "group": "guns_rifle_rare_other", "prob": 94 } ] }, { @@ -635,57 +370,17 @@ "id": "guns_rifle_rare_display", "//": "Less common rifles found exclusively in gun stores.", "items": [ - { "item": "colt_lightning", "prob": 10 }, - { "item": "henry_big_boy", "prob": 10 }, - { "item": "m1903", "prob": 15, "charges-min": 0, "charges-max": 0 }, - { "item": "smle_mk3", "prob": 10, "charges-min": 0, "charges-max": 0 }, - { "item": "number4_mki", "prob": 10, "charges-min": 0, "charges-max": 0 }, - { - "item": "type99", - "variant": "type99", - "contents-group": "type99_mods", - "prob": 3, - "charges-min": 0, - "charges-max": 0 - }, - { "item": "type99_sniper", "contents-item": "arisaka_monopod", "prob": 1, "charges-min": 0, "charges-max": 0 }, - { "item": "mosin44", "variant": "mosin44_ebr", "contents-group": "mosin_mods", "prob": 1, "charges": [ 0, 0 ] }, - { - "item": "mosin91_30", - "variant": "mosin91_30_ebr", - "contents-group": "mosin_mods", - "prob": 1, - "charges": [ 0, 0 ] - }, - { "item": "iwi_tavor_x95_300blk", "prob": 15 }, - { "item": "1895sbl", "prob": 10 }, - { "item": "hk_usc45", "prob": 10 }, - { "item": "marlin_9a", "prob": 10 }, - { "item": "mosin44", "variant": "mosin44", "prob": 10 }, - { "item": "mosin91_30", "variant": "mosin91_30", "prob": 10 }, - { "item": "browning_blr", "prob": 10 }, - { "item": "ruger_pr", "prob": 10 }, - { "item": "garand", "prob": 10 }, - { "item": "carbine_flintlock", "prob": 1 }, - { "item": "rifle_flintlock", "prob": 1 }, - { "item": "win70", "prob": 10 }, - { "group": "mdrx", "prob": 10 }, - { "item": "ak74_semi", "variant": "ak74_fixed", "prob": 6, "charges": [ 0, 0 ] }, - { - "item": "ak74_semi", - "variant": "ak74_folding", - "contents-group": "ak74_folding_mods", - "prob": 4, - "charges": [ 0, 0 ] - }, - { "item": "m1carbine", "prob": 10 }, - { "item": "mrad_smr", "prob": 10 }, - { "group": "axmc", "prob": 10 }, - { "group": "nested_ar15_with_kits", "prob": 15 }, - { "group": "nested_mdrx_with_kits", "prob": 10 }, - { "group": "nested_axmc_with_kits", "prob": 10 }, - { "item": "rfb_308", "prob": 10 }, - { "item": "steyr_scout", "prob": 10 } + { "group": "guns_rifle_rare_display_22", "prob": 34 }, + { "group": "guns_rifle_rare_display_223", "prob": 68 }, + { "group": "guns_rifle_rare_display_762", "prob": 1 }, + { "group": "guns_rifle_rare_display_308", "prob": 18 }, + { "group": "guns_rifle_rare_display_3006", "prob": 20 }, + { "group": "guns_rifle_rare_display_44", "prob": 10 }, + { "group": "guns_rifle_rare_display_45", "prob": 10 }, + { "group": "guns_rifle_rare_display_45colt", "prob": 5 }, + { "group": "guns_rifle_rare_display_762R", "prob": 17 }, + { "group": "guns_rifle_rare_display_300blk", "prob": 15 }, + { "group": "guns_rifle_rare_display_other", "prob": 106 } ] }, { @@ -694,23 +389,11 @@ "id": "guns_rifle_hunting_display", "//": "Empty civilian hunting rifles found within hunting supply stores and other related locations.", "items": [ - { "item": "remington700_270", "prob": 30 }, - { "item": "ruger_m77", "prob": 25 }, - { "item": "ruger_arr", "prob": 25 }, - { "item": "remington_700", "prob": 40 }, - { "item": "ruger_1022", "prob": 50 }, - { "item": "ruger_pr", "prob": 10 }, - { "item": "win70", "prob": 15 }, - { "item": "weatherby_5", "prob": 8 }, - { "item": "savage_111f", "prob": 10 }, - { "item": "savage112", "prob": 5 }, - { "item": "steyr_scout", "prob": 5 }, - { "item": "1895sbl", "prob": 10 }, - { "item": "browning_blr", "prob": 10 }, - { "item": "ar10", "prob": 10 }, - { "item": "varmint_airgun", "prob": 5 }, - { "group": "ar15_50", "prob": 10 }, - { "group": "ar15_450", "prob": 12 } + { "group": "guns_rifle_hunting_display_22", "prob": 20 }, + { "group": "guns_rifle_hunting_display_308", "prob": 25 }, + { "group": "guns_rifle_hunting_display_3006", "prob": 75 }, + { "group": "guns_rifle_hunting_display_270win", "prob": 30 }, + { "group": "guns_rifle_hunting_display_other", "prob": 93 } ] }, { @@ -721,20 +404,20 @@ "items": [ { "group": "nested_m4_carbine", "prob": 200 }, { "group": "nested_h&k416a5", "prob": 50 }, - { "group": "nested_m107a1", "prob": 30 }, + { "group": "nested_m107a1", "prob": 3 }, { "group": "nested_m134", "prob": 10 }, { "group": "nested_m14ebr", "prob": 10 }, - { "group": "nested_tac50", "prob": 5 }, + { "group": "nested_tac50", "prob": 1 }, { "group": "nested_tac338", "prob": 5 }, { "group": "nested_m2010", "prob": 20 }, { "group": "nested_m240", "prob": 15 }, { "group": "nested_m249", "prob": 25 }, { "group": "nested_m27iar", "prob": 50 }, { "group": "nested_m60", "prob": 15 }, - { "group": "nested_rm11b_sniper_rifle", "prob": 15 }, - { "group": "nested_rm51_assault_rifle", "prob": 25 }, - { "group": "nested_rm614_lmg", "prob": 10 }, - { "group": "nested_rm88_battle_rifle", "prob": 25 }, + { "group": "nested_rm11b_sniper_rifle", "prob": 1 }, + { "group": "nested_rm51_assault_rifle", "prob": 1 }, + { "group": "nested_rm614_lmg", "prob": 1 }, + { "group": "nested_rm88_battle_rifle", "prob": 1 }, { "group": "nested_sig_assault_rifle", "prob": 50 }, { "group": "nested_scar_l", "prob": 50 }, { "group": "nested_scar_h", "prob": 50 }, @@ -789,7 +472,7 @@ "items": [ { "item": "ak47", "prob": 30 }, { "item": "m249_semi", "prob": 5 }, - { "item": "bfg50", "prob": 5 }, + { "item": "bfg50", "prob": 1 }, { "item": "win70_458", "prob": 5 }, { "item": "vz58_p", "variant": "vz58_p", "prob": 5 }, { "item": "vz58_p", "variant": "vz58_v", "prob": 5 }, @@ -983,7 +666,7 @@ "//": "Military shotguns currently in service.", "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", "items": [ - { "group": "nested_rm20", "prob": 20 }, + { "group": "nested_rm20", "prob": 1 }, { "group": "nested_remington_870_express", "prob": 50 }, { "group": "nested_remington_870_breacher", "prob": 20 }, { "group": "nested_mossberg_590", "prob": 50 }, @@ -1092,10 +775,10 @@ "id": "guns_common", "//": "Guns of all types commonly owned by citizens and found in many locations.", "items": [ - { "group": "guns_pistol_common", "prob": 100 }, - { "group": "guns_rifle_common", "prob": 20 }, - { "group": "guns_smg_common", "prob": 5 }, - { "group": "guns_shotgun_common", "prob": 40 } + { "group": "guns_pistol_common", "prob": 41 }, + { "group": "guns_rifle_common", "prob": 57 }, + { "group": "guns_smg_common", "prob": 1 }, + { "group": "guns_shotgun_common", "prob": 1 } ] }, { @@ -1103,9 +786,9 @@ "id": "guns_common_display", "//": "Guns of all types commonly owned by citizens and found exclusively in gun stores.", "items": [ - { "group": "guns_pistol_common_display", "prob": 85 }, - { "group": "guns_rifle_common_display", "prob": 50 }, - { "group": "guns_shotgun_common_display", "prob": 25 } + { "group": "guns_pistol_common_display", "prob": 41 }, + { "group": "guns_rifle_common_display", "prob": 58 }, + { "group": "guns_shotgun_common_display", "prob": 1 } ] }, { @@ -1113,10 +796,10 @@ "id": "guns_rare", "//": "Less common guns of all types including those only used by police/paramilitary forces.", "items": [ - { "group": "guns_pistol_rare", "prob": 100 }, - { "group": "guns_smg_rare", "prob": 30 }, - { "group": "guns_rifle_rare", "prob": 70 }, - { "group": "guns_shotgun_rare", "prob": 70 } + { "group": "guns_pistol_rare", "prob": 41 }, + { "group": "guns_smg_rare", "prob": 1 }, + { "group": "guns_rifle_rare", "prob": 57 }, + { "group": "guns_shotgun_rare", "prob": 1 } ] }, { @@ -1125,9 +808,9 @@ "subtype": "distribution", "//": "Less common guns of all types including those only used by police/paramilitary forces.", "items": [ - { "group": "guns_pistol_rare_display", "prob": 45 }, - { "group": "guns_rifle_rare_display", "prob": 45 }, - { "group": "guns_shotgun_rare_display", "prob": 10 } + { "group": "guns_pistol_rare_display", "prob": 41 }, + { "group": "guns_rifle_rare_display", "prob": 58 }, + { "group": "guns_shotgun_rare_display", "prob": 1 } ] }, { @@ -1135,10 +818,10 @@ "id": "guns_rare_static", "//": "Less common guns of all types including those only used by police/paramilitary forces.", "items": [ - { "group": "guns_pistol_rare", "prob": 100 }, - { "group": "guns_smg_rare", "prob": 30 }, - { "group": "guns_rifle_rare", "prob": 70 }, - { "group": "guns_shotgun_rare_static", "prob": 70 } + { "group": "guns_pistol_rare", "prob": 41 }, + { "group": "guns_smg_rare", "prob": 1 }, + { "group": "guns_rifle_rare", "prob": 57 }, + { "group": "guns_shotgun_rare_static", "prob": 1 } ] }, { @@ -1146,10 +829,10 @@ "id": "guns_rare_readied", "//": "Less common guns of all types including those only used by police/paramilitary forces.", "items": [ - { "group": "guns_pistol_rare", "prob": 100 }, - { "group": "guns_smg_rare", "prob": 30 }, - { "group": "guns_rifle_rare", "prob": 70 }, - { "group": "guns_shotgun_rare_readied", "prob": 70 } + { "group": "guns_pistol_rare", "prob": 41 }, + { "group": "guns_smg_rare", "prob": 1 }, + { "group": "guns_rifle_rare", "prob": 57 }, + { "group": "guns_shotgun_rare_readied", "prob": 1 } ] }, { @@ -1157,11 +840,11 @@ "id": "guns_milspec", "//": "Military specification guns of all types.", "items": [ - { "group": "guns_pistol_milspec", "prob": 50 }, + { "group": "guns_pistol_milspec", "prob": 40 }, { "group": "guns_smg_milspec", "prob": 25 }, { "group": "guns_rifle_milspec", "prob": 100 }, - { "group": "guns_shotgun_milspec", "prob": 25 }, - { "group": "guns_launcher_milspec", "prob": 10 } + { "group": "guns_shotgun_milspec", "prob": 1 }, + { "group": "guns_launcher_milspec", "prob": 1 } ] }, { @@ -1169,10 +852,10 @@ "id": "guns_obscure", "//": "Imported or otherwise very obscure guns of all types.", "items": [ - { "group": "guns_pistol_obscure", "prob": 100 }, - { "group": "guns_smg_obscure", "prob": 30 }, - { "group": "guns_rifle_obscure", "prob": 70 }, - { "group": "guns_shotgun_obscure", "prob": 30 } + { "group": "guns_pistol_obscure", "prob": 45 }, + { "group": "guns_smg_obscure", "prob": 1 }, + { "group": "guns_rifle_obscure", "prob": 53 }, + { "group": "guns_shotgun_obscure", "prob": 1 } ] }, { @@ -1180,11 +863,11 @@ "id": "guns_improvised", "//": "Makeshift or otherwise poor quality guns of all types.", "items": [ - { "group": "guns_pistol_improvised", "prob": 80 }, - { "group": "guns_smg_improvised", "prob": 10 }, - { "group": "guns_rifle_improvised", "prob": 100 }, - { "group": "guns_shotgun_improvised", "prob": 100 }, - { "group": "guns_launcher_improvised", "prob": 30 } + { "group": "guns_pistol_improvised", "prob": 41 }, + { "group": "guns_smg_improvised", "prob": 1 }, + { "group": "guns_rifle_improvised", "prob": 56 }, + { "group": "guns_shotgun_improvised", "prob": 1 }, + { "group": "guns_launcher_improvised", "prob": 1 } ] }, { @@ -1251,14 +934,14 @@ "variant": "mossberg_500_security", "charges": [ 0, 6 ], "contents-item": "shoulder_strap", - "prob": 40 + "prob": 4 }, { "item": "mossberg_590", "variant": "mossberg_590", "charges": [ 0, 9 ], "contents-item": "shoulder_strap", - "prob": 15 + "prob": 1 }, { "item": "mossberg_930", @@ -1274,7 +957,7 @@ "contents-item": "shoulder_strap", "prob": 2 }, - { "item": "remington_870_express", "charges": [ 0, 7 ], "contents-item": "shoulder_strap", "prob": 70 }, + { "item": "remington_870_express", "charges": [ 0, 7 ], "contents-item": "shoulder_strap", "prob": 7 }, { "item": "remington_700", "charges": [ 0, 4 ], "contents-item": "shoulder_strap", "prob": 2 }, { "item": "M24", "charges": [ 0, 5 ], "contents-item": "shoulder_strap", "prob": 10 } ] @@ -1350,30 +1033,30 @@ "variant": "mossberg_500_security", "charges": [ 6, 6 ], "contents-item": "shoulder_strap", - "prob": 40 + "prob": 2 }, { "item": "mossberg_590", "variant": "mossberg_590", "charges": [ 9, 9 ], "contents-item": "shoulder_strap", - "prob": 15 + "prob": 1 }, { "item": "mossberg_930", "variant": "mossberg_930", "charges": [ 8, 8 ], "contents-item": "shoulder_strap", - "prob": 7 + "prob": 5 }, { "item": "mossberg_930", "variant": "m1014", "charges": [ 8, 8 ], "contents-item": "shoulder_strap", - "prob": 2 + "prob": 1 }, - { "item": "remington_870_express", "charges": [ 7, 7 ], "contents-item": "shoulder_strap", "prob": 70 } + { "item": "remington_870_express", "charges": [ 7, 7 ], "contents-item": "shoulder_strap", "prob": 3 } ] }, { @@ -1541,7 +1224,7 @@ }, { "group": "field_shotgun" } ], - "prob": 40 + "prob": 1 }, { "collection": [ @@ -1555,7 +1238,7 @@ }, { "group": "field_shotgun" } ], - "prob": 15 + "prob": 1 }, { "collection": [ @@ -1569,7 +1252,7 @@ }, { "group": "field_shotgun" } ], - "prob": 7 + "prob": 1 }, { "collection": [ @@ -1583,7 +1266,7 @@ }, { "group": "field_shotgun" } ], - "prob": 2 + "prob": 1 }, { "collection": [ @@ -1596,7 +1279,7 @@ }, { "group": "field_shotgun" } ], - "prob": 70 + "prob": 1 }, { "collection": [ @@ -1616,7 +1299,7 @@ { "item": "M24", "charges": [ 0, 4 ], "contents-item": "shoulder_strap", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ] }, { "group": "field_308" } ], - "prob": 10 + "prob": 5 } ] }, @@ -1631,8 +1314,8 @@ { "group": "field_mini14", "prob": 5 }, { "group": "field_steyraug", "prob": 1 }, { "group": "field_g36", "prob": 1 }, - { "group": "field_shotgun", "prob": 80 }, - { "group": "field_308", "prob": 20 }, + { "group": "field_shotgun", "prob": 10 }, + { "group": "field_308", "prob": 10 }, { "group": "field_3006", "prob": 5 } ] }, @@ -1640,21 +1323,12 @@ "type": "item_group", "id": "sidearms_cop", "items": [ - { "item": "fn57", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 1 }, - { "item": "glock_19", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 50 }, - { "item": "glock_17", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 60 }, - { "item": "m9", "variant": "m9", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 3 }, - { "item": "sp2022", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 10 }, - { "item": "px4", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 5 }, - { "item": "usp_9mm", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 3 }, - { "item": "glock_31", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 4 }, - { "item": "p226_357sig", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 2 }, - { "item": "p320_357sig", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 2 }, - { "item": "glock_22", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 30 }, - { "item": "px4_40", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 5 }, - { "item": "sig_40", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 10 }, - { "item": "glock_21", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 10 }, - { "item": "usp_45", "variant": "usp_45", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ], "prob": 2 } + { "item": "glock_19", "prob": 15, "charges": [ 0, 15 ] }, + { "item": "glock_22", "prob": 20, "ammo-item": "40sw", "charges": [ 0, 15 ] }, + { "item": "m9", "variant": "m9", "prob": 5, "charges": [ 0, 15 ] }, + { "item": "sig_40", "prob": 20, "charges": [ 0, 12 ] }, + { "item": "usp_45", "prob": 10, "charges": [ 0, 12 ] }, + { "item": "usp_9mm", "prob": 10, "charges": [ 0, 15 ] } ] }, { @@ -1964,7 +1638,7 @@ }, { "group": "field_shotgun" } ], - "prob": 5 + "prob": 1 }, { "collection": [ @@ -1978,7 +1652,7 @@ { "item": "M24", "charges": [ 0, 5 ], "contents-item": "shoulder_strap", "damage": [ 0, 3 ], "dirt": [ 0, 7050 ] }, { "group": "field_308" } ], - "prob": 7 + "prob": 5 }, { "collection": [ @@ -2132,24 +1806,24 @@ { "group": "modular_ar15", "prob": 13, "charges-min": 0, "charges-max": 30 }, { "item": "ar_pistol", "prob": 2, "charges-min": 0, "charges-max": 30 }, { "item": "plr16", "prob": 1, "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": "benelli_sa", "variant": "m2", "prob": 7, "charges-min": 0, "charges-max": 4 }, - { "item": "benelli_sa", "variant": "sbe", "prob": 11, "charges-min": 0, "charges-max": 4 }, + { "item": "mossberg_500", "prob": 2, "charges-min": 0, "charges-max": 6 }, + { "item": "remington_870", "prob": 2, "charges-min": 0, "charges-max": 5 }, + { "item": "benelli_sa", "variant": "m2", "prob": 2, "charges-min": 0, "charges-max": 4 }, + { "item": "benelli_sa", "variant": "sbe", "prob": 2, "charges-min": 0, "charges-max": 4 }, { "item": "benelli_tsa", "variant": "m2_tac", "contents-item": [ "rail_mount" ], - "prob": 4, + "prob": 1, "charges-min": 0, "charges-max": 6 }, - { "item": "remington_870", "variant": "ithaca37", "prob": 4, "charges-min": 0, "charges-max": 5 }, + { "item": "remington_870", "variant": "ithaca37", "prob": 1, "charges-min": 0, "charges-max": 5 }, { "group": "cz600", "prob": 5, "charges-min": 0, "charges-max": 10 }, { "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": "shotgun_s", "prob": 1 }, + { "item": "shotgun_d", "prob": 1, "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", "variant": "mosin44", "prob": 2, "charges-min": 0, "charges-max": 5 }, diff --git a/data/json/itemgroups/Weapons_Mods_Ammo/guns_by_calibre.json b/data/json/itemgroups/Weapons_Mods_Ammo/guns_by_calibre.json new file mode 100644 index 0000000000000..8053ea8068189 --- /dev/null +++ b/data/json/itemgroups/Weapons_Mods_Ammo/guns_by_calibre.json @@ -0,0 +1,861 @@ +[ + { + "type": "item_group", + "id": "guns_pistol_common_9mm", + "//": "Pistols that are reasonably prolific amongst civilians, commonly owned and reliably obtainable by citizens and that are found in many locations.", + "//2": "Making the assumption any loaded gun will have additional ammo and mags with it.", + "items": [ + { "group": "nested_glock_17", "prob": 12 }, + { "group": "nested_glock_19", "prob": 15 }, + { "group": "nested_m9", "prob": 11 }, + { "group": "nested_px4", "prob": 11 }, + { "group": "nested_hi_power_9mm", "prob": 2 }, + { "group": "nested_walther_ppq_9mm", "prob": 4 }, + { "group": "nested_cz75", "prob": 1 }, + { "group": "nested_kpf9", "prob": 13 }, + { "group": "nested_hptc9", "prob": 2 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_22", + "items": [ + { "group": "nested_walther_ccp", "prob": 7 }, + { "group": "nested_walther_p22", "prob": 30 }, + { "group": "nested_ruger_lcr_22", "prob": 30 }, + { "group": "nested_sig_mosquito", "prob": 15 }, + { "group": "nested_sw_22", "prob": 40 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_45", + "items": [ + { "group": "nested_glock_21", "prob": 5 }, + { "group": "nested_m1911", "prob": 17 }, + { "group": "nested_walther_ppq_45", "prob": 2 }, + { "group": "nested_hptjhp", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_380", + "items": [ + { "group": "nested_kp3at", "prob": 10 }, + { "group": "nested_rugerlcp", "prob": 10 }, + { "group": "nested_hptcf380", "prob": 2 }, + { "group": "nested_taurus_spectrum", "prob": 6 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_40", + "items": [ + { "group": "nested_glock_22", "prob": 10 }, + { "group": "nested_px4_40", "prob": 5 }, + { "group": "nested_hi_power_40", "prob": 2 }, + { "group": "nested_walther_ppq_40", "prob": 3 }, + { "group": "nested_hptjcp", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_357mag", + "items": [ + { "group": "nested_cop_38", "prob": 3 }, + { "group": "nested_mr73", "prob": 3 }, + { "group": "nested_sw_619", "prob": 3 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_38", + "items": [ { "group": "nested_ruger_lcr_38", "prob": 5 }, { "group": "nested_model_10_revolver", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_44", + "items": [ { "group": "nested_sw629", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_10mm", + "items": [ { "group": "nested_sw_610", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_other", + "items": [ { "group": "nested_kp32", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_9mm", + "items": [ + { "item": "glock_17", "prob": 11, "charges-min": 0 }, + { "item": "glock_19", "prob": 15, "charges-min": 0 }, + { "item": "m9", "variant": "m9", "prob": 11, "charges-min": 0 }, + { "item": "px4", "prob": 11, "charges-min": 0 }, + { "item": "hi_power_9mm", "prob": 2, "charges-min": 0 }, + { "item": "walther_ppq_9mm", "prob": 4, "charges-min": 0 }, + { "item": "kpf9", "prob": 24, "charges-min": 0 }, + { "item": "hptc9", "prob": 2, "charges-min": 0 }, + { "item": "cz75", "prob": 7, "charges-min": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_22", + "items": [ + { "item": "walther_ccp", "prob": 6, "charges-min": 0 }, + { "item": "sig_mosquito", "prob": 15, "charges-min": 0 }, + { "item": "sw_22", "prob": 40, "charges-min": 0 }, + { "item": "walther_p22", "prob": 30, "charges-min": 0 }, + { "item": "ruger_lcr_22", "prob": 60, "charges-min": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_45", + "items": [ + { "item": "glock_21", "prob": 5, "charges-min": 0 }, + { "item": "m1911", "prob": 17, "charges-min": 0 }, + { "item": "walther_ppq_45", "prob": 2, "charges-min": 0 }, + { "item": "hptjhp", "prob": 1, "charges-min": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_380", + "items": [ + { "item": "kp3at", "prob": 10, "charges-min": 0 }, + { "item": "rugerlcp", "prob": 10, "charges-min": 0 }, + { "item": "hptcf380", "prob": 2, "charges-min": 0 }, + { "item": "taurus_spectrum", "prob": 6, "charges-min": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_40", + "items": [ + { "item": "glock_22", "prob": 10, "charges-min": 0 }, + { "item": "px4_40", "prob": 5, "charges-min": 0 }, + { "item": "hi_power_40", "prob": 2, "charges-min": 0 }, + { "item": "walther_ppq_40", "prob": 3, "charges-min": 0 }, + { "item": "hptjcp", "prob": 1, "charges-min": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_357mag", + "items": [ { "item": "cop_38", "prob": 5, "charges-min": 0 }, { "item": "sw_619", "prob": 5, "charges-min": 0 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_38", + "items": [ + { "item": "ruger_lcr_38", "prob": 5, "charges-min": 0 }, + { "item": "model_10_revolver", "prob": 10, "charges-min": 0 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_44", + "items": [ { "item": "sw629", "prob": 5, "charges-min": 0 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_10mm", + "items": [ { "item": "sw_610", "prob": 5, "charges-min": 0 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_everyday_carry_other", + "items": [ { "item": "kp32", "prob": 5, "charges-min": 0 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_9mm", + "items": [ + { "item": "glock_17", "prob": 11 }, + { "item": "glock_19", "prob": 15 }, + { "item": "m9", "variant": "m9", "prob": 11 }, + { "item": "px4", "prob": 8 }, + { "item": "kpf9", "prob": 12 }, + { "item": "hi_power_9mm", "prob": 1 }, + { "item": "walther_ppq_9mm", "prob": 4 }, + { "item": "cz75", "prob": 6 }, + { "item": "walther_ccp", "prob": 6 }, + { "item": "hptc9", "prob": 2 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_22", + "items": [ + { "item": "sig_mosquito", "prob": 15 }, + { "item": "sw_22", "prob": 40 }, + { "item": "walther_p22", "prob": 35 }, + { "item": "ruger_lcr_22", "prob": 70 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_45", + "items": [ + { "item": "glock_21", "prob": 5 }, + { "item": "m1911", "prob": 17 }, + { "item": "walther_ppq_45", "prob": 3 }, + { "item": "hptjhp", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_380", + "items": [ + { "item": "kp3at", "prob": 10 }, + { "item": "rugerlcp", "prob": 10 }, + { "item": "hptcf380", "prob": 2 }, + { "item": "taurus_spectrum", "prob": 6 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_40", + "items": [ + { "item": "glock_22", "prob": 10 }, + { "item": "px4_40", "prob": 5 }, + { "item": "hi_power_40", "prob": 2 }, + { "item": "walther_ppq_40", "prob": 3 }, + { "item": "hptjcp", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_357mag", + "items": [ { "item": "cop_38", "prob": 1 }, { "item": "sw_619", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_38", + "items": [ { "item": "ruger_lcr_38", "prob": 5 }, { "item": "model_10_revolver", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_44", + "items": [ { "item": "sw629", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_45colt", + "items": [ { "item": "colt_saa", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_10mm", + "items": [ { "item": "sw_610", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_common_display_other", + "items": [ { "item": "kp32", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_9mm", + "items": [ + { "group": "nested_90two", "prob": 20 }, + { "group": "nested_usp_9mm", "prob": 13 }, + { "group": "nested_p08", "prob": 7 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_22", + "items": [ { "group": "nested_j22", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_223", + "items": [ + { "group": "nested_ar_pistol", "prob": 1 }, + { "group": "nested_plr16", "prob": 1 }, + { "group": "nested_minidraco556", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_45", + "items": [ { "group": "nested_usp_45", "prob": 20 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_40", + "items": [ { "group": "nested_90two40", "prob": 2 }, { "group": "nested_sig_40", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_762", + "items": [ { "group": "nested_draco", "prob": 20 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_357mag", + "items": [ { "group": "nested_cop_38", "prob": 15 }, { "group": "nested_mr73", "prob": 8 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_38", + "items": [ { "group": "nested_model_10_revolver", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_44", + "items": [ { "group": "nested_sw629", "prob": 40 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_45colt", + "items": [ { "group": "nested_bond_410", "prob": 15 }, { "group": "nested_colt_saa", "prob": 8 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_10mm", + "items": [ { "group": "nested_TDI_10", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_other", + "items": [ + { "group": "nested_m1911a1_38super", "prob": 20 }, + { "group": "nested_fn57", "prob": 10 }, + { "group": "nested_sig_p230", "prob": 45 }, + { "group": "nested_sw_500", "prob": 15 }, + { "group": "nested_walther_p38", "prob": 15 }, + { "group": "nested_raging_bull", "prob": 10 }, + { "group": "nested_m714", "prob": 8 }, + { "group": "nested_m1911-460", "prob": 5 }, + { "group": "nested_bfr", "prob": 10 }, + { "group": "nested_mauser_c96", "prob": 15 }, + { "group": "nested_makarov", "prob": 15 }, + { "group": "nested_tokarev", "prob": 15 }, + { "group": "nested_walther_ppk", "prob": 20 } + ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_9mm", + "items": [ { "item": "m9", "variant": "90two", "prob": 5 }, { "item": "usp_9mm", "prob": 48 }, { "item": "p08", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_45", + "items": [ { "item": "usp_45", "prob": 9 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_40", + "items": [ { "item": "90two40", "prob": 2 }, { "item": "sig_40", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_762", + "items": [ { "item": "draco", "prob": 20 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_357mag", + "items": [ { "item": "cop_38", "prob": 10 }, { "item": "mr73", "prob": 8 }, { "group": "modular_deagle_357", "prob": 4 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_44", + "items": [ { "item": "sw629", "prob": 15 }, { "group": "modular_deagle_44", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_45colt", + "items": [ { "item": "bond_410", "prob": 10 }, { "item": "colt_saa", "prob": 8 } ] + }, + { + "type": "item_group", + "id": "guns_pistol_rare_display_other", + "items": [ + { "item": "m1911a1_38super", "prob": 25 }, + { "item": "fn57", "prob": 3 }, + { "item": "sig_p230", "prob": 15 }, + { "item": "sw_500", "prob": 15 }, + { "item": "walther_p38", "prob": 10 }, + { "item": "raging_bull", "prob": 10 }, + { "item": "raging_judge", "prob": 20 }, + { "item": "mauser_m714", "prob": 15 }, + { "item": "m1911-460", "prob": 10 }, + { "item": "bfr", "prob": 10 }, + { "item": "mauser_c96", "prob": 15 }, + { "item": "makarov", "prob": 8 }, + { "item": "tokarev", "prob": 5 }, + { "item": "walther_ppk", "prob": 8 }, + { "group": "modular_deagle_50", "prob": 4 }, + { "group": "nested_deagle_with_kits", "prob": 2 }, + { "group": "modular_deagle_complete", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_22", + "items": [ { "group": "nested_marlin_9a", "prob": 8 }, { "group": "nested_ruger_1022", "prob": 28 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_223", + "items": [ + { "group": "nested_ar_pistol", "prob": 1 }, + { "group": "nested_plr16", "prob": 1 }, + { "group": "nested_ar15", "prob": 15 }, + { "group": "nested_ruger_mini", "prob": 1 }, + { "group": "nested_ak556", "prob": 2 }, + { "group": "nested_bren2_556", "prob": 1 }, + { "group": "nested_rdb_223", "prob": 1 }, + { "group": "nested_mdrx", "prob": 1 }, + { "group": "nested_cz600", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_762", + "items": [ + { "group": "nested_sks", "prob": 1 }, + { "group": "nested_aksemi", "prob": 2 }, + { "group": "nested_bren2_762", "prob": 1 }, + { "group": "nested_vz58ts", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_308", + "items": [ { "group": "nested_ar10", "prob": 1 }, { "group": "nested_m1a", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_3006", + "items": [ + { "group": "nested_browning_blr", "prob": 1 }, + { "group": "nested_remington_700", "prob": 4 }, + { "group": "nested_ruger_m77", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_762R", + "items": [ { "group": "nested_mosin44", "prob": 1 }, { "group": "nested_mosin91_30", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_270win", + "items": [ { "group": "nested_remington700_270", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_380", + "items": [ { "group": "nested_hpt3895", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_other", + "items": [ + { "group": "nested_converted_ar15", "prob": 6 }, + { "group": "nested_converted_mdrx", "prob": 1 }, + { "group": "nested_converted_cz600", "prob": 1 }, + { "group": "nested_1895sbl", "prob": 1 }, + { "group": "nested_win70", "prob": 1 }, + { "group": "nested_ruger_arr", "prob": 1 }, + { "group": "nested_m1carbine", "prob": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_22", + "items": [ + { "item": "marlin_9a", "prob": 8, "charges-min": 0, "charges-max": 19 }, + { "item": "ruger_1022", "prob": 28, "charges-min": 0, "charges-max": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_223", + "items": [ + { "item": "ar_pistol", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "plr16", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "ruger_mini", "prob": 1, "charges-min": 0, "charges-max": 5 }, + { "item": "ak556", "prob": 2, "charges-min": 0, "charges-max": 30 }, + { "item": "ak556", "variant": "zpapm90", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "bren2_556", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "mdrx", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "group": "cz600", "prob": 1, "charges-min": 0, "charges-max": 10 }, + { "item": "ak556", "variant": "zpapm90", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "rdb_223", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "group": "modular_ar15", "prob": 15, "charges-min": 0, "charges-max": 30 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_762", + "items": [ + { "item": "sks", "prob": 1, "charges-min": 0, "charges-max": 10 }, + { "item": "aksemi", "prob": 2, "charges-min": 0, "charges-max": 30 }, + { "item": "bren2_762", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "vz58ts", "prob": 1, "charges-min": 0, "charges-max": 30 }, + { "item": "mk47", "prob": 1, "charges-min": 0, "charges-max": 30 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_308", + "items": [ + { "item": "ar10", "prob": 1, "charges-min": 0, "charges-max": 20 }, + { "item": "m1a", "prob": 1, "charges-min": 0, "charges-max": 5 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_3006", + "items": [ + { "item": "browning_blr", "prob": 1, "charges-min": 0, "charges-max": 4 }, + { "item": "remington_700", "prob": 4, "charges-min": 0, "charges-max": 4 }, + { "item": "ruger_m77", "prob": 1, "charges-min": 0, "charges-max": 4 }, + { "item": "garand", "prob": 1, "charges-min": 0, "charges-max": 8 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_762R", + "items": [ + { "item": "mosin44", "variant": "mosin44", "prob": 1, "charges-min": 0, "charges-max": 5 }, + { "item": "mosin91_30", "variant": "mosin91_30", "prob": 1, "charges-min": 0, "charges-max": 5 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_270win", + "items": [ { "item": "remington700_270", "prob": 1, "charges-min": 0, "charges-max": 4 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_380", + "items": [ { "item": "hpt3895", "prob": 1, "charges-min": 0, "charges-max": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_worn_other", + "items": [ + { "item": "ruger_arr", "prob": 1, "charges-min": 0, "charges-max": 3 }, + { "item": "win70", "prob": 1, "charges-min": 0, "charges-max": 3 }, + { "item": "1895sbl", "prob": 1, "charges-min": 0, "charges-max": 6 }, + { "item": "m1carbine", "prob": 1, "charges-min": 0, "charges-max": 15 }, + { "item": "varmint_airgun", "prob": 1, "charges-min": 0, "charges-max": 1 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_22", + "items": [ { "item": "ruger_1022", "prob": 160 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_223", + "items": [ + { "item": "ak556", "prob": 15 }, + { "item": "ak556", "variant": "zpapm90", "prob": 10 }, + { "item": "bren2_556", "prob": 10 }, + { "item": "ak556", "variant": "zpapm90", "prob": 10 }, + { "item": "modular_ar15", "prob": 45 }, + { "item": "ruger_mini", "prob": 45 }, + { "item": "mdrx", "prob": 10 }, + { "item": "cz600", "prob": 10 }, + { "group": "nested_ar15_with_kits", "prob": 15 }, + { "group": "nested_mdrx_with_kits", "prob": 10 }, + { "group": "nested_cz600_with_kits", "prob": 10 }, + { "item": "rdb_223", "prob": 30 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_762", + "items": [ + { "item": "sks", "prob": 20 }, + { "item": "aksemi", "prob": 15 }, + { "item": "mk47", "prob": 10 }, + { "item": "bren2_762", "prob": 6 }, + { "item": "vz58ts", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_308", + "items": [ + { "item": "ar10", "prob": 35 }, + { "item": "m1a", "prob": 30 }, + { "item": "M24", "prob": 5 }, + { "item": "savage_111f", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_3006", + "items": [ { "item": "remington_700", "prob": 45 }, { "item": "ruger_m77", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_270win", + "items": [ { "item": "remington700_270", "prob": 25 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_380", + "items": [ { "item": "hpt3895", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_common_display_other", + "items": [ + { "item": "ruger_arr", "prob": 10 }, + { "item": "weatherby_5", "prob": 1 }, + { "item": "sharps", "prob": 10 }, + { "item": "varmint_airgun", "prob": 5 }, + { "item": "savage112", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_223", + "items": [ + { "group": "nested_fs2000", "prob": 6 }, + { "group": "nested_hk_g36", "prob": 30 }, + { "group": "nested_m249_semi", "prob": 5 }, + { "group": "nested_m4_carbine", "prob": 45 }, + { "group": "nested_m16_auto_rifle", "prob": 25 }, + { "group": "nested_zpapm90", "prob": 1 }, + { "group": "nested_zpap85", "prob": 1 }, + { "group": "nested_mdrx", "prob": 30 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_762", + "items": [ { "group": "nested_805_bren", "prob": 15 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_308", + "items": [ + { "group": "nested_fn_fal", "prob": 80 }, + { "group": "nested_hk_g3", "prob": 40 }, + { "group": "nested_m14ebr", "prob": 15 }, + { "group": "nested_savage_111f", "prob": 15 }, + { "group": "nested_M24", "prob": 15 }, + { "group": "nested_hk417_13", "prob": 40 }, + { "group": "nested_rfb_308", "prob": 5 }, + { "group": "nested_steyr_scout", "prob": 5 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_3006", + "items": [ + { "group": "nested_m1903", "prob": 15 }, + { "group": "nested_m1918", "prob": 30 }, + { "group": "nested_remington_700", "prob": 20 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_44", + "items": [ { "group": "nested_henry_big_boy", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_45", + "items": [ { "group": "nested_hk_usc45", "prob": 20 }, { "group": "nested_greasegun", "prob": 1 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_45colt", + "items": [ { "group": "nested_colt_lightning", "prob": 15 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_762R", + "items": [ + { "group": "nested_mosin44_ebr", "prob": 10 }, + { "group": "nested_mosin91_30_ebr", "prob": 20 }, + { "group": "nested_psl", "prob": 5 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_300blk", + "items": [ { "group": "nested_iwi_tavor_x95_300blk", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_other", + "items": [ + { "group": "nested_mk3", "prob": 10 }, + { "group": "nested_number4", "prob": 10 }, + { "group": "nested_ak74", "prob": 18 }, + { "group": "nested_aks74", "prob": 10 }, + { "group": "nested_sharps", "prob": 15 }, + { "group": "nested_weatherby_5", "prob": 1 }, + { "group": "nested_savage112", "prob": 15 }, + { "group": "nested_mrad_smr", "prob": 6 }, + { "group": "nested_axmc", "prob": 6 }, + { "group": "nested_converted_axmc", "prob": 3 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_22", + "items": [ { "item": "marlin_9a", "prob": 36 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_223", + "items": [ + { "group": "mdrx", "prob": 10 }, + { "group": "nested_ar15_with_kits", "prob": 19 }, + { "group": "nested_mdrx_with_kits", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_762", + "items": [ { "group": "nested_805_bren", "prob": 15 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_308", + "items": [ + { "item": "fn_fal_semi", "prob": 80 }, + { "item": "hk_g3", "prob": 40 }, + { "item": "m14ebr", "prob": 15 }, + { "item": "savage_111f", "prob": 15 }, + { "item": "M24", "prob": 15 }, + { "item": "hk417_13", "prob": 40 }, + { "item": "rfb_308", "prob": 5 }, + { "item": "steyr_scout", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_3006", + "items": [ + { "item": "m1903", "prob": 15, "charges-min": 0, "charges-max": 0 }, + { "item": "browning_blr", "prob": 10 }, + { "item": "garand", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_44", + "items": [ { "group": "nested_henry_big_boy", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_45", + "items": [ { "item": "hk_usc45", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_45colt", + "items": [ { "group": "nested_colt_lightning", "prob": 10 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_762R", + "items": [ + { "item": "mosin44", "variant": "mosin44_ebr", "contents-group": "mosin_mods", "prob": 1, "charges": [ 0, 0 ] }, + { + "item": "mosin91_30", + "variant": "mosin91_30_ebr", + "contents-group": "mosin_mods", + "prob": 1, + "charges": [ 0, 0 ] + }, + { "item": "mosin44", "variant": "mosin44", "prob": 10 }, + { "item": "mosin91_30", "variant": "mosin91_30", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_300blk", + "items": [ { "item": "iwi_tavor_x95_300blk", "prob": 15 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_rare_display_other", + "items": [ + { "item": "smle_mk3", "prob": 10, "charges-min": 0, "charges-max": 0 }, + { "item": "number4_mki", "prob": 10, "charges-min": 0, "charges-max": 0 }, + { + "item": "type99", + "variant": "type99", + "contents-group": "type99_mods", + "prob": 3, + "charges-min": 0, + "charges-max": 0 + }, + { "item": "type99_sniper", "contents-item": "arisaka_monopod", "prob": 1, "charges-min": 0, "charges-max": 0 }, + { "item": "1895sbl", "prob": 10 }, + { "item": "ruger_pr", "prob": 10 }, + { "item": "carbine_flintlock", "prob": 1 }, + { "item": "rifle_flintlock", "prob": 1 }, + { "item": "win70", "prob": 10 }, + { "item": "ak74_semi", "variant": "ak74_fixed", "prob": 6, "charges": [ 0, 0 ] }, + { + "item": "ak74_semi", + "variant": "ak74_folding", + "contents-group": "ak74_folding_mods", + "prob": 4, + "charges": [ 0, 0 ] + }, + { "item": "m1carbine", "prob": 10 }, + { "item": "mrad_smr", "prob": 10 }, + { "group": "axmc", "prob": 10 }, + { "group": "nested_axmc_with_kits", "prob": 10 } + ] + }, + { + "type": "item_group", + "id": "guns_rifle_hunting_display_22", + "items": [ { "item": "ruger_1022", "prob": 20 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_hunting_display_308", + "items": [ { "item": "ar10", "prob": 10 }, { "item": "savage_111f", "prob": 10 }, { "item": "steyr_scout", "prob": 5 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_hunting_display_3006", + "items": [ { "item": "browning_blr", "prob": 10 }, { "item": "remington_700", "prob": 40 }, { "item": "ruger_m77", "prob": 25 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_hunting_display_270win", + "items": [ { "item": "remington700_270", "prob": 30 } ] + }, + { + "type": "item_group", + "id": "guns_rifle_hunting_display_other", + "items": [ + { "item": "ruger_pr", "prob": 10 }, + { "item": "win70", "prob": 15 }, + { "item": "1895sbl", "prob": 10 }, + { "item": "varmint_airgun", "prob": 5 }, + { "item": "ruger_arr", "prob": 25 }, + { "item": "weatherby_5", "prob": 1 }, + { "item": "savage112", "prob": 5 }, + { "group": "ar15_50", "prob": 10 }, + { "group": "ar15_450", "prob": 12 } + ] + } +] diff --git a/data/json/itemgroups/Weapons_Mods_Ammo/nested_guns.json b/data/json/itemgroups/Weapons_Mods_Ammo/nested_guns.json index 234f78ae2bad7..3ac5df283bdd1 100644 --- a/data/json/itemgroups/Weapons_Mods_Ammo/nested_guns.json +++ b/data/json/itemgroups/Weapons_Mods_Ammo/nested_guns.json @@ -241,6 +241,19 @@ { "group": "on_hand_22" } ] }, + { + "id": "nested_j22", + "type": "item_group", + "//": "this is a distribution for the gun, reasonable number of backup mags, and some ammo to repack", + "subtype": "collection", + "ammo": 100, + "entries": [ + { "item": "j22", "charges-min": 0, "charges-max": 6 }, + { "item": "j22mag" }, + { "item": "j22mag", "prob": 50 }, + { "group": "on_hand_22" } + ] + }, { "id": "nested_sw_610", "type": "item_group", diff --git a/data/json/itemgroups/stashes.json b/data/json/itemgroups/stashes.json index 8263ae4ff96a8..c68af1133bd3b 100644 --- a/data/json/itemgroups/stashes.json +++ b/data/json/itemgroups/stashes.json @@ -162,8 +162,8 @@ "on_overflow": "spill", "entries": [ { "group": "bugout_first_aid", "count": 1, "prob": 90 }, - { "group": "bugout_small_gun", "prob": 50 }, - { "group": "bugout_long_gun", "prob": 40 }, + { "group": "bugout_small_gun", "prob": 70 }, + { "group": "bugout_long_gun", "prob": 20 }, { "group": "bugout_food", "prob": 50, "count": [ 1, 3 ] }, { "group": "bugout_water", "prob": 50, "count": [ 1, 3 ] }, { "group": "bugout_extras", "prob": 100, "count": [ 2, 6 ] }, @@ -190,11 +190,7 @@ "id": "bugout_small_gun", "subtype": "distribution", "//": "a handgun of some kind.", - "entries": [ - { "group": "guns_pistol_common", "prob": 100 }, - { "group": "guns_pistol_rare", "prob": 20 }, - { "group": "guns_pistol_obscure", "prob": 5 } - ] + "entries": [ { "group": "guns_pistol_common", "prob": 100 }, { "group": "guns_pistol_rare", "prob": 10 } ] }, { "type": "item_group", @@ -202,15 +198,12 @@ "subtype": "distribution", "//": "a long weapon of some kind.", "entries": [ - { "group": "guns_smg_common", "prob": 100 }, - { "group": "guns_smg_rare", "prob": 20 }, - { "group": "guns_smg_obscure", "prob": 5 }, + { "group": "guns_smg_common", "prob": 10 }, + { "group": "guns_smg_rare", "prob": 2 }, { "group": "guns_rifle_common", "prob": 100 }, { "group": "guns_rifle_rare", "prob": 20 }, - { "group": "guns_rifle_obscure", "prob": 5 }, - { "group": "guns_shotgun_common", "prob": 100 }, - { "group": "guns_shotgun_rare", "prob": 20 }, - { "group": "guns_shotgun_obscure", "prob": 5 } + { "group": "guns_shotgun_common", "prob": 2 }, + { "group": "guns_shotgun_rare", "prob": 1 } ] }, { @@ -218,7 +211,7 @@ "id": "bugout_gun", "subtype": "distribution", "//": "a gun or two of some kind.", - "entries": [ { "group": "bugout_small_gun", "prob": 100 }, { "group": "bugout_long_gun", "prob": 80 } ] + "entries": [ { "group": "bugout_small_gun", "prob": 100 }, { "group": "bugout_long_gun", "prob": 20 } ] }, { "type": "item_group", diff --git a/data/json/mapgen/basement/basement_guns.json b/data/json/mapgen/basement/basement_guns.json index 5e919bbe58d7b..9cb5f6168d3eb 100644 --- a/data/json/mapgen/basement/basement_guns.json +++ b/data/json/mapgen/basement/basement_guns.json @@ -4,7 +4,7 @@ "method": "json", "om_terrain": [ "basement" ], "//": "used by house_31 and house_32", - "weight": 250, + "weight": 25, "object": { "fill_ter": "t_soil", "rotation": [ 0, 3 ], @@ -48,36 +48,35 @@ }, "furniture": { "#": "f_counter", "]": "f_bookcase", "h": "f_chair", "s": "f_gunsafe_ml", "{": "f_rack" }, "place_loot": [ - { "group": "guns_smg_rare", "x": 6, "y": 2, "chance": 20, "magazine": 100 }, - { "group": "guns_rifle_rare", "x": 7, "y": 2, "chance": 30, "magazine": 100 }, - { "group": "mags_pistol_rare", "x": 8, "y": 2, "chance": 75 }, - { "group": "guns_pistol_common", "x": 9, "y": 2, "chance": 90, "magazine": 100 }, - { "group": "mags_pistol_common", "x": 10, "y": 2, "chance": 100, "repeat": [ 1, 3 ] }, - { "group": "guns_rifle_common", "x": 11, "y": 2, "chance": 80, "magazine": 100 }, - { "group": "guns_shotgun_common", "x": 12, "y": 2, "chance": 80, "magazine": 100 }, - { "group": "mags_rifle_common", "x": 13, "y": 2, "chance": 100, "repeat": [ 1, 3 ] }, - { "group": "guns_smg_common", "x": 14, "y": 2, "chance": 70, "magazine": 100 }, - { "group": "guns_pistol_rare", "x": 15, "y": 2, "chance": 40, "magazine": 100 }, - { "group": "mags_smg_common", "x": 16, "y": 2, "chance": 70, "repeat": [ 1, 2 ] }, - { "group": "guns_shotgun_rare_static", "x": 17, "y": 2, "chance": 30, "magazine": 100 }, - { "group": "ammo_shotgun_reloaded", "x": 6, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, - { "group": "ammo_rifle_reloaded", "x": 7, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, - { "group": "ammo_shotgun_common", "x": 8, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, - { "group": "ammo_pistol_reloaded", "x": 9, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, - { "group": "ammo_rifle_reloaded", "x": 10, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, - { "group": "ammo_rifle_common", "x": 11, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, - { "group": "ammo_smg_common", "x": 12, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, - { "group": "ammo_pistol_common", "x": 13, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, - { "group": "ammo_rifle_common", "x": 14, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, - { "group": "ammo_pistol_common", "x": 15, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, - { "group": "ammo_pistol_reloaded", "x": 16, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, - { "group": "ammo_shotgun_common", "x": 17, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, + { "group": "guns_rare", "x": 6, "y": 2, "chance": 20, "magazine": 100 }, + { "group": "guns_rare", "x": 7, "y": 2, "chance": 20, "magazine": 100 }, + { "group": "mags_rare", "x": 8, "y": 2, "chance": 20 }, + { "group": "guns_common", "x": 9, "y": 2, "chance": 100, "magazine": 100 }, + { "group": "mags_common", "x": 10, "y": 2, "chance": 100, "repeat": [ 1, 3 ] }, + { "group": "guns_common", "x": 11, "y": 2, "chance": 100, "magazine": 100 }, + { "group": "guns_common", "x": 12, "y": 2, "chance": 100, "magazine": 100 }, + { "group": "mags_common", "x": 13, "y": 2, "chance": 100, "repeat": [ 1, 3 ] }, + { "group": "guns_common", "x": 14, "y": 2, "chance": 100, "magazine": 100 }, + { "group": "guns_rare", "x": 15, "y": 2, "chance": 20, "magazine": 100 }, + { "group": "mags_common", "x": 16, "y": 2, "chance": 70, "repeat": [ 1, 2 ] }, + { "group": "guns_rare_static", "x": 17, "y": 2, "chance": 30, "magazine": 100 }, + { "group": "ammo_reloaded", "x": 6, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, + { "group": "ammo_reloaded", "x": 7, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 8, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, + { "group": "ammo_reloaded", "x": 9, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, + { "group": "ammo_reloaded", "x": 10, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 11, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 12, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 13, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 14, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 15, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, + { "group": "ammo_reloaded", "x": 16, "y": 5, "chance": 40, "repeat": [ 1, 2 ] }, + { "group": "ammo_common", "x": 17, "y": 5, "chance": 90, "repeat": [ 1, 2 ] }, { "group": "book_gunref", "x": 14, "y": [ 10, 11 ], "chance": 60 }, { "group": "gunmod_common", "x": 4, "y": 11, "chance": 100 }, - { "group": "guns_obscure", "x": 6, "y": 11, "chance": 100, "ammo": 100, "magazine": 100 }, - { "group": "museum_guns", "x": 6, "y": 11, "chance": 70, "ammo": 70, "magazine": 90 }, + { "group": "guns_obscure", "x": 6, "y": 11, "chance": 10, "ammo": 100, "magazine": 100 }, { "group": "tools_common", "x": 20, "y": 12, "chance": 100 }, - { "group": "gunmod_rare", "x": 18, "y": 13, "chance": 30 }, + { "group": "gunmod_rare", "x": 18, "y": 13, "chance": 10 }, { "group": "gunmod_rare", "x": 19, "y": 13, "chance": 100 } ], "place_monsters": [ diff --git a/data/json/mapgen/basement/basement_survival.json b/data/json/mapgen/basement/basement_survival.json index eaa680d09d745..b428c14d753b8 100644 --- a/data/json/mapgen/basement/basement_survival.json +++ b/data/json/mapgen/basement/basement_survival.json @@ -120,7 +120,7 @@ { "group": "gear_survival", "x": 13, "y": 14, "chance": 75 }, { "group": "gear_survival", "x": 13, "y": 15, "chance": 75 }, { - "group": "guns_survival", + "group": "guns_common", "x": 19, "y": [ 3, 4 ], "chance": 100, @@ -129,8 +129,8 @@ "magazine": 100 }, { "group": "ammo_reloaded", "x": 19, "y": 5, "chance": 100, "repeat": [ 1, 3 ], "magazine": 100 }, - { "group": "guns_pistol_common", "x": 15, "y": 10, "chance": 30, "ammo": 75, "magazine": 100 }, - { "group": "guns_pistol_common", "x": 21, "y": 10, "chance": 30, "ammo": 75, "magazine": 100 }, + { "group": "guns_common", "x": 15, "y": 10, "chance": 30, "ammo": 75, "magazine": 100 }, + { "group": "guns_common", "x": 21, "y": 10, "chance": 30, "ammo": 75, "magazine": 100 }, { "group": "clothing_outdoor_set", "x": 15, "y": 10, "chance": 30 }, { "group": "clothing_outdoor_set", "x": 21, "y": 10, "chance": 30 }, { "item": "blanket", "x": 16, "y": 10, "chance": 30 }, diff --git a/data/json/mapgen/farm_supply.json b/data/json/mapgen/farm_supply.json index d5bac78e13b22..4ba0557e1cc3a 100644 --- a/data/json/mapgen/farm_supply.json +++ b/data/json/mapgen/farm_supply.json @@ -519,7 +519,7 @@ "à": { "item": { "subtype": "collection", - "entries": [ { "group": "guns_rifle_common_display", "prob": 40 }, { "group": "guns_shotgun_common_display", "prob": 60 } ] + "entries": [ { "group": "guns_rifle_common_display", "prob": 60 }, { "group": "guns_shotgun_common_display", "prob": 40 } ] }, "chance": 7, "repeat": [ 0, 2 ] diff --git a/data/json/mapgen/gas_stations/gas_station_bunker.json b/data/json/mapgen/gas_stations/gas_station_bunker.json index 6ce4dfc1d1996..1477818a93524 100644 --- a/data/json/mapgen/gas_stations/gas_station_bunker.json +++ b/data/json/mapgen/gas_stations/gas_station_bunker.json @@ -261,9 +261,9 @@ "i": { "item": "SUS_office_desk", "chance": 70 }, "p": { "item": "clothing_male", "chance": 70, "repeat": 3 }, "P": [ - { "item": "guns_pistol_milspec", "chance": 60, "repeat": 3 }, - { "item": "ammo_pistol_milspec", "chance": 60, "repeat": 3 }, - { "item": "prison_armor", "chance": 60, "repeat": 3 } + { "item": "guns_pistol_milspec", "chance": 60 }, + { "item": "ammo_pistol_milspec", "chance": 60 }, + { "item": "prison_armor", "chance": 60 } ], "n": { "item": "SUS_bathroom_sink", "chance": 90 } }, @@ -431,10 +431,10 @@ "D": { "item": "textbooks", "chance": 80, "repeat": [ 1, 12 ] }, "Y": [ { "item": "mut_lab", "chance": 33, "repeat": [ 1, 2 ] }, { "item": "chem_lab", "chance": 75, "repeat": [ 1, 3 ] } ], "B": [ - { "item": "guns_rifle_milspec", "chance": 40, "repeat": [ 1, 4 ] }, - { "item": "guns_smg_milspec", "chance": 40, "repeat": [ 1, 4 ] }, - { "item": "ammo_rifle_milspec", "chance": 40, "repeat": [ 1, 4 ] }, - { "item": "ammo_smg_milspec", "chance": 40, "repeat": [ 1, 4 ] } + { "item": "guns_rifle_milspec", "chance": 40 }, + { "item": "guns_smg_milspec", "chance": 40 }, + { "item": "ammo_rifle_milspec", "chance": 40 }, + { "item": "ammo_smg_milspec", "chance": 40 } ] }, "place_loot": [ diff --git a/data/json/mapgen/gas_stations/s_gas.json b/data/json/mapgen/gas_stations/s_gas.json index 309cd1a48b545..71d749f94588b 100644 --- a/data/json/mapgen/gas_stations/s_gas.json +++ b/data/json/mapgen/gas_stations/s_gas.json @@ -287,9 +287,9 @@ { "item": "road", "x": [ 20, 20 ], "y": [ 13, 14 ], "chance": 80, "repeat": [ 1, 4 ] }, { "item": "camping", "x": [ 9, 9 ], "y": [ 15, 15 ], "chance": 90, "repeat": [ 1, 10 ] }, { "item": "magazines", "x": [ 9, 9 ], "y": [ 13, 15 ], "chance": 90, "repeat": [ 1, 25 ] }, - { "item": "softdrugs", "x": [ 8, 8 ], "y": [ 13, 15 ], "chance": 80, "repeat": [ 1, 8 ] } + { "item": "softdrugs", "x": [ 8, 8 ], "y": [ 13, 15 ], "chance": 80, "repeat": [ 1, 8 ] }, + { "item": "nested_shotgun_s", "x": 3, "y": 20, "chance": 10 } ], - "place_item": [ { "item": "shotgun_s", "x": 3, "y": 20 }, { "item": "shot_00", "x": 7, "y": 19, "chance": 50 } ], "place_monster": [ { "group": "GROUP_ZOMBIE_GAS", "x": [ 5, 10 ], "y": [ 6, 10 ], "repeat": [ 1, 2 ], "chance": 25 } ] } }, diff --git a/data/json/mapgen/house/house_garage_prepper.json b/data/json/mapgen/house/house_garage_prepper.json index 61890e81d5b79..2ff84c762ffbb 100644 --- a/data/json/mapgen/house/house_garage_prepper.json +++ b/data/json/mapgen/house/house_garage_prepper.json @@ -85,7 +85,7 @@ ] }, "place_loot": [ - { "group": "guns_survival", "x": [ 12, 12 ], "y": [ 21, 21 ], "chance": 80, "ammo": 100, "magazine": 100 }, + { "group": "guns_survival", "x": [ 12, 12 ], "y": [ 21, 21 ], "chance": 50, "ammo": 100, "magazine": 100 }, { "group": "tools_common", "x": [ 14, 16 ], "y": [ 11, 11 ], "chance": 80, "repeat": [ 1, 3 ] }, { "group": "supplies_fuel", "x": [ 14, 14 ], "y": [ 3, 6 ], "chance": 90, "repeat": [ 1, 2 ] }, { "group": "mischw", "x": [ 14, 16 ], "y": [ 11, 11 ], "chance": 65, "repeat": [ 1, 3 ] }, @@ -98,8 +98,8 @@ "group": "guns_survival", "x": [ 15, 16 ], "y": [ 8, 9 ], - "chance": 70, - "repeat": [ 1, 3 ], + "chance": 60, + "repeat": [ 1, 2 ], "ammo": 75, "magazine": 95 } diff --git a/data/json/mapgen/map_extras/exodii_crashes.json b/data/json/mapgen/map_extras/exodii_crashes.json index f60b8b035752e..471ff18030c96 100644 --- a/data/json/mapgen/map_extras/exodii_crashes.json +++ b/data/json/mapgen/map_extras/exodii_crashes.json @@ -226,7 +226,7 @@ ], "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ], "palettes": [ "exodii_crash_palette" ], - "items": { "_": [ { "item": "SUS_exodii_storage_medvalue", "chance": 100, "repeat": [ 1, 3 ] } ] } + "items": { "_": [ { "item": "SUS_exodii_storage_medvalue", "chance": 100, "repeat": [ 1, 2 ] } ] } } }, { diff --git a/data/json/mapgen/military/mil_base/mil_base_z0.json b/data/json/mapgen/military/mil_base/mil_base_z0.json index 8ca69229e44ed..1727c7e4ae3fd 100644 --- a/data/json/mapgen/military/mil_base/mil_base_z0.json +++ b/data/json/mapgen/military/mil_base/mil_base_z0.json @@ -675,9 +675,9 @@ "V": [ { "item": "tools_common", "chance": 50, "repeat": [ 0, 1 ] } ], "U": [ { "item": "SUS_office_filing_cabinet", "chance": 50, "repeat": [ 1, 10 ] }, - { "item": "guns_obscure", "chance": 50, "repeat": [ 1, 2 ] }, - { "item": "ammo_obscure", "chance": 50, "repeat": [ 2, 4 ] }, - { "item": "mags_obscure", "chance": 50, "repeat": [ 2, 3 ] } + { "item": "guns_common", "chance": 50, "repeat": [ 1, 2 ] }, + { "item": "ammo_common", "chance": 50, "repeat": [ 2, 4 ] }, + { "item": "mags_common", "chance": 50, "repeat": [ 2, 3 ] } ], "^": [ { "item": "mil_base_iv", "chance": 70 } ] }, diff --git a/data/json/mapgen/nested/basement_nested.json b/data/json/mapgen/nested/basement_nested.json index 227f4f2b1fe81..97036477e3b3c 100644 --- a/data/json/mapgen/nested/basement_nested.json +++ b/data/json/mapgen/nested/basement_nested.json @@ -1466,24 +1466,24 @@ }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 70, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 20, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -1498,10 +1498,10 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, - { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "gunmod_common", "chance": 50, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 40, "repeat": [ 1, 2 ] } ] } @@ -1542,24 +1542,24 @@ "furniture": { "%": "f_rack_wood", "$": "f_rack_wood", "=": "f_table", ",": "f_table", "~": "f_workbench", "!": "f_bookcase" }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -1574,9 +1574,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 40, "repeat": [ 1, 2 ] } ] @@ -1618,24 +1618,24 @@ "furniture": { "%": "f_locker", "$": "f_locker", "=": "f_table", ",": "f_table", "~": "f_workbench", "!": "f_bookcase" }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -1650,9 +1650,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 60, "repeat": [ 1, 2 ] } ] @@ -1693,24 +1693,24 @@ "furniture": { "%": "f_locker", "$": "f_locker", "=": "f_table", ",": "f_table", "~": "f_workbench", "!": "f_bookcase" }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -1725,9 +1725,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 60, "repeat": [ 1, 2 ] } ] @@ -3785,24 +3785,24 @@ }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 70, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 20, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -3817,9 +3817,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 80, "repeat": [ 1, 2 ] } ] @@ -3876,24 +3876,24 @@ }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 70, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 20, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -3908,9 +3908,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 80, "repeat": [ 1, 2 ] } ] @@ -3967,24 +3967,24 @@ }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 70, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 20, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -3999,9 +3999,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 80, "repeat": [ 1, 2 ] } ] @@ -4058,24 +4058,24 @@ }, "items": { "%": [ - { "item": "guns_rifle_common", "chance": 60, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_rifle_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_common", "chance": 70, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_pistol_rare", "chance": 30, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_rifle_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_rifle_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_common", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_shotgun_rare_static", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_obscure", "chance": 1, "ammo": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], "$": [ - { "item": "guns_smg_rare", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_smg_common", "chance": 50, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_common", "chance": 30, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_shotgun_rare_static", "chance": 20, "magazine": 100, "repeat": [ 1, 2 ] }, - { "item": "guns_obscure", "chance": 20, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] } + { "item": "guns_pistol_common", "chance": 100, "ammo": 100, "magazine": 100, "repeat": [ 2, 4 ] }, + { "item": "guns_pistol_rare", "chance": 10, "ammo": 100, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_common", "chance": 10, "magazine": 100, "repeat": [ 1, 2 ] }, + { "item": "guns_smg_rare", "chance": 1, "magazine": 100, "repeat": [ 1, 2 ] } ], ",": [ - { "item": "mags_pistol_rare", "chance": 40, "repeat": [ 1, 2 ] }, + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_pistol_common", "chance": 60, "repeat": [ 1, 2 ] }, - { "item": "mags_smg_common", "chance": 30, "repeat": [ 1, 2 ] }, + { "item": "mags_smg_common", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "mags_rifle_common", "chance": 40, "repeat": [ 1, 2 ] }, - { "item": "mags_pistol_rare", "chance": 20, "repeat": [ 1, 2 ] } + { "item": "mags_pistol_rare", "chance": 10, "repeat": [ 1, 2 ] } ], "=": [ { "item": "ammo_rifle_reloaded", "chance": 40, "repeat": [ 1, 2 ] }, @@ -4090,9 +4090,9 @@ { "item": "ammo_pistol_reloaded", "chance": 60, "repeat": [ 1, 2 ] } ], "~": [ - { "item": "museum_guns", "chance": 10 }, + { "item": "museum_guns", "chance": 1 }, { "item": "tools_common", "chance": 60 }, - { "item": "gunmod_rare", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "gunmod_rare", "chance": 5, "repeat": [ 1, 2 ] }, { "item": "gunmod_common", "chance": 20, "repeat": [ 1, 2 ] } ], "!": [ { "item": "book_gunref", "chance": 80, "repeat": [ 1, 2 ] } ] diff --git a/data/json/mapgen/nested/strip_mall_nested.json b/data/json/mapgen/nested/strip_mall_nested.json index 7a6c9cb8f88fd..c39468927ba38 100644 --- a/data/json/mapgen/nested/strip_mall_nested.json +++ b/data/json/mapgen/nested/strip_mall_nested.json @@ -3142,11 +3142,11 @@ "4": { "item": "guns_rifle_common", "chance": 50, "repeat": 2 }, "5": { "item": "jackets", "chance": 50, "repeat": [ 2, 4 ] }, "6": { "item": "clothing_hunting", "chance": 50, "repeat": [ 2, 4 ] }, - "C": { "item": "guns_shotgun_common", "chance": 50, "repeat": [ 3, 4 ] }, + "C": { "item": "guns_shotgun_common", "chance": 50, "repeat": 1 }, "B": { "item": "SUS_dishes", "chance": 100 }, "b": { "item": "SUS_silverware", "chance": 100 }, "0": { "item": "ammo_rifle_common", "chance": 100, "repeat": [ 3, 5 ] }, - "o": { "item": "ammo_shotgun_common", "chance": 100, "repeat": [ 3, 5 ] }, + "o": { "item": "ammo_shotgun_common", "chance": 100, "repeat": [ 1, 2 ] }, "d": { "item": "SUS_office_desk", "chance": 60 }, "$": { "item": "cash_register_random", "chance": 100 }, "L": { "item": "SUS_janitors_closet", "chance": 100 }, diff --git a/data/json/mapgen/police_department.json b/data/json/mapgen/police_department.json index 5c6dfebb37d97..83f39a1bc68fe 100644 --- a/data/json/mapgen/police_department.json +++ b/data/json/mapgen/police_department.json @@ -123,9 +123,9 @@ "|||||||||||||_.._|4::::::::::::::::|X:|_..i|||||", "|!|!|yyyyyyy|_.._|4::4444::4|222222|::|_..i|SSS|", "|___|_______|_.._|4::4││4::4||||||||Y:|_.._|___|", - "|___+_qqqqq_+_.._|4::4││4::4|{}[[[[|Y:|_.._+__a|", - "|!|!|_______|_..h|4::4444::4|{:::::|::|_.._|___|", - "|||||yyyyyyy|_..h|4::::::::4|]:ppp:|x:|_..i|+|+|", + "|___+_qqqqq_+_.._|4::4││4::4|}[[[[[|Y:|_.._+__a|", + "|!|!|_______|_..h|4::4444::4|}:::::|::|_.._|___|", + "|||||yyyyyyy|_..h|4::::::::4|{:ppp:|x:|_..i|+|+|", "|||||yyyyyyy|_..h|4::::::::4|]:::::≈::|_..i|_|_|", "|!|!|_______|_..h|4444444444|333335|::|_..i|T|T|", "|___+_qqqqq_+_.._||||||||||||||||||||L|_.._|||||", @@ -158,11 +158,10 @@ "2": { "item": "SUS_office_filing_cabinet", "chance": 100, "repeat": [ 1, 3 ] }, "3": { "item": "cop_items", "chance": 90, "repeat": [ 3, 6 ] }, "4": { "item": "cop_evidence", "chance": 60, "repeat": [ 2, 4 ] }, - "5": { "item": "cop_armory", "chance": 70, "repeat": [ 2, 4 ] }, - "{": { "item": "police_armory_any_sniperrifle", "chance": 100 }, + "{": { "item": "police_armory_any_sniperrifle", "chance": 50 }, "}": { "item": "police_armory_any_assaultrifle", "chance": 100 }, "[": { "item": "police_armory_any_pistol", "chance": 100 }, - "]": { "item": "police_armory_any_shotgun", "chance": 100, "repeat": [ 1, 2 ] } + "]": { "item": "police_armory_any_shotgun", "chance": 50 } }, "furniture": { "2": "f_rack", diff --git a/data/json/mapgen/police_station.json b/data/json/mapgen/police_station.json index 4dda60e22a6d0..454c5404adb5d 100644 --- a/data/json/mapgen/police_station.json +++ b/data/json/mapgen/police_station.json @@ -71,10 +71,10 @@ "c": { "item": "kitchen", "chance": 40, "repeat": [ 2, 4 ] }, "1": { "item": "cop_items", "chance": 80, "repeat": [ 5, 8 ] }, "l": { "item": "cop_armory", "chance": 70, "repeat": [ 2, 4 ] }, - "{": { "item": "police_armory_any_sniperrifle", "chance": 90 }, + "{": { "item": "police_armory_any_sniperrifle", "chance": 50 }, "}": { "item": "police_armory_any_assaultrifle", "chance": 90 }, - "[": { "item": "police_armory_any_pistol", "chance": 95 }, - "]": { "item": "police_armory_any_shotgun", "chance": 85 }, + "[": { "item": "police_armory_any_pistol", "chance": 100, "repeat": 2 }, + "]": { "item": "police_armory_any_shotgun", "chance": 5 }, "L": { "item": "cop_evidence", "chance": 60, "repeat": [ 2, 4 ] } }, "item": { "/": { "item": "american_flag" } }, @@ -342,7 +342,7 @@ "[": { "item": "police_armory_any_pistol", "chance": 90 }, "9": { "item": "police_armory_any_assaultrifle", "chance": 100 }, "{": { "item": "police_armory_any_sniperrifle", "chance": 80 }, - "]": { "item": "police_armory_any_shotgun", "chance": 100 }, + "]": { "item": "police_armory_any_shotgun", "chance": 10 }, "7": [ { "item": "jewelry_front", "chance": 50, "repeat": [ 2, 3 ] }, { "item": "stash_drugs", "chance": 50, "repeat": [ 2, 3 ] }, @@ -503,10 +503,10 @@ "t": { "item": "trash_cart", "chance": 50, "repeat": [ 2, 3 ] }, "1": { "item": "cop_items", "chance": 90, "repeat": [ 2, 4 ] }, "l": { "item": "cop_armory", "chance": 70, "repeat": [ 2, 3 ] }, - "{": { "item": "police_armory_any_sniperrifle", "chance": 80 }, + "{": { "item": "police_armory_any_sniperrifle", "chance": 50 }, "}": { "item": "police_armory_any_assaultrifle", "chance": 80 }, - "[": { "item": "police_armory_any_pistol", "chance": 90 }, - "]": { "item": "police_armory_any_shotgun", "chance": 80 }, + "[": { "item": "police_armory_any_pistol", "chance": 90, "repeat": 2 }, + "]": { "item": "police_armory_any_shotgun", "chance": 5 }, "L": { "item": "cop_evidence", "chance": 60, "repeat": [ 2, 3 ] }, "D": { "item": "office", "chance": 60, "repeat": [ 2, 3 ] }, "T": { "item": "dining", "chance": 60, "repeat": [ 2, 3 ] }, diff --git a/data/json/mapgen/radio_tower.json b/data/json/mapgen/radio_tower.json index 20416cf0699fb..b6ab796372d44 100644 --- a/data/json/mapgen/radio_tower.json +++ b/data/json/mapgen/radio_tower.json @@ -286,7 +286,7 @@ [ "null", 40 ], [ "radio_tower_2x2_map", 40 ], [ "radio_tower_2x2_holdout", 10 ], - [ "radio_tower_2x2_sniper", 10 ], + [ "radio_tower_2x2_sniper", 2 ], [ "radio_tower_wasp", 5 ] ], "x": 10, diff --git a/data/json/mapgen/store/s_hunting.json b/data/json/mapgen/store/s_hunting.json index 340bc43ce79e6..4be4b3c9102c6 100644 --- a/data/json/mapgen/store/s_hunting.json +++ b/data/json/mapgen/store/s_hunting.json @@ -36,7 +36,7 @@ "place_loot": [ { "group": "guns_rifle_hunting_display", "x": 2, "y": 13, "chance": 70, "repeat": [ 2, 3 ] }, { "group": "guns_pistol_hunting_display", "x": 2, "y": 13, "chance": 70, "repeat": [ 2, 3 ] }, - { "group": "guns_shotgun_common_display", "x": 2, "y": 14, "chance": 70, "repeat": [ 3, 4 ] }, + { "group": "guns_shotgun_common_display", "x": 2, "y": 14, "chance": 70, "repeat": [ 1, 2 ] }, { "group": "SUS_hunting_archery", "x": 2, "y": 15, "chance": 80, "repeat": [ 4, 5 ] }, { "group": "archery_ammo", "x": 2, "y": 16, "chance": 80, "repeat": [ 4, 6 ] }, { "group": "archery_loaded_quivers", "x": 2, "y": 16, "chance": 40, "repeat": [ 2, 4 ] }, diff --git a/data/json/mapgen_palettes/gunstore.json b/data/json/mapgen_palettes/gunstore.json index 70689c4564346..247ee6f1d4d47 100644 --- a/data/json/mapgen_palettes/gunstore.json +++ b/data/json/mapgen_palettes/gunstore.json @@ -119,13 +119,13 @@ "items": { "X": { "item": "SUS_gunstore_safe", "chance": 50, "repeat": [ 10, 20 ] }, "O": { "item": "SUS_gunstore_safe_obscure", "chance": 75, "repeat": [ 3, 6 ] }, - "s": { "item": "SUS_gunstore_crate", "chance": 75, "repeat": [ 1, 3 ] }, - "S": { "item": "SUS_gunstore_crate", "chance": 5, "repeat": [ 1, 3 ] }, + "s": { "item": "SUS_gunstore_crate", "chance": 80, "repeat": [ 1, 3 ] }, + "S": { "item": "SUS_gunstore_crate", "chance": 50, "repeat": [ 1, 3 ] }, "`": { "item": "SUS_gunstore_looted_floor", "chance": 20, "repeat": [ 1, 2 ] }, "m": { "item": "SUS_gunstore_looted_storage", "chance": 20, "repeat": [ 1, 2 ] }, "M": { "item": "SUS_gunstore_looted_storage", "chance": 20, "repeat": [ 1, 2 ] }, "d": { "item": "SUS_gunstore_displaycase", "chance": 95 }, - "p": { "item": "SUS_gunstore_displaycase", "chance": 25 }, + "p": { "item": "SUS_gunstore_displaycase", "chance": 55 }, "K": { "item": { "//": "gun books kept on racks in the FoH", diff --git a/data/json/mapgen_palettes/house_general_palette.json b/data/json/mapgen_palettes/house_general_palette.json index 45fa5477d0c9b..8549e60cc59df 100644 --- a/data/json/mapgen_palettes/house_general_palette.json +++ b/data/json/mapgen_palettes/house_general_palette.json @@ -252,7 +252,7 @@ { "item": "home_display_case", "chance": 30 }, { "item": "harddrugs", "chance": 10, "repeat": [ 1, 2 ] }, { "item": "maps", "chance": 2 }, - { "item": "guns_pistol_common", "chance": 50, "ammo": 90, "magazine": 100 }, + { "item": "guns_pistol_common", "chance": 25, "ammo": 90, "magazine": 100 }, { "item": "gemstones", "chance": 30, "repeat": [ 1, 2 ] } ], "w": [ diff --git a/data/json/overmap/overmap_special/alien.json b/data/json/overmap/overmap_special/alien.json index 724158d4af886..00a7b6854d7c1 100644 --- a/data/json/overmap/overmap_special/alien.json +++ b/data/json/overmap/overmap_special/alien.json @@ -11,8 +11,8 @@ "locations": [ "forest_without_trail", "land", "wilderness" ], "city_distance": [ 0, 30 ], "city_sizes": [ 0, 16 ], - "occurrences": [ 0, 1 ], - "flags": [ "EXODII", "CBM" ] + "occurrences": [ 2, 100 ], + "flags": [ "EXODII", "CBM", "UNIQUE" ] }, { "type": "overmap_special", @@ -25,8 +25,8 @@ "locations": [ "forest_without_trail", "land", "wilderness" ], "city_distance": [ 40, 90 ], "city_sizes": [ 0, 16 ], - "occurrences": [ 0, 1 ], - "flags": [ "EXODII", "CBM" ] + "occurrences": [ 2, 100 ], + "flags": [ "EXODII", "CBM", "UNIQUE" ] }, { "type": "overmap_special", @@ -118,6 +118,6 @@ "city_sizes": [ 1, 12 ], "//": "Occurrences should drop a lot once we have some breadcrumbs leading to the base, but until then this is going to be the only way to get CBMs.", "occurrences": [ 1, 12 ], - "flags": [ "UNIQUE", "EXODII" ] + "flags": [ "GLOBALLY_UNIQUE", "EXODII" ] } ] diff --git a/data/json/overmap/overmap_special/specials.json b/data/json/overmap/overmap_special/specials.json index 4e44033a87b64..e6c319db18a99 100644 --- a/data/json/overmap/overmap_special/specials.json +++ b/data/json/overmap/overmap_special/specials.json @@ -295,7 +295,7 @@ "locations": [ "forest" ], "city_distance": [ 12, -1 ], "occurrences": [ 30, 100 ], - "flags": [ "CLASSIC", "FARM", "UNIQUE", "MAN_MADE" ] + "flags": [ "CLASSIC", "FARM", "GLOBAL_UNIQUE", "MAN_MADE" ] }, { "type": "overmap_special", @@ -813,7 +813,7 @@ "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road", "connection": "local_road" } ], "locations": [ "field", "forest_without_trail" ], "city_distance": [ 10, -1 ], - "occurrences": [ 30, 100 ], + "occurrences": [ 2, 100 ], "flags": [ "LAB", "UNIQUE", "MAN_MADE" ] }, { @@ -827,7 +827,7 @@ "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road", "connection": "local_road" } ], "locations": [ "field", "forest_without_trail" ], "city_distance": [ 10, -1 ], - "occurrences": [ 10, 100 ], + "occurrences": [ 2, 100 ], "flags": [ "ANT", "UNIQUE", "MAN_MADE" ], "spawns": { "group": "GROUP_ANT_SURFACE", "population": [ 1000, 2000 ], "radius": [ 10, 30 ] } }, @@ -877,8 +877,7 @@ ], "locations": [ "forest" ], "city_distance": [ 15, -1 ], - "occurrences": [ 40, 100 ], - "//": "Inflated chance, effective rate ~25%", + "occurrences": [ 2, 100 ], "flags": [ "UNIQUE", "LAB", "WILDERNESS", "MAN_MADE" ], "rotate": false }, @@ -889,7 +888,7 @@ "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road", "connection": "local_road" } ], "locations": [ "field", "forest_without_trail" ], "city_distance": [ 10, -1 ], - "occurrences": [ 10, 100 ], + "occurrences": [ 2, 100 ], "flags": [ "LAB", "UNIQUE", "MAN_MADE" ] }, { @@ -1485,7 +1484,7 @@ "locations": [ "field", "forest_without_trail" ], "city_distance": [ 10, 40 ], "city_sizes": [ 4, -1 ], - "occurrences": [ 10, 100 ], + "occurrences": [ 2, 100 ], "flags": [ "LAB", "UNIQUE", "MAN_MADE" ] }, { @@ -3741,8 +3740,8 @@ ], "locations": [ "land" ], "city_distance": [ 5, -1 ], - "occurrences": [ 0, 2 ], - "flags": [ "LAB", "MAN_MADE" ] + "occurrences": [ 50, 100 ], + "flags": [ "LAB", "MAN_MADE", "UNIQUE" ] }, { "type": "overmap_special", @@ -4015,8 +4014,8 @@ ], "locations": [ "land" ], "city_distance": [ 5, -1 ], - "occurrences": [ 0, 2 ], - "flags": [ "LAB", "MAN_MADE" ] + "occurrences": [ 50, 100 ], + "flags": [ "LAB", "MAN_MADE", "UNIQUE" ] }, { "type": "overmap_special", diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json index 6a9fe4d8675ee..5b8846e9baf87 100644 --- a/data/json/regional_map_settings.json +++ b/data/json/regional_map_settings.json @@ -650,16 +650,16 @@ } }, "road": { - "chance": 75, + "chance": 100, "extras": { - "mx_helicopter": 10, - "mx_military": 50, - "mx_science": 50, + "mx_helicopter": 1, + "mx_military": 10, + "mx_science": 10, "mx_collegekids": 500, "mx_roadblock": 830, "mx_roadblock_mil": 170, - "mx_bandits_block": 800, - "mx_drugdeal": 300, + "mx_bandits_block": 400, + "mx_drugdeal": 100, "mx_supplydrop": 5, "mx_portal": 50, "mx_crater": 100, @@ -680,7 +680,7 @@ "build": { "chance": 90, "extras": { - "mx_bugout": 20, + "mx_bugout": 10, "mx_house_spider": 40, "mx_house_wasp": 30, "mx_military": 5, @@ -696,7 +696,7 @@ } }, "marloss": { "chance": 20, "extras": { "mx_marloss_pilgrimage": 100 } }, - "subway": { "chance": 75, "extras": { "mx_military": 5, "mx_science": 12, "mx_drugdeal": 5, "mx_casings": 10 } }, + "subway": { "chance": 100, "extras": { "mx_military": 5, "mx_science": 12, "mx_drugdeal": 5, "mx_casings": 10 } }, "lab_subway": { "chance": 25, "extras": { "mx_military": 5, "mx_science": 15, "mx_portal": 3, "mx_portal_in": 3 } }, "research_facility_lot": { "chance": 3, @@ -1095,7 +1095,7 @@ "police": 100, "police_1": 100, "police_2": 100, - "police_dept": 1250, + "police_dept": 125, "fire_station": 200, "fire_station_1": 200, "home_improvement": 200, diff --git a/data/json/vehicles/emergency.json b/data/json/vehicles/emergency.json index 04afad6afcb9a..8ec07a41d0320 100644 --- a/data/json/vehicles/emergency.json +++ b/data/json/vehicles/emergency.json @@ -461,7 +461,7 @@ { "x": -2, "y": 0, "chance": 5, "item_groups": [ "cop_gear" ] }, { "x": -2, "y": 1, "chance": 3, "magazine": 100, "ammo": 50, "item_groups": [ "cop_weapons" ] }, { "x": -2, "y": 1, "chance": 100, "item_groups": [ "spare_tire_kit_small_jack" ] }, - { "x": -2, "y": 1, "chance": 10, "item_groups": [ "longguns_cop_loaded" ] } + { "x": -2, "y": 1, "chance": 1, "item_groups": [ "longguns_cop_loaded" ] } ] }, { diff --git a/data/mods/TEST_DATA/item_demographics.json b/data/mods/TEST_DATA/item_demographics.json new file mode 100644 index 0000000000000..8de9bad3ae3e8 --- /dev/null +++ b/data/mods/TEST_DATA/item_demographics.json @@ -0,0 +1,1295 @@ +[ + { + "type": "test_data", + "item_demographics": { "category": "food", "tests": [ "items" ], "items": [ { "taco": 1, "pizza": 1 } ] } + }, + { + "type": "test_data", + "item_demographics": { + "category": "ammo", + "tests": [ "groups" ], + "//": "Due to shifts in what item type ammo means, there's a lot of items that", + "//2": "aren't the kind of ammo we want polluting the test, so we ignore them.", + "ignored_items": [ + "corpse_ash", + "c_fishspear", + "silicone", + "chem_black_powder", + "chem_caco3", + "chem_chromium_oxide", + "chem_potassium_hydroxide", + "chem_potassium_chloride", + "chem_antimony_trichloride", + "chem_ferric_chloride", + "chem_manganese_dioxide", + "lc_steel_lump", + "chem_zinc_oxide", + "chem_zinc_powder", + "chem_slaked_lime", + "chem_sulphur", + "cannon_shot", + "propane", + "rocuronium", + "material_cement", + "duct_tape", + "chem_nickel_powder", + "hydrogen", + "plut_slurry_dense", + "battery", + "chem_ammonium_nitrate", + "oxy_powder", + "material_gravel", + "anesthetic", + "m_fishspear", + "chem_carbide", + "green_pen_ink", + "blue_pen_ink", + "red_phosphorous", + "chem_hexamine", + "aerosol_paint", + "red_pen_ink", + "chem_aluminium_powder", + "detergent", + "money", + "oxyacetylene", + "lamp_oil", + "iodine_crystal", + "moisturizer", + "chem_saltpetre", + "gasfilter_s", + "chem_washing_soda", + "incense", + "charcoal", + "graphite", + "chem_aluminium_sulphate", + "nicotine_liquid", + "incendiary", + "glowstick_juice", + "butane", + "permanent_ink", + "flare_nitrate", + "chem_baking_soda", + "oxygen", + "nitrogen", + "candle_wax", + "liq_bandage", + "rebreather_filler_ko2", + "magnesium", + "extinguishing_agent", + "lye_powder", + "gasfilter_m", + "chem_calcium_chloride", + "nitrox", + "albuterol", + "match", + "gunpowder_shotgun", + "fishspear", + "bolt_steel", + "teargas_spray", + "black_pen_ink", + "welding_rod_steel", + "aluminum_foil", + "pebble", + "brazing_rod_alloy", + "snapfastener_steel", + "lead", + "button_steel", + "mc_steel_lump", + "pouch_autoclave", + "material_limestone", + "zipper_short_plastic", + "thread_kevlar", + "thread_nomex", + "zipper_long_plastic", + "coal_lump", + "hc_steel_lump", + "pool_ball", + "thread_canvas", + "chem_formaldehyde", + "chem_acetic_acid", + "sheet_metal_small", + "flint", + "solder_wire", + "polycarbonate_sheet", + "medical_tape", + "bearing", + "r_carpet", + "tinder", + "ash", + "fish_bait", + "bismuth", + "rock_flaking", + "hc_steel_chunk", + "platinum_small", + "silver_small", + "copper", + "welding_wire_alloy", + "plut_cell", + "paintball", + "g_carpet", + "feather", + "gasoline", + "coal_lump", + "diesel", + "water", + "jp8", + "nail", + "thread", + "water_clean", + "avgas", + "cable", + "material_soil", + "soap", + "welding_wire_steel", + "paper", + "brazing_rod_bronze", + "rock", + "scrap", + "welding_rod_alloy", + "button_wood", + "marble", + "button_plastic", + "tin", + "bb", + "material_quicklime", + "nuts_bolts", + "material_sand", + "RPG_die", + "smrifle_primer", + "smpistol_primer", + "shotgun_primer", + "gold_small", + "motor_oil", + "rolling_paper", + "lgrifle_primer", + "metal_RPG_die", + "lgpistol_primer", + "steel_chunk", + "material_niter", + "sinew", + "steel_lump", + "water_mineral", + "wooden_bead", + "nanomaterial", + "yarn", + "chunk_sulfur", + "chem_methanol", + "baseball", + "biodiesel", + "denat_alcohol", + "rebreather_filler_soda_lime", + "plant_fibre", + "plasma", + "p_carpet", + "y_carpet", + "lc_steel_chunk", + "mc_steel_chunk", + "magnet", + "net", + "chem_turpentine", + "chem_ethanol", + "plut_slurry", + "methed_alcohol", + "ampoule", + "ammonia_liquid", + "throwing_stick", + "camphine", + "chem_acetone", + "chem_hydrogen_peroxide_conc", + "stimpack_ammo", + "arrow_small_game_fletched", + "arrow_plastic", + "arrow_fire_hardened_fletched", + "arrow_wood", + "arrow_field_point_fletched", + "arrow_heavy_field_point_fletched", + "arrow_metal_sharpened_fletched", + "arrow_heavy_fire_hardened_fletched", + "arrow_wood_heavy", + "arrow_metal", + "arrow_metal_bodkin", + "arrow_metal_target", + "arrow_cf", + "bolt_cf", + "bolt_makeshift", + "bolt_steel_bodkin", + "bolt_steel_target", + "bolt_wood", + "bolt_wood_bodkin", + "bolt_wood_small_game", + "bolt_metal", + "bolt_crude", + "bolt_simple_wood", + "bolt_simple_small_game", + "signal_flare", + "gunpowder_pistol", + "gunpowder", + "gunpowder_magnum_pistol", + "gunpowder_rifle", + "gunpowder_large_rifle", + "gunpowder_artillery", + "notch", + "gelled_gasoline", + "rosin", + "chem_compositionb", + "chem_ammonium_nitrate_pellets" + ], + "items": [ + { + "type": "9mm", + "weight": 209, + "items": { + "9mm": 1, + "9mmfmj": 1, + "9mmP": 1, + "9mmP2": 1, + "bp_9mm": 1, + "bp_9mmfmj": 1, + "matchhead_9mm": 1, + "matchhead_9mmfmj": 1, + "reloaded_9mm": 1, + "reloaded_9mmfmj": 1, + "reloaded_9mmP": 1, + "reloaded_9mmP2": 1 + } + }, + { + "type": "22", + "weight": 204, + "items": { + "22_lr": 1, + "22_cb": 1, + "22_fmj": 1, + "22_ratshot": 1, + "bp_22_fmj": 1, + "bp_22_lr": 1, + "matchhead_22_fmj": 1, + "matchhead_22_lr": 1, + "reloaded_22_fmj": 1, + "reloaded_22_lr": 1 + } + }, + { + "type": "223", + "weight": 125, + "items": { + "223": 1, + "556": 1, + "556_incendiary": 1, + "556_m855a1": 1, + "556_mk262": 1, + "556_mk318": 1, + "bp_223": 1, + "bp_556": 1, + "bp_556_incendiary": 1, + "reloaded_223": 1, + "reloaded_556": 1, + "reloaded_556_incendiary": 1 + } + }, + { + "type": "45", + "weight": 49, + "items": { + "45_acp": 1, + "45_jhp": 1, + "45_super": 1, + "bp_45_acp": 1, + "bp_45_jhp": 1, + "matchhead_45_acp": 1, + "matchhead_45_jhp": 1, + "reloaded_45_acp": 1, + "reloaded_45_jhp": 1, + "reloaded_45_super": 1 + } + }, + { + "type": "380", + "weight": 48, + "items": { + "380_FMJ": 1, + "380_JHP": 1, + "380_p": 1, + "bp_380_FMJ": 1, + "bp_380_JHP": 1, + "matchhead_380_FMJ": 1, + "matchhead_380_JHP": 1, + "reloaded_380_FMJ": 1, + "reloaded_380_JHP": 1, + "reloaded_380_p": 1 + } + }, + { + "type": "40", + "weight": 40, + "items": { + "40fmj": 1, + "40sw": 1, + "bp_40fmj": 1, + "bp_40sw": 1, + "matchhead_40fmj": 1, + "matchhead_40sw": 1, + "reloaded_40fmj": 1, + "reloaded_40sw": 1 + } + }, + { + "type": "762", + "weight": 34, + "items": { "762_m43": 1, "762_m87": 1, "bp_762_m43": 1, "bp_762_m87": 1, "reloaded_762_m43": 1, "reloaded_762_m87": 1 } + }, + { + "type": "357mag", + "weight": 34, + "items": { + "357mag_fmj": 1, + "357mag_jhp": 1, + "bp_357mag_fmj": 1, + "bp_357mag_jhp": 1, + "matchhead_357mag_fmj": 1, + "matchhead_357mag_jhp": 1, + "reloaded_357mag_fmj": 1, + "reloaded_357mag_jhp": 1 + } + }, + { + "type": "shot", + "weight": 26, + "items": { + "bp_shot_00": 1, + "bp_shot_bird": 1, + "bp_shot_dragon": 1, + "bp_shot_flechette": 1, + "bp_shot_scrap": 1, + "bp_shot_slug": 1, + "reloaded_shot_00": 1, + "reloaded_shot_bird": 1, + "reloaded_shot_dragon": 1, + "reloaded_shot_flechette": 1, + "reloaded_shot_slug": 1, + "shot_00": 1, + "shot_beanbag": 1, + "shot_bird": 1, + "shot_dragon": 1, + "shot_flechette": 1, + "shot_he": 1, + "shot_scrap": 1, + "shot_slug": 1 + } + }, + { + "type": "308", + "weight": 25, + "items": { + "308": 1, + "762_51": 1, + "762_51_incendiary": 1, + "bp_308": 1, + "bp_762_51": 1, + "bp_762_51_incendiary": 1, + "reloaded_308": 1, + "reloaded_762_51": 1, + "reloaded_762_51_incendiary": 1 + } + }, + { + "type": "38", + "weight": 19, + "items": { + "38_fmj": 1, + "38_special": 1, + "bp_38_fmj": 1, + "bp_38_special": 1, + "matchhead_38_fmj": 1, + "matchhead_38_special": 1, + "reloaded_38_fmj": 1, + "reloaded_38_special": 1 + } + }, + { + "type": "44", + "weight": 15, + "items": { "44fmj": 1, "44magnum": 1, "bp_44fmj": 1, "bp_44magnum": 1, "reloaded_44fmj": 1, "reloaded_44magnum": 1 } + }, + { + "type": "3006", + "weight": 8, + "items": { + "3006": 1, + "3006fmj": 1, + "3006_incendiary": 1, + "bp_3006": 1, + "bp_3006fmj": 1, + "bp_3006_incendiary": 1, + "reloaded_3006": 1, + "reloaded_3006fmj": 1, + "reloaded_3006_incendiary": 1 + } + }, + { + "type": "45colt", + "weight": 8, + "items": { "45colt_jhp": 1, "bp_45colt_jhp": 1, "matchhead_45colt_jhp": 1, "reloaded_45colt_jhp": 1 } + }, + { "type": "762R", "weight": 4, "items": { "762_54R": 1, "bp_762_54R": 1, "reloaded_762_54R": 1 } }, + { "type": "10mm", "weight": 1, "items": { "10mm_fmj": 1 } }, + { "type": "270win", "weight": 3, "items": { "270win_jsp": 1, "bp_270win_jsp": 1, "reloaded_270win_jsp": 1 } }, + { "type": "410shot", "weight": 3, "items": { "410shot_000": 1, "reloaded_410shot_000": 1 } }, + { "type": "123ln", "weight": 1, "items": { "123ln": 1, "bp_123ln": 1, "reloaded_123ln": 1 } }, + { + "type": "10mm", + "weight": 1, + "items": { "bp_10mm_fmj": 1, "matchhead_10mm_fmj": 1, "10mm reloaded_10mm_fmj": 1 } + }, + { + "type": "20x66mm", + "weight": 1, + "items": { + "20x66_beanbag": 1, + "20x66_bootleg_flechette": 1, + "20x66_bootleg_shot": 1, + "20x66_bootleg_slug": 1, + "20x66_exp": 1, + "20x66_flare": 1, + "20x66_flechette": 1, + "20x66_frag": 1, + "20x66_inc": 1, + "20x66_shot": 1, + "20x66_slug": 1 + } + }, + { "type": "300", "weight": 1, "items": { "300_winmag": 1, "bp_300_winmag": 1, "reloaded_300_winmag": 1 } }, + { + "type": "303", + "weight": 1, + "items": { + "303_bthp": 1, + "303_fmjbt": 1, + "303_sp": 1, + "bp_303": 1, + "bp_303fmj": 1, + "bp_303sp": 1, + "reloaded_303": 1, + "reloaded_303fmj": 1, + "reloaded_303sp": 1 + } + }, + { + "type": "30carbine", + "weight": 1, + "items": { "30carbine": 1, "bp_30carbine": 1, "matchhead_30carbine": 1, "reloaded_30carbine": 1 } + }, + { + "type": "32", + "weight": 1, + "items": { "32_acp": 1, "bp_32_acp": 1, "matchhead_32_acp": 1, "reloaded_32_acp": 1 } + }, + { + "type": "338lapua", + "weight": 1, + "items": { + "338lapua_api": 1, + "338lapua_fmjbt": 1, + "338lapua_hpbt": 1, + "bp_338lapua_api": 1, + "bp_338lapua_fmjbt": 1, + "bp_338lapua_hpbt": 1, + "reloaded_338lapua_api": 1, + "reloaded_338lapua_fmjbt": 1, + "reloaded_338lapua_hpbt": 1 + } + }, + { + "type": "357sig", + "weight": 1, + "items": { + "357sig_fmj": 1, + "357sig_jhp": 1, + "bp_357sig_fmj": 1, + "bp_357sig_jhp": 1, + "matchhead_357sig_fmj": 1, + "matchhead_357sig_jhp": 1, + "reloaded_357sig_fmj": 1, + "reloaded_357sig_jhp": 1 + } + }, + { "type": "36paper", "weight": 1, "items": { "36navy": 1 } }, + { + "type": "38super", + "weight": 1, + "items": { "38_super": 1, "38super_fmj": 1, "reloaded_38_super": 1, "reloaded_38super_fmj": 1 } + }, + { + "type": "40x46mm", + "weight": 1, + "items": { + "40x46mm_buckshot_m118": 1, + "40x46mm_buckshot_m199": 1, + "40x46mm_flechette_m118": 1, + "40x46mm_flechette_m199": 1, + "40x46mm_hornets_nest_22lr": 1, + "40x46mm_hornets_nest_410": 1, + "40x46mm_m1006": 1, + "40x46mm_m433": 1, + "40x46mm_m576": 1, + "40x46mm_m651": 1, + "40x46mm_slug_m118": 1, + "40x46mm_slug_m199": 1, + "bp_40x46mm_buckshot_m118": 1, + "bp_40x46mm_buckshot_m199": 1, + "bp_40x46mm_flechette_m118": 1, + "bp_40x46mm_flechette_m199": 1, + "bp_40x46mm_slug_m118": 1, + "bp_40x46mm_slug_m199": 1 + } + }, + { + "type": "40x53mm", + "weight": 1, + "items": { + "40x53mm_buckshot_m169": 1, + "40x53mm_flechette_m169": 1, + "40x53mm_m1001": 1, + "40x53mm_m430a1": 1, + "40x53mm_slug_m169": 1, + "bp_40x53mm_buckshot_m169": 1, + "bp_40x53mm_flechette_m169": 1, + "bp_40x53mm_slug_m169": 1 + } + }, + { "type": "44paper", "weight": 1, "items": { "44army": 1 } }, + { + "type": "450", + "weight": 1, + "items": { + "450_ftx": 1, + "450_penetrator": 1, + "bp_450_ftx": 1, + "bp_450_penetrator": 1, + "reloaded_450_ftx": 1, + "reloaded_450_penetrator": 1 + } + }, + { "type": "454", "weight": 1, "items": { "454_Casull": 1, "bp_454_Casull": 1, "reloaded_454_Casull": 1 } }, + { + "type": "4570", + "weight": 1, + "items": { + "4570_low": 1, + "4570_pen": 1, + "4570_sp": 1, + "reloaded_4570_bp": 1, + "reloaded_4570_low": 1, + "reloaded_4570_pen": 1, + "reloaded_4570_sp": 1 + } + }, + { + "type": "460", + "weight": 1, + "items": { + "460_fmj": 1, + "460_rowland": 1, + "bp_460_fmj": 1, + "bp_460_rowland": 1, + "reloaded_460_fmj": 1, + "reloaded_460_rowland": 1 + } + }, + { "type": "46", "weight": 1, "items": { "46mm": 1, "bp_46mm": 1, "reloaded_46mm": 1 } }, + { "type": "500", "weight": 1, "items": { "500_Magnum": 1, "bp_500_Magnum": 1, "reloaded_500_Magnum": 1 } }, + { + "type": "545x39", + "weight": 1, + "items": { "545": 1, "545_ap": 1, "bp_545": 1, "bp_545_ap": 1, "reloaded_545": 1, "reloaded_545_ap": 1 } + }, + { "type": "57", "weight": 1, "items": { "57mm": 1, "57mm_ss": 1, "bp_57mm": 1, "reloaded_57mm": 1 } }, + { "type": "5x50", "weight": 1, "items": { "5x50dart": 1, "5x50heavy": 1, "reloaded_5x50dart": 1 } }, + { "type": "66mm", "weight": 1, "items": { "66mm_HEAT": 1 } }, + { + "type": "762x25", + "weight": 1, + "items": { "762_25": 1, "762_25hot": 1, "762_25typeP": 1, "bp_762_25": 1, "matchhead_762_25": 1, "reloaded_762_25": 1 } + }, + { "type": "84x246mm", "weight": 1, "items": { "84x246mm_he": 1, "84x246mm_hedp": 1, "84x246mm_smoke": 1 } }, + { + "type": "8x40mm", + "weight": 1, + "items": { "8mm_bootleg": 1, "8mm_caseless": 1, "8mm_civilian": 1, "8mm_fmj": 1, "8mm_hvp": 1, "8mm_inc": 1, "8mm_jhp": 1 } + }, + { + "type": "300blk", + "weight": 1, + "items": { "300blk": 1, "300blk_ss": 1, "bp_300blk": 1, "reloaded_300blk": 1 } + }, + { + "type": "9x18", + "weight": 1, + "items": { + "9x18mm": 1, + "9x18mmfmj": 1, + "9x18mmP2": 1, + "bp_9x18mm": 1, + "bp_9x18mmfmj": 1, + "matchhead_9x18mm": 1, + "matchhead_9x18mmfmj": 1, + "reloaded_9x18mm": 1, + "reloaded_9x18mmfmj": 1, + "reloaded_9x18mmP2": 1 + } + }, + { "type": "other", "weight": 114, "items": { } } + ] + } + }, + { + "type": "test_data", + "item_demographics": { + "category": "guns", + "tests": [ "groups" ], + "items": [ + { + "type": "9mm", + "weight": 209, + "items": { + "glock_19": 1, + "hk_mp5": 1, + "p08": 1, + "mp18": 1, + "mauser_c96": 1, + "mp40": 1, + "ksub2000": 1, + "m9": 1, + "px4": 1, + "rifle_9mm": 1, + "smg_9mm": 1, + "sten": 1, + "tec9": 1, + "usp_9mm": 1, + "uzi": 1, + "glock_17": 1, + "kpf9": 1, + "m11": 1, + "m17": 1, + "p226_9mm": 1, + "sp2022": 1, + "hi_power_9mm": 1, + "walther_p38": 1, + "walther_ppq_9mm": 1, + "hptc9": 1, + "cz75": 1, + "walther_ccp": 1, + "colt_ro635": 1, + "bt_apc9k": 1, + "calico": 1, + "cx4": 1, + "feral_m9": 1 + } + }, + { + "type": "22", + "weight": 204, + "items": { + "american_180": 1, + "marlin_9a": 10, + "moss_brownie": 10, + "rifle_22": 10, + "ruger_1022": 10, + "ruger_lcr_22": 10, + "sig_mosquito": 10, + "sw_22": 10, + "j22": 10, + "walther_p22": 10 + } + }, + { + "type": "223", + "weight": 125, + "items": { + "ar15": 1, + "ar_pistol": 1, + "plr16": 1, + "famas": 1, + "fs2000": 1, + "scar_l": 1, + "m16a4": 1, + "m16_auto_rifle": 1, + "hk_g36": 1, + "m249": 1, + "m249_semi": 1, + "m27_assault_rifle": 1, + "m4_carbine": 1, + "m231pfw": 1, + "oa93": 1, + "ruger_mini": 1, + "sig_assault_rifle": 1, + "steyr_aug": 1, + "ak556": 1, + "minidraco556": 1, + "bren2_556": 1, + "rdb_223": 1, + "feral_militia_gun": 1 + } + }, + { + "type": "45", + "weight": 49, + "items": { + "TDI": 1, + "hk_ump45": 1, + "m1911": 1, + "mac_10": 1, + "rifle_45": 1, + "hk_usc45": 1, + "smg_45": 1, + "surv_hand_cannon": 1, + "tommygun": 1, + "usp_45": 1, + "walther_ppq_45": 1, + "hptjhp": 1, + "glock_21": 1, + "greasegun": 1 + } + }, + { + "type": "380", + "weight": 48, + "items": { + "mac_11": 1, + "kp3at": 1, + "fn1910": 1, + "rugerlcp": 1, + "hptcf380": 1, + "taurus_spectrum": 1, + "rifle_380": 1, + "hpt3895": 1 + } + }, + { + "type": "40", + "weight": 40, + "items": { + "90two40": 1, + "glock_22": 1, + "px4_40": 1, + "rifle_40": 1, + "sig_40": 1, + "smg_40": 1, + "surv_six_shooter": 1, + "hi_power_40": 1, + "walther_ppq_40": 1, + "hptjcp": 1 + } + }, + { + "type": "762", + "weight": 34, + "items": { "ak47": 1, "arx160": 1, "sks": 1, "aksemi": 1, "draco": 1, "mk47": 1, "vz58_p": 1, "bren2_762": 1 } + }, + { "type": "357mag", "weight": 34, "items": { "cop_38": 1, "mr73": 1, "sw_619": 1 } }, + { + "type": "shot", + "weight": 26, + "items": { + "ashot": 1, + "bigun": 1, + "lever_shotgun": 1, + "ksg": 1, + "ksg-25": 1, + "mossberg_500": 1, + "mossberg_500_security": 1, + "mossberg_590": 1, + "SPAS_12": 1, + "mossberg_930": 1, + "m1014": 1, + "pipe_double__shotgun": 1, + "pipe_shotgun": 1, + "remington_870": 1, + "remington_1100": 1, + "browning_a5": 1, + "ithaca37": 1, + "remington_870_breacher": 1, + "remington_870_express": 1, + "revolver_shotgun": 1, + "saiga_12": 1, + "shotgun_d": 1, + "shotgun_s": 1, + "streetsweeper": 1, + "tavor_12": 1, + "winchester_1887": 1, + "winchester_1897": 1, + "slamfire_shotgun": 1, + "slamfire_shotgun_d": 1, + "m26_mass_standalone": 1 + } + }, + { + "type": "308", + "weight": 25, + "items": { + "fn_fal": 1, + "hk_g3": 1, + "m134": 1, + "m1a": 1, + "m240": 1, + "m60": 1, + "savage_111f": 1, + "scar_h": 1, + "M24": 1, + "hk417_13": 1, + "m110a1": 1, + "ak308": 1, + "ar10": 1, + "rfb_308": 1 + } + }, + { + "type": "38", + "weight": 19, + "items": { "2_shot_special": 1, "model_10_revolver": 1, "rifle_38": 1, "ruger_lcr_38": 1 } + }, + { + "type": "44", + "weight": 15, + "items": { "deagle_44": 1, "henry_big_boy": 1, "rifle_44": 1, "ruger_redhawk": 1, "sw629": 1 } + }, + { + "type": "3006", + "weight": 8, + "items": { "combination_gun": 1, "browning_blr": 1, "garand": 1, "m1903": 1, "m1918": 1, "remington_700": 1, "ruger_m77": 1 } + }, + { "type": "45colt", "weight": 8, "items": { "colt_lightning": 1, "colt_saa": 1, "bond_410": 1 } }, + { "type": "762R", "weight": 4, "items": { "mosin44": 1, "mosin91_30": 1, "psl": 1 } }, + { "type": "270win", "weight": 3, "items": { "remington700_270": 1 } }, + { "type": "410shot", "weight": 3, "items": { "saiga_410": 1, "shotgun_410": 1 } }, + { + "type": "300blk", + "weight": 2, + "items": { "acr_300blk": 1, "iwi_tavor_x95_300blk": 1, "sig_mcx_rattler_sbr": 1 } + }, + { "type": "123ln", "weight": 1, "items": { "pamd68": 1, "pamd71z": 1 } }, + { + "type": "10mm", + "weight": 1, + "items": { + "glock_20": 1, + "glock_29": 1, + "glock_40": 1, + "hk_mp5_10_semi": 1, + "m1911_10": 1, + "p220_10": 1, + "sw_610": 1, + "TDI_10": 1, + "witness_10": 1, + "xd_10": 1 + } + }, + { + "type": "other", + "weight": 114, + "items": { + "rm120c": 1, + "rm20": 1, + "rm228": 1, + "m2010": 1, + "weatherby_5": 1, + "win70": 1, + "ruger_pr": 1, + "smle_mk3": 1, + "number4_mki": 1, + "m1carbine": 1, + "sig_p230": 1, + "skorpion_61": 1, + "walther_ppk": 1, + "kp32": 1, + "rifle_32": 1, + "tac338": 1, + "savage112": 1, + "mrad_smr": 1, + "p226_357sig": 1, + "glock_31": 1, + "p320_357sig": 1, + "colt_navy": 1, + "af2011a1_38super": 1, + "m1911a1_38super": 1, + "colt_army": 1, + "ruger_arr": 1, + "raging_bull": 1, + "1895sbl": 1, + "bfr": 1, + "sharps": 1, + "hk_mp7": 1, + "m1911-460": 1, + "m107a1": 1, + "m2browning": 1, + "as50": 1, + "tac50": 1, + "bfg50": 1, + "bh_m89": 1, + "sw_500": 1, + "ak74": 1, + "kord": 1, + "fn57": 1, + "fn_p90": 1, + "p50": 1, + "ruger_57": 1, + "ppsh": 1, + "tokarev": 1, + "rm103a_pistol": 1, + "rm11b_sniper_rifle": 1, + "rm2000_smg": 1, + "rm298": 1, + "rm51_assault_rifle": 1, + "rm614_lmg": 1, + "rm88_battle_rifle": 1, + "makarov": 1, + "skorpion_82": 1, + "rifle_9x18": 1 + } + } + ] + } + }, + { + "type": "test_data", + "item_demographics": { + "category": "gun_typess", + "tests": [ "groups" ], + "items": [ + { + "type": "pistols", + "weight": 616, + "items": { + "2_shot_special": 1, + "90two40": 1, + "af2011a1_38super": 1, + "ar_pistol": 1, + "ashot": 1, + "bfr": 1, + "bond_410": 1, + "civilian_cop_glock22": 1, + "colt_army": 1, + "colt_navy": 1, + "colt_saa": 1, + "cop_38": 1, + "cz75": 1, + "deagle_44": 1, + "draco": 1, + "emp_frond": 1, + "feral_m9": 1, + "fn1910": 1, + "fn57": 1, + "glock_17": 1, + "glock_18c": 1, + "glock_19": 1, + "glock_20": 1, + "glock_21": 1, + "glock_22": 1, + "glock_29": 1, + "glock_31": 1, + "hi_power_40": 1, + "hi_power_9mm": 1, + "hk_mp5_semi_pistol": 1, + "hptc9": 1, + "hptcf380": 1, + "hptjcp": 1, + "hptjhp": 1, + "j22": 1, + "kp32": 1, + "kp3at": 1, + "kpf9": 1, + "m11": 1, + "m17": 1, + "m18": 1, + "m1911": 1, + "m1911_10": 1, + "m1911-460": 1, + "m1911a1_38super": 1, + "m9": 1, + "makarov": 1, + "mauser_c96": 1, + "mauser_m714": 1, + "minidraco556": 1, + "model_10_revolver": 1, + "moss_brownie": 1, + "mr73": 1, + "oa93": 1, + "p08": 1, + "p220_10": 1, + "p226_357sig": 1, + "p226_9mm": 1, + "p50": 1, + "pistol_flintlock": 1, + "plr16": 1, + "pressin": 1, + "px4": 1, + "px4_40": 1, + "raging_bull": 1, + "raging_judge": 1, + "remington_870_breacher": 1, + "rm103a_pistol": 1, + "rm228": 1, + "ruger_57": 1, + "rugerlcp": 1, + "ruger_lcr_22": 1, + "ruger_lcr_38": 1, + "ruger_redhawk": 1, + "sig_40": 1, + "sig_mosquito": 1, + "sig_p230": 1, + "sp2022": 1, + "surv_hand_cannon": 1, + "surv_six_shooter": 1, + "sw_22": 1, + "sw_500": 1, + "sw_610": 1, + "sw_619": 1, + "sw629": 1, + "taurus_spectrum": 1, + "TDI_10": 1, + "tokarev": 1, + "usp_45": 1, + "usp_9mm": 1, + "v29": 1, + "v29_turret": 1, + "walther_ccp": 1, + "walther_p22": 1, + "walther_p38": 1, + "walther_ppk": 1, + "walther_ppq_40": 1, + "walther_ppq_45": 1, + "walther_ppq_9mm": 1, + "winchester_1887": 1, + "witness_10": 1, + "xd_10": 1 + } + }, + { + "type": "rifles", + "weight": 357, + "items": { + "1895sbl": 1, + "acr_300blk": 1, + "ak308": 1, + "ak47": 1, + "ak556": 1, + "ak74": 1, + "aksemi": 1, + "ar10": 1, + "ar15": 1, + "ar15_223long": 1, + "ar15_223medium": 1, + "ar15_223short": 1, + "ar15_300": 1, + "ar15_300medium": 1, + "ar15_300short": 1, + "ar15_450": 1, + "ar15_450medium": 1, + "ar15_450short": 1, + "ar15_50": 1, + "ar15_50medium": 1, + "ar15_50short": 1, + "ar15_762": 1, + "arx160": 1, + "as50": 1, + "axmc": 1, + "axmc_300": 1, + "axmc_308": 1, + "bbgun": 1, + "bfg50": 1, + "bh_m89": 1, + "bren2_556": 1, + "bren2_762": 1, + "browning_blr": 1, + "colt_lightning": 1, + "combination_gun": 1, + "cx4": 1, + "cz600": 1, + "cz600_762": 1, + "famas": 1, + "fn_fal": 1, + "fn_ps90": 1, + "fs2000": 1, + "garand": 1, + "henry_big_boy": 1, + "hk417_13": 1, + "hk_g3": 1, + "hk_g36": 1, + "hk_g80": 1, + "hk_mp5_10_semi": 1, + "hk_usc45": 1, + "hm12": 1, + "hpt3895": 1, + "iwi_tavor_x95_300blk": 1, + "kord": 1, + "ksub2000": 1, + "m107a1": 1, + "m110a1": 1, + "m134": 1, + "m14ebr": 1, + "m16a4": 1, + "m16_auto_rifle": 1, + "m1903": 1, + "m1918": 1, + "m1a": 1, + "m1carbine": 1, + "m2010": 1, + "m231pfw": 1, + "M24": 1, + "m240": 1, + "m249": 1, + "m249_semi": 1, + "m27_assault_rifle": 1, + "m2browning": 1, + "m2browning_sawn": 1, + "m2carbine": 1, + "m4_carbine": 1, + "m4_cqbr": 1, + "m60": 1, + "m60_semi": 1, + "marlin_9a": 1, + "mdrx": 1, + "mdrx_223": 1, + "mdrx_223short": 1, + "mdrx_300": 1, + "mdrx_308": 1, + "mdrx_308medium": 1, + "migo_bio_gun": 1, + "mk47": 1, + "modular_ar15": 1, + "modular_m16a4": 1, + "modular_m16_auto_rifle": 1, + "modular_m27_assault_rifle": 1, + "modular_m4_carbine": 1, + "mosin44": 1, + "mosin91_30": 1, + "mrad_smr": 1, + "mut_longpull": 1, + "number4_mki": 1, + "obrez": 1, + "pamd68": 1, + "pamd68mountable": 1, + "pamd68rubik": 1, + "pamd71z": 1, + "psl": 1, + "rdb_223": 1, + "remington_700": 1, + "remington700_270": 1, + "rfb_308": 1, + "rifle_22": 1, + "rifle_32": 1, + "rifle_38": 1, + "rifle_380": 1, + "rifle_40": 1, + "rifle_44": 1, + "rifle_45": 1, + "rifle_9mm": 1, + "rifle_9x18": 1, + "rifle_flintlock": 1, + "rm11b_sniper_rifle": 1, + "rm298": 1, + "rm51_assault_rifle": 1, + "rm614_lmg": 1, + "rm88_battle_rifle": 1, + "ruger_1022": 1, + "ruger_arr": 1, + "ruger_m77": 1, + "ruger_mini": 1, + "ruger_pr": 1, + "savage_111f": 1, + "savage112": 1, + "scar_h": 1, + "scar_l": 1, + "sharps": 1, + "sig_assault_rifle": 1, + "sig_mcx_rattler_sbr": 1, + "sks": 1, + "smle_mk3": 1, + "steyr_aug": 1, + "tac338": 1, + "tac50": 1, + "trex_gun": 1, + "vz58_p": 1, + "vz58ts": 1, + "weatherby_5": 1, + "win70": 1, + "american_180": 1, + "briefcase_smg": 1, + "bt_apc9k": 1, + "calico": 1, + "colt_ro635": 1, + "fn_p90": 1, + "greasegun": 1, + "hk_mp5": 1, + "hk_mp5k": 1, + "hk_mp5sd": 1, + "hk_mp7": 1, + "hk_ump45": 1, + "mac_10": 1, + "mac_11": 1, + "mp18": 1, + "mp40": 1, + "mp40semi": 1, + "ppsh": 1, + "rm2000_smg": 1, + "skorpion_61": 1, + "skorpion_82": 1, + "smg_40": 1, + "smg_45": 1, + "smg_9mm": 1, + "sten": 1, + "TDI": 1, + "tec9": 1, + "tommygun": 1, + "uzi": 1 + } + }, + { + "type": "shotguns", + "weight": 27, + "items": { + "bigun": 1, + "combination_gun_shotgun": 1, + "ksg": 1, + "ksg-25": 1, + "ksg25_aux_shotgun": 1, + "ksg_aux_shotgun": 1, + "lever_shotgun": 1, + "m26_mass": 1, + "m26_mass_mod": 1, + "m26_mass_standalone": 1, + "M6_shotgun": 1, + "masterkey": 1, + "masterkey_mod": 1, + "mossberg_500": 1, + "mossberg_590": 1, + "mossberg_930": 1, + "pipe_double_shotgun": 1, + "pipe_shotgun": 1, + "remington_870": 1, + "remington_870_express": 1, + "revolver_shotgun": 1, + "rm120c": 1, + "rm121aux": 1, + "rm121aux_mod": 1, + "rm20": 1, + "saiga_12": 1, + "saiga_410": 1, + "shotgun_410": 1, + "shotgun_d": 1, + "shotgun_s": 1, + "slamfire_shotgun": 1, + "slamfire_shotgun_d": 1, + "streetsweeper": 1, + "tavor_12": 1, + "ts12_aux_shotgun": 1, + "ts12_aux_shotgun2": 1, + "u_shotgun": 1, + "u_shotgun_mod": 1, + "winchester_1897": 1 + } + } + ] + } + } +] diff --git a/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json b/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json index 19863b34b31c4..b3203493b6156 100644 --- a/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json +++ b/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json @@ -17,6 +17,9 @@ "deserter_city_office_roof", "deserter_city_office_roofb", "deserter_city_park", + "ice_lab", + "ice_lab_core", + "ice_lab_finale", "karting_0_0_0", "karting_0_0_1", "karting_0_0_2", diff --git a/src/overmapbuffer.cpp b/src/overmapbuffer.cpp index 225eeff8d5c96..c51504b82721c 100644 --- a/src/overmapbuffer.cpp +++ b/src/overmapbuffer.cpp @@ -231,6 +231,12 @@ void overmapbuffer::save() } } +void overmapbuffer::reset() +{ + overmaps.clear(); + last_requested_overmap = nullptr; +} + void overmapbuffer::clear() { overmaps.clear(); diff --git a/src/overmapbuffer.h b/src/overmapbuffer.h index 6b5ab15662ecb..7b25c866b7804 100644 --- a/src/overmapbuffer.h +++ b/src/overmapbuffer.h @@ -155,6 +155,12 @@ class overmapbuffer */ overmap &get( const point_abs_om & ); void save(); + /** + * Just drop the generated overmaps without resetting + * the members tracking which specials we've placed. + * Should only be used in tests. + */ + void reset(); void clear(); void create_custom_overmap( const point_abs_om &, overmap_special_batch &specials ); diff --git a/src/test_data.cpp b/src/test_data.cpp index c76456cfbcd0f..8dfe00ce120c7 100644 --- a/src/test_data.cpp +++ b/src/test_data.cpp @@ -12,6 +12,7 @@ std::map> test_data::containe std::map test_data::pocket_mod_data; std::map test_data::npc_boarding_data; std::vector test_data::bash_tests; +std::map test_data::item_demographics; void efficiency_data::deserialize( const JsonObject &jo ) { @@ -82,6 +83,30 @@ void bash_test_set::deserialize( const JsonObject &jo ) mandatory( jo, false, "tests", tests ); } +void item_demographic_test_data::deserialize( const JsonObject &jo ) +{ + if( !jo.has_member( "type" ) ) { + for( const JsonMember &member : jo ) { + std::string name = member.name(); + itype_id itm_id = itype_id( name ); + int item_weight = member.get_int(); + item_weights[itm_id] = item_weight; + } + return; + } + std::string type; + jo.read( "type", type ); + groups[type].first = jo.get_int( "weight" ); + JsonObject demo_list = jo.get_object( "items" ); + for( const JsonMember &member : demo_list ) { + std::string name = member.name(); + itype_id itm_id = itype_id( name ); + int item_weight = member.get_int(); + item_weights[itm_id] = item_weight; + groups[type].second[itm_id] = item_weight; + } +} + void test_data::load( const JsonObject &jo ) { // It's probably not necessary, but these are set up to @@ -170,4 +195,19 @@ void test_data::load( const JsonObject &jo ) jo.read( "npc_boarding_data", new_boarding_data ); npc_boarding_data.insert( new_boarding_data.begin(), new_boarding_data.end() ); } + + if( jo.has_object( "item_demographics" ) ) { + item_demographic_test_data data; + std::string category; + const JsonObject demo_obj = jo.get_object( "item_demographics" ); + demo_obj.read( "category", category ); + demo_obj.read( "tests", data.tests ); + demo_obj.read( "ignored_items", data.ignored_items ); + JsonArray demo_list = demo_obj.get_array( "items" ); + while( demo_list.has_more() ) { + demo_list.read_next( data ); + } + // This does not support merging, so only add one instance of each category. + item_demographics[category] = data; + } } diff --git a/src/test_data.h b/src/test_data.h index 745a15c92f010..537740cdc7dc9 100644 --- a/src/test_data.h +++ b/src/test_data.h @@ -85,6 +85,14 @@ struct bash_test_set { std::vector tested_ter; std::vector tests; + void deserialize( const JsonObject &jo ); +}; + +struct item_demographic_test_data { + std::map item_weights; + std::map>> groups; + std::set tests; // NOLINT(cata-serialize) + std::unordered_set ignored_items; // NOLINT(cata-serialize) void deserialize( const JsonObject &jo ); }; @@ -102,6 +110,7 @@ class test_data static std::map pocket_mod_data; static std::map npc_boarding_data; static std::vector bash_tests; + static std::map item_demographics; static void load( const JsonObject &jo ); }; diff --git a/tests/overmap_test.cpp b/tests/overmap_test.cpp index bf9d2688d37f7..81b546b44955f 100644 --- a/tests/overmap_test.cpp +++ b/tests/overmap_test.cpp @@ -2,6 +2,7 @@ #include #include "all_enum_values.h" +#include "ammo.h" #include "calendar.h" #include "cata_catch.h" #include "city.h" @@ -10,16 +11,20 @@ #include "enums.h" #include "game_constants.h" #include "global_vars.h" +#include "item_factory.h" +#include "itype.h" #include "map.h" +#include "map_iterator.h" #include "mapbuffer.h" #include "omdata.h" -// #include "options_helpers.h" #include "output.h" #include "overmap.h" #include "overmap_types.h" #include "overmapbuffer.h" #include "test_data.h" #include "type_id.h" +#include "vehicle.h" +#include "vpart_position.h" static const oter_str_id oter_cabin( "cabin" ); static const oter_str_id oter_cabin_east( "cabin_east" ); @@ -247,26 +252,145 @@ TEST_CASE( "mutable_overmap_placement", "[overmap][slow]" ) } } +static bool tally_items( std::unordered_map &global_item_count, + std::unordered_map &item_count, tinymap &tm ) +{ + bool found = false; + for( const tripoint &p : tm.points_on_zlevel() ) { + for( item &i : tm.i_at( p ) ) { + std::unordered_map::iterator iter = global_item_count.find( i.typeId() ); + if( iter != global_item_count.end() ) { + found = true; + item_count.emplace( i.typeId(), 0 ).first->second += i.count(); + } + for( const item *it : i.all_items_ptr() ) { + iter = global_item_count.find( it->typeId() ); + if( iter != global_item_count.end() ) { + found = true; + item_count.emplace( i.typeId(), 0 ).first->second += i.count(); + } + } + } + if( const optional_vpart_position ovp = tm.veh_at( p ) ) { + vehicle *const veh = &ovp->vehicle(); + for( const int elem : veh->parts_at_relative( ovp->mount(), true ) ) { + const vehicle_part &vp = veh->part( elem ); + for( item &i : veh->get_items( vp ) ) { + std::unordered_map::iterator iter = global_item_count.find( i.typeId() ); + if( iter != global_item_count.end() ) { + found = true; + item_count.emplace( i.typeId(), 0 ).first->second += i.count(); + } + for( const item *it : i.all_items_ptr() ) { + iter = global_item_count.find( it->typeId() ); + if( iter != global_item_count.end() ) { + found = true; + item_count.emplace( i.typeId(), 0 ).first->second += i.count(); + } + } + } + } + } + } + return found; +} + +TEST_CASE( "enumerate_items", "[.]" ) +{ + for( const itype *id : item_controller->find( + []( const itype & type ) -> bool { + return !!type.gun; +} ) ) { + printf( "%s ", id->gun->skill_used.str().c_str() ); + printf( "%s\n", id->get_id().str().c_str() ); + } +} + +static void finalize_item_counts( std::unordered_map &item_counts ) +{ + for( std::pair &category : + test_data::item_demographics ) { + // Scan for match ing ammo types and shim them into the provided data so + // the test doesn't break every time we add a new item variant. + // Ammo has a lot of things in it we don't consider "real ammo" so there's a list + // of item types to ignore that are applied here. + if( category.first == "ammo" ) { + for( const itype *id : item_controller->find( []( const itype & type ) -> bool { + return !!type.ammo; + } ) ) { + if( category.second.ignored_items.find( id->get_id() ) != category.second.ignored_items.end() ) { + continue; + } + category.second.item_weights[id->get_id()] = 1; + auto ammotype_map_iter = category.second.groups.find( id->ammo->type.str() ); + if( ammotype_map_iter == category.second.groups.end() ) { + // If there's no matching ammotype in the test data, + // stick the item in the "other" group. + category.second.groups["other"].second[id->get_id()]; + } else { + // If there is a matching ammotype and the item id isn't already populated, + // add it. + if( ammotype_map_iter->second.second.find( id->get_id() ) == + ammotype_map_iter->second.second.end() ) { + ammotype_map_iter->second.second[id->get_id()] = 1; + } + } + } + } else if( category.first == "gun" ) { + for( const itype *id : item_controller->find( []( const itype & type ) -> bool { + return !!type.gun; + } ) ) { + if( category.second.ignored_items.find( id->get_id() ) != category.second.ignored_items.end() ) { + continue; + } + category.second.item_weights[id->get_id()] = 1; // ??? + for( const ammotype &ammotype_id : id->gun->ammo ) { + auto ammotype_map_iter = category.second.groups.find( ammotype_id.str() ); + if( ammotype_map_iter == category.second.groups.end() ) { + // If there's no matching ammotype in the test data, + // stick the item in the "other" group. + category.second.groups["other"].second[id->get_id()]; + } else { + // If there is a matching ammotype and the item id isn't already populated, + // add it. + if( ammotype_map_iter->second.second.find( id->get_id() ) == + ammotype_map_iter->second.second.end() ) { + ammotype_map_iter->second.second[id->get_id()] = 1; // ??? + } + } + } + } + } + for( std::pair demographics : category.second.item_weights ) { + item_counts[demographics.first] = 0.0; + } + } +} + +// Toggle this to enable the (very very very expensive) item demographics test. +static bool enable_item_demographics = false; + TEST_CASE( "overmap_terrain_coverage", "[overmap][slow]" ) { // The goal of this test is to generate a lot of overmaps, and count up how // many times we see each terrain, so that we can check that everything // generates at least sometimes. - // override_option override_forestosity( "OVERMAP_FOREST_LIMIT", "0.2" ); - // override_option override_urbanity( "OVERMAP_MAXIMUM_URBANITY", "1" ); struct omt_stats { - explicit omt_stats( const tripoint_abs_omt &p ) : first_observed( p ) {} + explicit omt_stats( const tripoint_abs_omt &p ) : last_observed( p ) {} - tripoint_abs_omt first_observed; + tripoint_abs_omt last_observed; int count = 0; + int samples = 0; + bool found = false; + std::unordered_map item_counts; }; std::unordered_map stats; - point_abs_omt origin; + std::unordered_map item_counts; + finalize_item_counts( item_counts ); map &main_map = get_map(); - + point_abs_omt map_origin = project_to( main_map.get_abs_sub().xy() ); for( int i = 0; i < 10; ++i ) { - std::unordered_map loop_stats; - for( const point_abs_omt &p : closest_points_first( origin, 0, 3 * OMAPX - 1 ) ) { + for( const point_abs_omt &p : closest_points_first( map_origin, 5, 3 * ( OMAPX - 1 ) ) ) { // We need to avoid OMTs that overlap with the 'main' map, so we start at a // non-zero minimum radius and ensure that the 'main' map is inside that // minimum radius. @@ -277,35 +401,54 @@ TEST_CASE( "overmap_terrain_coverage", "[overmap][slow]" ) tripoint_abs_omt tp( p, z ); oter_type_id id = overmap_buffer.ter( tp )->get_type_id(); auto iter_bool = stats.emplace( id, tp ); + iter_bool.first->second.last_observed = tp; ++iter_bool.first->second.count; - // Just the first time we see a oter_type, stash it here to run mapgen on it. - if( iter_bool.second ) { - loop_stats.emplace( id, tp ); - } } } - // The second phase of this test is to perform the tile-level mapgen once + // The second phase of this test is to perform the tile-level mapgen // for each oter_type, in hopes of triggering any errors that might arise // with that. - int num_generated_since_last_clear = 0; - for( const std::pair &p : loop_stats ) { + // In addition, if enable_item_demographics == true, + // perform extensive mapgen analysis and make assertions about + // the ratios of selected item occurrence rates. + for( std::pair &p : stats ) { const std::string oter_type_id = p.first->id.str(); - const tripoint_abs_omt pos = p.second.first_observed; + const tripoint_abs_omt pos = p.second.last_observed; + const int count = p.second.count; + // Once we find items of interest in an oter_type, increase the sampling for it. + int sampling_exponent = p.second.found ? 3 : 2; + int goal_samples = std::pow( std::log( std::max( 10, count ) ), sampling_exponent ); + if( !enable_item_demographics ) { + goal_samples = 1; + } + // We are sampling with logarithmic falloff. Once we pass a threshold where + // log( total_count ) yields the next-higher integer value, we take another sample. + int sample_size = goal_samples - p.second.samples; + if( sample_size <= 0 ) { + continue; + } CAPTURE( oter_type_id ); - const std::string msg = capture_debugmsg_during( [pos, &num_generated_since_last_clear]() { - tinymap tm; - tm.load( pos, false ); - - // Periodically clear the generated maps to save memory - if( ++num_generated_since_last_clear >= 64 ) { + const std::string msg = capture_debugmsg_during( [pos, + &item_counts, &p, &sample_size, &goal_samples, count, oter_type_id]() { + for( int i = 0; i < sample_size; ++i ) { + // clear the generated maps so we keep getting new results. MAPBUFFER.clear_outside_reality_bubble(); - num_generated_since_last_clear = 0; + tinymap tm; + tm.generate( pos, calendar::turn ); + bool found = tally_items( item_counts, p.second.item_counts, tm ); + if( enable_item_demographics && found && !p.second.found ) { + goal_samples = std::pow( std::log( std::max( 10, count ) ), 3 ); + sample_size = goal_samples - p.second.samples; + p.second.found = true; + } } } ); + p.second.samples = goal_samples; CAPTURE( msg ); - REQUIRE( msg.empty() ); + CAPTURE( msg.empty() ); } - overmap_buffer.clear(); + + overmap_buffer.reset(); } std::unordered_set done; @@ -367,4 +510,95 @@ TEST_CASE( "overmap_terrain_coverage", "[overmap][slow]" ) "reliably enough for this test)" ); CHECK( num_missing == 0 ); } + + if( !enable_item_demographics ) { + // This should be SKIP() but we haven't updated to Catch 3.3.0 yet. + return;; + } + // Copy and scale the final results from all oter_types to the global item_count map for analysis. + for( const std::pair &omt_entry : stats ) { + REQUIRE( omt_entry.second.samples != 0 ); + float sampling_factor = static_cast( omt_entry.second.count ) / + static_cast( omt_entry.second.samples ); + for( std::pair item_entry : omt_entry.second.item_counts ) { + const itype *item_type = item::find_type( item_entry.first ); + // Adjust this filter to limit output. + if( !!item_type->gun ) { + printf( "Found %f %s in %d instances of %s (scaled)\n", + static_cast( item_entry.second ) * sampling_factor, + item_entry.first.c_str(), omt_entry.second.count, + omt_entry.first.id().c_str() ); + } + item_counts[item_entry.first] += static_cast( item_entry.second ) * sampling_factor; + } + } + + // We're asserting ratios for three things here. + // 1. global weight within a category, so e.g. number of glock 19s / all guns spawned. + // 2. weight of a sub-category within a category, e.g. number of 9mm firearms / all guns. + // 3. weight of individual items within a sub-category, e.g. number of glock 19s / all 9mm firearms. + for( std::pair &category : + test_data::item_demographics ) { + if( category.second.tests.count( "items" ) ) { + float category_weight_total = 0.0; + float category_actual_total = 0.0; + // I don't see an alternative to just walking this twice? + for( std::pair &item_ratio : category.second.item_weights ) { + category_weight_total += item_ratio.second; + category_actual_total += item_counts[item_ratio.first]; + } + for( std::pair &item_ratio : category.second.item_weights ) { + float actual_item_count = item_counts[item_ratio.first]; + float actual_item_ratio = actual_item_count / category_actual_total; + float expected_item_total = item_ratio.second; + float expected_item_ratio = expected_item_total / category_weight_total; + CAPTURE( item_ratio.first ); + CAPTURE( actual_item_count ); + CAPTURE( expected_item_total ); + CHECK_THAT( actual_item_ratio, Catch::Matchers::WithinRel( expected_item_ratio, 0.1f ) ); + } + } + if( category.second.tests.count( "groups" ) ) { + float all_type_weight_total = 0.0; + float all_type_actual_total = 0.0; + // I don't see an alternative to just walking this twice? + for( std::pair < const std::string, + std::pair>> &group : category.second.groups ) { + all_type_weight_total += group.second.first; + for( std::pair &item_ratio : group.second.second ) { + all_type_actual_total += item_counts[item_ratio.first]; + } + } + for( std::pair < const std::string, + std::pair>> &group : category.second.groups ) { + float current_type_actual_total = 0.0; + float current_type_weight_total = group.second.first; + for( std::pair &item_ratio : group.second.second ) { + current_type_actual_total += item_counts[item_ratio.first]; + } + if( category.second.tests.count( "inner-group" ) ) { + for( std::pair &item_ratio : group.second.second ) { + float actual_item_count = item_counts[item_ratio.first]; + float actual_item_ratio = actual_item_count / current_type_actual_total; + float expected_item_ratio = item_ratio.second / current_type_weight_total; + CAPTURE( category.first ); + CAPTURE( item_ratio.first ); + CAPTURE( actual_item_count ); + CAPTURE( expected_item_ratio ); + CHECK_THAT( actual_item_ratio, + Catch::Matchers::WithinRel( expected_item_ratio, 0.1f ) ); + } + } + float current_type_expected_ratio = current_type_weight_total / all_type_weight_total; + float current_type_actual_ratio = current_type_actual_total / all_type_actual_total; + CAPTURE( category.first ); + CAPTURE( group.first ); + CAPTURE( current_type_expected_ratio ); + CAPTURE( current_type_actual_ratio ); + INFO( "Difference: " << current_type_actual_ratio - current_type_expected_ratio ); + CHECK_THAT( current_type_actual_ratio, + Catch::Matchers::WithinRel( current_type_expected_ratio, 0.1f ) ); + } + } + } }