diff --git a/data/json/furniture_and_terrain/terrain-floors-outdoors.json b/data/json/furniture_and_terrain/terrain-floors-outdoors.json index 2f832f031efce..6bcbcdc05b17f 100644 --- a/data/json/furniture_and_terrain/terrain-floors-outdoors.json +++ b/data/json/furniture_and_terrain/terrain-floors-outdoors.json @@ -231,6 +231,24 @@ "items": [ { "item": "rock", "count": [ 2, 15 ] }, { "item": "rebar", "count": [ 0, 4 ] } ] } }, + { + "type": "terrain", + "id": "t_concrete_y", + "name": "concrete", + "description": "A newer segment of poured concrete with surface finishes for aesthetics and resistance to freeze-thaw cycles. Covered with a streak of yellow paint.", + "symbol": ".", + "color": "yellow", + "looks_like": "t_wall_y", + "move_cost": 2, + "flags": [ "TRANSPARENT", "FLAT", "ROAD", "MINEABLE" ], + "bash": { + "ter_set": "t_null", + "str_min": 50, + "str_max": 400, + "str_min_supported": 100, + "items": [ { "item": "rock", "count": [ 2, 15 ] }, { "item": "rebar", "count": [ 0, 4 ] } ] + } + }, { "type": "terrain", "id": "t_floor_noroof", diff --git a/data/json/itemgroups/supplies.json b/data/json/itemgroups/supplies.json index 94a0e2f301fac..d34df1cd111a7 100644 --- a/data/json/itemgroups/supplies.json +++ b/data/json/itemgroups/supplies.json @@ -496,5 +496,16 @@ [ "whistle", 5 ], [ "airhorn", 2 ] ] + }, + { + "id": "fuel_barrel", + "type": "item_group", + "//": "barrel with gasoline, diesel or motor oil like you would find at fuel depot", + "subtype": "distribution", + "entries": [ + { "item": "gasoline", "charges": [ 0, 50000 ], "container-item": "30gal_drum", "prob": 30 }, + { "item": "diesel", "charges": [ 0, 50000 ], "container-item": "30gal_drum", "prob": 10 }, + { "item": "motor_oil", "charges": [ 0, 10000 ], "container-item": "jerrycan", "prob": 5 } + ] } ] diff --git a/data/json/mapgen/helipad.json b/data/json/mapgen/helipad.json new file mode 100644 index 0000000000000..b461d1e3b63d8 --- /dev/null +++ b/data/json/mapgen/helipad.json @@ -0,0 +1,213 @@ +[ + { + "method": "json", + "om_terrain": [ [ "helipad_nw", "helipad_ne" ], [ "helipad_sw", "helipad_se" ] ], + "type": "mapgen", + "weight": 500, + "object": { + "fill_ter": "t_floor", + "rows": [ + "FFF.......pppppppp...........................FFF", + "FTFFWWWWWF!!!!!!!!FFFFFFFFFFFFFFFFFFFFFFFFFFFFTF", + "FFG.W4ddw.pppppppp...........................GFF", + ".F..W-c?w.pppppppp...|||||||||||||||||||||||..F.", + ".F..WmWWW.pppppppp...|%_____________C__B___|..F.", + ".F..pppppppppppppppppM___C_________C_CC_B__|..F.", + ".F..pppppppppppppppppM____________CCCCC____|..F.", + ".F..pppppppppppppppppM_B__C___B__B___C_B___|..F.", + ".F..pppppyppppyppppppM________*_________B__|..F.", + ".F..pppppyppppyppppppM__B___C___B__C__B____|..F.", + ".F..pppppyppppyppp...|____C___B____________|..F.", + ".F..pppppyppppypppooom___________B______%__|..F.", + ".F..pppppyppppyppp...||||||||m|MMMMMMMMM||||..F.", + ".F..pppppyppppyppp...|_rrrr|____________%__|..F.", + ".F..oooooooooooooo...|_____|_______________|..F.", + ".F..............oo...|_rrrr|___IIIIIIIII_RR|..F.", + ".F..WwWWwWwwWwwW++WwW|M|||||___IUUUUUUUI_sR|..F.", + ".F..W----+-----+-----m_____m___IUUUUUUUI_75|..F.", + ".F..W-?ddWdc--dW--WWW|||||||___IUUUUUUUI___|..F.", + ".F..Wz-cfWd?f?dW--W&W|_____m___IUUUUUUUI_RR|..F.", + ".F..WWWWWWWWWWWWz-+-W|ggggg|___IUUUUUUUI_sR|..F.", + ".F..W[[[HH##O#SW--WSW|||||||___IUUUUUUUI_85|..F.", + ".F..W----------+--WWW|lllll|___IUUUUUUUI___|..F.", + ".F..W-cttc---1WW--+-W|_____M___IUUUUUUUI___|..F.", + ".F..W-cttc-z-2W<--WhW|lllll|___IUUUUUUUI%__|..F.", + ".F..WWwwwWwwwWWW++WWW||||||||m|MMMMMMMMM||||..F.", + ".F.......3P.....oo...........o.=========6666..F.", + ".F..========================================..F.", + ".F..========================================..F.", + ".F..========================================..F.", + ".F..========================================..F.", + ".F...o,,,,,o..o,,,,,,,,,,,,,,,,,,o..o,,,,,o...F.", + ".F...o=====o..o==================o..o=====o...F.", + ".F..$=========o$==,,========,,$==o==========..F.", + ".F..==========o===,,========,,===o==========..F.", + ".F..=,=====,==o===,,========,,===o=,=====,==..F.", + ".F..=,=====,==o===,,========,,===o=,=====,==..F.", + ".F..=,=====,==o===,,,,,,,,,,,,===o=,=====,==..F.", + ".F..=,,,,,,,==o===,,,,,,,,,,,,===o=,,,,,,,==..F.", + ".F..=,,,,,,,==o===,,========,,===o=,,,,,,,==..F.", + ".F..=,=====,==o===,,========,,===o=,=====,==..F.", + ".F..=,=====,==o===,,========,,===o=,=====,==..F.", + ".F..=,=====,==o===,,========,,===o=,=====,==..F.", + ".F..==========o==================o==========..F.", + ".F..==========o==================o==========..F.", + "FFG..........................................GFF", + "FTFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFTF", + "FFF..........................................FFF" + ], + "palettes": [ "helipad_palette" ], + "toilets": { "&": { } }, + "gaspumps": { "$": { } }, + "items": { + "B": { + "item": { + "subtype": "distribution", + "entries": [ { "group": "fuel_barrel", "prob": 30 }, { "item": "30gal_drum", "prob": 70 } ] + }, + "chance": 75 + }, + "C": { + "item": { + "subtype": "distribution", + "entries": [ + { "group": "military_patrol_food", "prob": 50, "count": [ 3, 5 ] }, + { "group": "infantry_common_gear", "prob": 5, "count": [ 1, 2 ] }, + { "group": "mil_food", "prob": 40, "count": [ 1, 5 ] }, + { "group": "infantry_medical_gear", "prob": 5, "count": [ 1, 2 ] }, + { "group": "supplies_metal", "prob": 150, "count": [ 2, 6 ] }, + { "group": "supplies_mechanics", "prob": 50, "count": [ 0, 3 ] } + ] + }, + "chance": 50 + }, + "r": { + "item": { + "subtype": "distribution", + "entries": [ { "group": "military_standard_assault_rifles", "prob": 45 }, { "group": "military_standard_shotguns", "prob": 5 } ] + }, + "chance": 10 + }, + "l": { + "item": { + "subtype": "distribution", + "entries": [ + { "group": "army_personal_locker", "prob": 150 }, + { "group": "military_patrol_food", "prob": 50 }, + { "group": "supplies_plumbing", "prob": 20 }, + { "group": "supplies_electronics", "prob": 20 }, + { "group": "supplies_metal", "prob": 20 }, + { "group": "supplies_mechanics", "prob": 20 }, + { "group": "hardware", "prob": 20 } + ] + }, + "chance": 50, + "repeat": [ 2, 6 ] + }, + "L": { "item": "army_personal_locker", "chance": 50, "repeat": [ 0, 4 ] }, + "d": { "item": "SUS_office_desk", "chance": 50 }, + "f": { "item": "SUS_office_filing_cabinet", "chance": 90 }, + "4": { "item": "military_standard_shotguns", "chance": 50 }, + "#": { "item": "SUS_utensils", "chance": 25, "repeat": [ 1, 3 ] }, + "t": { "item": "SUS_dishes", "chance": 50, "repeat": [ 1, 2 ] }, + "[": { "item": "SUS_fridge", "chance": 50 }, + "O": { "item": "SUS_oven", "chance": 75, "repeat": [ 0, 2 ] }, + "H": { "item": "SUS_spice_collection", "chance": 75 }, + "&": { "item": "SUS_toilet", "chance": 50 } + }, + "place_monsters": [ { "monster": "GROUP_MIL_STRONG", "x": 36, "y": 15 }, { "monster": "GROUP_MIL_WEAK", "x": 24, "y": 30, "density": 2 } ], + "monster": { "T": { "monster": "mon_turret_rifle" } }, + "place_vehicles": [ + { "vehicle": "forklift", "x": 29, "y": 6, "chance": 95, "rotation": 180, "status": 1 }, + { "vehicle": "parkinglotbasic", "x": 4, "y": 9, "chance": 75, "rotation": 270, "status": -1 }, + { "vehicle": "flatbed_truck", "x": 11, "y": 4, "chance": 25, "rotation": 270, "status": -1 }, + { "vehicle": "helicopter_wreck_3a", "x": 9, "y": 42, "chance": 10, "rotation": 90, "status": -1 }, + { "vehicle": "helicopter_wreck_1a", "x": 18, "y": 34, "chance": 10, "rotation": 270, "status": -1 }, + { "vehicle": "helicopter_wreck_3a", "x": 39, "y": 42, "chance": 10, "rotation": 90, "status": -1 } + ] + } + }, + { + "method": "json", + "om_terrain": [ [ "helipad2f_nw", "helipad2f_ne" ], [ "helipad2f_sw", "helipad2f_se" ] ], + "type": "mapgen", + "weight": 500, + "object": { + "fill_ter": "t_floor", + "rows": [ + "************************************************", + "****RRRRR***************************************", + "****RRRRR***************************************", + "****RRRRR************=======================****", + "****RRRRR************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "*********************=======================****", + "****WWWWWWWWWWWWWWWWW=======================****", + "****WbttbWbttbWSjjWhW=======================****", + "****Wb--bWb--bW-----W=======================****", + "****WL--LWL--LW-LLWhW=======================****", + "****WW+WWWW+WWW+WWWWW=======================****", + "****W-----------W&-SW=======================****", + "****WW+WWWW+WWW-WW+WW=======================****", + "****WL--LWL--LW-----+=======================****", + "****Wb--bWb--bW-WW+WW=======================****", + "****WbttbWbttbW>W&-SW===================DD==****", + "****WWWWWWWWWWWWWWWWW=======================****", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************", + "************************************************" + ], + "palettes": [ "helipad_palette_roof" ], + "toilets": { "&": { } }, + "items": { + "t": { "item": "bedroom", "chance": 50, "repeat": [ 0, 4 ] }, + "b": { "item": "bed", "repeat": [ 0, 3 ], "chance": 90 }, + "h": { "item": "SUS_bathroom_sink", "chance": 50 }, + "S": { "item": "SUS_bathroom_sink", "chance": 90 }, + "L": { "item": "army_personal_locker", "repeat": [ 0, 4 ], "chance": 50 }, + "=": { "item": "roof_trash", "chance": 2 }, + "&": { "item": "SUS_toilet", "chance": 50 } + }, + "place_monsters": [ { "monster": "GROUP_MIL_WEAK", "x": 10, "y": 20, "density": 0.5 } ], + "place_nested": [ + { + "chunks": [ [ "roof_2x2_infrastructure", 40 ], [ "roof_2x2_infrastructure_2", 30 ], [ "roof_2x2_utilities", 30 ] ], + "x": [ 24, 42 ], + "y": [ 4, 13 ] + }, + { + "chunks": [ [ "roof_2x2_infrastructure", 40 ], [ "roof_2x2_infrastructure_2", 30 ], [ "roof_2x2_utilities", 30 ] ], + "x": [ 24, 42 ], + "y": [ 14, 22 ] + } + ] + } + } +] diff --git a/data/json/mapgen_palettes/helipad.json b/data/json/mapgen_palettes/helipad.json new file mode 100644 index 0000000000000..5fd5e057155cb --- /dev/null +++ b/data/json/mapgen_palettes/helipad.json @@ -0,0 +1,83 @@ +[ + { + "type": "palette", + "id": "helipad_palette", + "terrain": { + "+": "t_door_c", + "W": "t_wall_w", + "-": "t_floor", + "w": "t_window", + "G": "t_chaingate_c", + "|": "t_concrete_wall", + "F": "t_chainfence", + "!": "t_guardrail", + "p": "t_pavement", + "m": "t_door_metal_c", + "y": "t_pavement_y", + ".": "t_region_groundcover_urban", + "T": "t_region_groundcover_urban", + "=": "t_concrete", + "%": "t_gates_mech_control", + "_": "t_thconc_floor", + "B": "t_thconc_floor", + "C": "t_thconc_floor", + "r": "t_thconc_floor", + "l": "t_thconc_floor", + "R": "t_thconc_floor", + "s": "t_thconc_floor", + "*": "t_thconc_floor", + "7": "t_thconc_floor", + "8": "t_thconc_floor", + "M": "t_door_metal_locked", + ",": "t_concrete_y", + "o": "t_sidewalk", + "?": "t_console_broken", + "g": "t_generator_broken", + "P": "t_water_pump", + "5": "t_machinery_light", + "6": "t_bulk_tank", + "I": "t_thconc_y", + "U": "t_metal_floor", + "<": "t_stairs_up" + }, + "furniture": { + "C": "f_crate_c", + "r": "f_rack", + "z": [ "f_indoor_plant_y", "f_indoor_plant" ], + "L": "f_locker", + "4": "f_locker", + "c": "f_chair", + "s": "f_chair", + "l": "f_utility_shelf", + "d": "f_desk", + "f": "f_filing_cabinet", + "[": "f_fridge", + "O": "f_oven", + "S": "f_sink", + "t": "f_table", + "R": "f_workbench", + "3": "f_standing_tank", + "H": "f_cupboard", + "7": "f_drill_press", + "8": "f_router", + "h": "f_shower", + "#": "f_counter" + } + }, + { + "type": "palette", + "id": "helipad_palette_roof", + "terrain": { + "+": "t_door_c", + "W": "t_wall_w", + "-": "t_floor", + "w": "t_window_domestic", + "*": "t_open_air", + "=": "t_flat_roof", + "R": "t_flat_roof", + "D": "t_flat_roof", + ">": "t_stairs_down" + }, + "furniture": { "L": "f_locker", "b": "f_bed", "h": "f_shower", "S": "f_sink", "t": "f_table", "D": "f_small_satelitte_dish" } + } +] diff --git a/data/json/overmap/overmap_special/specials.json b/data/json/overmap/overmap_special/specials.json index 646e756fe0b12..8c10b8fbdd678 100644 --- a/data/json/overmap/overmap_special/specials.json +++ b/data/json/overmap/overmap_special/specials.json @@ -6441,5 +6441,25 @@ "city_sizes": [ 4, 20 ], "occurrences": [ 0, 2 ], "flags": [ "CLASSIC" ] + }, + { + "type": "overmap_special", + "id": "military helipad", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "helipad_nw_north" }, + { "point": [ 1, 0, 0 ], "overmap": "helipad_ne_north" }, + { "point": [ 0, 1, 0 ], "overmap": "helipad_sw_north" }, + { "point": [ 1, 1, 0 ], "overmap": "helipad_se_north" }, + { "point": [ 0, 0, 1 ], "overmap": "helipad2f_nw_north" }, + { "point": [ 1, 0, 1 ], "overmap": "helipad2f_ne_north" }, + { "point": [ 0, 1, 1 ], "overmap": "helipad2f_sw_north" }, + { "point": [ 1, 1, 1 ], "overmap": "helipad2f_se_north" } + ], + "locations": [ "land" ], + "connections": [ { "point": [ 0, -1, 0 ], "terrain": "road", "connection": "local_road" } ], + "city_distance": [ 10, 100 ], + "city_sizes": [ 3, 12 ], + "occurrences": [ 0, 2 ], + "flags": [ "CLASSIC" ] } ] diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_military.json b/data/json/overmap/overmap_terrain/overmap_terrain_military.json index f8ae0a542a99a..990c8e4fc438b 100644 --- a/data/json/overmap/overmap_terrain/overmap_terrain_military.json +++ b/data/json/overmap/overmap_terrain/overmap_terrain_military.json @@ -359,5 +359,54 @@ "sym": "c", "color": "brown", "flags": [ "SOURCE_SAFETY", "SOURCE_PEOPLE" ] + }, + { + "type": "overmap_terrain", + "abstract": "generic_mil_helipad", + "name": "military helipad", + "sym": "H", + "color": "red", + "see_cost": 5, + "flags": [ "SOURCE_FUEL", "SOURCE_GUN", "SOURCE_VEHICLES", "RISK_HIGH" ] + }, + { + "type": "overmap_terrain", + "id": "helipad_nw", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad_ne", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad_sw", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad_se", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad2f_nw", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad2f_ne", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad2f_sw", + "copy-from": "generic_mil_helipad" + }, + { + "type": "overmap_terrain", + "id": "helipad2f_se", + "copy-from": "generic_mil_helipad" } ]