diff --git a/data/json/mapgen/basecamps/modular_field_common.json b/data/json/mapgen/basecamps/modular_field_common.json new file mode 100644 index 0000000000000..a238e7dbff7b8 --- /dev/null +++ b/data/json/mapgen/basecamps/modular_field_common.json @@ -0,0 +1,310 @@ +[ + { + "type": "mapgen", + "update_mapgen_id": "fbmf_0", + "method": "json", + "object": { + "set": [ + { "point": "terrain", "id": "t_dirt", "x": 10, "y": 3 }, + { "point": "furniture", "id": "f_bulletin", "x": 10, "y": 3 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_fireplace_northeast", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_fireplace", "x": 19, "y": 6 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_brazier_northeast", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_brazier", "x": 19, "y": 6 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_stove_northeast", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_woodstove", "x": 19, "y": 6 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_strawbed", + "object": { + "mapgensize": [ 2, 2 ], + "set": [ + { "point": "furniture", "id": "f_straw_bed", "x": 0, "y": 0 }, + { "point": "furniture", "id": "f_straw_bed", "x": 1, "y": 0 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_strawbed1_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 5 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_bedset", + "object": { + "mapgensize": [ 3, 3 ], + "set": [ + { "point": "furniture", "id": "f_bookcase", "x": 0, "y": 0 }, + { "point": "furniture", "id": "f_bed", "x": 1, "y": 0 }, + { "point": "furniture", "id": "f_bed", "x": 2, "y": 0 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_bed1_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 5 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_strawbed2_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 7 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_bed2_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 7 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_strawbed3_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 11 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_bed3_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 11 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_strawbed3_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 10 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_bed3_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 10 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_strawbed3_southeast", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 17 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_bed3_southeast", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 17 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_strawbed3_southeast", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 16 }, { "chunks": [ "fbmf_strawbed" ], "x": 18, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_bed3_southeast", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 16 }, { "chunks": [ "fbmf_bedset" ], "x": 17, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_strawbed3_northwest", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 5 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 7 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_bed3_northwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 5 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 7 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_strawbed3_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 11 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_bed3_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 11 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_strawbed3_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 10 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_bed3_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 10 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_strawbed3_southwest", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 17 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_bed3_southwest", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 17 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_strawbed3_southwest", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 16 }, { "chunks": [ "fbmf_strawbed" ], "x": 4, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room_bed3_southwest", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 16 }, { "chunks": [ "fbmf_bedset" ], "x": 4, "y": 19 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_kitchen_fireplace_center", + "method": "json", + "object": { + "mapgensize": [ 6, 6 ], + "set": [ + { "point": "furniture", "id": "f_counter", "x": 13, "y": 10 }, + { "point": "furniture", "id": "f_fireplace", "x": 12, "y": 11 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_kitchen_butchery_center", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_butcher_rack", "x": 12, "y": 10 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_kitchen_toolrack_center", + "method": "json", + "object": { "set": [ { "point": "furniture", "id": "f_bookcase", "x": 10, "y": 10 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_tableset", + "object": { + "mapgensize": [ 3, 3 ], + "set": [ + { "point": "furniture", "id": "f_chair", "x": 0, "y": 1 }, + { "point": "furniture", "id": "f_table", "x": 1, "y": 1 }, + { "point": "furniture", "id": "f_chair", "x": 2, "y": 1 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_kitchen_table_center", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 12 }, { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 13 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_kitchen_table_south", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 16 }, { "chunks": [ "fbmf_core_tableset" ], "x": 11, "y": 15 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_kitchen_stove_south", + "method": "json", + "object": { + "set": [ + { "point": "furniture", "id": "f_counter", "x": 10, "y": 19 }, + { "point": "furniture", "id": "f_woodstove", "x": 11, "y": 19 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_well_north", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_water_pump", "x": 13, "y": 6 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_root_cellar_north", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_rootcellar", "x": 12, "y": 8 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_radio_tower_north", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_radio_tower", "x": 13, "y": 3 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_radio_console_north", + "method": "json", + "object": { "set": [ { "point": "terrain", "id": "t_radio_controls", "x": 13, "y": 4 } ] } + } +] diff --git a/data/json/mapgen/basecamps/modular_field_defenses.json b/data/json/mapgen/basecamps/modular_field_defenses.json new file mode 100644 index 0000000000000..84388fb9754d3 --- /dev/null +++ b/data/json/mapgen/basecamps/modular_field_defenses.json @@ -0,0 +1,62 @@ +[ + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_north", + "method": "json", + "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 3, "x2": 20, "y": 0, "y2": 0 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_south", + "method": "json", + "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 3, "x2": 20, "y": 23, "y2": 23 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_corner_northeast", + "method": "json", + "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 21, "y": 0, "y2": 4 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_corner_northwest", + "method": "json", + "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 2, "x2": 2, "y": 0, "y2": 4 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_corner_southeast", + "method": "json", + "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 21, "x2": 21, "y": 19, "y2": 23 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_corner_southwest", + "method": "json", + "object": { "set": [ { "line": "terrain", "id": "t_pit", "x": 2, "x2": 2, "y": 19, "y2": 23 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_east", + "method": "json", + "object": { + "set": [ + { "line": "terrain", "id": "t_pit", "x": 21, "x2": 22, "y": 0, "y2": 0 }, + { "line": "terrain", "id": "t_pit", "x": 21, "x2": 22, "y": 23, "y2": 23 }, + { "line": "terrain", "id": "t_pit", "x": 23, "x2": 23, "y": 0, "y2": 23 } + ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_trench_west", + "method": "json", + "object": { + "set": [ + { "line": "terrain", "id": "t_pit", "x": 1, "x2": 2, "y": 0, "y2": 0 }, + { "line": "terrain", "id": "t_pit", "x": 1, "x2": 2, "y": 23, "y2": 23 }, + { "line": "terrain", "id": "t_pit", "x": 0, "x2": 0, "y": 0, "y2": 23 } + ] + } + } +] diff --git a/data/json/mapgen/basecamps/modular_field_metal.json b/data/json/mapgen/basecamps/modular_field_metal.json new file mode 100644 index 0000000000000..244895d06a2a8 --- /dev/null +++ b/data/json/mapgen/basecamps/modular_field_metal.json @@ -0,0 +1,428 @@ +[ + { + "type": "palette", + "id": "fbmf_metal_palette", + "terrain": { ";": "t_dirt", ".": "t_scrap_floor", "+": "t_door_metal_c", "v": "t_window_no_curtains", "w": "t_scrap_wall" }, + "furniture": { } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room0_metal", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " ;;ww;", + " ;;..w", + " ;;..w", + " ;;;;;", + " ;;;;;" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room0_metal_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room0_metal" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room1_metal", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " v ", + " w. ", + " . ", + " w...w", + " " + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room1_metal_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room1_metal" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room2_metal", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " w w", + " ", + " + ", + " ", + " wwwww" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room2_metal_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room2_metal" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_metal_shack_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "wwwwww", + "w....w", + "+....w", + "w....v", + "w....w", + "w+wwww" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_metal_east", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_east" ], "x": 15, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_metal_room_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w....w", + "w....w", + "+....w", + "w....v", + "w....w", + "w+wwww" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_metal_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_metal_room_east" ], "x": 15, "y": 9 } ], + "set": [ { "point": "terrain", "id": "t_wall_metal", "x": 15, "y": 8 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_metal_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_metal_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_room_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_metal_shack_northwest", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + ";;;;;;", + "wwwww;", + "w...w;", + "v...+;", + "w...w;", + "wwwww;" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_metal_northwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_northwest" ], "x": 3, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_metal_shack_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "wwwwww", + "w....w", + "w....+", + "v....w", + "w....w", + "wwww+w" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_metal_west", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_west" ], "x": 3, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_metal_room_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w....w", + "w....w", + "w....+", + "v....w", + "w....w", + "wwww+w" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_metal_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_metal_room_west" ], "x": 3, "y": 9 } ], + "set": [ { "point": "terrain", "id": "t_wall_metal", "x": 8, "y": 8 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_metal_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_shack_west" ], "x": 3, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_metal_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_metal_room_west" ], "x": 3, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_ne_metal_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " www", + " ..w", + " ..w", + " ..+", + " ..w", + " ..w" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_ne_metal_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_ne_metal_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_ne_metal_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " www", + " ...", + " ...", + " ...", + " ...", + " ..." + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_ne_metal_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_ne_metal_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_nw_metal_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "ww+ ", + "w.. ", + "w.. ", + "+.. ", + "w.. ", + "w.. " + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_nw_metal_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_nw_metal_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_nw_metal_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "ww+ ", + "... ", + "... ", + "... ", + "... ", + "... " + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_nw_metal_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_nw_metal_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_metal_center", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmf_core_nw_metal_center" ], "x": 9, "y": 9 }, + { "chunks": [ "fbmf_core_ne_metal_center" ], "x": 9, "y": 9 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_se_metal_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ..w", + " ..w", + " ..w", + " ..+", + " ..w", + " +ww" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_se_metal_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_se_metal_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_se_metal_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ...", + " ...", + " ...", + " ...", + " ...", + " +ww" + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_se_metal_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_se_metal_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_sw_metal_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w.. ", + "w.. ", + "w.. ", + "+.. ", + "w.. ", + "www " + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_sw_metal_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_sw_metal_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_sw_metal_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "... ", + "... ", + "... ", + "... ", + "... ", + "www " + ], + "palettes": [ "fbmf_metal_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_sw_metal_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_sw_metal_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_metal_south", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmf_core_sw_metal_south" ], "x": 9, "y": 15 }, + { "chunks": [ "fbmf_core_se_metal_south" ], "x": 9, "y": 15 } + ] + } + } +] diff --git a/data/json/mapgen/basecamps/modular_field_tent.json b/data/json/mapgen/basecamps/modular_field_tent.json new file mode 100644 index 0000000000000..7045c38c3f06d --- /dev/null +++ b/data/json/mapgen/basecamps/modular_field_tent.json @@ -0,0 +1,78 @@ +[ + { + "type": "palette", + "id": "fbmf_tent_palette", + "terrain": { " ": "t_dirt", ".": "t_dirtfloor", "+": "t_dirtfloor", "w": "t_dirtfloor" }, + "furniture": { "+": "f_canvas_door", "w": "f_canvas_wall" } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_large_tent_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " wwwww", + " w...w", + " +...w", + " w...w", + " wwwww" + ], + "palettes": [ "fbmf_tent_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_east" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_east", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_east" ], "x": 15, "y": 9 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_large_tent_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + "wwwww ", + "w...w ", + "w...+ ", + "w...w ", + "wwwww " + ], + "palettes": [ "fbmf_tent_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_northwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_west" ], "x": 3, "y": 3 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_west", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_west" ], "x": 3, "y": 9 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_tent_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_large_tent_west" ], "x": 3, "y": 15 } ] } + } +] diff --git a/data/json/mapgen/basecamps/modular_field_wad.json b/data/json/mapgen/basecamps/modular_field_wad.json new file mode 100644 index 0000000000000..6c83e4be8ce3c --- /dev/null +++ b/data/json/mapgen/basecamps/modular_field_wad.json @@ -0,0 +1,428 @@ +[ + { + "type": "palette", + "id": "fbmf_wad_palette", + "terrain": { ";": "t_dirt", ".": "t_floor_primitive", "+": "t_door_makeshift_c", "v": "t_wall_wattle_half", "w": "t_wall_wattle" }, + "furniture": { } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room0_wad", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " ;;ww;", + " ;;..w", + " ;;..w", + " ;;;;;", + " ;;;;;" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room0_wad_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room0_wad" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room1_wad", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " v ", + " w. ", + " . ", + " w...w", + " " + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room1_wad_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room1_wad" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room2_wad", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " w w", + " ", + " + ", + " ", + " wwwww" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room2_wad_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room2_wad" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wad_shack_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "wwwwww", + "w....w", + "+....w", + "w....v", + "w....w", + "w+wwww" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wad_east", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_east" ], "x": 15, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wad_room_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w....w", + "w....w", + "+....w", + "w....v", + "w....w", + "w+wwww" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wad_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_wad_room_east" ], "x": 15, "y": 9 } ], + "set": [ { "point": "terrain", "id": "t_wall_wattle", "x": 15, "y": 8 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wad_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wad_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_room_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wad_shack_northwest", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + ";;;;;;", + "wwwww;", + "w...w;", + "v...+;", + "w...w;", + "wwwww;" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wad_northwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_northwest" ], "x": 3, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wad_shack_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "wwwwww", + "w....w", + "w....+", + "v....w", + "w....w", + "wwww+w" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wad_west", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_west" ], "x": 3, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wad_room_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w....w", + "w....w", + "w....+", + "v....w", + "w....w", + "wwww+w" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wad_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_wad_room_west" ], "x": 3, "y": 9 } ], + "set": [ { "point": "terrain", "id": "t_wall_wattle", "x": 8, "y": 8 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wad_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_shack_west" ], "x": 3, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wad_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wad_room_west" ], "x": 3, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_ne_wad_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " www", + " ..w", + " ..w", + " ..+", + " ..w", + " ..w" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_ne_wad_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_ne_wad_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_ne_wad_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " www", + " ...", + " ...", + " ...", + " ...", + " ..." + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_ne_wad_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_ne_wad_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_nw_wad_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "ww+ ", + "w.. ", + "w.. ", + "+.. ", + "w.. ", + "w.. " + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_nw_wad_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_nw_wad_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_nw_wad_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "ww+ ", + "... ", + "... ", + "... ", + "... ", + "... " + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_nw_wad_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_nw_wad_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_wad_center", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmf_core_nw_wad_center" ], "x": 9, "y": 9 }, + { "chunks": [ "fbmf_core_ne_wad_center" ], "x": 9, "y": 9 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_se_wad_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ..w", + " ..w", + " ..w", + " ..+", + " ..w", + " +ww" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_se_wad_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_se_wad_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_se_wad_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ...", + " ...", + " ...", + " ...", + " ...", + " +ww" + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_se_wad_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_se_wad_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_sw_wad_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w.. ", + "w.. ", + "w.. ", + "+.. ", + "w.. ", + "www " + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_sw_wad_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_sw_wad_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_sw_wad_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "... ", + "... ", + "... ", + "... ", + "... ", + "www " + ], + "palettes": [ "fbmf_wad_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_sw_wad_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_sw_wad_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_wad_south", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmf_core_sw_wad_south" ], "x": 9, "y": 15 }, + { "chunks": [ "fbmf_core_se_wad_south" ], "x": 9, "y": 15 } + ] + } + } +] diff --git a/data/json/mapgen/basecamps/modular_field_wood.json b/data/json/mapgen/basecamps/modular_field_wood.json new file mode 100644 index 0000000000000..cae2a3cae11e2 --- /dev/null +++ b/data/json/mapgen/basecamps/modular_field_wood.json @@ -0,0 +1,428 @@ +[ + { + "type": "palette", + "id": "fbmf_wood_palette", + "terrain": { ";": "t_dirt", ".": "t_floor", "+": "t_door_c", "v": "t_window_no_curtains", "w": "t_wall_wood" }, + "furniture": { } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room0_wood", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " ;;ww;", + " ;;..w", + " ;;..w", + " ;;;;;", + " ;;;;;" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room0_wood_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room0_wood" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room1_wood", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " v ", + " w. ", + " . ", + " w...w", + " " + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room1_wood_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room1_wood" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_room2_wood", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ", + " w w", + " ", + " + ", + " ", + " wwwww" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room2_wood_northeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_room2_wood" ], "x": 15, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wood_shack_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "wwwwww", + "w....w", + "+....w", + "w....v", + "w....w", + "w+wwww" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wood_east", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_east" ], "x": 15, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wood_room_east", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w....w", + "w....w", + "+....w", + "w....v", + "w....w", + "w+wwww" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wood_east", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_wood_room_east" ], "x": 15, "y": 9 } ], + "set": [ { "point": "terrain", "id": "t_wall_wood", "x": 15, "y": 8 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wood_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wood_southeast", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_room_east" ], "x": 15, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wood_shack_northwest", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + ";;;;;;", + "wwwww;", + "w...w;", + "v...+;", + "w...w;", + "wwwww;" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wood_northwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_northwest" ], "x": 3, "y": 3 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wood_shack_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "wwwwww", + "w....w", + "w....+", + "v....w", + "w....w", + "wwww+w" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wood_west", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_west" ], "x": 3, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_wood_room_west", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w....w", + "w....w", + "w....+", + "v....w", + "w....w", + "wwww+w" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wood_west", + "method": "json", + "object": { + "place_nested": [ { "chunks": [ "fbmf_wood_room_west" ], "x": 3, "y": 9 } ], + "set": [ { "point": "terrain", "id": "t_wall_wood", "x": 8, "y": 8 } ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_shack4_wood_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_shack_west" ], "x": 3, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_room4_wood_southwest", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_wood_room_west" ], "x": 3, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_ne_wood_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " www", + " ..w", + " ..w", + " ..+", + " ..w", + " ..w" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_ne_wood_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_ne_wood_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_ne_wood_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " www", + " ...", + " ...", + " ...", + " ...", + " ..." + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_ne_wood_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_ne_wood_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_nw_wood_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "ww+ ", + "w.. ", + "w.. ", + "+.. ", + "w.. ", + "w.. " + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_nw_wood_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_nw_wood_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_nw_wood_center", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "ww+ ", + "... ", + "... ", + "... ", + "... ", + "... " + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_nw_wood_center", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_nw_wood_center" ], "x": 9, "y": 9 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_wood_center", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmf_core_nw_wood_center" ], "x": 9, "y": 9 }, + { "chunks": [ "fbmf_core_ne_wood_center" ], "x": 9, "y": 9 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_se_wood_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ..w", + " ..w", + " ..w", + " ..+", + " ..w", + " +ww" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_se_wood_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_se_wood_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_se_wood_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + " ...", + " ...", + " ...", + " ...", + " ...", + " +ww" + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_se_wood_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_se_wood_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_shack_sw_wood_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "w.. ", + "w.. ", + "w.. ", + "+.. ", + "w.. ", + "www " + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_shack_sw_wood_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_shack_sw_wood_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "fbmf_core_sw_wood_south", + "object": { + "mapgensize": [ 6, 6 ], + "rows": [ + "... ", + "... ", + "... ", + "... ", + "... ", + "www " + ], + "palettes": [ "fbmf_wood_palette" ] + } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_sw_wood_south", + "method": "json", + "object": { "place_nested": [ { "chunks": [ "fbmf_core_sw_wood_south" ], "x": 9, "y": 15 } ] } + }, + { + "type": "mapgen", + "update_mapgen_id": "fbmf_core_wood_south", + "method": "json", + "object": { + "place_nested": [ + { "chunks": [ "fbmf_core_sw_wood_south" ], "x": 9, "y": 15 }, + { "chunks": [ "fbmf_core_se_wood_south" ], "x": 9, "y": 15 } + ] + } + } +] diff --git a/data/json/recipes/basecamps/recipe_groups.json b/data/json/recipes/basecamps/recipe_groups.json index 48572ecd51ebd..957cc81ed16d0 100644 --- a/data/json/recipes/basecamps/recipe_groups.json +++ b/data/json/recipes/basecamps/recipe_groups.json @@ -1,13 +1,22 @@ [ + { + "type": "recipe_group", + "name": "all_faction_base_types", + "building_type": "NONE", + "recipes": [ + { "id": "faction_base_modular_field_0", "description": "Field Camp", "om_terrains": [ "field" ] }, + { "id": "faction_base_camp_0", "description": "Old Camp", "om_terrains": [ "field" ] } + ] + }, { "type": "recipe_group", "name": "all_faction_base_expansions", "building_type": "NONE", "recipes": [ - { "id": "faction_base_farm_0", "description": "Farm" }, - { "id": "faction_base_garage_0", "description": "Garage" }, - { "id": "faction_base_kitchen_0", "description": "Kitchen" }, - { "id": "faction_base_blacksmith_0", "description": "Blacksmith Shop" } + { "id": "faction_base_farm_0", "description": "Farm", "om_terrains": [ "field" ] }, + { "id": "faction_base_garage_0", "description": "Garage", "om_terrains": [ "field" ] }, + { "id": "faction_base_kitchen_0", "description": "Kitchen", "om_terrains": [ "field" ] }, + { "id": "faction_base_blacksmith_0", "description": "Blacksmith Shop", "om_terrains": [ "field" ] } ] }, { diff --git a/data/json/recipes/basecamps/recipe_modular_field_common.json b/data/json/recipes/basecamps/recipe_modular_field_common.json new file mode 100644 index 0000000000000..511374176bb60 --- /dev/null +++ b/data/json/recipes/basecamps/recipe_modular_field_common.json @@ -0,0 +1,637 @@ +[ + { + "type": "recipe", + "result": "faction_base_modular_field_0", + "description": "We should survey the base site and set up a bulletin board.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "1 h", + "construction_blueprint": "fbmf_0", + "blueprint_provides": [ + { "id": "gathering" }, + { "id": "primitive_camp_recipes_1" }, + { "id": "firewood" }, + { "id": "foraging" }, + { "id": "sorting" }, + { "id": "logging" } + ], + "blueprint_requires": [ { "id": "not_an_upgrade" } ], + "blueprint_name": "basic survey" + }, + { + "type": "recipe", + "result": "faction_base_modular_field_fireplace_northeast", + "description": "Now that we have some cover, we should build a fireplace in the northeast shack.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_fireplace_northeast", + "blueprint_name": "northeast fireplace", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_brazier_northeast", + "description": "Now that we have some cover, we should set up a brazier in the northeast shack.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "5 m", + "construction_blueprint": "fbmf_brazier_northeast", + "blueprint_name": "northeast brazier", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_fire_northeast" } ], + "components": [ [ [ "brazier", 1 ] ] ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_stove_northeast", + "description": "Now that we have some cover, we should build a stove in the northeast shack.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_stove_northeast", + "blueprint_name": "northeast stove", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_fire_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_strawbed1_northeast", + "description": "A straw bed in the northeast shack will make sleeping easier.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_strawbed1_northeast", + "blueprint_name": "northeast straw bed", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed1_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_bed1_northeast", + "description": "A proper bed in the northeast shack will give one of us a place to sleep soundly.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_bed1_northeast", + "blueprint_name": "northeast bed", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed1_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_strawbed2_northeast", + "description": "Another straw bed in the northeast shack will make sleeping easier.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_strawbed2_northeast", + "blueprint_name": "northeast straw bed", + "blueprint_requires": [ { "id": "fbmf_bed1_northeast" }, { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed2_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_bed2_northeast", + "description": "Another proper bed in the northeast shack will give one of us a place to sleep soundly.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_bed2_northeast", + "blueprint_name": "northeast bed", + "blueprint_requires": [ { "id": "fbmf_bed1_northeast" }, { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "bed" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed2_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_strawbed3_east", + "description": "A pair of straw beds in the east tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_strawbed3_east", + "blueprint_name": "east straw beds", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_bed3_east", + "description": "A pair of proper beds in the east tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_bed3_east", + "blueprint_name": "east beds", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_strawbed3_east", + "description": "A pair of straw beds in the east room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_strawbed3_east", + "blueprint_name": "east straw beds", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_bed3_east", + "description": "A pair of proper beds in the east room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_bed3_east", + "blueprint_name": "east beds", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_east" }, { "id": "fbmf_bed2_east" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_strawbed3_southeast", + "description": "A pair of straw beds in the southeast tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_strawbed3_southeast", + "blueprint_name": "southeast straw beds", + "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_bed3_southeast", + "description": "A pair of proper beds in the southeast tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_bed3_southeast", + "blueprint_name": "southeast beds", + "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_strawbed3_southeast", + "description": "A pair of straw beds in the southeast room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_strawbed3_southeast", + "blueprint_name": "southeast straw beds", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_bed3_southeast", + "description": "A pair of proper beds in the southeast room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_bed3_southeast", + "blueprint_name": "southeast beds", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southeast" }, { "id": "fbmf_bed2_southeast" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_strawbed3_northwest", + "description": "A pair of straw beds in the northwest building will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_strawbed3_northwest", + "blueprint_name": "northwest straw beds", + "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_bed3_northwest", + "description": "A pair of proper beds in the northwest building will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_bed3_northwest", + "blueprint_name": "northwest beds", + "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_northwest" }, { "id": "fbmf_bed2_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_strawbed3_west", + "description": "A pair of straw beds in the west tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_strawbed3_west", + "blueprint_name": "west straw beds", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_bed3_west", + "description": "A pair of proper beds in the west tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_bed3_west", + "blueprint_name": "west beds", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_strawbed3_west", + "description": "A pair of straw beds in the west room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_strawbed3_west", + "blueprint_name": "west straw beds", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_bed3_west", + "description": "A pair of proper beds in the west room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_bed3_west", + "blueprint_name": "west beds", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_west" }, { "id": "fbmf_bed2_west" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_strawbed3_southwest", + "description": "A pair of straw beds in the southwest tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_strawbed3_southwest", + "blueprint_name": "southwest straw beds", + "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_bed3_southwest", + "description": "A pair of proper beds in the southwest tent will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_tent_bed3_southwest", + "blueprint_name": "southwest beds", + "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_strawbed3_southwest", + "description": "A pair of straw beds in the southwest room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_strawbed3_southwest", + "blueprint_name": "southwest straw beds", + "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room_bed3_southwest", + "description": "A pair of proper beds in the southwest room will allow us to house two more people and expand the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room_bed3_southwest", + "blueprint_name": "southwest beds", + "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "bed", "amount": 2 }, { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" } ], + "blueprint_excludes": [ { "id": "fbmf_bed1_southwest" }, { "id": "fbmf_bed2_southwest" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_kitchen_fireplace_center", + "description": "A fireplace, counter, and some pots and pans in the central building will allow us to cook simple recipes and organize hunting expeditions.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_kitchen_fireplace_center", + "blueprint_name": "central fireplace", + "blueprint_requires": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_provides": [ { "id": "trapping" }, { "id": "hunting" }, { "id": "kitchen" }, { "id": "kitchen_recipes_1" } ], + "blueprint_resources": [ "fake_fireplace", "pot" ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_kitchen_butchery_center", + "description": "We need a butchery rack to maximize the harvest from our hunting and trapping efforts.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_kitchen_butchery_center", + "blueprint_name": "central butchery rack", + "blueprint_requires": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_provides": [ { "id": "trapping" }, { "id": "hunting" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_kitchen_toolrack_center", + "description": "A tool rack in the central building will give us a place to store tools.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_kitchen_toolrack_center", + "blueprint_name": "central tool rack", + "blueprint_requires": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_provides": [ { "id": "tool_storage" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_kitchen_table_center", + "description": "Setting up some tables and chairs will make the central building into a dining area, and we can also use them as a workspace to organize the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_kitchen_table_center", + "blueprint_name": "central dining hall", + "blueprint_requires": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], + "blueprint_provides": [ { "id": "relaying" }, { "id": "walls" }, { "id": "recruiting" }, { "id": "scouting" }, { "id": "patrolling" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_kitchen_table_south", + "description": "Setting up some tables and chairs will make the central building into a dining area, and we can also use them as a workspace to organize the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_kitchen_table_south", + "blueprint_name": "south dining hall", + "blueprint_requires": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_provides": [ { "id": "relaying" }, { "id": "walls" }, { "id": "recruiting" }, { "id": "scouting" }, { "id": "patrolling" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_kitchen_stove_south", + "description": "A wood stove, counter, and some pots and pans in the south half of the central building will allow us to cook simple recipes and organize hunting expeditions. The stove will be more efficient than a fireplace.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_kitchen_stove_south", + "blueprint_name": "south wood stove", + "blueprint_resources": [ "fake_stove" ], + "blueprint_requires": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_provides": [ { "id": "trapping" }, { "id": "hunting" }, { "id": "kitchen" }, { "id": "kitchen_recipes_1" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_well_north", + "description": "Digging a well will give us easy access to water.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_well_north", + "blueprint_name": "north water well", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_root_cellar_north", + "description": "Digging a root cellar will give us a way to preserve food.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_root_cellar_north", + "blueprint_name": "north root cellar", + "blueprint_provides": [ { "id": "pantry" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_radio_tower_north", + "description": "We could build a radio tower to improve the range of our radios.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "difficulty": 4, + "autolearn": false, + "never_learn": true, + "time": "24 h", + "construction_blueprint": "fbmf_radio_tower_north", + "blueprint_name": "north radio tower", + "blueprint_provides": [ { "id": "fbmf_radio_tower_north" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "qualities": [ + { "id": "HAMMER", "level": 2 }, + { "id": "SAW_M", "level": 1 }, + { "id": "WRENCH", "level": 1 }, + { "id": "SCREW", "level": 1 } + ], + "components": [ + [ + [ "wind_turbine", 4 ], + [ "xl_wind_turbine", 1 ], + [ "solar_panel", 4 ], + [ "reinforced_solar_panel", 4 ], + [ "solar_panel_v2", 2 ], + [ "reinforced_solar_panel_v2", 2 ], + [ "solar_panel_v3", 1 ] + ], + [ [ "storage_battery", 1 ], [ "medium_storage_battery", 4 ], [ "small_storage_battery", 32 ] ], + [ [ "sheet_metal", 2 ], [ "wire", 8 ] ], + [ [ "pipe", 24 ] ] + ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_radio_console_north", + "description": "Adding a console to control the radio tower will help with recruiting more survivors.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "electronics", + "difficulty": 6, + "autolearn": false, + "never_learn": true, + "time": "24 h", + "construction_blueprint": "fbmf_radio_console_north", + "blueprint_name": "north radio console", + "blueprint_provides": [ { "id": "fbmf_radio_console_north" }, { "id": "radio" } ], + "blueprint_requires": [ { "id": "fbmf_radio_tower_north" } ], + "qualities": [ { "id": "SAW_M", "level": 1 }, { "id": "WRENCH", "level": 1 }, { "id": "SCREW", "level": 1 } ], + "components": [ + [ [ "processor", 2 ] ], + [ [ "RAM", 2 ] ], + [ [ "small_lcd_screen", 1 ] ], + [ [ "e_scrap", 8 ] ], + [ [ "frame", 1 ] ], + [ [ "circuit", 4 ] ], + [ [ "power_supply", 2 ] ], + [ [ "amplifier", 2 ] ], + [ [ "cable", 80 ] ], + [ [ "motor_small", 1 ], [ "motor_tiny", 2 ] ] + ] + }, + { + "type": "recipe", + "result": "faction_base_new_farm_0", + "description": "We should survey the base site and set up a bulletin board.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "1 m", + "construction_blueprint": "faction_base_modular_field_0", + "blueprint_name": "basic survey", + "blueprint_requires": [ { "id": "not_an_upgrade" } ] + }, + { + "type": "recipe", + "result": "faction_base_new_blacksmith_0", + "description": "We should survey the base site and set up a bulletin board.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "1 m", + "construction_blueprint": "faction_base_modular_field_0", + "blueprint_name": "basic survey", + "blueprint_requires": [ { "id": "not_an_upgrade" } ] + }, + { + "type": "recipe", + "result": "faction_base_new_garage_0", + "description": "We should survey the base site and set up a bulletin board.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "1 m", + "construction_blueprint": "faction_base_modular_field_0", + "blueprint_name": "basic survey", + "blueprint_requires": [ { "id": "not_an_upgrade" } ] + }, + { + "type": "recipe", + "result": "faction_base_new_kitchen_0", + "description": "We should survey the base site and set up a bulletin board.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "1 m", + "construction_blueprint": "faction_base_modular_field_0", + "blueprint_name": "basic survey", + "blueprint_requires": [ { "id": "not_an_upgrade" } ] + } +] diff --git a/data/json/recipes/basecamps/recipe_modular_field_defenses.json b/data/json/recipes/basecamps/recipe_modular_field_defenses.json new file mode 100644 index 0000000000000..200aab48d7a08 --- /dev/null +++ b/data/json/recipes/basecamps/recipe_modular_field_defenses.json @@ -0,0 +1,120 @@ +[ + { + "type": "recipe", + "result": "faction_base_modular_field_trench_north", + "description": "Digging a trench along the north edge of the camp would provide some defense and generate building materials.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_north", + "blueprint_name": "north trench", + "blueprint_provides": [ { "id": "fbmf_trench_north" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_south", + "description": "Digging a trench along the south edge of the camp would provide some defense and generate building materials.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_south", + "blueprint_name": "south trench", + "blueprint_provides": [ { "id": "fbmf_trench_south" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_northeast", + "description": "Digging a trench along the northeast corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the east side of the camp, we would only need to dig the trench long enough to reach the buildings.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "never_learn": true, + "construction_blueprint": "fbmf_trench_corner_northeast", + "blueprint_name": "northeast trench", + "blueprint_provides": [ { "id": "fbmf_trench_northeast" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_trench_northeast" }, { "id": "fbmf_trench_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_northwest", + "description": "Digging a trench along the northwest corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the west side of the camp, we would only need to dig the trench long enough to reach the buildings.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_corner_northwest", + "blueprint_name": "northwest trench", + "blueprint_provides": [ { "id": "fbmf_trench_northwest" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_trench_northwest" }, { "id": "fbmf_trench_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_southeast", + "description": "Digging a trench along the southeast corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the east side of the camp, we would only need to dig the trench long enough to reach the buildings.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_corner_southeast", + "blueprint_name": "southeast trench", + "blueprint_provides": [ { "id": "fbmf_trench_southeast" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_trench_southeast" }, { "id": "fbmf_trench_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_southwest", + "description": "Digging a trench along the southwest corner of the camp would provide some defense and generate building materials. If we have solid buildings all along the west side of the camp, we would only need to dig the trench long enough to reach the buildings.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_corner_southwest", + "blueprint_name": "southwest trench", + "blueprint_provides": [ { "id": "fbmf_trench_southwest" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_trench_southwest" }, { "id": "fbmf_trench_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_east", + "description": "Digging a trench along the east edge of the camp would provide some defense and generate building materials. We'll need to run the trench the length of the camp if we don't have solid buildings all along the east side.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_east", + "blueprint_name": "east trench", + "blueprint_provides": [ { "id": "fbmf_trench_east" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_trench_southeast" }, { "id": "fbmf_trench_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_trench_west", + "description": "Digging a trench along the west edge of the camp would provide some defense and generate building materials. We'll need to run the trench the length of the camp if we don't have solid buildings all along the west side.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_trench_west", + "blueprint_name": "west trench", + "blueprint_provides": [ { "id": "fbmf_trench_west" } ], + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_trench_southwest" }, { "id": "fbmf_trench_northwest" } ], + "blueprint_autocalc": true + } +] diff --git a/data/json/recipes/basecamps/recipe_modular_field_metal.json b/data/json/recipes/basecamps/recipe_modular_field_metal.json new file mode 100644 index 0000000000000..2828f49324962 --- /dev/null +++ b/data/json/recipes/basecamps/recipe_modular_field_metal.json @@ -0,0 +1,337 @@ +[ + { + "type": "recipe", + "result": "faction_base_modular_field_room0_metal_northeast", + "description": "We need some shelter, so build half of a metal shack with a metal roof on the northeast side of the camp", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room0_metal_northeast", + "blueprint_name": "northeast shack", + "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], + "blueprint_provides": [ { "id": "fbmf_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room1_metal_northeast", + "description": "We should use metal to expand the shelter so we have space for another bed.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room1_metal_northeast", + "blueprint_name": "expand northeast shack", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 2 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room2_metal_northeast", + "description": "We should use metal to finish the northeast shack.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room2_metal_northeast", + "blueprint_name": "finish northeast shack", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_metal_east", + "description": "We should expand our housing by putting up a metal building on the east side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_metal_east", + "blueprint_name": "east shack", + "blueprint_requires": [ { "id": "fbmf_tent_northeast" }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_metal_east", + "description": "We should expand our housing by adding a metal room on the east side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_metal_east", + "blueprint_name": "east room", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_east" }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_metal_southeast", + "description": "We should expand our housing by putting up a metal building on the southeast side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_metal_southeast", + "blueprint_name": "southeast shack", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_metal_southeast", + "description": "We should expand our housing by adding a metal room on the southeast side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_metal_southeast", + "blueprint_name": "southeast room", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_metal_northwest", + "description": "We should expand our housing by putting up a metal building on the northwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_metal_northwest", + "blueprint_name": "northwest shack", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_metal_west", + "description": "We should expand our housing by putting up a metal building on the west side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_metal_west", + "blueprint_name": "west shack", + "blueprint_requires": [ { "id": "fbmf_tent_northwest" } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_metal_west", + "description": "We should expand our housing by adding a metal room on the west side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_metal_west", + "blueprint_name": "west room", + "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_west" }, { "id": "fbmf_tent_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_metal_soutwest", + "description": "We should expand our housing by putting up a metal building on the southwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_metal_southwest", + "blueprint_name": "southwest shack", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_metal_southwest", + "description": "We should expand our housing by adding a metal room on the southwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_metal_southwest", + "blueprint_name": "southwest room", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_ne_metal_center", + "description": "A central building can act as a kitchen and dining hall. We should build the northeast quarter of one from metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_ne_metal_center", + "blueprint_name": "central building NE corner", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_ne_metal_center", + "description": "A central building can act as a core and dining hall. We should build out from the east room with metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_ne_metal_center", + "blueprint_name": "central building NE corner", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_nw_metal_center", + "description": "A central building can act as a core and dining hall. We should build the northwest quarter of one from metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_nw_metal_center", + "blueprint_name": "central building NW corner", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_nw_center" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_nw_metal_center", + "description": "A central building can act as a core and dining hall. We should build out from the west room with metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_nw_metal_center", + "blueprint_name": "central building NW corner", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_metal_center", + "description": "A central building can act as a core and dining hall. We should build between the east and west rooms with metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_metal_center", + "blueprint_name": "central building north half", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_east" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_se_metal_south", + "description": "A central building can act as a core and dining hall. We should build the southeast quarter of one from metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_se_metal_south", + "blueprint_name": "central building SE corner", + "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], + "blueprint_excludes": [ { "id": "fbmf_se_south" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_se_metal_south", + "description": "A central building can act as a core and dining hall. We should build out from the southeast room with metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_se_metal_south", + "blueprint_name": "central building SE corner", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], + "blueprint_excludes": [ { "id": "fbmf_se_south" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_sw_metal_south", + "description": "A central building can act as a core and dining hall. We should build the southwest quarter of one from metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_sw_metal_south", + "blueprint_name": "central building SW corner", + "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmf_sw_south" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_sw_metal_south", + "description": "A central building can act as a core and dining hall. We should build out from the southwest room with metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_sw_metal_south", + "blueprint_name": "central building SW corner", + "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmf_sw_south" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_metal_south", + "description": "A central building can act as a core and dining hall. We should build between the southeast and southwest rooms with metal.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_metal_south", + "blueprint_name": "central building south half", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ + { "id": "fbmf_se_south" }, + { "id": "fbmf_sw_south" }, + { "id": "fbmf_tent_southeast" }, + { "id": "fbmf_tent_southwest" } + ], + "blueprint_autocalc": true + } +] diff --git a/data/json/recipes/basecamps/recipe_modular_field_tent.json b/data/json/recipes/basecamps/recipe_modular_field_tent.json new file mode 100644 index 0000000000000..708c4b8e8fec2 --- /dev/null +++ b/data/json/recipes/basecamps/recipe_modular_field_tent.json @@ -0,0 +1,104 @@ +[ + { + "type": "recipe", + "result": "faction_base_modular_field_tent_northeast", + "description": "We need some shelter, so set up a tent on the northeast side of the camp.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "3 h", + "construction_blueprint": "fbmf_tent_northeast", + "blueprint_name": "northeast tent", + "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], + "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_east", + "description": "We should expand our housing by putting up a tent on the east side, though doing so will mean we will need more materials to build the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "3 h", + "construction_blueprint": "fbmf_tent_east", + "blueprint_name": "east tent", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_tent_east" } ], + "blueprint_excludes": [ { "id": "fbmf_east" } ], + "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_southeast", + "description": "We should expand our housing by putting up a tent on the southeast side, though doing so will mean we will need more materials to build the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "3 h", + "construction_blueprint": "fbmf_tent_southeast", + "blueprint_name": "southeast tent", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_tent_southeast" } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_northwest", + "description": "We should expand our housing by putting up a tent on the northwest side, though doing so will mean we will need more materials to build the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "3 h", + "construction_blueprint": "fbmf_tent_northwest", + "blueprint_name": "northwest tent", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 }, { "id": "fbmf_tent_northwest" } ], + "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_northwest", + "description": "We should expand our housing by putting up a tent on the west side, though doing so will mean we will need more materials to build the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "3 h", + "construction_blueprint": "fbmf_tent_west", + "blueprint_name": "west tent", + "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 }, { "id": "fbmf_tent_west" } ], + "blueprint_excludes": [ { "id": "fbmf_west" } ], + "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] + }, + { + "type": "recipe", + "result": "faction_base_modular_field_tent_northwest", + "description": "We should expand our housing by putting up a tent on the southwest side, though doing so will mean we will need more materials to build the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "time": "3 h", + "construction_blueprint": "fbmf_tent_southwest", + "blueprint_name": "southwest tent", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 }, { "id": "fbmf_tent_southwest" } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "components": [ [ [ "large_tent_kit", 1 ], [ "broketent", 4 ], [ "tent_kit", 3 ], [ "shelter_kit", 4 ] ] ] + } +] diff --git a/data/json/recipes/basecamps/recipe_modular_field_wad.json b/data/json/recipes/basecamps/recipe_modular_field_wad.json new file mode 100644 index 0000000000000..e5142bd3da24c --- /dev/null +++ b/data/json/recipes/basecamps/recipe_modular_field_wad.json @@ -0,0 +1,341 @@ +[ + { + "type": "recipe", + "result": "faction_base_modular_field_room0_wad_northeast", + "description": "We need some shelter, so build half of a wattle-and-daub shack with a sod roof on the northeast side of the camp", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room0_wad_northeast", + "blueprint_name": "northeast shack", + "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], + "blueprint_provides": [ { "id": "fbmf_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room1_wad_northeast", + "description": "We should use wattle-and-daub to expand the shelter so we have space for another bed.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room1_wad_northeast", + "blueprint_name": "expand northeast shack", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 2 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room2_wad_northeast", + "description": "We should use wattle-and-daub to finish the northeast shack.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room2_wad_northeast", + "blueprint_name": "finish northeast shack", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wad_east", + "description": "We should expand our housing by putting up a wattle-and-daub building on the east side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wad_east", + "blueprint_name": "east shack", + "blueprint_requires": [ { "id": "fbmf_tent_northeast" }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wad_east", + "description": "We should expand our housing by adding a wattle-and-daub room on the east side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wad_east", + "blueprint_name": "east room", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_east" }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wad_southeast", + "description": "We should expand our housing by putting up a wattle-and-daub building on the southeast side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wad_southeast", + "blueprint_name": "southeast shack", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wad_southeast", + "description": "We should expand our housing by adding a wattle-and-daub room on the southeast side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skills_required": [ [ "survival", 3 ], [ "tailor", 1 ] ], + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wad_southeast", + "blueprint_name": "southeast room", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wad_northwest", + "description": "We should expand our housing by putting up a wattle-and-daub building on the northwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wad_northwest", + "blueprint_name": "northwest shack", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wad_west", + "description": "We should expand our housing by putting up a wattle-and-daub building on the west side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wad_west", + "blueprint_name": "west shack", + "blueprint_requires": [ { "id": "fbmf_tent_northwest" } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wad_west", + "description": "We should expand our housing by adding a wattle-and-daub room on the west side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wad_west", + "blueprint_name": "west room", + "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_west" }, { "id": "fbmf_tent_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wad_southwest", + "description": "We should expand our housing by putting up a wattle-and-daub building on the southwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wad_southwest", + "blueprint_name": "southwest shack", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wad_southwest", + "description": "We should expand our housing by adding a wattle-and-daub room on the southwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wad_southwest", + "blueprint_name": "southwest room", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_ne_wad_center", + "description": "A central building can act as a kitchen and dining hall. We should build the northeast quarter of one from wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_ne_wad_center", + "blueprint_name": "central building NE corner", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_ne_wad_center", + "description": "A central building can act as a core and dining hall. We should build out from the east room with wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_ne_wad_center", + "blueprint_name": "central building NE corner", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_nw_wad_center", + "description": "A central building can act as a core and dining hall. We should build the northwest quarter of one from wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_nw_wad_center", + "blueprint_name": "central building NW corner", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_nw_center" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_nw_wad_center", + "description": "A central building can act as a core and dining hall. We should build out from the west room with wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_nw_wad_center", + "blueprint_name": "central building NW corner", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_wad_center", + "description": "A central building can act as a core and dining hall. We should build between the east and west rooms with wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_wad_center", + "blueprint_name": "central building north half", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_east" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_se_wad_south", + "description": "A central building can act as a core and dining hall. We should build the southeast quarter of one from wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_se_wad_south", + "blueprint_name": "central building SE corner", + "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], + "blueprint_excludes": [ { "id": "fbmf_se_south" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_se_wad_south", + "description": "A central building can act as a core and dining hall. We should build out from the southeast room with wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "skill_used": "fabrication", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_se_wad_south", + "blueprint_name": "central building SE corner", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], + "blueprint_excludes": [ { "id": "fbmf_se_south" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_sw_wad_south", + "description": "A central building can act as a core and dining hall. We should build the southwest quarter of one from wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_sw_wad_south", + "blueprint_name": "central building SW corner", + "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmf_sw_south" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_sw_wad_south", + "description": "A central building can act as a core and dining hall. We should build out from the southwest room with wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_sw_wad_south", + "blueprint_name": "central building SW corner", + "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmf_sw_south" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_wad_south", + "description": "A central building can act as a core and dining hall. We should build between the southeast and southwest rooms with wattle-and-daub.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_wad_south", + "blueprint_name": "central building south half", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ + { "id": "fbmf_se_south" }, + { "id": "fbmf_sw_south" }, + { "id": "fbmf_tent_southeast" }, + { "id": "fbmf_tent_southwest" } + ], + "blueprint_autocalc": true + } +] diff --git a/data/json/recipes/basecamps/recipe_modular_field_wood.json b/data/json/recipes/basecamps/recipe_modular_field_wood.json new file mode 100644 index 0000000000000..7c10c661bfddb --- /dev/null +++ b/data/json/recipes/basecamps/recipe_modular_field_wood.json @@ -0,0 +1,337 @@ +[ + { + "type": "recipe", + "result": "faction_base_modular_field_room0_wood_northeast", + "description": "We need some shelter, so build half of a wood panel shack with a wooden roof on the northeast side of the camp", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room0_wood_northeast", + "blueprint_name": "northeast shack", + "blueprint_requires": [ { "id": "faction_base_modular_field_0" } ], + "blueprint_provides": [ { "id": "fbmf_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room1_wood_northeast", + "description": "We should use wood panel to expand the shelter so we have space for another bed.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room1_wood_northeast", + "blueprint_name": "expand northeast shack", + "blueprint_requires": [ { "id": "fbmf_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northeast" } ], + "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 2 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room2_wood_northeast", + "description": "We should use wood panel to finish the northeast shack.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room2_wood_northeast", + "blueprint_name": "finish northeast shack", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_provides": [ { "id": "fbmf_northeast", "amount": 2 } ], + "blueprint_excludes": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wood_east", + "description": "We should expand our housing by putting up a wood panel building on the east side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wood_east", + "blueprint_name": "east shack", + "blueprint_requires": [ { "id": "fbmf_tent_northeast" }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wood_east", + "description": "We should expand our housing by adding a wood panel room on the east side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wood_east", + "blueprint_name": "east room", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_east" }, { "id": "fbmf_tent_northeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wood_southeast", + "description": "We should expand our housing by putting up a wood panel building on the southeast side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wood_southeast", + "blueprint_name": "southeast shack", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wood_southeast", + "description": "We should expand our housing by adding a wood panel room on the southeast side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wood_southeast", + "blueprint_name": "southeast room", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southeast" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wood_northwest", + "description": "We should expand our housing by putting up a wood panel building on the northwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wood_northwest", + "blueprint_name": "northwest shack", + "blueprint_requires": [ { "id": "fbmf_northeast", "amount": 4 }, { "id": "fbmf_fire_northeast" }, { "id": "fbmf_bed2_northeast" } ], + "blueprint_provides": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wood_west", + "description": "We should expand our housing by putting up a wood panel building on the west side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wood_west", + "blueprint_name": "west shack", + "blueprint_requires": [ { "id": "fbmf_tent_northwest" } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wood_west", + "description": "We should expand our housing by adding a wood panel room on the west side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wood_west", + "blueprint_name": "west room", + "blueprint_requires": [ { "id": "fbmf_northwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_west" }, { "id": "fbmf_tent_northwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_shack4_wood_southwest", + "description": "We should expand our housing by putting up a wood panel building on the southwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_shack4_wood_southwest", + "blueprint_name": "southwest shack", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_room4_wood_southwest", + "description": "We should expand our housing by adding a wood panel room on the southwest side, which we can also use as part of the central building.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_room4_wood_southwest", + "blueprint_name": "southwest room", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_excludes": [ { "id": "fbmf_southwest" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_ne_wood_center", + "description": "A central building can act as a kitchen and dining hall. We should build the northeast quarter of one from wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_ne_wood_center", + "blueprint_name": "central building NE corner", + "blueprint_requires": [ { "id": "fbmf_tent_east" } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_ne_wood_center", + "description": "A central building can act as a core and dining hall. We should build out from the east room with wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_ne_wood_center", + "blueprint_name": "central building NE corner", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_ne_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_tent_east" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_nw_wood_center", + "description": "A central building can act as a core and dining hall. We should build the northwest quarter of one from wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_nw_wood_center", + "blueprint_name": "central building NW corner", + "blueprint_requires": [ { "id": "fbmf_tent_west" } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_nw_center" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_nw_wood_center", + "description": "A central building can act as a core and dining hall. We should build out from the west room with wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_nw_wood_center", + "blueprint_name": "central building NW corner", + "blueprint_requires": [ { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 2 }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_wood_center", + "description": "A central building can act as a core and dining hall. We should build between the east and west rooms with wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_wood_center", + "blueprint_name": "central building north half", + "blueprint_requires": [ { "id": "fbmf_east", "amount": 4 }, { "id": "fbmf_west", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_center", "amount": 4 }, { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" } ], + "blueprint_excludes": [ { "id": "fbmf_ne_center" }, { "id": "fbmf_nw_center" }, { "id": "fbmf_tent_east" }, { "id": "fbmf_tent_west" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_se_wood_south", + "description": "A central building can act as a core and dining hall. We should build the southeast quarter of one from wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_se_wood_south", + "blueprint_name": "central building SE corner", + "blueprint_requires": [ { "id": "fbmf_tent_southeast" } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], + "blueprint_excludes": [ { "id": "fbmf_se_south" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_se_wood_south", + "description": "A central building can act as a core and dining hall. We should build out from the southeast room with wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_se_wood_south", + "blueprint_name": "central building SE corner", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_se_south" } ], + "blueprint_excludes": [ { "id": "fbmf_se_south" }, { "id": "fbmf_tent_southeast" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_shack_sw_wood_south", + "description": "A central building can act as a core and dining hall. We should build the southwest quarter of one from wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_shack_sw_wood_south", + "blueprint_name": "central building SW corner", + "blueprint_requires": [ { "id": "fbmf_tent_southwest" } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmf_sw_south" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_sw_wood_south", + "description": "A central building can act as a core and dining hall. We should build out from the southwest room with wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_sw_wood_south", + "blueprint_name": "central building SW corner", + "blueprint_requires": [ { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 2 }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ { "id": "fbmf_sw_south" }, { "id": "fbmf_tent_southwest" } ], + "blueprint_autocalc": true + }, + { + "type": "recipe", + "result": "faction_base_modular_field_core_wood_south", + "description": "A central building can act as a core and dining hall. We should build between the southeast and southwest rooms with wood panel.", + "category": "CC_BUILDING", + "subcategory": "CSC_BUILDING_BASES", + "autolearn": false, + "never_learn": true, + "construction_blueprint": "fbmf_core_wood_south", + "blueprint_name": "central building south half", + "blueprint_requires": [ { "id": "fbmf_southeast", "amount": 4 }, { "id": "fbmf_southwest", "amount": 4 } ], + "blueprint_provides": [ { "id": "fbmf_south", "amount": 4 }, { "id": "fbmf_se_south" }, { "id": "fbmf_sw_south" } ], + "blueprint_excludes": [ + { "id": "fbmf_se_south" }, + { "id": "fbmf_sw_south" }, + { "id": "fbmf_tent_southeast" }, + { "id": "fbmf_tent_southwest" } + ], + "blueprint_autocalc": true + } +] diff --git a/doc/BASECAMP.md b/doc/BASECAMP.md index a228ef00c1bbb..5a9ea97e3190d 100644 --- a/doc/BASECAMP.md +++ b/doc/BASECAMP.md @@ -1,13 +1,11 @@ # Adding alternate basecamp upgrade paths -This doesn't work yet. - A basecamp upgrade path is a series of basecamp upgrade missions that upgrade the camp. Upgrade missions are generally performed sequentially, but there is an option to have them branch. Branched missions optionally can have further missions that require missions from other branches. Bascamp upgrade paths are defined by several related files: * The recipe JSONs that define what the material, tool, and skill requirements to perform an upgrade mission and the blueprint mapgen, blueprint requirements, blueprint provides, and blueprint resources associated with each upgrade mission. * The mapgen_update JSONs that define how the map will change when the upgrade mission is complete. These may include shared instances of nested mapgen, such a standard room or tent. -* The recipe_group JSONs that define what recipes can be crafted after completing the upgrade mission. +* The recipe_group JSONs that define what recipes can be crafted after completing the upgrade mission and what camps and expansions are avialable. ## recipe JSONs The recipe JSONs are standard recipe JSONs, with the addition of a few fields. @@ -31,6 +29,10 @@ These are arbitrary strings and can be used to control the branching of the upgr provides `"id"` | meaning -- | -- `"bed"` | every 2 `"amount"`' of `"bed"` allows another expansion in the camp, to a maximum of 8, not include the camp center. +`"tool_storage"` | after this upgrade mission is complete, the Store Tools mission will be available +. +`"radio"` | after this upgrade mission is complete, two way radios communicating to the camp have extended range. +`"pantry"` | after this upgrade mission is complete, the Distribute Food mission is more efficient when dealing with short term spoilage items. `"gathering"` | after this upgrade mission is complete, the Gather Materials, Distribute Food, and Reset Sort Points basecamp missions will be available. `"firewood"` | after this upgrade mission is complete, the Gather Firewood basecamp mission will be available. `"sorting"` | after this upgrade mission is complete, the Menial Labor basecamp mission will be available. @@ -107,6 +109,31 @@ These are standard mapgen_update JSON; see doc/MAPGEN.md for more details. Each This mapgen_update places a large tent in the west central portion of the camp. The `"place_nested"` references a standard map used in the primitive field camp. +## Recipe groups +Recipe groups serve two purposes: they indicate what recipes can produced by the camp after an upgrade mission is completed, and they indicate what upgrade paths are available and where camps can be placed. + +### Upgrade Paths and Expansions +There are two special recipe groups, `"all_faction_base_types"` and `"all_faction_base_expansions"`. They both look like this: +```json + { + "type": "recipe_group", + "name": "all_faction_base_expansions", + "building_type": "NONE", + "recipes": [ + { "id": "faction_base_farm_0", "description": "Farm", "om_terrains": [ "field" ] }, + { "id": "faction_base_garage_0", "description": "Garage", "om_terrains": [ "field" ] }, + { "id": "faction_base_kitchen_0", "description": "Kitchen", "om_terrains": [ "field" ] }, + { "id": "faction_base_blacksmith_0", "description": "Blacksmith Shop", "om_terrains": [ "field" ] } + ] + }, +``` + +Each entry in the `"recipes"` array must be a dictionary with the `"id"`, `"description"`, and `"om_terrains"` fields. `"id"` is the recipe `"id"` of the recipe that starts that basecamp or basecamp expansion upgrade path. `"description"` is a short name of the basecamp or basecamp expansion. `"om_terrains"` is a list of overmap terrain ids which can be used as the basis for the basecamp or basecamp expansion. + +All recipes that start an upgrade path or expansion should have a blueprint requirement that can never be met, such as "not_an_upgrade", to prevent them from showing up as available upgrades. + +If the player attempts to start a basecamp on an overmap terrain that has two or more valid basecamp expansion paths, she will allowed to choose which path to start. + ## Sample basecamp upgrade path The primitive field camp has the following upgrade path: @@ -124,3 +151,35 @@ or `"faction_base_camp_19"` - building the camp's radio tower, which can be foll 7. `"faction_base_camp_17"` - adding better doors to camp wall and the central building must be built after `"faction_base_camp_14"` and `"faction_base_camp_16"`. After setting up the first tent, the player has a lot of options: they can build additional tents to enable expansions, they can build the well for water, they can build as much or as little of the central kitchen as they desire, or add the wall to give the camp defenses, or the radio tower to improve the range of their two-way radios. + +## Modular Basecamp conventions +The modular basecamp is a structure for designing basecamp upgrade paths. You don't have to use it, but elements of the design might get more code support in the future. + +### Layout +A modular camp is laid out on a 24x24 overmap tile. The outer 3 map squares on each side are reserved for fortifications and movement corridors, and the inner 18x18 map squares are divided into a 3x3 grid of 6x6 areas. + +Area | upper left position | lower right position +-- | -- | -- +northwest | 3, 3 | 8, 8 +north | 9, 3 | 14, 8 +northeast | 15, 3 | 20, 8 +west | 3, 9 | 8, 14 +center | 9, 9 | 14, 14 +east | 15, 9, | 20, 14 +southwest | 3, 15 | 8, 20 +south | 9, 15 | 14, 20 +southeast | 15, 15 | 20, 20 + +Ideally, nested mapgen chunks should fit entirely into a 6x6 area. + +### Naming scheme +Modular bases use the following naming scheme for recipes. Each element is separated by an `_` + +* `"faction_base"` <-- encouraged for all basecamp recipes, _and_ +* `"modular"` <-- indicates a modular construction, _and_ +* overmap terrain id <-- the base terrain that this modular base is built upon, _and_ +* DESCRIPTOR <-- arbitrary string that describes what is being built. For buildings, "room" is used to mean a construction that is intended to be part of a larger building and might share walls with other parts of the building in adjacent areas; "shack" means a free standing building. Numbers indicate stages of construction, with 4 usually meaning a complete structure, with walls and roof, _and_ +* MATERIAL <-- the type of material used in construction, such as metal, wood, brick, or wad (short for wattle-and-daub), _and_ +* AREA <-- the area in the 3x3 grid of the modular camp layout. + +blueprint keywords follow a similar scheme, but `"faction_base_modular"` is collapsed into `"fbm"` and the overmap terrain id is collapsed into a short identifier. ie, `"fbmf"` is the keyword identifier for elements of the modular field base. diff --git a/src/basecamp.cpp b/src/basecamp.cpp index 26e67b0dd9e86..bbea03cd6a4b4 100644 --- a/src/basecamp.cpp +++ b/src/basecamp.cpp @@ -23,6 +23,7 @@ #include "player.h" #include "npc.h" #include "recipe.h" +#include "recipe_dictionary.h" #include "recipe_groups.h" #include "requirements.h" #include "rng.h" @@ -131,7 +132,20 @@ void basecamp::add_expansion( const std::string &terrain, const tripoint &new_po directions.push_back( dir ); } -void basecamp::define_camp( npc &p ) +void basecamp::add_expansion( const std::string &bldg, const tripoint &new_pos, + const std::string &dir ) +{ + expansion_data e; + e.type = base_camps::faction_decode( bldg ); + e.cur_level = -1; + e.pos = new_pos; + expansions[ dir ] = e; + directions.push_back( dir ); + update_provides( bldg, expansions[ dir ] ); + update_resources( bldg ); +} + +void basecamp::define_camp( npc &p, const std::string &camp_type ) { query_new_name(); omt_pos = p.global_omt_location(); @@ -144,8 +158,8 @@ void basecamp::define_camp( npc &p ) const std::string om_cur = omt_ref.id().c_str(); if( om_cur.find( base_camps::prefix ) == std::string::npos ) { expansion_data e; - e.type = "camp"; - e.cur_level = 0; + e.type = base_camps::faction_decode( camp_type ); + e.cur_level = -1; e.pos = omt_pos; expansions[ base_camps::base_dir ] = e; omt_ref = oter_id( "faction_base_camp_0" ); @@ -245,9 +259,9 @@ const std::vector basecamp::available_upgrades( const std::str auto e = expansions.find( dir ); if( e != expansions.end() ) { expansion_data &e_data = e->second; - for( int number = 1; number < base_camps::max_upgrade_by_type( e_data.type ); number++ ) { - const std::string &bldg = base_camps::faction_encode_abs( e_data, number ); - const recipe &recp = recipe_id( bldg ).obj(); + for( const recipe *recp_p : recipe_dict.all_blueprints() ) { + const recipe &recp = *recp_p; + const std::string &bldg = recp.result().c_str(); // skip buildings that are completed if( e_data.provides.find( bldg ) != e_data.provides.end() ) { continue; @@ -303,19 +317,19 @@ const std::vector basecamp::available_upgrades( const std::str // recipes and craft support functions std::map basecamp::recipe_deck( const std::string &dir ) const { - if( dir == "ALL" || dir == "COOK" || dir == "BASE" || dir == "FARM" || dir == "SMITH" ) { - return recipe_group::get_recipes( dir ); + std::map recipes = recipe_group::get_recipes_by_bldg( dir ); + if( !recipes.empty() ) { + return recipes; } - std::map cooking_recipes; const auto &e = expansions.find( dir ); if( e == expansions.end() ) { - return cooking_recipes; + return recipes; } for( const auto &provides : e->second.provides ) { - std::map test_s = recipe_group::get_recipes( provides.first ); - cooking_recipes.insert( test_s.begin(), test_s.end() ); + const auto &test_s = recipe_group::get_recipes_by_id( provides.first ); + recipes.insert( test_s.begin(), test_s.end() ); } - return cooking_recipes; + return recipes; } const std::string basecamp::get_gatherlist() const @@ -329,7 +343,6 @@ const std::string basecamp::get_gatherlist() const } } return "forest"; - } void basecamp::add_resource( const itype_id &camp_resource ) @@ -622,19 +635,13 @@ std::string basecamp::expansion_tab( const std::string &dir ) const if( dir == base_camps::base_dir ) { return _( "Base Missions" ); } - auto e = expansions.find( dir ); + const auto &expansion_types = recipe_group::get_recipes_by_id( "all_faction_base_expansions" ); + + const auto &e = expansions.find( dir ); if( e != expansions.end() ) { - if( e->second.type == "garage" ) { - return _( "Garage Expansion" ); - } - if( e->second.type == "kitchen" ) { - return _( "Kitchen Expansion" ); - } - if( e->second.type == "blacksmith" ) { - return _( "Blacksmith Expansion" ); - } - if( e->second.type == "farm" ) { - return _( "Farm Expansion" ); + const auto e_type = expansion_types.find( base_camps::faction_encode_abs( e->second, 0 ) ); + if( e_type != expansion_types.end() ) { + return e_type->second + _( "Expansion" ); } } return _( "Empty Expansion" ); diff --git a/src/basecamp.h b/src/basecamp.h index 645dcfe9a6342..f82a4a561da23 100644 --- a/src/basecamp.h +++ b/src/basecamp.h @@ -112,7 +112,9 @@ class basecamp void set_name( const std::string &new_name ); void query_new_name(); void add_expansion( const std::string &terrain, const tripoint &new_pos ); - void define_camp( npc &p ); + void add_expansion( const std::string &bldg, const tripoint &new_pos, + const std::string &dir ); + void define_camp( npc &p, const std::string &camp_type = "default" ); std::string expansion_tab( const std::string &dir ) const; diff --git a/src/faction_camp.cpp b/src/faction_camp.cpp index 3001aa4050732..2d03187ee035b 100644 --- a/src/faction_camp.cpp +++ b/src/faction_camp.cpp @@ -106,6 +106,9 @@ struct miss_data { std::string ret_desc; }; +std::string select_camp_option( const std::map &pos_options, + const std::string &option ); + // enventually this will move to JSON std::map miss_info = {{ { @@ -421,7 +424,7 @@ static bool update_time_fixed( std::string &entry, const comp_list &npc_list, return avail; } -static cata::optional get_basecamp( npc &p ) +static cata::optional get_basecamp( npc &p, const std::string &camp_type = "default" ) { tripoint omt_pos = p.global_omt_location(); @@ -435,46 +438,79 @@ static cata::optional get_basecamp( npc &p ) return cata::nullopt; } basecamp *temp_camp = *bcp; - temp_camp->define_camp( p ); + temp_camp->define_camp( p, camp_type ); return temp_camp; } +std::string base_camps::select_camp_option( const std::map &pos_options, + const std::string &option ) +{ + std::vector pos_name_ids; + std::vector pos_names; + for( const auto &it : pos_options ) { + pos_names.push_back( it.first ); + pos_name_ids.push_back( it.second ); + } + + if( pos_name_ids.size() == 1 ) { + return pos_name_ids.front(); + } + + const int choice = uilist( _( option ), pos_names ); + if( choice < 0 || static_cast( choice ) >= pos_name_ids.size() ) { + popup( _( "You choose to wait..." ) ); + return std::string(); + } + return pos_name_ids[choice]; +} + void talk_function::start_camp( npc &p ) { const tripoint omt_pos = p.global_omt_location(); oter_id &omt_ref = overmap_buffer.ter( omt_pos ); - if( omt_ref.id() != "field" ) { - popup( _( "You must build your camp in an empty field." ) ); + const auto &pos_camps = recipe_group::get_recipes_by_id( "all_faction_base_types", + omt_ref.id().c_str() ); + if( pos_camps.empty() ) { + popup( _( "You cannot build a camp here." ) ); + return; + } + const std::string &camp_type = base_camps::select_camp_option( pos_camps, + _( "Select a camp type:" ) ); + if( camp_type.empty() ) { return; } std::vector> om_region = om_building_region( omt_pos, 1 ); + int near_fields = 0; for( const auto &om_near : om_region ) { - if( om_near.first != "field" && om_near.first != "forest" && - om_near.first != "forest_thick" && om_near.first != "forest_water" && - om_near.first.find( "river_" ) == std::string::npos ) { - popup( _( "You need more room for camp expansions!" ) ); - return; + const oter_id &om_type = oter_id( om_near.first ); + if( is_ot_subtype( "field", om_type ) ) { + near_fields += 1; } } + if( near_fields < 4 ) { + popup( _( "You need more at least 4 adjacent for camp expansions!" ) ); + return; + } std::vector> om_region_ext = om_building_region( omt_pos, 3 ); int forests = 0; int waters = 0; int swamps = 0; int fields = 0; for( const auto &om_near : om_region_ext ) { - if( om_near.first.find( "faction_base_camp" ) != std::string::npos ) { + const oter_id &om_type = oter_id( om_near.first ); + if( is_ot_subtype( "faction_base", om_type ) ) { popup( _( "You are too close to another camp!" ) ); return; } - if( om_near.first == "forest" || om_near.first == "forest_thick" ) { + if( is_ot_type( "forest_water", om_type ) ) { + swamps++; + } else if( is_ot_subtype( "forest", om_type ) ) { forests++; - } else if( om_near.first.find( "river_" ) != std::string::npos ) { + } else if( is_ot_subtype( "river", om_type ) ) { waters++; - } else if( om_near.first == "forest_water" ) { - swamps++; - } else if( om_near.first == "field" ) { + } else if( is_ot_subtype( "field", om_type ) ) { fields++; } } @@ -499,10 +535,12 @@ void talk_function::start_camp( npc &p ) if( display && !query_yn( _( "%s \nAre you sure you wish to continue? " ), buffer ) ) { return; } - if( !run_mapgen_update_func( "faction_base_field_camp_0", omt_pos ) ) { + const recipe &making = recipe_id( camp_type ).obj(); + if( !run_mapgen_update_func( making.get_blueprint(), omt_pos ) ) { + popup( _( "%s failed to start the %s basecamp." ), p.disp_name(), making.get_blueprint() ); return; } - get_basecamp( p ); + get_basecamp( p, camp_type ); } void talk_function::recover_camp( npc &p ) @@ -2115,12 +2153,15 @@ bool basecamp::upgrade_return( const std::string &dir, const std::string &miss, const tripoint upos = e->second.pos; const recipe &making = recipe_id( bldg ).obj(); - npc_ptr comp = companion_choose_return( miss, making.batch_duration() ); + time_duration work_days = base_camps::to_workdays( making.batch_duration() ); + npc_ptr comp = companion_choose_return( miss, work_days ); if( comp == nullptr ) { return false; } if( !run_mapgen_update_func( making.get_blueprint(), upos ) ) { + popup( _( "%s failed to build the %s upgrade." ), comp->disp_name(), + making.get_blueprint() ); return false; } update_provides( bldg, e->second ); @@ -2419,27 +2460,13 @@ bool basecamp::survey_return() if( comp == nullptr ) { return false; } - std::vector pos_expansion_name_id; - std::vector pos_expansion_name; - std::map pos_expansions = - recipe_group::get_recipes( "all_faction_base_expansions" ); - for( std::map::const_iterator it = pos_expansions.begin(); - it != pos_expansions.end(); ++it ) { - pos_expansion_name.push_back( it->first ); - pos_expansion_name_id.push_back( it->second ); - } - - const int expan = uilist( _( "Select an expansion:" ), pos_expansion_name ); - if( expan < 0 || static_cast( expan ) >= pos_expansion_name_id.size() ) { - popup( _( "You choose to wait..." ) ); - return false; - } popup( _( "Select a tile up to %d tiles away." ), 1 ); const tripoint where( ui::omap::choose_point() ); if( where == overmap::invalid_tripoint ) { return false; } + int dist = rl_dist( where.x, where.y, omt_pos.x, omt_pos.y ); if( dist != 1 ) { popup( _( "You must select a tile within %d range of the camp" ), 1 ); @@ -2449,18 +2476,29 @@ bool basecamp::survey_return() popup( _( "Expansions must be on the same level as the camp" ) ); return false; } + const std::string dir = talk_function::om_simple_dir( omt_pos, where ); + if( expansions.find( dir ) != expansions.end() ) { + popup( _( "You already have an expansion at that location" ) ); + return false; + } oter_id &omt_ref = overmap_buffer.ter( where ); - if( omt_ref.id() != "field" ) { - popup( _( "You must construct expansions in fields." ) ); + const auto &pos_expansions = recipe_group::get_recipes_by_id( "all_faction_base_expansions", + omt_ref.id().c_str() ); + if( pos_expansions.empty() ) { + popup( _( "You can't build any expansions in a %s." ), omt_ref.id().c_str() ); return false; } - if( !run_mapgen_update_func( pos_expansion_name_id[expan], where ) ) { + const std::string &expansion_type = base_camps::select_camp_option( pos_expansions, + _( "Select an expansion:" ) ); + + if( !run_mapgen_update_func( expansion_type, where ) ) { + popup( _( "%s failed to add the %s expansion" ), comp->disp_name(), expansion_type ); return false; } - omt_ref = oter_id( pos_expansion_name_id[expan] ); - add_expansion( pos_expansion_name_id[expan], where ); + omt_ref = oter_id( expansion_type ); + add_expansion( expansion_type, where, dir ); const std::string msg = _( "returns from surveying for the expansion." ); finish_return( *comp, true, msg, "construction", 2 ); return true; diff --git a/src/item_factory.cpp b/src/item_factory.cpp index ad1fc44451fdd..bdb6f531ba33f 100644 --- a/src/item_factory.cpp +++ b/src/item_factory.cpp @@ -1152,13 +1152,14 @@ const itype *Item_factory::find_template( const itype_id &id ) const } //If we didn't find the item maybe it is a building instead! - if( oter_str_id( id.c_str() ).is_valid() ) { + const recipe_id &making_id = recipe_id( id.c_str() ); + if( oter_str_id( id.c_str() ).is_valid() || + ( making_id.is_valid() && making_id.obj().is_blueprint() ) ) { itype *def = new itype(); def->id = id; def->name = string_format( "DEBUG: %s", id.c_str() ); def->name_plural = string_format( "%s", id.c_str() ); - const recipe *making = &recipe_id( id.c_str() ).obj(); - def->description = string_format( making->description ); + def->description = string_format( making_id.obj().description ); m_runtimes[ id ].reset( def ); return def; } diff --git a/src/recipe.cpp b/src/recipe.cpp index 6065491069fc3..fa6d90d29e0cb 100644 --- a/src/recipe.cpp +++ b/src/recipe.cpp @@ -44,7 +44,7 @@ int recipe::batch_time( int batch, float multiplier, size_t assistants ) const // if recipe does not benefit from batching and we have no assistants, don't do unnecessary additional calculations if( batch_rscale == 0.0 && assistants == 0 ) { - return local_time * batch; + return static_cast( local_time ) * batch; } float total_time = 0.0; @@ -309,11 +309,14 @@ void recipe::add_requirements( const std::vector> std::string recipe::get_consistency_error() const { - if( !item::type_is_defined( result_ ) && category != "CC_BUILDING" ) { + if( category == "CC_BUILDING" ) { + if( is_blueprint() || oter_str_id( result_.c_str() ).is_valid() ) { + return std::string(); + } return "defines invalid result"; } - if( category == "CC_BUILDING" && !oter_str_id( result_.c_str() ).is_valid() ) { + if( !item::type_is_defined( result_ ) ) { return "defines invalid result"; } diff --git a/src/recipe_dictionary.cpp b/src/recipe_dictionary.cpp index 0cbcbcb7b5e26..7c3edc3d1cb2c 100644 --- a/src/recipe_dictionary.cpp +++ b/src/recipe_dictionary.cpp @@ -375,16 +375,20 @@ void recipe_dictionary::finalize() } } - // Cache auto-learn recipes + // Cache auto-learn recipes and blueprints for( const auto &e : recipe_dict.recipes ) { if( e.second.autolearn ) { recipe_dict.autolearn.insert( &e.second ); } + if( e.second.is_blueprint() ) { + recipe_dict.blueprints.insert( &e.second ); + } } } void recipe_dictionary::reset() { + recipe_dict.blueprints.clear(); recipe_dict.autolearn.clear(); recipe_dict.recipes.clear(); recipe_dict.uncraft.clear(); diff --git a/src/recipe_dictionary.h b/src/recipe_dictionary.h index 70ff2f6595dc0..33dd7f7f80b60 100644 --- a/src/recipe_dictionary.h +++ b/src/recipe_dictionary.h @@ -30,6 +30,11 @@ class recipe_dictionary return autolearn; } + /** Returns all blueprints */ + const std::set &all_blueprints() const { + return blueprints; + } + size_t size() const; std::map::const_iterator begin() const; std::map::const_iterator end() const; @@ -57,6 +62,7 @@ class recipe_dictionary std::map recipes; std::map uncraft; std::set autolearn; + std::set blueprints; static void finalize_internal( std::map &obj ); }; diff --git a/src/recipe_groups.cpp b/src/recipe_groups.cpp index 4e64ba8300818..b3c2bbb422e2c 100644 --- a/src/recipe_groups.cpp +++ b/src/recipe_groups.cpp @@ -23,7 +23,8 @@ using group_id = string_id; struct recipe_group_data { group_id id; std::string building_type = "NONE"; - std::map cooking_recipes; + std::map recipes; + std::map> om_terrains; bool was_loaded; void load( JsonObject &jo, const std::string &src ); @@ -43,45 +44,69 @@ void recipe_group_data::load( JsonObject &jo, const std::string & ) JsonObject ordering = jsarr.next_object(); const std::string name_id = ordering.get_string( "id" ); const std::string desc = ordering.get_string( "description" ); - cooking_recipes[desc] = name_id; + recipes[desc] = name_id; + om_terrains[name_id] = std::set(); + JsonArray js_terr = ordering.get_array( "om_terrains" ); + while( js_terr.has_more() ) { + const std::string ter_type = js_terr.next_string(); + om_terrains[name_id].insert( ter_type ); + } } - } void recipe_group_data::check() const { - for( auto a : cooking_recipes ) { + for( const auto &a : recipes ) { if( !recipe_id( a.second ).is_valid() ) { debugmsg( "%s is not a valid recipe", a.second ); } } } -std::map recipe_group::get_recipes( const std::string &id ) +std::map recipe_group::get_recipes_by_bldg( const std::string &bldg ) { std::map all_rec; - if( id == "ALL" ) { + if( bldg == "ALL" ) { for( const auto &gr : recipe_groups_data.get_all() ) { - std::map tmp = gr.cooking_recipes; + std::map tmp = gr.recipes; all_rec.insert( tmp.begin(), tmp.end() ); } return all_rec; - } else if( id == "COOK" || id == "BASE" || id == "FARM" || id == "SMITH" ) { + } else { for( const auto &gr : recipe_groups_data.get_all() ) { - if( gr.building_type != id ) { + if( gr.building_type != bldg ) { continue; } - std::map tmp = gr.cooking_recipes; + std::map tmp = gr.recipes; all_rec.insert( tmp.begin(), tmp.end() ); } return all_rec; } +} + +std::map recipe_group::get_recipes_by_id( const std::string &id, + const std::string &om_terrain_id ) +{ + std::map all_rec; if( !recipe_groups_data.is_valid( group_id( id ) ) ) { return all_rec; } const recipe_group_data &group = recipe_groups_data.obj( group_id( id ) ); - return group.cooking_recipes; + if( om_terrain_id != "ANY" ) { + for( const auto &recp : group.recipes ) { + const auto &recp_terrain = group.om_terrains.find( recp.second ); + if( recp_terrain == group.om_terrains.end() ) { + continue; + } + if( recp_terrain->second.find( om_terrain_id ) != recp_terrain->second.end() ) { + all_rec[recp.first] = recp.second; + } + } + return all_rec; + } + return group.recipes; } + void recipe_group::load( JsonObject &jo, const std::string &src ) { recipe_groups_data.load( jo, src ); diff --git a/src/recipe_groups.h b/src/recipe_groups.h index 5c8f71885dae0..741bc61085d0e 100644 --- a/src/recipe_groups.h +++ b/src/recipe_groups.h @@ -14,8 +14,9 @@ void load( JsonObject &jo, const std::string &src ); void check(); void reset(); -std::map get_recipes( const std::string &id ); - +std::map get_recipes_by_bldg( const std::string &id ); +std::map get_recipes_by_id( const std::string &id, + const std::string &om_terrain_id = "ANY" ); } #endif