diff --git a/data/json/itemgroups/clothing.json b/data/json/itemgroups/clothing.json index 714956347eda3..1cf4a5a40ae53 100644 --- a/data/json/itemgroups/clothing.json +++ b/data/json/itemgroups/clothing.json @@ -385,5 +385,17 @@ [ "sports_drink", 30 ], [ "1st_aid", 20 ] ] + }, + { + "id": "donated_clothes", + "type": "item_group", + "subtype": "collection", + "items": [ + { "group": "underwear" }, + { "group": "clothing_outdoor_torso" }, + { "group": "clothing_outdoor_pants" }, + { "item": "socks" }, + { "item": "boots" } + ] } ] diff --git a/data/json/itemgroups/gear.json b/data/json/itemgroups/gear.json index 8840f559158f0..ff1dbad5647f8 100644 --- a/data/json/itemgroups/gear.json +++ b/data/json/itemgroups/gear.json @@ -136,5 +136,22 @@ [ "duct_tape", 10 ], [ "survivormap", 5 ] ] + }, + { + "id": "gear_homeless", + "type": "item_group", + "//": "Regular items for the homeless.", + "items": [ + { "group": "trash", "prob": 30 }, + { "group": "donated_clothes", "prob": 25 }, + { "group": "gear_survival", "prob": 5 }, + { "group": "contraband", "prob": 20 }, + { "group": "prison_textile", "prob": 7, "damage": [ 1, 2 ] }, + { "group": "novels", "prob": 10 }, + { "group": "misc_smoking", "prob": 10 }, + { "group": "stoner", "prob": 5 }, + { "group": "cannedfood", "prob": 10, "repeat": [ 1, 3 ] }, + { "item": "drink_hobo", "prob": 1 } + ] } ] diff --git a/data/json/mapgen/homeless_shelter.json b/data/json/mapgen/homeless_shelter.json new file mode 100644 index 0000000000000..74e3c1dfeea64 --- /dev/null +++ b/data/json/mapgen/homeless_shelter.json @@ -0,0 +1,431 @@ +[ + { + "type": "palette", + "id": "homeless_palette", + "terrain": { + "*": "t_open_air", + "~": "t_open_air_rooved", + ".": [ [ "t_grass_long", 200 ], [ "t_grass", 600 ], [ "t_dirt", 200 ], [ "t_shrub", 1 ] ], + ",": [ + [ "t_grass_long", 75 ], + [ "t_grass", 50 ], + [ "t_shrub", 20 ], + [ "t_shrub_rose", 20 ], + [ "t_shrub_lilac", 20 ], + [ "t_tree_young", 20 ], + [ "t_grass_tall", 20 ], + [ "t_grass_long", 20 ], + [ "t_underbrush", 20 ], + [ "t_shrub_hydrangea", 20 ], + [ "t_shrub_raspberry", 20 ], + [ "t_tree", 10 ], + [ "t_tree_willow", 2 ], + [ "t_tree_birch", 2 ], + [ "t_tree_maple", 2 ], + [ "t_tree_pine", 2 ] + ], + "-": "t_door_locked_interior", + "<": "t_stairs_down", + "+": "t_door_c", + ">": "t_stairs_up", + "'": "t_thconc_floor", + " ": [ [ "t_linoleum_white", 500 ], [ "t_linoleum_gray", 1 ] ], + ";": "t_grate", + "i": "t_ladder_up", + "!": "t_ladder_down", + "z": "t_flat_roof", + "_": "t_carpet_red", + "3": "t_concrete", + "L": "t_thconc_floor", + "R": "t_thconc_floor", + "s": "t_concrete", + "x": "t_console_broken", + "|": "t_brick_wall", + "#": "t_ponywall", + "=": "t_reinforced_glass", + "1": "t_gutter_west", + "2": "t_gutter_east", + "4": "t_gutter_north", + "5": "t_gutter_south", + "6": "t_gutter_drop", + "v": "t_window_bars", + "f": "t_chainfence", + "g": "t_chaingate_l", + "n": "t_dirtmound" + }, + "furniture": { + "3": "f_bench", + "B": "f_bench", + "S": "f_sink", + "T": "f_toilet", + "c": "f_counter", + "d": "f_desk", + "e": "f_fridge", + "h": "f_chair", + "?": "f_sofa", + "Y": "f_rack_coat", + "@": "f_makeshift_bed", + "F": "f_filing_cabinet", + "G": "f_bulletin", + "l": "f_locker", + "m": "f_locker", + "(": "f_locker", + ")": "f_locker", + "L": "f_utility_shelf", + "R": "f_rack", + "O": "f_oven", + "u": "f_cupboard", + "o": "f_bookcase", + "t": "f_table", + "b": "f_table", + "p": [ "f_indoor_plant", "f_indoor_plant_y" ], + "r": "f_trashcan", + "D": "f_dumpster", + "$": "f_shower", + "A": "f_armchair", + "X": "f_crate_o", + "w": "f_washer", + "W": "f_dryer", + "q": "f_dishwasher", + "V": "f_glass_cabinet", + "H": "f_rotary_clothesline", + "P": "f_pool_table" + }, + "toilets": { "T": { } }, + "items": { + "d": { "item": "office", "chance": 45, "repeat": [ 1, 2 ] }, + "X": { "item": "gear_homeless", "chance": 55, "repeat": [ 1, 3 ] }, + "Y": { "item": "jackets", "chance": 55, "repeat": [ 1, 6 ] }, + "l": { "item": "cleaning", "chance": 75, "repeat": [ 1, 3 ] }, + "L": [ { "item": "farming_seeds", "chance": 40, "repeat": [ 1, 2 ] }, { "item": "farming_tools", "chance": 35 } ], + "r": { "item": "trash", "chance": 60, "repeat": [ 1, 2 ] }, + "D": { "item": "trash", "chance": 60, "repeat": [ 1, 2 ] }, + "o": [ { "item": "novels", "chance": 45, "repeat": [ 1, 2 ] }, { "item": "homebooks", "chance": 15 } ], + "e": [ { "item": "fridgesnacks", "chance": 15, "repeat": [ 2, 3 ] }, { "item": "fridge", "chance": 65, "repeat": [ 4, 8 ] } ], + "t": { "item": "dining", "chance": 25, "repeat": [ 1, 2 ] }, + "O": { "item": "oven", "chance": 65 }, + "P": { "item": "pool_table", "chance": 40, "repeat": [ 1, 3 ] }, + "u": [ + { "item": "snacks", "chance": 10, "repeat": [ 1, 2 ] }, + { "item": "cannedfood", "chance": 40, "repeat": [ 1, 3 ] }, + { "item": "dining", "chance": 30, "repeat": [ 1, 4 ] } + ], + "R": { "item": "cannedfood", "chance": 70, "repeat": [ 1, 3 ] }, + "@": { "item": "bed", "chance": 65 }, + "(": { "item": "donated_clothes", "chance": 60 }, + "w": [ { "item": "donated_clothes", "chance": 25 }, { "item": "bed", "chance": 20, "repeat": [ 1, 3 ] } ], + "W": [ { "item": "donated_clothes", "chance": 25 }, { "item": "bed", "chance": 20, "repeat": [ 1, 3 ] } ], + ")": { "item": "bed", "chance": 75, "repeat": [ 1, 5 ] }, + "F": { "item": "file_room", "chance": 70, "repeat": [ 1, 3 ] }, + "m": { "item": "drugs_heal_simple", "chance": 70, "repeat": [ 1, 4 ] } + }, + "vendingmachines": { "8": { "item_group": "vending_drink" }, "9": { "item_group": "vending_food" } } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "homeless_0_0_0" ], [ "homeless_1_0_0" ] ], + "weight": 100, + "object": { + "fill_ter": "t_linoleum_white", + "rows": [ + "ffssffffffff............", + "f.ss.,,,,,,f.,,,,.......", + "f.ss.,,,,,,||vvvv||.....", + "f.ss.,,|||||pBBBBp|||||.", + "f.ss.,,| h h h |.", + "f.ss.,,v tth tth tthv,", + "f.ss.,,vhtt htt htt v,", + "f.ss.,,| h h h |.", + "f.ss.,,| h h h |.", + "||-||v|| tth htt tthv,", + "|p =dcc|htt tth htt v,", + "| =dh | h h h |.", + "| =x F| h h h |.", + "| =r F| tth htt htt |.", + "| ||+||htt tth tth|.", + "| | h h h |.", + "v + v,", + "v + v,", + "| BB | h h h |.", + "| ||||| tth tt htth|.", + "|G > |htt htth tt |.", + "|G | h h h |.", + "| | h h h |.", + "v ||||| tth tth tthv,", + "v |SSS|htt htt htt v,", + "| + + h h h |.", + "| ||| | h h h |.", + "vB |T+ |htth tt tthv,", + "vB ||| | tt htth htt v,", + "|r |T+ | h h h |.", + "| ||| | |.", + "|p |T+ |r |.", + "||-||||||+|cccccccccc||.", + "fsss333| u|.", + "fssssss| OOOSScccq u|.", + "f......| u|.", + "fnnnn..|eeeeuuuu uuu u|.", + "fnnnn..|||||||||-|||-||.", + "f......,,,,|R RR R|sssg.", + "fnnnn...,,,|R RR R|DDDf.", + "fnnnn..nnnn|R RR R|DDDf.", + "f......nnnn|R R|ffff.", + "fnnnn......|||vv|||.....", + "fnnnn.nn...nnnn...g.....", + "f.....nn...nnnn...f.....", + "f,,,..nn.......,,,f.....", + "f,,,,.nn......,,,,f.....", + "fffffffffffffffffff....." + ], + "palettes": [ "homeless_palette" ], + "place_monsters": [ + { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 4, 23 ], "density": 0.1 }, + { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 24, 47 ], "density": 0.1 } + ], + "place_loot": [ + { "item": "fork", "repeat": [ 5, 10 ], "x": [ 20, 20 ], "y": 32 }, + { "item": "spoon", "repeat": [ 5, 10 ], "x": [ 19, 19 ], "y": 32 }, + { "item": "knife_butter", "repeat": [ 5, 10 ], "x": [ 18, 18 ], "y": 32 }, + { "item": "tin_plate", "repeat": [ 7, 15 ], "x": [ 15, 17 ], "y": 32 }, + { "item": "glass_bowl", "repeat": [ 7, 15 ], "x": [ 12, 14 ], "y": 32 }, + { "item": "cup_plastic_unsealed", "repeat": [ 5, 10 ], "x": [ 11, 11 ], "y": 32 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "homeless_0_0_1" ], [ "homeless_1_0_1" ] ], + "weight": 100, + "object": { + "fill_ter": "t_linoleum_white", + "rows": [ + "************************", + "************************", + "***********||vvvv||*****", + "*******|||||rBBBB |||||*", + "*******|h A p|*", + "*******vc o o A v*", + "*******vh o o v*", + "*******|p o o A G|*", + "*******| o o |*", + "|||vv|||h o o A v*", + "|pbbbbp|c o o A v*", + "| |h hhh p|*", + "| |||||||++|||||||*", + "|A A|p 89 r |*", + "| A PP |*", + "|A PP |*", + "v bb PP v*", + "v? ?|hhhh PP v*", + "|??????|xxxx |*", + "|||||||||||| |||||*", + "|F | < p|*", + "|F | BbbB BbbB |*", + "|F | > BbbB BbbB |*", + "vF ||||| v*", + "vc r xd|V v*", + "|dh hd|V BbbB BbbB |*", + "|dx c|V BbbB BbbB |*", + "|p F p|V v*", + "||+||+|| v*", + "|p d Y| BbbB BbbB |*", + "v Adh + BbbB BbbB |*", + "|F dh | p|*", + "|||vv||||-||||+|||||+||*", + "*******|'''|T+ +T|S l|*", + "*******|L'L||| |||c l|*", + "*******|L'L|T+ +T|c l|*", + "*******|L'L||| |||c l|*", + "*******||v||S +T||v||*", + "***********|S |||;;***", + "***********vS +T|!;***", + "***********|S |||;;***", + "***********|S +T|i;***", + "***********|||vv|||;;***", + "************************", + "************************", + "************************", + "************************", + "************************" + ], + "palettes": [ "homeless_palette" ], + "place_monsters": [ + { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 4, 23 ], "density": 0.1 }, + { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 24, 41 ], "density": 0.1 } + ], + "place_loot": [ { "item": "television", "x": [ 3, 4 ], "y": 10 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "homeless_0_0_2" ], [ "homeless_1_0_2" ] ], + "weight": 100, + "object": { + "fill_ter": "t_linoleum_white", + "rows": [ + "************************", + "************************", + "***********||vvvv||*****", + "*******||||| BBBB |||||*", + "*******| h |*", + "*******v@X #@X X@# X@v*", + "*******v # h # v*", + "*******|@X #@X X@# X@|*", + "*******| # h # |*", + "|||vv|||@X #@X X@# X@v*", + "|((((((| # # h v*", + "| |@X #@X X@# X@|*", + "|@ ))))| # # |*", + "||+|||||@X #@X X@# X@|*", + "|p + |*", + "| h|@X #@X X@# X@|*", + "v h | # h # v*", + "v bb |@X #@X X@# X@v*", + "| BBBB| # # |*", + "| |||||@X #@X X@# X@|*", + "| > | h# # |*", + "| |@X #@X X@# X@|*", + "| < | # # |*", + "v |||||@X #@X X@# X@v*", + "v BBBB| h h v*", + "|G h|++|||||||||||||*", + "|G h|''|)))|WWWWccc|*", + "v +''+ Hv*", + "v r|''|B BY Hv*", + "|h cc |''|B B|wwwwccc|*", + "|h |''|B B|||||||||*", + "|pBBBBp|''|B B|$$$|$$$|*", + "|||vv|||''+ + |*", + "*******|''|(((|$ $|$ $|*", + "*******|''|||||$ $|$ $|*", + "*******|''''''|$ $|$ $|*", + "*******|''''''|$ $|$ $|*", + "*******||v|||+||||||v||*", + "***********| rdx|;;***", + "***********v@@ dhvi;***", + "***********| |;;***", + "***********|FFp mm|!;***", + "***********|||vv|||;;***", + "************************", + "************************", + "************************", + "************************", + "************************" + ], + "palettes": [ "homeless_palette" ], + "place_monsters": [ + { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 4, 23 ], "density": 0.1 }, + { "monster": "GROUP_ZOMBIE", "x": [ 0, 23 ], "y": [ 24, 41 ], "density": 0.1 } + ], + "place_loot": [ + { "item": "bleach", "repeat": [ 1, 3 ], "x": [ 19, 21 ], "y": 29 }, + { "item": "basket_laundry", "repeat": [ 1, 2 ], "x": [ 19, 21 ], "y": 26 }, + { "item": "towel", "repeat": [ 1, 7 ], "x": [ 15, 21 ], "y": [ 31, 36 ] }, + { "group": "donated_clothes", "repeat": [ 1, 2 ], "x": [ 11, 13 ], "y": [ 28, 31 ] } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ [ "homeless_0_0_roof" ], [ "homeless_1_0_roof" ] ], + "weight": 100, + "object": { + "fill_ter": "t_flat_roof", + "rows": [ + "************************", + "************************", + "***********14444442*****", + "*******14441zzzzzz24446*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "64444441zzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzz|||zzzzzzzzzzzzzzz2*", + "1zzz|<+zzzzzzzzzzzzzzz2*", + "1zzz|||zzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "1zzzzzzzzzzzzzzzzzzzzz2*", + "65555551zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******1zzzzzzzzzzzzzz2*", + "*******15551zzzzzzzzz52*", + "***********1zzzzzzz;;***", + "***********1zzzzzzz!;***", + "***********1zzzzzzz;;***", + "***********1zzzzzzz;;***", + "***********65555555;;***", + "************************", + "************************", + "************************", + "************************", + "************************" + ], + "palettes": [ "homeless_palette" ], + "place_nested": [ + { + "chunks": [ + [ "null", 20 ], + [ "roof_2x2_utilities_b", 10 ], + [ "roof_4x4_utility_1", 20 ], + [ "roof_4x4_utility", 20 ], + [ "roof_2x2_utilities_d", 10 ], + [ "roof_2x2_utilities", 10 ], + [ "roof_5x5_coop", 35 ] + ], + "x": [ 8, 14 ], + "y": [ 4, 8 ] + }, + { + "chunks": [ + [ "null", 20 ], + [ "roof_2x2_utilities_b", 10 ], + [ "roof_4x4_utility_1", 20 ], + [ "roof_4x4_utility", 20 ], + [ "roof_2x2_utilities_d", 10 ], + [ "roof_6x6_utility", 20 ] + ], + "x": [ 12, 13 ], + "y": [ 32, 36 ] + }, + { + "chunks": [ + [ "null", 50 ], + [ "roof_6x6_survivor", 20 ], + [ "roof_4x4_survivor", 20 ], + [ "roof_4x4_party", 10 ], + [ "roof_2x2_golf", 5 ], + [ "roof_4x4_holdout", 1 ] + ], + "x": [ 1, 16 ], + "y": [ 24, 27 ] + }, + { "chunks": [ [ "null", 50 ], [ "roof_16x16_help", 10 ] ], "x": [ 1, 6 ], "y": [ 10, 14 ] } + ] + } + } +] diff --git a/data/json/overmap/multitile_city_buildings.json b/data/json/overmap/multitile_city_buildings.json index a9e117c9a3489..a98e0702f7b47 100644 --- a/data/json/overmap/multitile_city_buildings.json +++ b/data/json/overmap/multitile_city_buildings.json @@ -1342,6 +1342,21 @@ "locations": [ "land" ], "overmaps": [ { "point": [ 0, 0, 0 ], "overmap": "s_pharm_1_north" }, { "point": [ 0, 0, 1 ], "overmap": "s_pharm_roof_1_north" } ] }, + { + "type": "city_building", + "id": "homeless_shelter", + "locations": [ "land", "swamp" ], + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "homeless_0_0_0_north" }, + { "point": [ 0, 1, 0 ], "overmap": "homeless_1_0_0_north" }, + { "point": [ 0, 0, 1 ], "overmap": "homeless_0_0_1_north" }, + { "point": [ 0, 1, 1 ], "overmap": "homeless_1_0_1_north" }, + { "point": [ 0, 0, 2 ], "overmap": "homeless_0_0_2_north" }, + { "point": [ 0, 1, 2 ], "overmap": "homeless_1_0_2_north" }, + { "point": [ 0, 0, 3 ], "overmap": "homeless_0_0_roof_north" }, + { "point": [ 0, 1, 3 ], "overmap": "homeless_1_0_roof_north" } + ] + }, { "type": "city_building", "id": "pool", diff --git a/data/json/overmap_terrain_public_institutional.json b/data/json/overmap_terrain_public_institutional.json index 4cb664c00c6c4..6e997f0a5ee1f 100644 --- a/data/json/overmap_terrain_public_institutional.json +++ b/data/json/overmap_terrain_public_institutional.json @@ -525,5 +525,79 @@ "copy-from": "generic_city_building", "sym": "F", "color": "red" + }, + { + "type": "overmap_terrain", + "id": "homeless_0_0_0", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2, + "flags": [ "SIDEWALK" ] + }, + { + "type": "overmap_terrain", + "id": "homeless_1_0_0", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2, + "flags": [ "SIDEWALK" ] + }, + { + "type": "overmap_terrain", + "id": "homeless_0_0_1", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "homeless_1_0_1", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "homeless_0_0_2", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "homeless_1_0_2", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "homeless_0_0_roof", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2 + }, + { + "type": "overmap_terrain", + "id": "homeless_1_0_roof", + "name": "homeless shelter", + "sym": "H", + "color": "green", + "see_cost": 2, + "mondensity": 2 } ] diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json index 51c3d0766b0ab..5d8717129d775 100644 --- a/data/json/regional_map_settings.json +++ b/data/json/regional_map_settings.json @@ -713,7 +713,8 @@ "cs_internet_cafe": 100, "cs_market_small": 100, "cs_sex_shop": 100, - "cs_tire_shop": 100 + "cs_tire_shop": 100, + "homeless_shelter": 100 } }, "weather": {