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

Improve performance and correctness of cached/static string ids #44261

Merged

Conversation

Aivean
Copy link
Contributor

@Aivean Aivean commented Sep 19, 2020

Summary

SUMMARY: Infrastructure "Improve performance and correctness of cached/static string ids"

Purpose of change

This is related to the following list of issues:

  • with Replace global field_type_ids with inline defs #43311 we traded performance for correctness. Now we have lots of inline string_ids, whose conversion to int_id is slow (equals to string hash map lookup)
  • even for cached/static string_id, it's resolution to int_id (or ::obj lookup) equals string equality check, which is relatively slow
  • for cached/static string_id, if it's invalid (i.e. from non-loaded mod), all lookups always result in string hash map lookup
  • we cannot have static string_ids for non-core ids, as they might cache invalid int_id values between game reloads

Describe the solution

As suggested by @kevingranade and @jbytheway on discord, I've implemented versioning/generations for generic_factory.
Now all string_ids store the "version" of the generation factory at the moment their int_id cache was created.

When game reloads, "version" of generation factory is increased and all caches in string_ids are automatically invalidated.

This allows to have static string_ids for non-core functionality (their is_valid check and id conversion will behave correctly between game reloads).

In addition, string_id to int_id conversion became faster, as now validness check is made by int version comparison instead of string comparison.

Describe alternatives you've considered

I don't think there are any alternatives that don't require rewriting the whole generic_factory.

Testing

I added unit tests for generic_factory.

I also manually checked the scenario when static string_id from the mod ("fd_clairvoyant") is used between game reloads. Using debugger I ensured that its cache is correctly reset.

Additional context

Here is performance comparison between old and new string_id implementation.
Context: I've tried replacing this check with different patterns of string_id usage. Then I profiled 40 IRL seconds (apparent_light_at is called for each tile on every frame). Magiclysm is on.

  1. The slowest: creation of new string_id before the check:
  const field_type_str_id fd_clairvoyant( "fd_clairvoyant" );
  if( fd_clairvoyant.is_valid() && field_at( p ).find_field( fd_clairvoyant ) ) {
      return lit_level::BRIGHT;
  }

image

  1. Faster: old implementation of string_ids, using static const (note: such usage was not correct before, as it might fail on game reload):
  static const field_type_str_id fd_clairvoyant( "fd_clairvoyant" );
  if( fd_clairvoyant.is_valid() && field_at( p ).find_field( fd_clairvoyant ) ) {
      return lit_level::BRIGHT;
  }

image

  1. Fastest: new implementation, static const:
  static const field_type_str_id fd_clairvoyant( "fd_clairvoyant" );
  if( fd_clairvoyant.is_valid() && field_at( p ).find_field( fd_clairvoyant ) ) {
      return lit_level::BRIGHT;
  }

image

(note: I did change this particular place in this PR, it was just for demo purposes to showcase performance difference).

Also, note how the performance in first and second case is very similar, despite the intuition that static string_id should "cache everything". I think this is because in second case even "cached" string_id had to verify own validness by string comparison. And string comparison roughly equals string hashing for hashmap lookup.

In the third case there is no string traversal, it's just int comparison.

make string_id behavior correct regardless of whether it's core or mod
add generic_factory test
Copy link
Contributor

@jbytheway jbytheway left a comment

Choose a reason for hiding this comment

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

Cool! Thanks for running with this idea.

// (lookups for not-yet-inserted elements)
// in the common scenario there is no loss of performance, as `finalize` will make cache
// for all ids valid again
version++;
Copy link
Contributor

Choose a reason for hiding this comment

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

By incrementing here we're potentially incrementing version much more often than I was envisioning when I suggested this approach, so I'm a little concerned that we might actually hit integer overflow here. I guess it would take maybe a million itypes and a thousand reloads to get in the ballpark, so it's still pretty unlikely, but it no longer seems completely impossible...

But I'm probably just worrying about nothing.

Copy link
Member

Choose a reason for hiding this comment

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

We can wrap, but the probability of a collision is negligible, the only thing I'm slightly worried about is wrapping around and landing on the magic number -1. We can avoid that with

do {
    version++;
} while( version == -1 );

Copy link
Member

Choose a reason for hiding this comment

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

Or just make version 64 bit, we don't have any tables of string_id or int_id such that we're concerned about their size.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm of two minds regarding the possibility of the int overflow. Is it possible in theory? Sure. Will it happen in practice? Almost certainly not.

I'll implement Kevin's idea of skipping -1 and optionally make it 64 bit if profiling doesn't show any noticeable slowdown.

Comment on lines -179 to -181
void set_cid( const int_id<T> &cid ) const {
_cid = cid.to_i();
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe we should keep set_cid as a private function that takes two arguments (id and version)? The two values are always set together.

*
* `int_id` is fastest, but it can't be reused after game reload. Depending on the loaded
* combination of mods `int_id` might point to a different entity and there is no way to tell.
* Because of this NEVER define static int ids.
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we do currently have some static int_ids (with special handling so that they get reset on game load). Now we can probably get rid of those, which is cool, and create a clang-tidy check to ensure no static int_ids are created. (not in this PR, though).

@kevingranade
Copy link
Member

I want to see your response to jbtw's comments, I think this is good to go either way but I don't want to merge before you've had a chance to address them if you like.

@Aivean
Copy link
Contributor Author

Aivean commented Sep 20, 2020

I want to see your response to jbtw's comments, I think this is good to go either way but I don't want to merge before you've had a chance to address them if you like.

I'll change the version increment as suggested and maybe also it's type. I also wanted to further explore the possibility to optimize string_id equality logic using version (provide a fast path when versions are the same).

However, I'll be busy next couple of days, so I'm not sure how long it will take to implement these changes. So feel free to merge if you like, I can make a follow up PR.

@kevingranade kevingranade merged commit 3d2aabd into CleverRaven:master Sep 20, 2020
@anothersimulacrum anothersimulacrum added [C++] Changes (can be) made in C++. Previously named `Code` Code: Performance Performance boosting code (CPU, memory, etc.) labels Sep 21, 2020
Aivean added a commit to Aivean/Cataclysm-DDA that referenced this pull request Sep 24, 2020
improve string_id comparison performance when `_version`s match
add catch2 benchmarks and unit tests for string_id
Aivean added a commit to Aivean/Cataclysm-DDA that referenced this pull request Sep 24, 2020
improve string_id comparison performance when `_version`s match
add catch2 benchmarks and unit tests for string_id
ZhilkinSerg pushed a commit that referenced this pull request Sep 25, 2020
* implement suggested changes from #44261
improve string_id comparison performance when `_version`s match
add catch2 benchmarks and unit tests for string_id

* apply suggestions from review
enable `CATCH_CONFIG_ENABLE_BENCHMARKING` permanently
disable benchmark tests on one-by-one basis by default

* Enable benchmarking in VS project
Aivean added a commit to Aivean/Cataclysm-DDA that referenced this pull request Sep 29, 2020
Aivean added a commit to Aivean/Cataclysm-DDA that referenced this pull request Sep 29, 2020
@Aivean Aivean deleted the generic-factory-improvements branch September 30, 2020 16:12
anothersimulacrum added a commit to anothersimulacrum/Cataclysm-DDA that referenced this pull request Mar 7, 2021
When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since CleverRaven#44261 - see CleverRaven#44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 14, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 14, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 16, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 16, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 18, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 18, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 21, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 21, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
John-Candlebury pushed a commit to John-Candlebury/Cataclysm-DDA that referenced this pull request Mar 24, 2021
…ds (CleverRaven#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since CleverRaven#44261 - see CleverRaven#44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 25, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 25, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 25, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 26, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 31, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 31, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Mar 31, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
BrettDong pushed a commit that referenced this pull request Apr 5, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Apr 7, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Apr 9, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Apr 20, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Apr 20, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Apr 20, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request May 28, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request May 28, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request May 31, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Jun 14, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Jun 14, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Jun 14, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Jun 21, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
ZhilkinSerg pushed a commit that referenced this pull request Jul 3, 2021
…ds (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
anothersimulacrum added a commit to anothersimulacrum/Cataclysm-DDA that referenced this pull request Jul 3, 2021
…ds (CleverRaven#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since CleverRaven#44261 - see CleverRaven#44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
KorGgenT pushed a commit to KorGgenT/Cataclysm-DDA that referenced this pull request Jul 4, 2021
…ds (CleverRaven#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since CleverRaven#44261 - see CleverRaven#44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.
I-am-Erk pushed a commit that referenced this pull request Jul 11, 2021
* Extend/Delete in requirements

* Revert "Extend/Delete in requirements"

This reverts commit 9da0eae.

* Valentine Cards (#47438)

* Add a proficiency for handloading, and a new profession (#47244)

* Drug Dealer Profession (#47255)

* Adds hallula, a type of bread popular in Bolivia and Chile

* Arm mounted pouch (#46946)

* Tazer drone iii (#47353)

* Added Gelatin and Several Gelatin Based Recipes (#47080)

* Content: bread in a can (#45680)

* New random mission (#44999)

* Mycus fruit Juice (#44952)

* Milleable corn (#46254)

* Talk Tag Additions (#47010)

* Fix typo in Valentines Card (#47583)

* (CrazyCataclysm) Crazy Hallucinations (#47386)

* Mealgurb (#47685)

* Add duct tape blindfold for old reciepe plus tweaks for reciepe (#47527)

* Prepare npc, spell, character, and item for new ai (#47207)

* Make acetylene torch cut metal walls. (#46255)

* Added disassembly recipes for several items (#46316)

* Celsius temperature for freezing point (#47028)

* Stand up peek (#47257)

* [AFTERSHOCK] Basic Ballistic Weapons (#47559)

* makes glass walls and glass doors constructable (#47692)

* Crackers as bread and jam&cheese sandwich (#47649)

* [Aftershock] misc typograpical fixes (#47783)

* Tweaks for teas (#47848)

* Have travis run for 0.F-dev

Currently, .travis.yml has a 'development' branch specified as one to run tests for; the current equivalent is the 0.F-dev branch.

* Tweakes to copper and metal pipes. (#47825)

* Fried eggs deluxe, sandwiches, and condiment list (#47786)

* Homemade toastems, buttercream frosting and recipes (#47696)

* Chocolate Cow don't drop "cow pies"

* Remove unused FATIGUE energy source from spells

* [Magiclysm] add owlbear origin snippet (#47752)

* [Magiclysm] add lesser banishment spell, buff greater banishment (#47537)

* Unhardcode bio_heatsink and bio_climate

* Hunting lodge Location (#44378)

* fungal evolution (#47247)

* Add book strap carrier (#47665)

* Partial mine jsonify; new zombie miner (#47790)

* Moved mine_entrance OMT from the list of hardcoded locations to industial locations

Also removed mine_shaft OMT and replaced it with mine_shaft_middle and mine_shaft_lower OMTs.
Also added mine_entrance_roof OMT.

* Added mine_entrance and mine_shaft to the list of obsoleted terrains

* Added a zombie miner and its death drops

* Created a json-version of mine entrance and its roof

* Created a json-version of mine shaft (middle and lower variants)

* Changed overmap special definition of a mine to include new json chunks

* Applied migration of hardcoded mine_entrance and mine_shaft OMTs to new json variants

* Made hardcoded mine chunks generate to the west of lower section of new mine shaft OMT

Also removed mine_entrance and mine_shaft from the list of hardocoded mapgen.

* Completely removed build_mine_room function as all mine rooms are now defined in json

Also removed hardcoded generation of mine entrance and mine shaft.

* Removed mentions of mine rooms from mapgen.h

* Updated alt_map_key mod

* Updated graphical overmap mod

* Added missing harvest

* Appease clang and constify

* Quickfix

* Appease clang one more time

* Add 0.F-dev to matrix.yml

(Getting 0.F-dev working with Travis appears to require additional settings by someone with permissions.) This change enables both pushes and pull requests of 0.F-dev to get checked by the General Matrix. As it is, if one bases a PR off of 0.F-dev, it doesn't get checked by Github.

* 0.F-dev workflows (#47875)

* Alter brown bread recipe to match canned version

Fixes #47874.

* Mine entrance expand (#47928)

* Added mine_materials item group

* Added Trolley vehicle

* Expanded and tweaked above-ground and underground levels of mine entrance

* [DinoMod] Mushroom Madness (#47907)

* misc typograpical fixes

* body pillow recipe makes makeshift body pillow now (#47917)

* Traffic Bollards and an example of deployment (#48017)

* add description for Uyen's missions

* JSONize some trap features, replace trap int_id externs with string_ids (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.

* Clean up character mutation gain a bit

Reduce duplicated code.
I presume there's a reason that set_mutations didn't just call
set_mutation, and the only difference is that it doesn't do the cache
updates till the end, so preserve that behaviour.

* Allow CBMs to specify mutations that prevent installation. (#47822)

* Move CBM installation checks to Character

Reduce code duplication, encapsulate things better, and make this
available outside of the inventory menus.

* Allow mutations to prevent installing CBMs

Bionics can currently cancel mutations when installed, but can't have
mutations prevent installation.

* Spiral mine jsonify (#48003)

* prevent bell spam (#47987)

* Note that vat is required for fermentation in vinegar brewing

* Unhardcode ease of sleep

* whipped cream

remove aerosol whip cream

frosting requirement

Update slings.json

Update data/json/recipes/recipe_food.json

Update data/json/items/comestibles/dairy.json

Revert "remove aerosol whip cream"

This reverts commit b8570f6.

Update misc.json

Delete recipe_obsolete.json

Delete misc.json

Delete slings.json

Delete ammo_types.json

Delete enchantments.json

Revert "Delete recipe_obsolete.json"

This reverts commit 3119fdc.

Revert "Delete misc.json"

This reverts commit 71b811b.

Revert "Delete ammo_types.json"

This reverts commit 848c739.

Revert "Delete slings.json"

This reverts commit 7c91194.

fixes

Co-Authored-By: actual-nh <[email protected]>
Co-Authored-By: casswedson <[email protected]>

* Update data/json/items/comestibles/dairy.json

Co-authored-by: actual-nh <[email protected]>

* Update slings.json

* Update junkfood.json

Co-authored-by: LaVeyanFiend <[email protected]>
Co-authored-by: slimeboy460 <[email protected]>
Co-authored-by: ToxiClay <[email protected]>
Co-authored-by: Jamuro-g <[email protected]>
Co-authored-by: Xenomorph-III <[email protected]>
Co-authored-by: grawprog <[email protected]>
Co-authored-by: Xaleth <[email protected]>
Co-authored-by: El-Jekozo <[email protected]>
Co-authored-by: RobertoVGoulart <[email protected]>
Co-authored-by: Zukulini <[email protected]>
Co-authored-by: klorpa <[email protected]>
Co-authored-by: UmbralReaper <[email protected]>
Co-authored-by: SariusSkelrets <[email protected]>
Co-authored-by: Fosheze <[email protected]>
Co-authored-by: Lamandus <[email protected]>
Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: NeviNovat <[email protected]>
Co-authored-by: Karol1223 <[email protected]>
Co-authored-by: Hirmuolio <[email protected]>
Co-authored-by: Charlie Gardai <[email protected]>
Co-authored-by: Mom-Bun <[email protected]>
Co-authored-by: OromisElf <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: Ramza13 <[email protected]>
Co-authored-by: LyleSY <[email protected]>
Co-authored-by: FuelType-Memes <[email protected]>
Co-authored-by: Anton Burmistrov <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: akirashirosawa <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
Co-authored-by: Jeremy Rose <[email protected]>
kevingranade pushed a commit that referenced this pull request Sep 12, 2021
* Extend/Delete in requirements

* Revert "Extend/Delete in requirements"

This reverts commit 9da0eae.

* Valentine Cards (#47438)

* Add a proficiency for handloading, and a new profession (#47244)

* Drug Dealer Profession (#47255)

* Adds hallula, a type of bread popular in Bolivia and Chile

* Arm mounted pouch (#46946)

* Tazer drone iii (#47353)

* Added Gelatin and Several Gelatin Based Recipes (#47080)

* Content: bread in a can (#45680)

* New random mission (#44999)

* Mycus fruit Juice (#44952)

* Milleable corn (#46254)

* Talk Tag Additions (#47010)

* Fix typo in Valentines Card (#47583)

* (CrazyCataclysm) Crazy Hallucinations (#47386)

* Mealgurb (#47685)

* Add duct tape blindfold for old reciepe plus tweaks for reciepe (#47527)

* Prepare npc, spell, character, and item for new ai (#47207)

* Make acetylene torch cut metal walls. (#46255)

* Added disassembly recipes for several items (#46316)

* Celsius temperature for freezing point (#47028)

* Stand up peek (#47257)

* [AFTERSHOCK] Basic Ballistic Weapons (#47559)

* makes glass walls and glass doors constructable (#47692)

* Crackers as bread and jam&cheese sandwich (#47649)

* [Aftershock] misc typograpical fixes (#47783)

* Tweaks for teas (#47848)

* Have travis run for 0.F-dev

Currently, .travis.yml has a 'development' branch specified as one to run tests for; the current equivalent is the 0.F-dev branch.

* Tweakes to copper and metal pipes. (#47825)

* Fried eggs deluxe, sandwiches, and condiment list (#47786)

* Homemade toastems, buttercream frosting and recipes (#47696)

* Chocolate Cow don't drop "cow pies"

* Remove unused FATIGUE energy source from spells

* [Magiclysm] add owlbear origin snippet (#47752)

* [Magiclysm] add lesser banishment spell, buff greater banishment (#47537)

* Unhardcode bio_heatsink and bio_climate

* Hunting lodge Location (#44378)

* fungal evolution (#47247)

* Add book strap carrier (#47665)

* Partial mine jsonify; new zombie miner (#47790)

* Moved mine_entrance OMT from the list of hardcoded locations to industial locations

Also removed mine_shaft OMT and replaced it with mine_shaft_middle and mine_shaft_lower OMTs.
Also added mine_entrance_roof OMT.

* Added mine_entrance and mine_shaft to the list of obsoleted terrains

* Added a zombie miner and its death drops

* Created a json-version of mine entrance and its roof

* Created a json-version of mine shaft (middle and lower variants)

* Changed overmap special definition of a mine to include new json chunks

* Applied migration of hardcoded mine_entrance and mine_shaft OMTs to new json variants

* Made hardcoded mine chunks generate to the west of lower section of new mine shaft OMT

Also removed mine_entrance and mine_shaft from the list of hardocoded mapgen.

* Completely removed build_mine_room function as all mine rooms are now defined in json

Also removed hardcoded generation of mine entrance and mine shaft.

* Removed mentions of mine rooms from mapgen.h

* Updated alt_map_key mod

* Updated graphical overmap mod

* Added missing harvest

* Appease clang and constify

* Quickfix

* Appease clang one more time

* Add 0.F-dev to matrix.yml

(Getting 0.F-dev working with Travis appears to require additional settings by someone with permissions.) This change enables both pushes and pull requests of 0.F-dev to get checked by the General Matrix. As it is, if one bases a PR off of 0.F-dev, it doesn't get checked by Github.

* 0.F-dev workflows (#47875)

* Alter brown bread recipe to match canned version

Fixes #47874.

* Mine entrance expand (#47928)

* Added mine_materials item group

* Added Trolley vehicle

* Expanded and tweaked above-ground and underground levels of mine entrance

* [DinoMod] Mushroom Madness (#47907)

* misc typograpical fixes

* body pillow recipe makes makeshift body pillow now (#47917)

* Traffic Bollards and an example of deployment (#48017)

* add description for Uyen's missions

* JSONize some trap features, replace trap int_id externs with string_ids (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.

* Clean up character mutation gain a bit

Reduce duplicated code.
I presume there's a reason that set_mutations didn't just call
set_mutation, and the only difference is that it doesn't do the cache
updates till the end, so preserve that behaviour.

* Allow CBMs to specify mutations that prevent installation. (#47822)

* Move CBM installation checks to Character

Reduce code duplication, encapsulate things better, and make this
available outside of the inventory menus.

* Allow mutations to prevent installing CBMs

Bionics can currently cancel mutations when installed, but can't have
mutations prevent installation.

* Spiral mine jsonify (#48003)

* prevent bell spam (#47987)

* Note that vat is required for fermentation in vinegar brewing

* Unhardcode ease of sleep

* calorie test

* Revert "calorie test"

This reverts commit e535575.

* Arcology Start

Adding windows and entrances

organization

more mapgen

organization and more overmaps

Update arcology_ground.json

Update arcology_ground.json

Last of the gates

Update arcology_gate_chunks.json

city special and terrain

chunks

Update arcology_ground.json

Update arcology_chunks.json

Update data/mods/Aftershock/itemgroups/arcology_groups.json

Update recipe_obsolete.json

chunkening

testing

fixes

Update arcology_ground.json

Update arcology_ground.json

fixes

neverending fixes

the lintening

Update arcology_gate_chunks.json

Update arcology_gate_chunks.json

Update arcology_gate_chunks.json

Can force spawn now but it is blank

Update arcology_chunks.json

15 tons and whadya get

reverses north and south

Ready for testing

Gates open

Open and Close gates using console

broken metal flooring

* Open and Close

* Lint

* Apply suggestions from code review

Co-authored-by: John Candlebury <[email protected]>

Co-authored-by: LaVeyanFiend <[email protected]>
Co-authored-by: slimeboy460 <[email protected]>
Co-authored-by: ToxiClay <[email protected]>
Co-authored-by: Jamuro-g <[email protected]>
Co-authored-by: Xenomorph-III <[email protected]>
Co-authored-by: grawprog <[email protected]>
Co-authored-by: Xaleth <[email protected]>
Co-authored-by: El-Jekozo <[email protected]>
Co-authored-by: RobertoVGoulart <[email protected]>
Co-authored-by: Zukulini <[email protected]>
Co-authored-by: klorpa <[email protected]>
Co-authored-by: UmbralReaper <[email protected]>
Co-authored-by: SariusSkelrets <[email protected]>
Co-authored-by: Fosheze <[email protected]>
Co-authored-by: Lamandus <[email protected]>
Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: NeviNovat <[email protected]>
Co-authored-by: Karol1223 <[email protected]>
Co-authored-by: Hirmuolio <[email protected]>
Co-authored-by: Charlie Gardai <[email protected]>
Co-authored-by: Mom-Bun <[email protected]>
Co-authored-by: OromisElf <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: Ramza13 <[email protected]>
Co-authored-by: LyleSY <[email protected]>
Co-authored-by: FuelType-Memes <[email protected]>
Co-authored-by: Anton Burmistrov <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: akirashirosawa <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
Co-authored-by: Jeremy Rose <[email protected]>
Co-authored-by: John Candlebury <[email protected]>
Venera3 pushed a commit to Venera3/Cataclysm-DDA that referenced this pull request Sep 21, 2021
* Extend/Delete in requirements

* Revert "Extend/Delete in requirements"

This reverts commit 9da0eae.

* Valentine Cards (CleverRaven#47438)

* Add a proficiency for handloading, and a new profession (CleverRaven#47244)

* Drug Dealer Profession (CleverRaven#47255)

* Adds hallula, a type of bread popular in Bolivia and Chile

* Arm mounted pouch (CleverRaven#46946)

* Tazer drone iii (CleverRaven#47353)

* Added Gelatin and Several Gelatin Based Recipes (CleverRaven#47080)

* Content: bread in a can (CleverRaven#45680)

* New random mission (CleverRaven#44999)

* Mycus fruit Juice (CleverRaven#44952)

* Milleable corn (CleverRaven#46254)

* Talk Tag Additions (CleverRaven#47010)

* Fix typo in Valentines Card (CleverRaven#47583)

* (CrazyCataclysm) Crazy Hallucinations (CleverRaven#47386)

* Mealgurb (CleverRaven#47685)

* Add duct tape blindfold for old reciepe plus tweaks for reciepe (CleverRaven#47527)

* Prepare npc, spell, character, and item for new ai (CleverRaven#47207)

* Make acetylene torch cut metal walls. (CleverRaven#46255)

* Added disassembly recipes for several items (CleverRaven#46316)

* Celsius temperature for freezing point (CleverRaven#47028)

* Stand up peek (CleverRaven#47257)

* [AFTERSHOCK] Basic Ballistic Weapons (CleverRaven#47559)

* makes glass walls and glass doors constructable (CleverRaven#47692)

* Crackers as bread and jam&cheese sandwich (CleverRaven#47649)

* [Aftershock] misc typograpical fixes (CleverRaven#47783)

* Tweaks for teas (CleverRaven#47848)

* Have travis run for 0.F-dev

Currently, .travis.yml has a 'development' branch specified as one to run tests for; the current equivalent is the 0.F-dev branch.

* Tweakes to copper and metal pipes. (CleverRaven#47825)

* Fried eggs deluxe, sandwiches, and condiment list (CleverRaven#47786)

* Homemade toastems, buttercream frosting and recipes (CleverRaven#47696)

* Chocolate Cow don't drop "cow pies"

* Remove unused FATIGUE energy source from spells

* [Magiclysm] add owlbear origin snippet (CleverRaven#47752)

* [Magiclysm] add lesser banishment spell, buff greater banishment (CleverRaven#47537)

* Unhardcode bio_heatsink and bio_climate

* Hunting lodge Location (CleverRaven#44378)

* fungal evolution (CleverRaven#47247)

* Add book strap carrier (CleverRaven#47665)

* Partial mine jsonify; new zombie miner (CleverRaven#47790)

* Moved mine_entrance OMT from the list of hardcoded locations to industial locations

Also removed mine_shaft OMT and replaced it with mine_shaft_middle and mine_shaft_lower OMTs.
Also added mine_entrance_roof OMT.

* Added mine_entrance and mine_shaft to the list of obsoleted terrains

* Added a zombie miner and its death drops

* Created a json-version of mine entrance and its roof

* Created a json-version of mine shaft (middle and lower variants)

* Changed overmap special definition of a mine to include new json chunks

* Applied migration of hardcoded mine_entrance and mine_shaft OMTs to new json variants

* Made hardcoded mine chunks generate to the west of lower section of new mine shaft OMT

Also removed mine_entrance and mine_shaft from the list of hardocoded mapgen.

* Completely removed build_mine_room function as all mine rooms are now defined in json

Also removed hardcoded generation of mine entrance and mine shaft.

* Removed mentions of mine rooms from mapgen.h

* Updated alt_map_key mod

* Updated graphical overmap mod

* Added missing harvest

* Appease clang and constify

* Quickfix

* Appease clang one more time

* Add 0.F-dev to matrix.yml

(Getting 0.F-dev working with Travis appears to require additional settings by someone with permissions.) This change enables both pushes and pull requests of 0.F-dev to get checked by the General Matrix. As it is, if one bases a PR off of 0.F-dev, it doesn't get checked by Github.

* 0.F-dev workflows (CleverRaven#47875)

* Alter brown bread recipe to match canned version

Fixes CleverRaven#47874.

* Mine entrance expand (CleverRaven#47928)

* Added mine_materials item group

* Added Trolley vehicle

* Expanded and tweaked above-ground and underground levels of mine entrance

* [DinoMod] Mushroom Madness (CleverRaven#47907)

* misc typograpical fixes

* body pillow recipe makes makeshift body pillow now (CleverRaven#47917)

* Traffic Bollards and an example of deployment (CleverRaven#48017)

* add description for Uyen's missions

* JSONize some trap features, replace trap int_id externs with string_ids (CleverRaven#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since CleverRaven#44261 - see CleverRaven#44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.

* Clean up character mutation gain a bit

Reduce duplicated code.
I presume there's a reason that set_mutations didn't just call
set_mutation, and the only difference is that it doesn't do the cache
updates till the end, so preserve that behaviour.

* Allow CBMs to specify mutations that prevent installation. (CleverRaven#47822)

* Move CBM installation checks to Character

Reduce code duplication, encapsulate things better, and make this
available outside of the inventory menus.

* Allow mutations to prevent installing CBMs

Bionics can currently cancel mutations when installed, but can't have
mutations prevent installation.

* Spiral mine jsonify (CleverRaven#48003)

* prevent bell spam (CleverRaven#47987)

* Note that vat is required for fermentation in vinegar brewing

* Unhardcode ease of sleep

* calorie test

* Revert "calorie test"

This reverts commit e535575.

* Arcology Start

Adding windows and entrances

organization

more mapgen

organization and more overmaps

Update arcology_ground.json

Update arcology_ground.json

Last of the gates

Update arcology_gate_chunks.json

city special and terrain

chunks

Update arcology_ground.json

Update arcology_chunks.json

Update data/mods/Aftershock/itemgroups/arcology_groups.json

Update recipe_obsolete.json

chunkening

testing

fixes

Update arcology_ground.json

Update arcology_ground.json

fixes

neverending fixes

the lintening

Update arcology_gate_chunks.json

Update arcology_gate_chunks.json

Update arcology_gate_chunks.json

Can force spawn now but it is blank

Update arcology_chunks.json

15 tons and whadya get

reverses north and south

Ready for testing

Gates open

Open and Close gates using console

broken metal flooring

* Open and Close

* Lint

* Apply suggestions from code review

Co-authored-by: John Candlebury <[email protected]>

Co-authored-by: LaVeyanFiend <[email protected]>
Co-authored-by: slimeboy460 <[email protected]>
Co-authored-by: ToxiClay <[email protected]>
Co-authored-by: Jamuro-g <[email protected]>
Co-authored-by: Xenomorph-III <[email protected]>
Co-authored-by: grawprog <[email protected]>
Co-authored-by: Xaleth <[email protected]>
Co-authored-by: El-Jekozo <[email protected]>
Co-authored-by: RobertoVGoulart <[email protected]>
Co-authored-by: Zukulini <[email protected]>
Co-authored-by: klorpa <[email protected]>
Co-authored-by: UmbralReaper <[email protected]>
Co-authored-by: SariusSkelrets <[email protected]>
Co-authored-by: Fosheze <[email protected]>
Co-authored-by: Lamandus <[email protected]>
Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: NeviNovat <[email protected]>
Co-authored-by: Karol1223 <[email protected]>
Co-authored-by: Hirmuolio <[email protected]>
Co-authored-by: Charlie Gardai <[email protected]>
Co-authored-by: Mom-Bun <[email protected]>
Co-authored-by: OromisElf <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: Ramza13 <[email protected]>
Co-authored-by: LyleSY <[email protected]>
Co-authored-by: FuelType-Memes <[email protected]>
Co-authored-by: Anton Burmistrov <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: akirashirosawa <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
Co-authored-by: Jeremy Rose <[email protected]>
Co-authored-by: John Candlebury <[email protected]>
I-am-Erk pushed a commit that referenced this pull request Sep 27, 2021
* Extend/Delete in requirements

* Revert "Extend/Delete in requirements"

This reverts commit 9da0eae.

* Valentine Cards (#47438)

* Add a proficiency for handloading, and a new profession (#47244)

* Drug Dealer Profession (#47255)

* Adds hallula, a type of bread popular in Bolivia and Chile

* Arm mounted pouch (#46946)

* Tazer drone iii (#47353)

* Added Gelatin and Several Gelatin Based Recipes (#47080)

* Content: bread in a can (#45680)

* New random mission (#44999)

* Mycus fruit Juice (#44952)

* Milleable corn (#46254)

* Talk Tag Additions (#47010)

* Fix typo in Valentines Card (#47583)

* (CrazyCataclysm) Crazy Hallucinations (#47386)

* Mealgurb (#47685)

* Add duct tape blindfold for old reciepe plus tweaks for reciepe (#47527)

* Prepare npc, spell, character, and item for new ai (#47207)

* Make acetylene torch cut metal walls. (#46255)

* Added disassembly recipes for several items (#46316)

* Celsius temperature for freezing point (#47028)

* Stand up peek (#47257)

* [AFTERSHOCK] Basic Ballistic Weapons (#47559)

* makes glass walls and glass doors constructable (#47692)

* Crackers as bread and jam&cheese sandwich (#47649)

* [Aftershock] misc typograpical fixes (#47783)

* Tweaks for teas (#47848)

* Have travis run for 0.F-dev

Currently, .travis.yml has a 'development' branch specified as one to run tests for; the current equivalent is the 0.F-dev branch.

* Tweakes to copper and metal pipes. (#47825)

* Fried eggs deluxe, sandwiches, and condiment list (#47786)

* Homemade toastems, buttercream frosting and recipes (#47696)

* Chocolate Cow don't drop "cow pies"

* Remove unused FATIGUE energy source from spells

* [Magiclysm] add owlbear origin snippet (#47752)

* [Magiclysm] add lesser banishment spell, buff greater banishment (#47537)

* Unhardcode bio_heatsink and bio_climate

* Hunting lodge Location (#44378)

* fungal evolution (#47247)

* Add book strap carrier (#47665)

* Partial mine jsonify; new zombie miner (#47790)

* Moved mine_entrance OMT from the list of hardcoded locations to industial locations

Also removed mine_shaft OMT and replaced it with mine_shaft_middle and mine_shaft_lower OMTs.
Also added mine_entrance_roof OMT.

* Added mine_entrance and mine_shaft to the list of obsoleted terrains

* Added a zombie miner and its death drops

* Created a json-version of mine entrance and its roof

* Created a json-version of mine shaft (middle and lower variants)

* Changed overmap special definition of a mine to include new json chunks

* Applied migration of hardcoded mine_entrance and mine_shaft OMTs to new json variants

* Made hardcoded mine chunks generate to the west of lower section of new mine shaft OMT

Also removed mine_entrance and mine_shaft from the list of hardocoded mapgen.

* Completely removed build_mine_room function as all mine rooms are now defined in json

Also removed hardcoded generation of mine entrance and mine shaft.

* Removed mentions of mine rooms from mapgen.h

* Updated alt_map_key mod

* Updated graphical overmap mod

* Added missing harvest

* Appease clang and constify

* Quickfix

* Appease clang one more time

* Add 0.F-dev to matrix.yml

(Getting 0.F-dev working with Travis appears to require additional settings by someone with permissions.) This change enables both pushes and pull requests of 0.F-dev to get checked by the General Matrix. As it is, if one bases a PR off of 0.F-dev, it doesn't get checked by Github.

* 0.F-dev workflows (#47875)

* Alter brown bread recipe to match canned version

Fixes #47874.

* Mine entrance expand (#47928)

* Added mine_materials item group

* Added Trolley vehicle

* Expanded and tweaked above-ground and underground levels of mine entrance

* [DinoMod] Mushroom Madness (#47907)

* misc typograpical fixes

* body pillow recipe makes makeshift body pillow now (#47917)

* Traffic Bollards and an example of deployment (#48017)

* add description for Uyen's missions

* JSONize some trap features, replace trap int_id externs with string_ids (#47933)

* JSONize trap sonar detectibility

Add trap flags - just the same as normal flags, but for traps! Stick
them in their own separate file to avoid confusion.

* JSONize trap memorial messages

light_snare and heavy_snare seem to no longer exist, or I couldn't find
any reference to them but this and tilesets.

Updated dissector trap message, and added a trap message to some traps
(the hallway ones, one or two of the similar-but-not-the-same variants
of existing traps).

* JSONize trap temperature convection

Not quite sure how to describe it, went the lazy route.

* Move traps externs from int to string ids

When loading the game without this content, these will now only give an
error on the use of these, instead of at the end data loading for traps.

Previously there were performance concerns with this, but this should be
fine since #44261 - see #44500.

tr_null must remain an int id, as it used in the string to int id
conversion. This is fine, as it will always be loaded (it's in
data/core).

Move the ledge trap over to data/core as well, because everything will
need the 'open space' trap.

* Clean up character mutation gain a bit

Reduce duplicated code.
I presume there's a reason that set_mutations didn't just call
set_mutation, and the only difference is that it doesn't do the cache
updates till the end, so preserve that behaviour.

* Allow CBMs to specify mutations that prevent installation. (#47822)

* Move CBM installation checks to Character

Reduce code duplication, encapsulate things better, and make this
available outside of the inventory menus.

* Allow mutations to prevent installing CBMs

Bionics can currently cancel mutations when installed, but can't have
mutations prevent installation.

* Spiral mine jsonify (#48003)

* prevent bell spam (#47987)

* Note that vat is required for fermentation in vinegar brewing

* Unhardcode ease of sleep

* calorie test

* Revert "calorie test"

This reverts commit e535575.

* Reuben Sandwiches

* Update recipe_food.json

Co-authored-by: LaVeyanFiend <[email protected]>
Co-authored-by: slimeboy460 <[email protected]>
Co-authored-by: ToxiClay <[email protected]>
Co-authored-by: Jamuro-g <[email protected]>
Co-authored-by: Xenomorph-III <[email protected]>
Co-authored-by: grawprog <[email protected]>
Co-authored-by: Xaleth <[email protected]>
Co-authored-by: El-Jekozo <[email protected]>
Co-authored-by: RobertoVGoulart <[email protected]>
Co-authored-by: Zukulini <[email protected]>
Co-authored-by: klorpa <[email protected]>
Co-authored-by: UmbralReaper <[email protected]>
Co-authored-by: SariusSkelrets <[email protected]>
Co-authored-by: Fosheze <[email protected]>
Co-authored-by: Lamandus <[email protected]>
Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: NeviNovat <[email protected]>
Co-authored-by: Karol1223 <[email protected]>
Co-authored-by: Hirmuolio <[email protected]>
Co-authored-by: Charlie Gardai <[email protected]>
Co-authored-by: Mom-Bun <[email protected]>
Co-authored-by: OromisElf <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: Ramza13 <[email protected]>
Co-authored-by: LyleSY <[email protected]>
Co-authored-by: FuelType-Memes <[email protected]>
Co-authored-by: Anton Burmistrov <[email protected]>
Co-authored-by: actual-nh <[email protected]>
Co-authored-by: casswedson <[email protected]>
Co-authored-by: akirashirosawa <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
Co-authored-by: Jeremy Rose <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C++] Changes (can be) made in C++. Previously named `Code` Code: Performance Performance boosting code (CPU, memory, etc.)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants