diff --git a/data/mods/Aftershock/itemgroups/robot_storage.json b/data/mods/Aftershock/itemgroups/robot_storage.json index d8ea0d316905d..a185cb44e324a 100644 --- a/data/mods/Aftershock/itemgroups/robot_storage.json +++ b/data/mods/Aftershock/itemgroups/robot_storage.json @@ -5,5 +5,12 @@ "//": "Old and mostly broken industrial bots, its meant to spawn in recharging stations, so it only places a single bot.", "subtype": "distribution", "items": [ [ "bot_light_hack", 10 ], [ "broken_hazmatbot", 60 ], [ "broken_utilibot_const", 120 ] ] + }, + { + "id": "domestic_bot_storage", + "type": "item_group", + "//": "Small Consumer and commercial grade robots that can (probably) fit in the reinforced display cases.", + "subtype": "distribution", + "items": [ [ "bot_light_hack", 20 ], [ "bot_skitterbot_rat", 10 ], [ "bot_eyebot_heater", 5 ], [ "bot_skitterbot_hunter", 5 ] ] } ] diff --git a/data/mods/Aftershock/maps/city_buildings.json b/data/mods/Aftershock/maps/city_buildings.json index 4a90a924d8324..c0dca52fc8be9 100644 --- a/data/mods/Aftershock/maps/city_buildings.json +++ b/data/mods/Aftershock/maps/city_buildings.json @@ -133,6 +133,19 @@ ], "locations": [ "land" ] }, + { + "id": "afs_habitat_block_1", + "type": "city_building", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "afs_habblock_1_a1_north" }, + { "point": [ 1, 0, 0 ], "overmap": "afs_hablock_1_a2_north" }, + { "point": [ 0, 0, 1 ], "overmap": "afs_habblock_1_floor2_a1_north" }, + { "point": [ 1, 0, 1 ], "overmap": "afs_hablock_1_floor2_a2_north" }, + { "point": [ 0, 0, 2 ], "overmap": "afs_habblock_1_roof_a1_north" }, + { "point": [ 1, 0, 2 ], "overmap": "afs_hablock_1_roof_a2_north" } + ], + "locations": [ "land" ] + }, { "id": "afs_shuttle_pad", "type": "city_building", diff --git a/data/mods/Aftershock/maps/furniture_and_terrain/furniture_habitat.json b/data/mods/Aftershock/maps/furniture_and_terrain/furniture_habitat.json index 32095b43deac5..de20b5870cceb 100644 --- a/data/mods/Aftershock/maps/furniture_and_terrain/furniture_habitat.json +++ b/data/mods/Aftershock/maps/furniture_and_terrain/furniture_habitat.json @@ -248,5 +248,97 @@ { "item": "afs_circuitry_1", "count": [ 1, 2 ] } ] } + }, + { + "type": "furniture", + "id": "f_reinforced_displaycase", + "name": "reinforced display case", + "looks_like": "f_rack", + "description": "A secure metal case at about waist-height, with reinforced glass panelling on top. Useful for storing valuable things while still showing them off. Secured with an electronic lock.", + "symbol": "#", + "color": "light_cyan", + "move_cost_mod": 2, + "coverage": 80, + "required_str": 10, + "flags": [ "TRANSPARENT", "SEALED", "PLACE_ITEM" ], + "rotates_to": "INDOORFLOOR", + "examine_action": { + "type": "effect_on_condition", + "effect_on_conditions": [ + { + "id": "EOC_unlock_afs_display_case", + "effect": [ + { "math": [ "_t_delay", "=", "time('20 m')" ] }, + { + "run_eoc_with": "EOC_start_lock_hack", + "variables": { "furn_pos": { "context_val": "pos" }, "t_delay": { "context_val": "t_delay" }, "difficulty": "10" }, + "alpha_talker": "avatar" + } + ] + } + ] + }, + "bash": { + "str_min": 80, + "str_max": 180, + "sound": "glass breaking!", + "sound_fail": "whack!", + "sound_vol": 16, + "sound_fail_vol": 12, + "furn_set": "f_displaycase_b", + "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ] + }, + "shoot": { "reduce_damage": [ 2, 12 ], "reduce_damage_laser": [ 0, 7 ], "destroy_damage": [ 40, 120 ], "no_laser_destroy": true } + }, + { + "type": "furniture", + "id": "f_reinforced_displaycase_o", + "name": "reinforced display case", + "looks_like": "f_rack", + "description": "A secure metal case at about waist-height, with reinforced glass panelling on top. Useful for storing valuable things while still showing them off. This one had its lock hacked and is open.", + "symbol": "#", + "color": "light_cyan", + "move_cost_mod": 2, + "coverage": 80, + "required_str": 10, + "flags": [ "TRANSPARENT", "PLACE_ITEM" ], + "rotates_to": "INDOORFLOOR", + "bash": { + "str_min": 80, + "str_max": 180, + "sound": "glass breaking!", + "sound_fail": "whack!", + "sound_vol": 16, + "sound_fail_vol": 12, + "furn_set": "f_displaycase_b", + "items": [ { "item": "glass_shard", "count": [ 25, 50 ] } ] + }, + "shoot": { "reduce_damage": [ 2, 12 ], "reduce_damage_laser": [ 0, 7 ], "destroy_damage": [ 40, 120 ], "no_laser_destroy": true } + }, + { + "type": "furniture", + "id": "f_reinforced_displaycase_b", + "name": "broken display case", + "looks_like": "f_rack", + "description": "A secure metal case at about waist-height, with reinforced glass panelling on top. Would be useful for storing valuable things while still showing them off, if the glass hadn't been shattered.", + "symbol": "#", + "color": "light_cyan", + "move_cost_mod": 2, + "coverage": 80, + "required_str": 10, + "flags": [ "TRANSPARENT", "PLACE_ITEM" ], + "rotates_to": "INDOORFLOOR", + "bash": { + "str_min": 30, + "str_max": 150, + "sound": "metal screeching!", + "sound_fail": "clang!", + "items": [ + { "item": "scrap", "count": [ 8, 12 ] }, + { "item": "pipe", "count": [ 0, 3 ] }, + { "item": "sheet_metal", "count": [ 0, 3 ] }, + { "item": "sheet_metal_small", "count": [ 2, 10 ] } + ] + } } ] diff --git a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_doors.json b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_doors.json new file mode 100644 index 0000000000000..9b3e80cb72af3 --- /dev/null +++ b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_doors.json @@ -0,0 +1,50 @@ +[ + { + "type": "terrain", + "id": "t_afs_door_metal_elocked", + "name": "closed metal door", + "description": "A galvanized steel door, forged to withstand punishment and impede anyone or anything. This one is secured with an electronic lock.", + "symbol": "+", + "looks_like": "t_door_metal_c", + "color": "cyan", + "move_cost": 0, + "coverage": 95, + "roof": "t_metal_roof", + "connect_groups": "WALL", + "connects_to": "WALL", + "flags": [ "NOITEM", "REDUCE_SCENT", "LOCKED", "BLOCK_WIND", "SUPPORTS_ROOF" ], + "oxytorch": { + "result": "t_mdoor_frame", + "duration": "14 seconds", + "byproducts": [ { "item": "steel_plate", "count": [ 0, 1 ] }, { "item": "steel_chunk", "count": [ 3, 8 ] } ] + }, + "examine_action": { + "type": "effect_on_condition", + "effect_on_conditions": [ + { + "id": "EOC_unlock_afs_metal_door", + "effect": [ + { "math": [ "_t_delay", "=", "time('20 m')" ] }, + { + "run_eoc_with": "EOC_start_lock_hack", + "variables": { "furn_pos": { "context_val": "pos" }, "t_delay": { "context_val": "t_delay" }, "difficulty": "9" }, + "alpha_talker": "avatar" + } + ] + } + ] + }, + "bash": { + "str_min": 80, + "str_max": 250, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_mdoor_frame", + "items": [ + { "item": "scrap", "count": [ 12, 24 ] }, + { "item": "steel_plate", "prob": 75 }, + { "item": "hinge", "count": [ 1, 3 ] } + ] + } + } +] diff --git a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_floor.json b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_floor.json index 29e770b16d339..480d9ddc93c03 100644 --- a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_floor.json +++ b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_habitat_floor.json @@ -49,5 +49,29 @@ "items": [ { "item": "glass_shard", "count": [ 8, 16 ] } ] }, "shoot": { "chance_to_hit": 0, "reduce_damage": [ 0, 0 ], "reduce_damage_laser": [ 0, 0 ], "destroy_damage": [ 2, 8 ] } + }, + { + "type": "terrain", + "id": "t_linoleum_white_olight_inactive", + "name": "linoleum tile", + "description": "A section of flooring made out of a tough, rubbery material. Colored a simple white. There is a still-functioning inactive light attached to the ceiling above.", + "looks_like": "t_linoleum_whitefloor_olight", + "symbol": ".", + "color": "white", + "connect_groups": [ "INDOORFLOOR", "LINOLEUM" ], + "connects_to": "LINOLEUM", + "move_cost": 2, + "roof": "t_flat_roof", + "flags": [ "TRANSPARENT", "SUPPORTS_ROOF", "COLLAPSES", "INDOORS", "FLAT", "ROAD" ], + "bash": { + "str_min": 4, + "str_max": 12, + "sound": "glass breaking!", + "sound_fail": "whack!", + "sound_vol": 16, + "sound_fail_vol": 10, + "ter_set": "t_linoleum_white", + "items": [ { "item": "glass_shard", "count": [ 8, 16 ] } ] + } } ] diff --git a/data/mods/Aftershock/maps/mapgen/habitat_blocks/habitat_block_1.json b/data/mods/Aftershock/maps/mapgen/habitat_blocks/habitat_block_1.json new file mode 100644 index 0000000000000..254a0502ad881 --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen/habitat_blocks/habitat_block_1.json @@ -0,0 +1,930 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "afs_habblock_1_a1", "afs_hablock_1_a2" ] ], + "object": { + "fill_ter": "t_metal_floor", + "rows": [ + " ¢¢¢¢ ¢ ¢¢¢ '' ''' ''''''' ''' ''' '''' ' ", + " ¢ ¢ ¢¢¢ ¢¢ '__'///______///_/' '/_///____/// ", + " ¢¢ ¢¢ ¢¢ ¢¢'__'/±/======/±/__'''__/±/====/±/ ", + " ¢¢£¢¢ ¢£¢ ¢¢'__'/±±±±±±±±±±////!////±±±±±±±±/ ", + " ¢ ¢£¢ ¢ £¢¢ ¢' ''=±±±±±±±±±±±±/.,./±±±±±±±±±±= ", + " ¢ ¢£ ¢¢ ¢'__'=±±±±±±±±±±±±/.../±±±±±±±±±±= ", + " ¢ £¢¢ ¢£¢ ¢¢'__'/±±±±±±±±±±±±//!//±±±±±±±±±±/ ", + " ¢ ¢£¢ ¢ ¢¢¢ '__'/±±±±±±±±±±±±/...!±±±±±±±±±±/ ", + " ¢¢¢£¢¢ ¢£¢ ¢¢' '/±±±±±/////!!/.../////////!// ", + " ''' ' '' '''' ' '/±±±±±!±±±/...,,./^&/^&/±±±±/ ", + " '''' ' ' ' '''+°°°°°™°°°°™™°°°™°°°°™°°°™°°+ ", + " ///=/////=/////=/////////!//°°°°°°™°°°°°°°°°°+ ", + " /@@..:~/f.@@/@@..:~/f.@@/,./°°°°°™™™°°™°°°™°°+ ", + " #j.,f///o,.j/j.,o///o,.j/!//#//™°°™™°°°°°™™°°+ ", + " /yh.o/~:..hy/yh.f/~:..hy/.5/ca/™°°°™°°°°™™™°°+ ", + " ///://///://///://///:///,./../°°°°°™°°°°°™°°+ ", + " =>.....,...........,......./,./°°°™™™™°°°°°°°+ ", + " =>....5,...........,.......†..#°™°°™°°°°°™°°°+ ", + " ///://///://///://///://////.c/™™™°°°°™°™™™™™+ ", + " /yh.f/~:..hy/hy.o/~:..hy/.,..w/°™™™°°™™°°°™°°+ ", + " #j.,o///o,.j/j.,f///f,.j/EA.W//°™°°°°°™°°°™°°+ ", + " /@@..:~/f.@@/@@..:~/o.@@///#//++++++++++++++++ ", + " ///=/////=/////=/////=///>[[ ", + " [[[[[[[[[[[[[[[[[[[[[[[[[[[ " + ], + "palettes": [ "afs_habitat_structure", "afs_habitat_block", "afs_habblock_1_paramter_palette" ], + "terrain": { " ": "t_open_air" }, + "place_nested": [ + { + "chunks": [ + [ "afs_habblock_1_roof_barren", 20 ], + [ "afs_habblock_1_roof_solar", 20 ], + [ "afs_habblock_1_roof_xeno_garden", 20 ], + [ "afs_habblock_1_roof_garden", 20 ], + [ "afs_habblock_1_roof_helipad", 20 ] + ], + "x": 24, + "y": 0 + }, + { "chunks": [ { "param": "lightstatus", "fallback": "null" } ], "x": 0, "y": 0 }, + { "chunks": [ { "param": "lightstatus", "fallback": "null" } ], "x": 24, "y": 0 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "afs_habblock_1_roof_a1", "afs_hablock_1_roof_a2" ] ], + "object": { + "fill_ter": "t_metal_floor", + "rows": [ + " ", + " ", + " ", + " ", + " ..... ", + " ..... ", + " ..... ", + " ..... ", + " ..... ", + " ", + " ", + " ............................ ", + " ............................ ", + " ............................... ", + " ............................... ", + " ............................... ", + " ............................... ", + " ............................... ", + " ............................... ", + " ............................... ", + " ............................... ", + " .............................. ", + " ......................... ", + " " + ], + "palettes": [ "roof_palette" ] + } + }, + { + "type": "palette", + "id": "afs_habblock_1_paramter_palette", + "parameters": { + "variant": { + "type": "nested_mapgen_id", + "default": { "distribution": [ "afs_habblock_1_slot1_cafe_a1", "afs_habblock_1_slot1_diner_a1" ] } + }, + "lightstatus": { "type": "nested_mapgen_id", "default": { "distribution": [ "afs_map_lights_on", "null" ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot1_cafe_a1", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " hyh ", + " hyh ", + " ★ ", + " ", + " h h", + " cCCCC", + " ★ ", + " ffoCC", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot1_diner_a1", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " hyh ", + " hyh ", + " ★ ", + " hyh", + " hyh", + " :////", + " ★ ", + " ffooC", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "/": "t_wall_prefab_metal", ":": "t_door_c" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot1_diner_a2", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + "hyh ", + "hyh h ", + " /★c ", + " hyh/ ", + " hyh/ ", + " ", + " ★ ", + " ááá ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "/": "t_wall_prefab_metal" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot1_cafe_a2", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " y ", + "hyh h ", + "hyh h ", + " ★y ", + " h ", + " hyh ", + " ", + " ★ ", + " ááá ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_grocer", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " n n ", + " ", + " ááá á CgC ", + " ★ á ★C n ", + " ááá n Châ ", + " C â ", + " ", + " á ★á ", + " á á ", + " ", + " ★h ", + " $kc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_library", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " H H ", + " ", + " üü üé ää A ", + " ü ★üé ää★y ", + " ü üé ää A ", + " 5 ", + " ", + " ch c ", + " k k ", + " ", + " ★h ", + " kkc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_robotics_shop", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " n n ", + " ënë ë ", + " ë★ ★ n ", + " n êêê ë ", + " ë êêê CCcC ", + " † g h ", + " † ", + " kk★ê ", + " kh ê ", + " ", + " ★h ", + " $kc ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_civ_gun_shop", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " n n ", + " ï î C ", + " ñ í★ C★ ", + " ñ í ï î Cg ", + " ñ í ", + " † śśśś n ", + " † ", + " ñ ★í ", + " ñ í ", + " ", + " h★ ", + " ck$ ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_clothes_shop", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " m n ", + " mnm CC ", + " b/ ★ Ch ", + " ★: nrrr C ", + " // nrrr Cg ", + " ★ ", + " ", + " rr r ", + " r★ r ", + " ", + " h★ ", + " ck$ ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "/": "t_wall_prefab_metal", ":": "t_door_c" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_hardware_shop", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " n n ", + " ó ó ó ", + " hC ★ó ó ó★ ", + " C ó n ó ", + " gC ", + " óóóó n ", + " ", + " ó ★y ", + " ó y ", + " ", + " h★ ", + " ck$ ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot2_pharmacy", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " n c ", + " c yyy ", + " bb g ", + " b ★n/ õ★õ ", + " n C õ õ ", + " c õ õ ", + " † ", + " ö ★ö ", + " ö ö ", + " ", + " h★ ", + " ck$ ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "/": "t_wall_prefab_metal" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot3_indoor_garden", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " == == ", + " =p ppp ", + " =p, ", + " p pp ", + " pp pp ", + " úúú/c ", + " , : , pppp ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "=": "t_wall_prefab_glass", "/": "t_wall_prefab_metal", ":": "t_door_c" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot3_arcade", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " == ", + " =d chR ", + " = ,C R ", + " d CgC ", + " d ", + " ^,/ , 5 ", + " & : d5d dvd ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "=": "t_wall_prefab_glass", "/": "t_wall_prefab_metal", ":": "t_door_c" }, + "furniture": { "^": "f_sink" }, + "toilets": { "&": { } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot3_sauna", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " =5 /bb ", + " =b,: , ", + " b /bb ", + " = /// ", + " l,: ,Cc/,l ", + " b /ûû : b ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "=": "t_wall_prefab_glass", "/": "t_wall_prefab_metal", ":": "t_door_c" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot3_resident_storage", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " c c l ", + " ,, l ", + " yy / ", + " 5 yy l ", + " , l ", + " ll/lll/lll/ ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "/": "t_wall_prefab_metal" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_slot3_gym", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " === ", + " = T T ", + " = , ", + " P P ", + " ", + " ^,/RR , ", + " & : e e e ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "=": "t_wall_prefab_glass", "/": "t_wall_prefab_metal", ":": "t_door_c" }, + "furniture": { "^": "f_sink" }, + "toilets": { "&": { } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_roof_barren", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " X X ", + "h hyyh ", + "y ", + "h ", + " ", + " ", + " ", + " ", + " ", + " hyh ", + " ", + " A == & ", + " ", + " ", + " & ", + " ", + " A == ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "furniture": { "A": "f_air_conditioner", "=": "f_vent_pipe", "&": "f_roof_turbine_vent", "X": "f_small_satelitte_dish" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_roof_solar", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " X ", + "A == ", + " MMMM MMMM MMMM ", + "A == MMMM MMMM MMMM ", + " ", + " MMMM MMMM MMMM ", + " MMMM MMMM MMMM ", + " ", + " ", + " ", + " ///!/////////// ", + " '''' ' ''''/ ", + " ' ' ' / ", + " '' ' ' ' ''/ ", + " ' ' ' ' ' / ", + " '' ' ' ' ''/ ", + " ' ' ' / ", + " '''' ' ''''/ ", + " /////////////// ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "terrain": { "/": "t_wall_prefab_metal", "!": "t_door_metal_c" }, + "furniture": { "A": "f_air_conditioner", "=": "f_vent_pipe", "M": "f_solar_unit", "X": "f_small_satelitte_dish" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_roof_xeno_garden", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " _ _ ", + " ___ ______ ", + " _____ _______ ", + " ___ ___ ", + " ___ bbb _ ", + " _____ _____ __ ", + " _____ ______ _____ ", + " bbb ____ ______ ", + " ___ ______ ", + " b___ __ __ ", + " b___ _ _ ", + " b___ _ ", + " ___ _ ", + " ___ __ ", + " ___ ____ ", + " __ _____ ", + " __ ______ ", + " _____bbb ", + " _______ ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_roof_garden", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ______ __ ppppppppp ", + " ______ __ pppp8pppp ", + " ", + " ______ __ ppppppppp ", + " ______ __ pppp8pppp ", + " ", + " ", + " pp pp pp __ ", + " pp pp pp __ ", + " w pp pp pp __ ", + " w 8p 8p 8p __ ", + " pp pp pp __ ", + " ú pp pp pp __ ", + " ú pp pp pp __ ", + " ú ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "furniture": { "w": "f_standing_tank" }, + "liquids": { "w": { "liquid": "water", "amount": [ 0, 100 ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_habblock_1_roof_helipad", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " i I ", + " ", + " +i Ii ", + " MM AA +I i i ", + " MM ++++++ ++++ ", + " MM ", + " ", + " ++++ +++++ ", + " + ", + " + '''''''' ", + " X + ' ' ", + " + ' ' ' ' ", + " + ' ' ' ' ", + " = + ' '''' ' ", + " = + ' ' ' ' ", + " + ' ' ' ' ", + " + ' ' ", + " + '''''''' ", + " + ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_block" ], + "furniture": { "A": "f_air_conditioner", "M": "f_solar_unit", "=": "f_vent_pipe", "X": "f_small_satelitte_dish" } + } + } +] diff --git a/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_block.json b/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_block.json new file mode 100644 index 0000000000000..1dcb74b9ad435 --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_block.json @@ -0,0 +1,105 @@ +[ + { + "type": "palette", + "id": "afs_habitat_block", + "terrain": { + ",": "t_metal_floor_olight_inactive", + "★": "t_linoleum_white_olight_inactive", + "'": "t_sidewalk", + "¢": "t_pavement", + "£": "t_pavement_y", + "_": "t_region_shrub_decorative", + "+": "t_metal_railing", + "[": "t_floor_metal_gangway", + "©": "t_atm", + "°": "t_thconc_floor_no_roof", + "±": "t_linoleum_white", + "™": "t_region_groundcover_urban", + "†": "t_afs_door_metal_elocked" + }, + "furniture": { + "á": "f_rack", + "â": "f_rack", + "ä": "f_bookcase", + "é": "f_bookcase", + "ê": "f_rack", + "ë": "f_reinforced_displaycase", + "í": "f_rack", + "î": "f_reinforced_displaycase", + "ï": "f_reinforced_displaycase", + "ñ": "f_rack", + "ś": "f_rack", + "ó": "f_rack", + "õ": "f_rack", + "ö": "f_rack", + "ú": "f_rack", + "û": "f_rack", + "ü": "f_bookcase", + "r": "f_clothing_rail", + "R": "f_rack", + "m": "f_mannequin", + "5": "f_indoor_plant", + "g": "f_counter_gate_c", + "o": "f_habitat_kitchenette", + "p": "f_planter", + "P": "f_punching_bag", + "f": "f_fridge", + "C": "f_counter", + "c": [ [ "f_console_broken", 1 ], [ "f_console", 3 ] ], + "@": "f_sleep_pod", + "y": "f_table", + "h": "f_chair", + "H": "f_armchair", + "b": "f_bench", + "s": "f_washer", + "D": "f_dryer", + "E": "f_ECU", + "e": "f_exercise", + "A": "f_atmospheric_control", + "a": "f_air_filter", + "W": "f_water_heater", + "w": "f_water_purifier", + "j": "f_habitat_storage_board", + "n": "f_screenmirror", + "k": "f_desk", + "$": "f_safe_l", + "v": "f_trashcan", + "d": "f_arcade_machine", + "l": "f_locker", + "L": "f_locker", + "T": "f_treadmill", + "i": "f_intermodal_crate_open", + "I": "f_sealed_intermodal_crate", + "8": [ [ "f_micro_terraforming_mill_active", 1 ], [ "f_micro_terraforming_mill_broken", 9 ] ] + }, + "liquids": { "W": { "liquid": "water_clean", "amount": [ 0, 100 ] } }, + "items": { + "á": { "item": "afs_old_food_storage", "chance": 40, "repeat": [ 1, 3 ] }, + "â": { "item": "afs_tools_electric_repair", "chance": 60, "repeat": [ 1, 3 ] }, + "ä": { "item": "manuals", "chance": 60, "repeat": [ 1, 4 ] }, + "é": { "item": "literature", "chance": 80, "repeat": [ 5, 12 ] }, + "ê": { "item": "afs_tools_robot_maintenance", "chance": 40, "repeat": [ 1, 2 ] }, + "ë": { "item": "domestic_bot_storage", "chance": 30 }, + "í": { "item": "afs_any_ballistic_ammo", "chance": 60, "repeat": [ 3, 6 ] }, + "î": { "item": "afs_any_ballistic_gun", "chance": 80 }, + "ï": { "item": "afs_civilian_energy_gun", "chance": 80 }, + "ñ": { "item": "afs_civilian_energy_mag", "chance": 60, "repeat": [ 1, 4 ] }, + "ś": { "item": "afs_armor_spaceship_crew_g", "chance": 60 }, + "ó": { "item": "afs_tools_structural_repair", "chance": 60, "repeat": [ 1, 3 ] }, + "õ": { "item": "softdrugs", "chance": 80, "repeat": [ 2, 6 ] }, + "ö": { "item": "drugs_rare", "chance": 80, "repeat": [ 1, 4 ] }, + "ú": { "item": "tools_earthworking", "chance": 40, "repeat": [ 1, 2 ] }, + "û": { "item": "sauna", "chance": 80, "repeat": [ 3, 7 ] }, + "ü": { "item": "novels", "chance": 80, "repeat": [ 5, 12 ] }, + "f": { "item": "afs_old_food_storage", "chance": 60 }, + "o": { "item": "afs_kitchenette", "chance": 60 }, + "$": { "item": "afs_cash_safe" }, + "m": { "item": "afs_colonist_outfit" }, + "l": { "item": "afs_colonist_outfit" }, + "r": { "item": "afs_colonist_outfit", "chance": 60, "repeat": [ 1, 2 ] }, + "j": { "item": "afs_colonist_outfit", "chance": 60 }, + "I": { "item": "afs_crate_civ_rand" } + }, + "vendingmachines": { "V": { "item_group": "afs_vending_false_meals", "reinforced": true } } + } +] diff --git a/data/mods/Aftershock/maps/overmap_terrain.json b/data/mods/Aftershock/maps/overmap_terrain.json index f2d49e6a3894d..8d7a34d7c8c6c 100644 --- a/data/mods/Aftershock/maps/overmap_terrain.json +++ b/data/mods/Aftershock/maps/overmap_terrain.json @@ -436,6 +436,24 @@ "mondensity": 2, "flags": [ "SIDEWALK" ] }, + { + "type": "overmap_terrain", + "name": "Habitat Block", + "spawns": { "group": "AFS_GROUP_RUIN_MOXIE", "population": [ 1, 5 ], "chance": 80 }, + "id": [ + "afs_habblock_1_a1", + "afs_hablock_1_a2", + "afs_habblock_1_floor2_a1", + "afs_hablock_1_floor2_a2", + "afs_habblock_1_roof_a1", + "afs_hablock_1_roof_a2" + ], + "sym": "H", + "color": "light_green", + "see_cost": 4, + "mondensity": 2, + "flags": [ "SIDEWALK" ] + }, { "type": "overmap_terrain", "name": "General Store", diff --git a/data/mods/Aftershock/ter_fur_transform.json b/data/mods/Aftershock/ter_fur_transform.json index d8c025d2f9a77..c24029cb23c83 100644 --- a/data/mods/Aftershock/ter_fur_transform.json +++ b/data/mods/Aftershock/ter_fur_transform.json @@ -9,6 +9,20 @@ "valid_furniture": [ "f_sealed_intermodal_crate" ], "message": "The shipping crate bolts slide back and the lid pops open.", "message_good": true + }, + { + "result": "f_reinforced_displaycase_o", + "valid_furniture": [ "f_reinforced_displaycase" ], + "message": "A panel of reinforced glass receeds into the case.", + "message_good": true + } + ], + "terrain": [ + { + "result": "t_door_metal_c", + "valid_terrain": [ "t_afs_door_metal_elocked" ], + "message": "The door's PIN pad chimes happily as the locking mechanism releases.", + "message_good": true } ] }, @@ -31,11 +45,17 @@ { "type": "ter_furn_transform", "id": "afs_lights_on", - "terrain": [ { "result": "t_metal_floor_olight", "valid_terrain": [ "t_metal_floor_olight_inactive" ] } ] + "terrain": [ + { "result": "t_metal_floor_olight", "valid_terrain": [ "t_metal_floor_olight_inactive" ] }, + { "result": "t_linoleum_whitefloor_olight", "valid_terrain": [ "t_linoleum_white_olight_inactive" ] } + ] }, { "type": "ter_furn_transform", "id": "afs_lights_off", - "terrain": [ { "result": "t_metal_floor_olight_inactive", "valid_terrain": [ "t_metal_floor_olight" ] } ] + "terrain": [ + { "result": "t_metal_floor_olight_inactive", "valid_terrain": [ "t_metal_floor_olight" ] }, + { "result": "t_linoleum_white_olight_inactive", "valid_terrain": [ "t_linoleum_whitefloor_olight" ] } + ] } ] diff --git a/data/mods/aftershock_exoplanet/region_settings.json b/data/mods/aftershock_exoplanet/region_settings.json index 273b439f2cc15..e3581d6a45598 100644 --- a/data/mods/aftershock_exoplanet/region_settings.json +++ b/data/mods/aftershock_exoplanet/region_settings.json @@ -33,7 +33,7 @@ "shop_sigma": 80, "park_radius": 20, "park_sigma": 80, - "houses": { "afs_city_ruinfield": 400, "afs_formless_ruins_dynamic": 600, "afs_house_1": 300 }, + "houses": { "afs_city_ruinfield": 400, "afs_formless_ruins_dynamic": 600, "afs_house_1": 300, "afs_habitat_block_1": 200 }, "parks": { "afs_city_ruinfield": 100, "afs_shuttle_pad": 10 }, "shops": { "afs_augmentation_clinic_1": 400, "afs_astrobiology_lab": 400, "afs_general_store_1": 400 } },