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

Added wind turbine appliances #58370

Merged
merged 7 commits into from
Aug 5, 2022

Conversation

PatrikLundell
Copy link
Contributor

@PatrikLundell PatrikLundell commented Jun 12, 2022

Summary

None

Purpose of change

Add wind turbines to the set of vehicle parts that can also be placed as appliances.
Fix #58353.
Fix #56780.
The PRs are duplicates.

Describe the solution

Added the necessary JSON entries.
It can be noted that the time to place them was increased to 30 minutes because these are fairly large things that need to be mounted, and mounted in a way that can withstand the forces placed upon them. Similarly, the removal time was set to 15 minutes, and the work was specified as medium rather than the standard light.

Describe alternatives you've considered

It could be argued that additional materials would be needed, as well as additional tools.
It could also be argued that the work load and times required should be the "standard" ones (or something else).

Originally water wheels were intended to be addressed as well, but testing showed that these require water to flow under them, and so would need some kind of framework on which to be mounted above water, and probably something on the shore as well to act as an anchor. This is not supported by the appliance framework, and the "old" vehicle implementation works well enough.

Testing

Hauled a large wind turbine up onto a roof and placed it next to a pre existing battery/solar panel appliance set. Verified that it claimed to produce power.
Spawned a (regular size) wind turbine and placed it next to the large wind turbine. Verified that it too produced power, and saw that the power was lower than that of the large wind turbine.

Additional context

@github-actions github-actions bot added [JSON] Changes (can be) made in JSON Appliance/Power Grid Anything to do with appliances and power grid Crafting / Construction / Recipes Includes: Uncrafting / Disassembling astyled astyled PR, label is assigned by github actions json-styled JSON lint passed, label assigned by github actions labels Jun 12, 2022
@PatrikLundell
Copy link
Contributor Author

The code failure on this JSON only PR is caused either by someone accepting a PR without verifying that the test doesn't fail, or by someone adding/modifying test criteria without fixing everything it would catch. Thus, it's unrelated to the PR.

@TheShadowFerret
Copy link
Contributor

You're not going to add the makeshift wind turbine from the original author?

@PatrikLundell
Copy link
Contributor Author

I don't consider adding something that was removed for reasons I'm uncertain of without any knowledge whether it would have been approved or whether it would make sense to introduce a makeshift variant to be out of scope of this PR. I used the link provided in a post to the feature request as a guide to find which places I needed to modify and nothing more.

@FayFlightee
Copy link
Contributor

Still wondering what's holding this one back from being added.

@PatrikLundell
Copy link
Contributor Author

No idea. Sometimes things just get overlooked for long enough to not be considered for looking at...

@anothersimulacrum
Copy link
Member

A required test is failing, which makes it drop out of the filters which mergers generally use.

@PatrikLundell
Copy link
Contributor Author

Well, at least one test is almost always failing, with something like a 3% or so chance of not getting failures from the existing master code, both because people are more interested in adding new tests than maintaining old ones, and because some test makers deliberately make broken tests that incorrectly fail occasionally using the justification that each particular test only fails on a small percentage of usages (and without bothering to investigate each case where those tests trigger a failure).

@NetSysFire
Copy link
Member

The general build matrix test fails on every PR currently

@anothersimulacrum
Copy link
Member

anothersimulacrum commented Jul 30, 2022

Your PR cannot be merged if required tests are failing. There are 4 of them, and the false negative rate is very low for them.

@PatrikLundell
Copy link
Contributor Author

Ah, I didn't know some of the mandatory failing tests were more mandatory than others...

@github-actions github-actions bot added the BasicBuildPassed This PR builds correctly, label assigned by github actions label Jul 30, 2022
@PatrikLundell
Copy link
Contributor Author

General build matrix / Clang 12, Ubuntu, Tiles, ASan (pull_request) fails with this unintelligible mess:

Run bash ./build-scripts/gha_test_only.sh
Using bash version 5.0.17(1)-release

  • num_jobs=3
  • '[' -z ']'
  • num_test_jobs=3
  • export PATH=/home/runner/.local/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
  • PATH=/home/runner/.local/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/snap/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
  • export -f run_test
  • '[' 0 = 1 ']'
  • export ASAN_OPTIONS=detect_odr_violation=1
  • ASAN_OPTIONS=detect_odr_violation=1
  • export UBSAN_OPTIONS=print_stacktrace=1
  • UBSAN_OPTIONS=print_stacktrace=1
  • parallel -j 3 --verbose --linebuffer 'run_test '''./tests/cata_test''' '''('''{}''')=> ''' --user-dir=test_user_dir_{#} {}' ::: '[slow] starting_items' '[slow] [.],starting_items'
    run_test './tests/cata_test' '('[slow]\ ~starting_items')=> ' --user-dir=test_user_dir_1 [slow]\ ~starting_items
    run_test './tests/cata_test' '('~[slow]\ ~[.],starting_items')=> ' --user-dir=test_user_dir_2 ~[slow]\ ~[.],starting_items
    (
    [slow] [.],starting_items)=>
    (
    [slow] [.],starting_items)=> 21:31:43.219 INFO : Randomness seeded to: 1659216703
    (
    [slow] [.],starting_items)=> 21:31:43.220 WARNING : opendir [test_user_dir_2/sound/] failed with "No such file or directory".
    (
    [slow] [.],starting_items)=> 21:31:43.223 WARNING : opendir [test_user_dir_2/gfx/] failed with "No such file or directory".
    (
    [slow] [.],starting_items)=> 21:31:43.230 WARNING : opendir [test_user_dir_2/gfx/] failed with "No such file or directory".
    (
    [slow] [.],starting_items)=> 21:31:43.231 WARNING : opendir [test_user_dir_2/gfx/] failed with "No such file or directory".
    (
    [slow] [.],starting_items)=> 21:31:43.236 INFO : Number of render drivers on your system: 3
    (
    [slow] [.],starting_items)=> 21:31:43.236 INFO : Render driver: 0/opengl
    (
    [slow] [.],starting_items)=> 21:31:43.236 INFO : Render driver: 1/opengles2
    (
    [slow] [.],starting_items)=> 21:31:43.236 INFO : Render driver: 2/software
    (
    [slow] [.],starting_items)=> 21:31:43.236 INFO : [options] C locale set to C
    (
    [slow] [.],starting_items)=> 21:31:43.236 INFO : [options] C++ locale set to C
    (
    [slow] [.],starting_items)=> 21:31:43.299 WARNING : opendir [test_user_dir_2/mods/] failed with "No such file or directory".=================================================================
    (
    [slow] [.],starting_items)=> ==6127==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000009fc5b88 at pc 0x000004440c31 bp 0x7fffc1782070 sp 0x7fffc1782068
    (
    [slow] [.],starting_items)=> READ of size 4 at 0x000009fc5b88 thread T0
    (
    [slow] [.],starting_items)=> #0 0x4440c30 in load_construction(JsonObject const&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4440c30)
    (
    [slow] [.],starting_items)=> My first small pull request to README.md #1 0x4bdc111 in DynamicDataLoader::load_object(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4bdc111)
    (
    [slow] [.],starting_items)=> Mutated flowers concept #2 0x4bdf9ff in DynamicDataLoader::load_all_from_json(JsonIn&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, loading_ui&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4bdf9ff)
    (
    [slow] [.],starting_items)=> Add non-source files to the .gitignore #3 0x4bdf3c4 in DynamicDataLoader::load_data_from_path(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, loading_ui&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4bdf3c4)
    (
    [slow] [.],starting_items)=> Fix compile issues with g++4.2 #4 0x48ee68d in game::load_packs(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::vector<string_id<MOD_INFORMATION>, std::allocator<string_id<MOD_INFORMATION> > > const&, loading_ui&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x48ee68d)
    (
    [slow] [.],starting_items)=> Friendly NPCs will now move out of the way #5 0x48bbc80 in game::load_world_modfiles(loading_ui&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x48bbc80)
    (
    [slow] [.],starting_items)=> Mops can cleanup liquids #6 0x39d87f3 in main (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x39d87f3)
    (
    [slow] [.],starting_items)=> Configurable difficulty level, groundwork for a severe rewrite of how names are handled. #7 0x7fb5d705b082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082)
    (
    [slow] [.],starting_items)=> compile name.h w/ gcc #8 0x2451a7d in _start (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x2451a7d)
    (
    [slow] [.],starting_items)=>
    (
    [slow] ~[.],starting_items)=> 0x000009fc5b88 is located 24 bytes to the left of global variable 'activity_levels_str_map' defined in 'src/game_constants.h:196:36' (0x9fc5ba0) of size 48
    ([slow] ~starting_items)=>
    ([slow] ~starting_items)=> 21:31:43.271 INFO : Randomness seeded to: 1659216703
    ([slow] ~starting_items)=> 21:31:43.272 WARNING : opendir [test_user_dir_1/sound/] failed with "No such file or directory".
    ([slow] ~starting_items)=> 21:31:43.274 WARNING : opendir [test_user_dir_1/gfx/] failed with "No such file or directory".
    ([slow] ~starting_items)=> 21:31:43.276 WARNING : opendir [test_user_dir_1/gfx/] failed with "No such file or directory".
    ([slow] ~starting_items)=> 21:31:43.277 WARNING : opendir [test_user_dir_1/gfx/] failed with "No such file or directory".
    ([slow] ~starting_items)=> 21:31:43.279 INFO : Number of render drivers on your system: 3
    ([slow] ~starting_items)=> 21:31:43.279 INFO : Render driver: 0/opengl
    ([slow] ~starting_items)=> 21:31:43.279 INFO : Render driver: 1/opengles2
    ([slow] ~starting_items)=> 21:31:43.279 INFO : Render driver: 2/software
    ([slow] ~starting_items)=> 21:31:43.279 INFO : [options] C locale set to C
    ([slow] ~starting_items)=> 21:31:43.280 INFO : [options] C++ locale set to C
    ([slow] ~starting_items)=> 21:31:43.303 WARNING : opendir [test_user_dir_1/mods/] failed with "No such file or directory".=================================================================
    ([slow] ~starting_items)=> ==6124==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000009fc5b88 at pc 0x000004440c31 bp 0x7ffc98a65550 sp 0x7ffc98a65548
    ([slow] ~starting_items)=> READ of size 4 at 0x000009fc5b88 thread T0
    ([slow] ~starting_items)=> #0 0x4440c30 in load_construction(JsonObject const&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4440c30)
    ([slow] ~starting_items)=> My first small pull request to README.md #1 0x4bdc111 in DynamicDataLoader::load_object(JsonObject const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4bdc111)
    ([slow] ~starting_items)=> Mutated flowers concept #2 0x4bdf9ff in DynamicDataLoader::load_all_from_json(JsonIn&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, loading_ui&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4bdf9ff)
    ([slow] ~starting_items)=> Add non-source files to the .gitignore #3 0x4bdf3c4 in DynamicDataLoader::load_data_from_path(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, loading_ui&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4bdf3c4)
    ([slow] ~starting_items)=> Fix compile issues with g++4.2 #4 0x48ee68d in game::load_packs(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::vector<string_id<MOD_INFORMATION>, std::allocator<string_id<MOD_INFORMATION> > > const&, loading_ui&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x48ee68d)
    ([slow] ~starting_items)=> Friendly NPCs will now move out of the way #5 0x48bbc80 in game::load_world_modfiles(loading_ui&) (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x48bbc80)
    ([slow] ~starting_items)=> Mops can cleanup liquids #6 0x39d87f3 in main (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x39d87f3)
    ([slow] ~starting_items)=> Configurable difficulty level, groundwork for a severe rewrite of how names are handled. #7 0x7f938e598082 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24082)
    ([slow] ~starting_items)=> compile name.h w/ gcc #8 0x2451a7d in _start (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x2451a7d)
    ([slow] ~starting_items)=>
    ([slow] ~starting_items)=> 0x000009fc5b88 is located 24 bytes to the left of global variable 'activity_levels_str_map' defined in 'src/game_constants.h:196:36' (0x9fc5ba0) of size 48
    ([slow] ~starting_items)=> 0x000009fc5b88 is located 24 bytes to the right of global variable 'activity_levels_map' defined in 'src/game_constants.h:186:36' (0x9fc5b40) of size 48
    ([slow] ~starting_items)=> SUMMARY: AddressSanitizer: global-buffer-overflow (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4440c30) in load_construction(JsonObject const&)
    ([slow] ~starting_items)=> Shadow bytes around the buggy address:
    ([slow] ~starting_items)=> 0x0000813f0b20: 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0b30: 00 00 00 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0b40: 00 00 00 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0b50: 00 00 00 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0b60: 00 00 00 f9 f9 f9 f9 f9 00 00 00 00 00 00 f9 f9
    ([slow] ~starting_items)=> =>0x0000813f0b70: f9[f9]f9 f9 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0b80: 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9 00 00 00 00
    ([slow] ~starting_items)=> 0x0000813f0b90: 00 00 f9 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0ba0: f9 f9 f9 f9 00 00 00 00 f9 f9 f9 f9 00 00 00 00
    ([slow] ~starting_items)=> 0x0000813f0bb0: f9 f9 f9 f9 00 00 f9 f9 f9 f9 f9 f9 00 00 f9 f9
    ([slow] ~starting_items)=> 0x0000813f0bc0: f9 f9 f9 f9 00 00 f9 f9 f9 f9 f9 f9 00 00 f9 f9
    ([slow] ~starting_items)=> Shadow byte legend (one shadow byte represents 8 application bytes):
    ([slow] ~starting_items)=> Addressable: 00
    ([slow] ~starting_items)=> Partially addressable: 01 02 03 04 05 06 07
    ([slow] ~starting_items)=> Heap left redzone: fa
    ([slow] ~starting_items)=> Freed heap region: fd
    ([slow] ~starting_items)=> Stack left redzone: f1
    ([slow] ~starting_items)=> Stack mid redzone: f2
    ([slow] ~starting_items)=> Stack right redzone: f3
    ([slow] ~starting_items)=> Stack after return: f5
    ([slow] ~starting_items)=> Stack use after scope: f8
    ([slow] ~starting_items)=> Global redzone: f9
    ([slow] ~starting_items)=> Global init order: f6
    ([slow] ~starting_items)=> Poisoned by user: f7
    ([slow] ~starting_items)=> Container overflow: fc
    ([slow] ~starting_items)=> Array cookie: ac
    ([slow] ~starting_items)=> Intra object redzone: bb
    ([slow] ~starting_items)=> ASan internal: fe
    ([slow] ~starting_items)=> Left alloca redzone: ca
    ([slow] ~starting_items)=> Right alloca redzone: cb
    ([slow] ~starting_items)=> Shadow gap: cc
    ([slow] starting_items)=> ==6124==ABORTING
    test exited with code 1
    (
    [slow] [.],starting_items)=> 0x000009fc5b88 is located 24 bytes to the right of global variable 'activity_levels_map' defined in 'src/game_constants.h:186:36' (0x9fc5b40) of size 48
    (
    [slow] [.],starting_items)=> SUMMARY: AddressSanitizer: global-buffer-overflow (/home/runner/work/Cataclysm-DDA/Cataclysm-DDA/tests/cata_test+0x4440c30) in load_construction(JsonObject const&)
    (
    [slow] [.],starting_items)=> Shadow bytes around the buggy address:
    (
    [slow] [.],starting_items)=> 0x0000813f0b20: 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0b30: 00 00 00 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0b40: 00 00 00 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0b50: 00 00 00 f9 f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0b60: 00 00 00 f9 f9 f9 f9 f9 00 00 00 00 00 00 f9 f9
    (
    [slow] [.],starting_items)=> =>0x0000813f0b70: f9[f9]f9 f9 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0b80: 00 00 00 00 00 00 f9 f9 f9 f9 f9 f9 00 00 00 00
    (
    [slow] [.],starting_items)=> 0x0000813f0b90: 00 00 f9 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0ba0: f9 f9 f9 f9 00 00 00 00 f9 f9 f9 f9 00 00 00 00
    (
    [slow] [.],starting_items)=> 0x0000813f0bb0: f9 f9 f9 f9 00 00 f9 f9 f9 f9 f9 f9 00 00 f9 f9
    (
    [slow] [.],starting_items)=> 0x0000813f0bc0: f9 f9 f9 f9 00 00 f9 f9 f9 f9 f9 f9 00 00 f9 f9
    (
    [slow] [.],starting_items)=> Shadow byte legend (one shadow byte represents 8 application bytes):
    (
    [slow] [.],starting_items)=> Addressable: 00
    (
    [slow] [.],starting_items)=> Partially addressable: 01 02 03 04 05 06 07
    (
    [slow] [.],starting_items)=> Heap left redzone: fa
    (
    [slow] [.],starting_items)=> Freed heap region: fd
    (
    [slow] [.],starting_items)=> Stack left redzone: f1
    (
    [slow] [.],starting_items)=> Stack mid redzone: f2
    (
    [slow] [.],starting_items)=> Stack right redzone: f3
    (
    [slow] [.],starting_items)=> Stack after return: f5
    (
    [slow] [.],starting_items)=> Stack use after scope: f8
    (
    [slow] [.],starting_items)=> Global redzone: f9
    (
    [slow] [.],starting_items)=> Global init order: f6
    (
    [slow] [.],starting_items)=> Poisoned by user: f7
    (
    [slow] [.],starting_items)=> Container overflow: fc
    (
    [slow] [.],starting_items)=> Array cookie: ac
    (
    [slow] [.],starting_items)=> Intra object redzone: bb
    (
    [slow] [.],starting_items)=> ASan internal: fe
    (
    [slow] [.],starting_items)=> Left alloca redzone: ca
    (
    [slow] [.],starting_items)=> Right alloca redzone: cb
    (
    [slow] [.],starting_items)=> Shadow gap: cc
    (
    [slow] ~[.],starting_items)=> ==6127==ABORTING
    test exited with code 1
    Error: Process completed with exit code 2.

I doubt some JSON changes would cause the code to suddenly start to address illegal memory addresses.

Copy link
Contributor

@Fris0uman Fris0uman left a comment

Choose a reason for hiding this comment

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

WRENCH 2 seems reasonnable to install, since you need it to remove them, plus a wind turbine is probably the kind of things you want to be able to secure tightly

data/json/construction.json Outdated Show resolved Hide resolved
data/json/construction.json Outdated Show resolved Hide resolved
@PatrikLundell
Copy link
Contributor Author

General build matrix / Clang 12, Ubuntu, Tiles, ASan (pull_request): Fails with what looks essentially the same as the last time...

PatrikLundell and others added 2 commits August 4, 2022 17:09
Co-authored-by: anothersimulacrum <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
@PatrikLundell PatrikLundell deleted the turbine_wheel_appliance branch August 5, 2022 11:42
alef pushed a commit to alef/Cataclysm-DDA that referenced this pull request Aug 6, 2022
* Added wind turbine appliances

* trigger tests

* trigger tests

* Update data/json/construction.json

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

* Update data/json/construction.json

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

* Update data/json/construction.json

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

* Update data/json/construction.json

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

Co-authored-by: Fris0uman <[email protected]>
Co-authored-by: anothersimulacrum <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Appliance/Power Grid Anything to do with appliances and power grid astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions Crafting / Construction / Recipes Includes: Uncrafting / Disassembling [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Wind turbines as appliances Make wind turbines and large wind turbines placeable as appliances.
6 participants