Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generic Guns rework #36839

Merged
merged 12 commits into from
Jan 24, 2020
Merged

Generic Guns rework #36839

merged 12 commits into from
Jan 24, 2020

Conversation

tenmillimaster
Copy link
Member

@tenmillimaster tenmillimaster commented Jan 9, 2020

Summary

SUMMARY: Mods "Completely overhauls generic guns"

Purpose of change

Generic Guns has been non-functional (to varying degrees) for a long, long time. It is difficult for content makers to maintain it, having to chase down multiple places for their work. This PR aims to close #35359 using the strategy outlined in #35427.

Describe the solution

Rather than having to copy and alter numerous items for the mod, Generic Guns will now utilize 'archetypal guns'(defined in #35483) that are defined in the mod, and are intended to stand on their own; thus, instead of carefully selecting which guns to black list, and which to not, ALL MAINLINE guns will get migrated instead to one of these archetypes.
In case a gun doesn't adequately fit to one, a new archetype will be made.

The same approach is made for gunmods, magazines, ammunition, and recipes.

Describe alternatives you've considered

Just updating the blacklist.

Testing

Not much yet. I've loaded the game just prior, to make sure there aren't any load errors related to this mod. There is a feature this work is contingent on, which produces load errors, #35545

Additional context

This has been a HUGE project, and I have likely made mistakes. Any criticism, input, or suggestions are greatly appreciated.

As I was adding guns, I expanded the # of guns slightly to what I felt was a more complete list of archetypes.

@tenmillimaster tenmillimaster added [JSON] Changes (can be) made in JSON Mods Issues related to mods or modding Items: Magazines Ammo holding items and objects. Items: Gunmod / Toolmod Weapon and tool attachments, and add-ons Accessibility Issues regarding accessibility Items: Ammo / Guns Ammunition for all kinds of weapons and these weapons themselves Ranged Ranged (firearms, bows, crossbows, throwing), balance, tactics labels Jan 9, 2020
@tenmillimaster tenmillimaster added this to the 0.E milestone Jan 9, 2020
@I-am-Erk
Copy link
Member

I-am-Erk commented Jan 9, 2020

Whew. I'll get on reviewing this, it's gonna be a job but as one of the big proponents I guess I better.

@tenmillimaster
Copy link
Member Author

tenmillimaster commented Jan 9, 2020

Current list of known issues:
Pipe guns needed to get added to migrations.
Some mainline ammo is still craftable.
None of the Generic guns ammo is craftable?
Grenades need their reload recipes.
Pipe weapons need reload recipes.
Magnum-> Pistol ammo casing recipe.
Modified gunmod recipes.
Guns, magazines and ammo used in other recipes as tools or components need to be checked. (makeshift grenade from 00 shot for example.)
Need to check whether a gunmod can actually have an IUSE (conversion of grenade launcher gunmod to grenade pistol and back)

@I-am-Erk
Copy link
Member

So, I think we should make a CI check that makes sure all type: ammo and type: guns items are either migrated in Generic Guns, or are present on a whitelist to say they don't need migration.

Copy link
Member

@I-am-Erk I-am-Erk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's what I've found so far

data/mods/Generic_Guns/ammo/casings.json Outdated Show resolved Hide resolved
data/mods/Generic_Guns/ammo/pistol_magnum.json Outdated Show resolved Hide resolved
data/mods/Generic_Guns/firearms/black_powder.json Outdated Show resolved Hide resolved
data/mods/Generic_Guns/firearms/pistol.json Outdated Show resolved Hide resolved
data/mods/Generic_Guns/firearms/pistol.json Outdated Show resolved Hide resolved
data/mods/Generic_Guns/firearms/rifle.json Outdated Show resolved Hide resolved
@Brian-Otten
Copy link
Contributor

Brian-Otten commented Jan 11, 2020

Just went ingame to check all the itemgroups. going to note down items that need migrating

luty smg .40
luty smg .45
luty smg 9mm
winchester m37
Browning auto 5
CZ-75
Glock 31
hi-point c9
Kel tec p32
Kel-tec p3AT
kel-tec pf-9
marlin 1895
mossberg 930 spx
PT 603
remington 1100 competition
remington 700
remington 870 express
ruger LCP
Sig p320
Walther p22
Walter p38
AT 4
m74 rocket clip
m110A1
Glock 18c
M17
m1911A1
Mk 23 MOD
mcmillan tac-50
mossberg 590A
remington 870 MCS
Magnum research BFR
Saiga-410
Taurus raging judge magnum
USAS 12
Uberti cattleman
Browning hi-power .40
Walther CCP
Walther PPQ
S&W model 10
Walther ppq 9mm
m45A1
Bond arms derringer
Ar-15
Hk417
1874 sharps
1887 bootleg shotgun
Colt lighting .45 carbine
m1987 trench gun
mac-11
Tavor TS12
IWI tavor x95
ar-10
Marlin 1895 SBL
Remington 700
Remington ACR .300
Cobray street sweeper
Franchi spas-12
PTR 603
H&K mp5k-pdw
H&K mpsd
.45-70 LFN
usas-12 drum magazine
saiga-410 drum magazine
usas-12 box magazine
saiga-410 box magazine
AF2011A1 magazine
.300ac blackout conversion kit
.410 000

ammo_shotgun_obscure spawns nothing
guns_launcher_grenade spawns nothing
guns_launcher_improvised spawns nothing
guns_smg_obscure spawns nothing
mags_shotgun_common spawns nothing

That's all the ones i could find easily, there might still be more.

EDIT:
This apparently didn't work because the test itemgroup function in the debug menu does not properly take migrations into account. So this list is sadly mostly invalid.

@esotericist
Copy link
Contributor

This apparently didn't work because the test itemgroup function in the debug menu does not properly take migrations into account. So this list is sadly mostly invalid.

migrations currently only happen on save game load, because that mechanism was originally only intended to be used for obsoleted items (and thus things that would no longer be in item lists).

engineering is needed for this to work right.

See: #35545

@tenmillimaster
Copy link
Member Author

tenmillimaster commented Jan 14, 2020

I have been playtesting somewhat with a compiled copy of #35545. Most everything seems to be in order, I missed a few migrations.

Currently I'm having issues with magazines- https://media.discordapp.net/attachments/598529174302490644/666523696155852800/unknown.png?width=349&height=197

they have a copy-from from a similar mainline mag, and I was under the impression redefining a field would override it for the new item. This wasn't happening- I tried "delete" : { ammo_type: "old magammotype"} as well, but that hasn't worked.

It's now a known bug, as confirmed on discord with Ymber.

@tenmillimaster tenmillimaster changed the title [WIP] Generic Guns rework Generic Guns rework Jan 19, 2020
@tenmillimaster
Copy link
Member Author

I've gone and cleaned up some more of the recipes, threw in a very hacky hack to make vehicle turrets and their ammo spawns happy, for 0.E (until migration works properly with vehicle ammo). There was a circular dependency error caused by 'bp_shot_scrap' and a recipe copying from it, related to the order in which they were defined, so I've gone and fixed that too.

I've added black powder versions of all the ammo, and de-referenced most of the recipes since copying and obsoleting wasn't going to work.

I've split all the pipe-weapons (pipe on a stick with a hammer) apart from the repeaters (somewhat well made firearms) in recipes, and have attempted to rationalize their difficulties and components.

Copy link
Contributor

@mlangsdorf mlangsdorf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked over the migrations and they seemed sensible.
I looked over the recipes for black powder weapons and they're close enough the level of detail available with CDDA's current crafting system.

@I-am-Erk I-am-Erk merged commit 6369e0b into CleverRaven:master Jan 24, 2020
@I-am-Erk
Copy link
Member

Well let's see how that goes

@tenmillimaster tenmillimaster deleted the gguns4 branch January 25, 2020 00:16
eilaattwood added a commit to eilaattwood/Cataclysm-DDA that referenced this pull request Jan 30, 2020
* Removed redundant arrays for colors (CleverRaven#37187)

Co-authored-by: I-am-Erk <[email protected]>

* Tools.json sorting pt. 8 (CleverRaven#37219)

* Tools.json sorting pt.8

* Fix NPC dropping equipment (CleverRaven#37240)

* Make npc equiping smarter

* Fix item duplication

* Saner oars stats and recipe

The current stats don't represent the description and usage correctly.

* Remove redundant translation

* Fix filthy wearable weapon drops

* Apply suggestions from code review

Co-Authored-By: Anton Burmistrov <[email protected]>

* Military Base location (CleverRaven#37024)

* Mapgen file

* Palette

* Overmap special

* Overmap terrain

* Update mil_base.json

* More OM tiles

* Added armory and infirmary

* Barracks and stuff

* More barracks + military vehicles

* Utilities and Comm Center

* Added bunk beds

* Added underground level

* Added interior locked metal door

* Revert "Added interior locked metal door"

This reverts commit 2a69241.

* Added command center

* Added z+1 level

* Added warehouse shelf

* Added Z levels 2-4

* Added item groups and corpse piles

* Update locations.json

* Update mil_base_z0.json

* Added IV bag

* Added saline solution in iv bag to surgery item group

* Added mess tray

* Added more item spawn points

* Resolved merge conflicts

* Added more item spawns

* Update furniture-storage.json

* Wrapped up item placements

* Update mil_base_palette.json

* Added monster groups

* Added starting scenario

* Update scenarios.json

* Added monsters

* Tweaks and linting

* Wrap-up

* Update locations.json

* Added missing monstergroup

* Added specops, bio_soldier and bio_sniper to starting professions

* Added shredders

* Added the base to military operations map

* Changed the overmap color to red

* Corrected occurrences

* Added laundry room

* Added chairs to laundry

* Enlarged the helipad

* Added benches to laundry

* Update mil_base_z-1.json

* Tweaks

* Tweaks

* Minor item placement fixes

* Adding palette with recent changes

* Handling test failures

* More test fixes

* Update data/json/overmap/overmap_special/specials.json

Co-Authored-By: I-am-Erk <[email protected]>

* Update data/json/overmap/overmap_special/specials.json

Co-Authored-By: I-am-Erk <[email protected]>

Co-authored-by: I-am-Erk <[email protected]>

* Update mammal.json

* Offal holiday cooking by evelyn turncoat (CleverRaven#37171)

* Recipes and comestibles

* itemgroup

* Update offal_dishes.json

* Update cooking.json

* fix components

* Update offal_dishes.json

* Update data/json/recipes/food/offal_dishes.json

Co-Authored-By: Jianxiang Wang (王健翔) <[email protected]>

* LISTS flag

* excess comma

* weird array structure unnecessary

* Update offal_dishes.json

* Update offal_dishes.json

* elimiinate charges test for calories

* Update canned.json

* Update canned.json

* Revert "Update canned.json"

This reverts commit 08920ef.

* Revert "Update canned.json"

This reverts commit 2836f13.

* Update data/json/items/book/cooking.json

Co-Authored-By: I-am-Erk <[email protected]>

Co-authored-by: Jianxiang Wang (王健翔) <[email protected]>
Co-authored-by: I-am-Erk <[email protected]>

* Fix map revealing items (CleverRaven#37195)

* Fix reveal of bar by restaurant guide

* Fix reading of enum in `om_terrain_match_type` tag

* Changed occurrences

* Cable charger don't draw power when you're full

* Calories for offal dishes (CleverRaven#37287)

* Attacking shocker with worn non-conductive gloves won't zapback you (CleverRaven#37242)

* Comestible modern json (CleverRaven#37273)

* Comestible modern json

* Correct amonia plural

* Correct almond pulp plural

* create orichalcum frame vehicle part

* Added oral rehydration therapy drink and recipes to craft it. (CleverRaven#37286)

* Added sports drink recipe

* Added a new location to learn recipe

It makes sense that you'd be able to learn about ORT solution from a first aid manual.

* Linted recipe_food.json

* Added rehydration drink item

* Adjusted the new recipe

* Added a "looks_like"

* Linted drink.json again

* Changed rehydration drink joy from -5 to -2

* Adjusted description as per suggestion

* Update data/json/recipes/recipe_food.json

Co-Authored-By: I-am-Erk <[email protected]>

* Update data/json/recipes/recipe_food.json

Co-Authored-By: I-am-Erk <[email protected]>

Co-authored-by: I-am-Erk <[email protected]>

* Add MAINLINE_MODS.md to document mod inclusion criteria and procedures (CleverRaven#37282)

* Create MAINLINE_MODS.md

* Update doc/MAINLINE_MODS.md

Co-Authored-By: Curtis Merrill <[email protected]>

* Update doc/MAINLINE_MODS.md

Co-Authored-By: Fris0uman <[email protected]>

* Update doc/MAINLINE_MODS.md

Co-Authored-By: davidpwbrown <[email protected]>

* Update doc/MAINLINE_MODS.md

Co-Authored-By: davidpwbrown <[email protected]>

* Update doc/MAINLINE_MODS.md

Co-Authored-By: I-am-Erk <[email protected]>

* Update doc/MAINLINE_MODS.md

Co-Authored-By: I-am-Erk <[email protected]>

* Update doc/MAINLINE_MODS.md

Co-Authored-By: I-am-Erk <[email protected]>

Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: davidpwbrown <[email protected]>
Co-authored-by: I-am-Erk <[email protected]>

* Added flag to the 5 variants

* Linting

* shfit the ambulance

* Add age_grow attribute documentation.

* Comestible-modern-json 2

* typo: change 'past' to 'passed' (verb)

* Ammo modern json

* Paperback novel tpl (CleverRaven#37166)

* Move more string consts into file for them (CleverRaven#37302)

* Refactor computer window (CleverRaven#37269)

* Refactor computer window printing

* Use input context in query_bool and query_ynq

* Split computer actions into functions

* Split computer failures into functions

* Add new safemode rule category for ignoring sounds (CleverRaven#36786)

* Added safe sound rule category

* Update mre.json

* Update mre.json

* Fixed duplicate "the"

* Computer refactor part 2 (CleverRaven#37299)

* Remove unnecessary/unused members of class computer

* Make name and mission_id of computer private

* Make alerts a member of computer

* Move initialization of next_attempt to constructor

* Replace shutdown_terminal with reset_terminal

* Check option enum instead of (translated) option string

* Migrate computer_action and computer_failure_type to use enum conversion

* Use JSON (de)serialization in class computer

* Lift ordering restriction of computer_action and computer_failure_type

* Remove COMPACT_OBSOLETE

* Fix COMPFAIL_DESTROY_DATA range

* Remove const modifiers in function declarations

Co-Authored-By: ZhilkinSerg <[email protected]>

Co-authored-by: ZhilkinSerg <[email protected]>

* Reduce the scaling damage dealt by the evolve kill strike special attack (CleverRaven#37277)

* Teak the scaling damage dealt by evolve kill strike attack

* Prevent auto attacking allies (CleverRaven#37257)

* Move update_body and skill rust related functions from player to Character (CleverRaven#37210)

* Jsonize and simplify starving warnings (CleverRaven#36989)

* Add a "rural" biome in mod form (CleverRaven#37265)

* Fix mag unloading (CleverRaven#37338)

* NPC can consume battery charges from batteries

* Generic Guns rework (CleverRaven#36839)

* Rework generic guns

* Recipe redefs

* 20x66 migrations

* turrets, descriptions, magazine ammo types

* Smörgåsbord of stuff

* Update gg_ammo_migration.json

* black powder recipes &defs, make more recipes standalone

* fix circular error caused by obsoletion

* Update recipes_pistol.json

* Update modinfo.json

* Update pistol.json

* Update shot.json

* Reverted flag change and added coverage

* Fix spelling errors (CleverRaven#37349)

* Remove executable bit from turret.json

* Fix spelling errors

found by lintian

* Generic modern json (CleverRaven#37342)

* Update Makefile so LTO works on OSX

The gold linker can only produce ELF binaries, not Mach, so it doesn't work on OSX. This lets link-time optimization work when linking Mach binaries from clang.

* Fix a few typos pre 0.E (CleverRaven#37359)

Fix a few typos pre 0.E

* Add a vibrator crafting recipe (CleverRaven#36860)

* Add a vibrator crafting recipe

There was an existing recipe for crafting an mp3 player, but
surprisingly none for a much simpler device, the vibrator.
This recipe uses similar ingredients to the existing deconstruction
recipe (with the addition of a tiny electric motor), and is auto-learned
at fabrication level 2.

* Increase vibrator crafting requirements

Makes the recipe a bit more realistic, and balanced with existing
recipes, based on pull request comments from other players and
further inspection of existing recipes. Changes include:

- Require a plastic mold (must-have for a smoothly contoured shape)
  and additional plastic scraps to account for mold overrun
- Require electronics skill 1, but use fab 2 to construct
- Increase difficulty to 3 and crafting time to 20 minutes
- Need wire, solder, and soldering iron
- Use "motor_micro" (0.28 lbs) instead of "motor_tiny" (1.38 lbs),
  since vibrator itself only weighs 1.0 lbs

* lint

Co-authored-by: I-am-Erk <[email protected]>

* Added the item to item groups (CleverRaven#37360)

* Sorted hats, arm and leg guards (CleverRaven#37358)

* Installing gunmods takes time

*  Add item_category documentation (CleverRaven#37346)

*  Add item_category documentation

* Alignment

* Magiclysm - New Spells 1 (CleverRaven#37254)

* Linted Assorted Spells

Fresh spells for the masses

* Update data/mods/Magiclysm/Spells/biomancer.json

Co-Authored-By: Curtis Merrill <[email protected]>

* fixed paralyze damage

* updated cost of pillar

* corrected range

* rogue comma

* Update stormshaper.json

* updated terrain files

Huh. completely missed that.

* class change

* Update data/mods/Magiclysm/Spells/animist.json

Co-Authored-By: Curtis Merrill <[email protected]>

* scrolls & loot list

Co-authored-by: Curtis Merrill <[email protected]>

* regenerate values for vehicle drag test (CleverRaven#37369)

* regenerate values for vehicle drag test

* Cleaning can use clean water (CleverRaven#37366)

* Fix handmade magnum carbine using wrong ammo (CleverRaven#37364)

* Adds repair like jeans to army pants. (CleverRaven#37353)

* Remove non-scifi professions from Aftershock (CleverRaven#37292)

* json style

* Add -fno-sanitize-recover=all

When activating a sanitizer, explicitly request that we don't try to
recover from a failure.

This is so that when we run the tests in CI, ubsan issues will actually
cause a failure.  Otherwise they're just logged and no-one will notice
them.

* Avoid member function call with this == null

This member function of oracle_t was just a constant function.  It
didn't need to be a member function, so I made it a free function.

In the tests it was being called on null oracle_t* values.

* Avoid crafting_success_roll returning NaN

The crafting_success_roll could end up computing 0.0/0.0.  This happened
to work, but more by luck than design, so check for that case
explicitly.

(NaN values are unsafe given that we're compiling with -ffast-math).

* Avoid uninitialized bool member variables

In effect_type these bools would remain uninitialized for the derived
class ma_buff_effect_type, leading to inconsistent behaviour of martial
art effects.

In inventory a newly constructed inventory could be considered binned,
which could cause incorrect behaviour.

In both cases, this involved loading invalid bool values, with is UB.

* Avoid overflow in get_overmaps_near

In some cases a call to get_overmaps_near was passing a tripoint with z
value INT_MIN.  This led to an overflow when computing the distance
between points.

Instead, just pass the x,y part of the tripoint.

* Avoid some floating point division by zero

Avoid division by zero in two cases: light level zero (used to check
creature night sight on some code paths) and vehicle traction when all
wheels are on the ground.

This isn't actually UB, but in one case it led to UB because an infinity
was cast to an int.

Also, UBSan was complaining about it, possibly because we're doing
things that are unsafe when using -ffast-math.

* Avoid overflow when computing vehicle power

When a vehicle was being fast-forwarded over a period of months upon
return to the reality bubble it was possible for the accumulated solar
power to exceed billions of joules.  This led to integer overflow.

Perform intermediate calculation in 64-bit ints to avoid the problem.

* Initialize weather in tests

The tests never initialized the state of the weather system, leaving
some uninitialized values which could lead to winds in the billions of
miles per hour.  That in turn led to overflows and UB.

Initialize the weather system appropriately.

* Add -fno-sanitize-recover=all with sanitizers

By default, UBSan just prints a message but doesn't cause an error exit.
This is not what we want for CI, so adding an extra option to make these
errors fatal in order for CI issues to be obvious.

* Fixed pluralization of acorn meal/bologna/bone meal/cornmeal/detergent/herring/oatmeal/yeast (CleverRaven#37375)

* Fixed pluralization of bone/acorn/corn/oatmeal and yeast.

* used new plural form, and added bologna and detergent plurals

* Triage two clang-tidy checks

PR CleverRaven#37003 added -modernize-use-trailing-return-type to our .clang-tidy
on the basis that we don't want to fix those issues.  However, it was
added to the yet-to-be-triaged section of the file.

Move it to the triaged section of checks we have decided we don't want.

At the same time, move modernize-use-auto to the same section.

No behavioural change should occur.  This is just bookkeeping.

* Enable UBSan in Travis CI

UBSan and ASan are compatible, so enable them both in the same test run.

* fix screen wall (CleverRaven#37380)

* Armor.json sorting pt. 2 (CleverRaven#37381)

* Make `int_id::operator int` explicit

* make reins autolearn (CleverRaven#37379)

* Routine i18n updates on 25 Jan 2020 (CleverRaven#37382)

* Some more typo cleanup for 0.E

Some more typo cleanup for 0.E

* Use std::abs on int64_t argument

Using abs is in fact safe in this case, but causes a compiler warning.

* Update JSON_INFO.md (bashing cannot be negative) (CleverRaven#37186)

* Update JSON_INFO.md

* Update doc/JSON_INFO.md

Co-Authored-By: I-am-Erk <[email protected]>

* Update doc/JSON_INFO.md

Co-Authored-By: I-am-Erk <[email protected]>

* Update JSON_INFO.md

* Update JSON_INFO.md

Co-authored-by: I-am-Erk <[email protected]>

* Appease clang-tidy (CleverRaven#37390)

* Pass -quiet to clang-tidy on Travis

To reduce the unnecessary noise in the CI output from running
clang-tidy.

* Assorted clang-tidy fixes

* Armor.json sorting pt. 3 (CleverRaven#37393)

* Moved items to separate files

* Changed cloaks_blankets.json to cloaks.json

* Various generic guns quickfixes (CleverRaven#37386)

* Description, recipe, parent, itemidswap, and capitalization fixes

* Mainline sleep deprivation (CleverRaven#37317)

* Update inventory.cpp

removed redundant hotplate pseudoitem

* Increased recycle center mundane loot tenfold (CleverRaven#37388)

* Buffed mundane item weights

* Increased loot amount tenfold

* Increased recycle bin storage capacity

* Update data/json/itemgroups/locations.json

Co-Authored-By: I-am-Erk <[email protected]>

* Added some more items and fixed wrong ones

Co-authored-by: I-am-Erk <[email protected]>

* Obsoleted Special 700 (CleverRaven#37385)

* Added Special 700 to guns_rifle_improvised

* Reverted the item group addition

* Replaced the gun with a Reminton 700 in mapgen files

* Obsoleted the gun

* Standardize JSON times to strings (CleverRaven#37396)

Integer times in construction.json were converted directly to minutes
(confirmed in-game that these are the correct construction times).

Integer times in some ammo and vehicle recipes were converted such that
100 is 1 turn, and since 1 turn is 1 second, this means "time: 4000" is
a duration of 40 seconds, and "time: 30000" is a duration of 5 minutes.
Again I checked in-game for these recipes to be sure of my
interpretation (despite a few of these seeming unrealistically quick,
such as the 5-second boat oars).

Partial fix for CleverRaven#36110

* Item Group Sorting #5

created 3 new .jsons -- locations_mapextras, agriculture and gear_civilian. Moved spawn lists from item_groups and gear.jsons into various lists.

* Refresh whole screen after selecting "What to do with your X"

* Pull out more string consts into cata_string_consts.h (CleverRaven#37394)

* Pull out string consts from tons of files

* Rollback large files

* Rollback

* Rollback

* Rollback

* FIx test/typo

* Astyle

* Revoked RECHARGE flag from Aftershock's UPS items/tools (CleverRaven#37331)

* Aftershock Bloodhound Drones (CleverRaven#37131)

* Refactor and update Graphical Overmap mod (CleverRaven#37305)

* Add suffixes and base recipes to Modular Turrets-based mods to allow proper uncrafting + other tweaks Fixes CleverRaven#37291 (CleverRaven#37373)

* Modernize craft times

Craft times were still in 100 moves per 6 seconds era.

* Add id_suffix "from_scrap" to manhack recipes, remove inactive manhack from scrap recipe, modern time

Adding Id suffix should enable one to craft manhacks from the whole components or rebuild them from scrap components and damaged manhacks. This should allow inactive manhacks to be dismantled again fixing CleverRaven:CleverRaven#37291 

Removed inactive manhack from "from_scrap" entries.

* Added from scratch recipes and changed suffix ids

Changed suffix ids to "repair" on repair recipes to manage ambiguity.

Added base recipes that match the recipes for CROWS II turret sans weapon with additional programming and mechanical expertise and difficulty being the separation between the manufacture types, implying the user has to train or program the AI core to operate the weapon. Repair recipes require electrohack to repair, the majority of the time spent hacking the broken AI core into its original function. The from-scratch recipes added imply the builder is working from a reset AI core that is is in working order and will easily accept programming instructions and the additional 10 minutes added is for completely building the turret from parts.

* Armor.json sorting pt. 4

* security van uses orichalcum

* Fix magazine unloading (again)

* Replace Food and Drink labels with Hunger and Thirst

* Update bunker.json (CleverRaven#37411)

* Avoid uninitialized resistance values

The resistances constructor for monsters left the DT_ELECTRIC value
uninitialized.  This led to inconsistent behaviour and CI test failures.

Ensure it's initialized.

* Adds extra whitespace to fix tests fail

* Updated and improved MODDING.md

* Update documentation on gun valid mod locations

* Remove useless melatonin tablet iuse, external opt

There wasn't really any reason for the melatonin tablet to have a
separate iuse, instead of using the consume drug actor.

The external option for sleep deprivation was also not very useful, and
was removed as such.

While converting the melatonin tablet to the consume drug iuse, I
noticed it could not use time_duration strings, so I enabled the use of
those for it.

Making these changes trigerred test failures, so I made adjustments to
the tests to fix those.

* fix house spawns

* pluralization and grammar fixes: spam, canned salmon, charcoal, Brigitte LaCroix quest

* Mutations modern json names and doubles (CleverRaven#37426)

* item group sorting 6 (CleverRaven#37408)

* item group sorting 6

created two new .jsons -- jewellery_gems and activities_hobbies. Moved various lists from item_groups into other .jsons.

* Move item desription into basic_info (CleverRaven#37422)

It makes sense to show the basic description of what an item is
before showing the category, volume, weight, material, owner,
ammunition, charges, magazine, and disassembly information.

This commit moves item descriptions to the top of basic_info, just below
the item name, to make it easier to see what I'm looking at.

* update ITEM_CATEGORY documentation - property priority_zones  (CleverRaven#37407)

* Mutation modern names format (CleverRaven#37434)

* Mutations modern names

* Name string to object

* Names to objects

* Name to object

* Names to objects

* Names to objects

* Names to objects

* Name to object

* Debug mutations names to objects

* Names to objects

* Names to objects

* Names to objects

* Names to objects

* Names to objects

* Facial hair names to objects

* Facial hair names to objects

* update with crack houses

* Split sausage_wasteland recipe into two recipes. (CleverRaven#37316)

* Item category modern json name (CleverRaven#37435)

* Item category modern json name

* Names to objects

* Armor.json sorting pt. 5 (CleverRaven#37441)

* Storage.json and sheath.json

* Update armor.json

* Added torso_clothes.json

* Fix footsteps translation (CleverRaven#37402)

* Make edamame and soybeans smokable (CleverRaven#37335)

* Make edamame and soybeans smokable

Soybeans and edamame can both be smoked. Edamame spoils quickly and when roasted lasts 2 seasons. Soybeans last a year in-game the smoking process makes them edible but lasting only 2 seasons. Internet searches confirm smoked edamame and soy nut recipes.

* Build roofs over dirt, and dig stairs in roofed dirt tiles (CleverRaven#37427)

* Build roofs over dirt, and dig stairs in roofed dirt tiles

* Fixed some things that got broken somehow

* Linted files and added DIGGABLE to outdoor dirt floors

* Linting

Co-authored-by: ColdandDead <[email protected]>

* Add missing [ ] to fix game load (CleverRaven#37449)

* Update microlab_generic_edge.json

* Obsolete mods (CleverRaven#37272)

* Obsolete mods

* Merge no_reviving_zombies into classic_zombies

* Gun modern json name format (CleverRaven#37447)

* Added hint about minefields to the Overrun scenario (CleverRaven#37442)

* fixed bikerack vehicle tracking

fixed bikerack wiping overmap tracking for carried vehicles

* Undergarment.json and tool_armor.json

* Revert "Undergarment.json and tool_armor.json"

This reverts commit 873c253.

* added period to warrener dialogue line. (CleverRaven#37461)

* insecticide can be made with lye powder, or much less lye CleverRaven#36396 (CleverRaven#37462)

* Turret mount crafting recipe (CleverRaven#37321)

* Update recipe_vehicle.json

* Update recipe_vehicle.json

* Update recipe_vehicle.json

* Update recipe_vehicle.json

* Update recipe_vehicle.json

* Update recipe_vehicle.json

* Update recipes.json

* Update tool.json (CleverRaven#37367)

* Tool name plural and name to object (CleverRaven#37466)

* Tool name_plural and name to object

* Names to object, volume to string

* Names to object

* Update data/json/items/tool/lighting.json

* Update data/json/items/tool/cooking.json

Co-Authored-By: I-am-Erk <[email protected]>

* Update data/json/items/tool/electronics.json

Co-Authored-By: I-am-Erk <[email protected]>

* Update data/json/items/tool/explosives.json

Co-Authored-By: I-am-Erk <[email protected]>

* Update data/json/items/tool/lighting.json

Co-Authored-By: I-am-Erk <[email protected]>

* Update data/json/items/tool/lighting.json

Co-Authored-By: I-am-Erk <[email protected]>

Co-authored-by: I-am-Erk <[email protected]>

* Fix house id matching in hardcoded missions

* fix house starting locations

* Armor.json sorting pt. 6 (CleverRaven#37468)

* Undergarment.json and tool_armor.json

* Revert "Undergarment.json and tool_armor.json"

This reverts commit 873c253.

* Tool_armor.json

* Undergarment.json

* Armor.json + things missed from earlier

* Moved barrette to jewelry

* Hot pants, loincloth, leggings to legs_clothes.json

* Update tool_armor.json

* I volunteer as tribute: Claiming a maintainer role on Classic Zombies. (CleverRaven#37477)

* Make feature template use headers, not bold text (CleverRaven#37474)

* Display Correct read times at character creation (CleverRaven#37472)

* Display Correct read times at character creation

* move read_speed() to character

* Change "Disassemble everything" wording (CleverRaven#37440)

* fruit wine requires yeast (CleverRaven#37463)

* fix high tech low life start

* Update regional_map_settings.json

* fix orichalcum frames in tests

* move cupboard to `furniture-surfaces`, give workbench properties (CleverRaven#37481)

* Mainline INT based learning changes (CleverRaven#37465)

* Change blueprint auto-calculation to blueprint requirements check in unit test

* Show messages when pet is captured or released

When using a pet carrier to capture or release a pet, it was not
displaying any kind of success message in the log. Now you will get i.e.

    "You capture the cat in your pet carrier."
    "You release the cat."

Following the example of similar log messages in these functions, I
added one message for successful capture, and one for successful
release.

This commit was going to be a simple two-line addition, but I discovered
that `release_monster` was deleting the name of the contained animal as
part of releaseing it, thus I got an empty string when trying to log it.

The solution, setting a local `contained_name` variable to remember the
animal name, had a nice side-effect of making several other lines a
little cleaner and more readable after slight refactoring, so I am
including that too.

* Update books.json

cleaned up a couple spawn lists.

* Reorganize monsters.json and audit CLASSIC tag (CleverRaven#37480)

* Adds looks_like flags

* Move check for ability to climb to the very beginning

* Adds font fallback support for map and overmap

* Armor.json sorting pt. 7

* Refactor 3 catacurses functions a bit (CleverRaven#37500)

* Grenades.json into explosives.json (CleverRaven#37506)

* Doc office fix (CleverRaven#37507)

* Changed maintainer for Mythical Martial Arts mod (CleverRaven#37483)

* Clean skill rust code (CleverRaven#37281)

* Change maintainer of DinoMod to @damien (CleverRaven#37490)

* rename mixed gunpowder

mixed gunpowder is made from smokeless gunpowder and not having smokeless in the description is confusing.

* Update speech.json

* Lowered excessive reading times of some cooking books.

* Fix incorrect key. Use the new name format

* Fix crash when exiting from options menu after failed loading

* Avoid % 0

* Improve overmapbuffer searching routines (CleverRaven#37482)

* Add simple unit tests for `closest_points` functions

* Minor simplification and optimization of `closest_points` functions

* Allow specifying minimal distance in `closest_points` functions

* Use `closest_points` functions for overmap buffer search

* Obsolete flaming weapons (CleverRaven#37406)

* Obsolete flaming weapons

* Add flaming weapons to crazy cataclysm

* Adjust Hub 01 environmental suit values (CleverRaven#37519)

* Update Integrated toolset Drilling quality to match description (CleverRaven#37521)

* Obsolete survivor helmets

* Add migration for bionic basement

* Cyberjunkie fix (CleverRaven#37529)

* Update professions.json

* Fixed AA

* let reins_tackle spawn

* fix magic basement spawn, update interior (CleverRaven#37486)

* fix magic basement spawn, update

* add save support

* shift dog spawns to a new house

since I'm using this for the magic basement,  moving the dog spawns for player survivability.

* Keep consuming menu filter when consuming multiple items

* Make bicycles more likely to exist (CleverRaven#37457)

* Make bicycles more likely to exist

Prior to this change, bicycles had only a 3% chance among the vehicle
pool (less than half that of armored vehicles) on city streets.
This seemed way too low, so I wanted to give bikes a fairer chance.

Fixes CleverRaven#37451

This commit changes three vehicle groups, including:

city_vehicles:
- Bicycle equally likely as the standard car,
  or twice as likely as a Hippie Van.
- Dirt bike as likely as a Hatchback or Hippie Van
- Electric bicycle as likely as a Beetle or RV

suburban_home:
- Bicycle as likely as standard car
- Dirt bike as likely as SUV
- Electric bicycle possible, as likely as scooter or sports car

parkinglot:
- Bicycle as likely as car or flatbed truck
- Dirt bike possible, as likely as hatchback or motorcycle

* Reduce bicycle spawn frequency somewhat

Based on PR feedback from other devs/players, I'm dialing back the
bicycle spawn frequency significantly from my previous commit.

The total adjustment now is that bicycles are roughly 1.5 - 2 times as
likely to appear in city streets, suburban homes, and parking lots, as
they are in the current experimental branch.

Adjustments made in this commit include:

In "city_vehicles" (i.e. in streets everywhere):

- "bicycle" weight is 800 (originally 400), making them
  rarer than "car", "car_hatch", "ambulance", or "hippie_van",
  but more likely than "beetle", "car_mini", "bus", "rv", or "4x4_car".
  Same chance of spawning as a "pickup" or "suv".

- "bicycle_dirt" weight is 200 (originally 0, impossible), making them
  as likely as "suv_electric", "motorcycle", "truck_swat", or "fire_engine"

- "bicycle_electric" weight is back to 100 (originally 100)

In "suburban_home":

- "bicycle" weight is now 200 (originally 150),
  same chance as "4x4_car" or "motorcycle"

- "bicycle_dirt" weight is now 150 (originally 125),
  same chance as "car_anmlcmpt"

And in "parkinglot":

- "bicycle" weight left at 1000 (originally 500)

- "bicycle_dirt" removed again (back how it was before)

Partially fixes CleverRaven#37451

* Add a bike shed to house08 and house_patio

To get a few more pedal-powered bicycles and parts into the world in a
less conspicuous way than simply spamming them onto the city streets

Fixes CleverRaven#37451

As suggested by @I-am-Erk, this adds a 6x6 nestable mapgen module
containing a simple metal bike shed. It's modeled after the 6x6_junk
shed, with flimsier metal walls, but still having locked (pickable)
metal doors, so it's not a total smash-and-grab.

Inside the shed is a 50% chance of finding a "bikeshop" vehicle, most
often a "bicycle", "bicycle_dirt", or "bicycle_electric", but with some
chance of "tandem", "scooter", "unicycle" etc.

It's furnished with a workbench and metal shelf, across which there is a
low (10%) chance of seeing 1-3 "bikeshop_tools", usually a bike part
(wheel, horn, foot crank, saddle) but sometimes such goodies as a wrench,
screwdriver set, duct tape, or even (very low chance) a toolbox!

I found two houses where this shed seems to fit well with the layout
("house08" and "house_patio"), and included the new bike shed with the
same probability as "shed_6x6_woodworker".

* Have correctly linted JSON

My JSON failed linting, now it should work

* Remove the trailing newline

To see if that is enough lint removal

* Adjust MRE contents to better reflect real MREs (CleverRaven#37484)

* Fixed offset for bionics slots UI

* Replace axe-kick with spinning back kick and add roundhouse kicks/feints to TKD (CleverRaven#37362)

* Remove all references to basement_bionic from region settings

* CleverRaven#37537 make lit candle a firestarter

* Add status popups to save file loading and options menu (CleverRaven#37542)

* Display wait popup when saving and applying options

* Show wait popup after data files are loaded and before the save is loaded

* Remove unused member of loading_ui

* Do not move cursor to start

Co-authored-by: ZhilkinSerg <[email protected]>
Co-authored-by: I-am-Erk <[email protected]>
Co-authored-by: Angela Graves <[email protected]>
Co-authored-by: RarkGrames <[email protected]>
Co-authored-by: Eric <[email protected]>
Co-authored-by: Trioct <[email protected]>
Co-authored-by: Sergey Alirzaev <[email protected]>
Co-authored-by: Matthew Taylor <[email protected]>
Co-authored-by: saurocyte <[email protected]>
Co-authored-by: Anton Burmistrov <[email protected]>
Co-authored-by: Maleclypse <[email protected]>
Co-authored-by: Jianxiang Wang (王健翔) <[email protected]>
Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: snipercup <[email protected]>
Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: Inglonias <[email protected]>
Co-authored-by: eso <[email protected]>
Co-authored-by: davidpwbrown <[email protected]>
Co-authored-by: curstwist <[email protected]>
Co-authored-by: arijust <[email protected]>
Co-authored-by: jkraybill <[email protected]>
Co-authored-by: Jerimee Richir <[email protected]>
Co-authored-by: Dziugaske <[email protected]>
Co-authored-by: John Candlebury <[email protected]>
Co-authored-by: Tonkatsu <[email protected]>
Co-authored-by: Reiner Herrmann <[email protected]>
Co-authored-by: sayke <[email protected]>
Co-authored-by: Cyrano7 <[email protected]>
Co-authored-by: Eric Pierce <[email protected]>
Co-authored-by: foulman <[email protected]>
Co-authored-by: LaVeyanFiend <[email protected]>
Co-authored-by: Brian-Otten <[email protected]>
Co-authored-by: John Bytheway <[email protected]>
Co-authored-by: Binrui Dong <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
Co-authored-by: SeventhSandwich <[email protected]>
Co-authored-by: Lil Shining Man <[email protected]>
Co-authored-by: gwyter <[email protected]>
Co-authored-by: Kilvoctu <[email protected]>
Co-authored-by: CSHague <[email protected]>
Co-authored-by: CountAlex <[email protected]>
Co-authored-by: 8street <[email protected]>
Co-authored-by: ashGlaw <[email protected]>
Co-authored-by: ColdandDead <[email protected]>
Co-authored-by: Hirmuolio <[email protected]>
Co-authored-by: gavin1337 <[email protected]>
Co-authored-by: Jason Jones <[email protected]>
Co-authored-by: RobertoVGoulart <[email protected]>
Co-authored-by: Alexey Mostovoy <[email protected]>
Co-authored-by: Hymore246 <[email protected]>
Co-authored-by: Damien Wilson <[email protected]>
Co-authored-by: Kelenius <[email protected]>
Co-authored-by: codemime <[email protected]>
anothersimulacrum added a commit to anothersimulacrum/Cataclysm-DDA that referenced this pull request Feb 13, 2021
These weren't migrated, and some hacks existed to ease this in generic
guns.
Remove those hacks, and migrate ammo spawns in vehicle turrets.

See
CleverRaven#36839 (comment)
for more details on why these hacks existed.
Ramza13 pushed a commit to Ramza13/Cataclysm-DDA that referenced this pull request Apr 12, 2021
These weren't migrated, and some hacks existed to ease this in generic
guns.
Remove those hacks, and migrate ammo spawns in vehicle turrets.

See
CleverRaven#36839 (comment)
for more details on why these hacks existed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Accessibility Issues regarding accessibility Items: Ammo / Guns Ammunition for all kinds of weapons and these weapons themselves Items: Gunmod / Toolmod Weapon and tool attachments, and add-ons Items: Magazines Ammo holding items and objects. [JSON] Changes (can be) made in JSON Mods Issues related to mods or modding Ranged Ranged (firearms, bows, crossbows, throwing), balance, tactics
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update Generic Guns mod to be synchronized with current core content
5 participants