From 9925761087ca39638cba78789cf55b5dd799d67c Mon Sep 17 00:00:00 2001 From: Marc Date: Thu, 16 Jan 2025 22:45:56 -0700 Subject: [PATCH] [Aftershock] Gene Clinics (#79197) * Implement Gene Clinic variant 1 * Renovate Clinic to Add service room. Add Murder Bots and Moxies. Implement powered down gene editor * Add most of the item spawn groups * Add item groups, Monster Spawns, and Mapgen Nests * Add trash to the ground in looted variant. Adjust spawn rates of looted vrs unlooted to 60-40 in the players favor * Geneclinics also spawn without the Exo-Planet * Remove redudant spawn of the larger genetech disposable group, low tier already spawns worker and combat rarely * Mapgen now correctly murders plants when power is out * String fixes for test gods --- data/mods/Aftershock/flags.json | 5 + .../itemgroups/clothing/winter_outfits.json | 7 + data/mods/Aftershock/itemgroups/genetech.json | 15 + data/mods/Aftershock/items/genetech.json | 21 + data/mods/Aftershock/items/id_cards.json | 16 + data/mods/Aftershock/maps/city_buildings.json | 11 + .../furniture_habitat.json | 101 +++++ .../terrain_card_readers.json | 23 + .../Aftershock/maps/mapgen/gene_clinic_1.json | 424 ++++++++++++++++++ .../mapgen_pallete/afs_habitat_structure.json | 20 +- .../mapgen_pallete/afs_param_palettes.json | 9 + .../mods/Aftershock/maps/overmap_terrain.json | 10 + .../monster_groups/robot_monster_groups.json | 12 + data/mods/Aftershock/region_settings.json | 1 + .../aftershock_exoplanet/region_settings.json | 1 + 15 files changed, 670 insertions(+), 6 deletions(-) create mode 100644 data/mods/Aftershock/itemgroups/genetech.json create mode 100644 data/mods/Aftershock/maps/mapgen/gene_clinic_1.json create mode 100644 data/mods/Aftershock/maps/mapgen_pallete/afs_param_palettes.json diff --git a/data/mods/Aftershock/flags.json b/data/mods/Aftershock/flags.json index 5ccd551276422..769fa4a226dc6 100644 --- a/data/mods/Aftershock/flags.json +++ b/data/mods/Aftershock/flags.json @@ -9,6 +9,11 @@ "type": "json_flag", "info": "This item is an access card for ancient police locations." }, + { + "id": "OLD_MERCURIAL_CARD", + "type": "json_flag", + "info": "This item is an access card for ancient Mercurial locations." + }, { "id": "HEAVY_TOOL", "type": "json_flag" diff --git a/data/mods/Aftershock/itemgroups/clothing/winter_outfits.json b/data/mods/Aftershock/itemgroups/clothing/winter_outfits.json index 792f89a6618c7..0745032b45990 100644 --- a/data/mods/Aftershock/itemgroups/clothing/winter_outfits.json +++ b/data/mods/Aftershock/itemgroups/clothing/winter_outfits.json @@ -51,5 +51,12 @@ "//": "The matching Magellan Exosuit set. Includes suit, mask and possible future accessories", "subtype": "collection", "entries": [ { "item": "afs_magellan_suit" }, { "item": "afs_magellan_suit_helmet", "prob": 90 } ] + }, + { + "id": "afs_mutant_colonist_eva_g", + "type": "item_group", + "//": "Colonist grade EVA gear modified to accomadate mutant anatonmy. Should include suit and mask, and possible future accesories. TODO: this gear does not yet exist so spawn a bodyglove instead, remove this TODO when the group has been filled.", + "subtype": "collection", + "entries": [ { "item": "afs_cryopod_bodyglove" } ] } ] diff --git a/data/mods/Aftershock/itemgroups/genetech.json b/data/mods/Aftershock/itemgroups/genetech.json new file mode 100644 index 0000000000000..a669c50c01d67 --- /dev/null +++ b/data/mods/Aftershock/itemgroups/genetech.json @@ -0,0 +1,15 @@ +[ + { + "//": "For use in a commercial settings but secured such as in safes. Offers more reward for greater risk/effort involved in obtaining. Shouldn't give any super special or highly valuable genetech.", + "id": "afs_genetech_commerical_safe", + "type": "item_group", + "subtype": "collection", + "items": [ { "item": "afs_gene_disp", "count": [ 3, 7 ] }, { "item": "afs_gene_template", "prob": 80, "count": [ 1, 3 ] } ] + }, + { + "id": "afs_genetech_commercial_shelf", + "type": "item_group", + "subtype": "collection", + "items": [ { "item": "afs_gene_disp_low_tier", "count": [ 1, 3 ] } ] + } +] diff --git a/data/mods/Aftershock/items/genetech.json b/data/mods/Aftershock/items/genetech.json index c1cacf652da26..5efc9aa818b7d 100644 --- a/data/mods/Aftershock/items/genetech.json +++ b/data/mods/Aftershock/items/genetech.json @@ -33,6 +33,13 @@ "trait_group": "GENETECH_TRAITS", "flags": [ "GENE_TECH" ] }, + { + "id": "afs_gene_disp_low_tier", + "name": "Mercurial Genetech", + "copy-from": "afs_gene_disp", + "type": "TOOL", + "trait_group": "GENETECH_TRAITS_LOW_TIER" + }, { "type": "trait_group", "id": "GENETECH_TRAITS", @@ -46,6 +53,20 @@ { "group": "GENETECH_WORKER", "prob": 100 } ] }, + { + "type": "trait_group", + "id": "GENETECH_TRAITS_LOW_TIER", + "subtype": "distribution", + "//": "Used in more accesible locations where Genetech can be found such as on shelves in Genetech-vaults. Weighted so that the most useful traits will spawn at a greatly reduced rate. Highly valuable or military grade traits should not end up in here.", + "traits": [ + { "group": "GENETECH_TAILS", "prob": 100 }, + { "group": "GENETECH_EARS", "prob": 100 }, + { "group": "GENETECH_LOOKS", "prob": 50 }, + { "group": "GENETECH_SKIN", "prob": 100 }, + { "group": "GENETECH_WORKER", "prob": 30 }, + { "group": "GENETECH_COMBAT", "prob": 10 } + ] + }, { "type": "trait_group", "id": "GENETECH_TAILS", diff --git a/data/mods/Aftershock/items/id_cards.json b/data/mods/Aftershock/items/id_cards.json index bf941dffb9afa..658e94a3932b6 100644 --- a/data/mods/Aftershock/items/id_cards.json +++ b/data/mods/Aftershock/items/id_cards.json @@ -92,5 +92,21 @@ "volume": "5 ml", "category": "keys", "to_hit": -3 + }, + { + "type": "GENERIC", + "id": "mercurial_master_keycard", + "symbol": ",", + "color": "green", + "name": { "str": "Mercurial master key" }, + "description": "A master keycard for nearly all Mercurial corporate facilities and infrastructure built before the year 2152. Invaluable on Salus IV, this card will grant you entry to all but the most secure Mercurial facilities.", + "price": "8 kUSD", + "flags": [ "OLD_MERCURIAL_CARD" ], + "price_postapoc": "8 kUSD", + "material": [ "plastic" ], + "weight": "6 g", + "volume": "5 ml", + "category": "keys", + "to_hit": -3 } ] diff --git a/data/mods/Aftershock/maps/city_buildings.json b/data/mods/Aftershock/maps/city_buildings.json index 303d45007e29b..b0390bf455a5e 100644 --- a/data/mods/Aftershock/maps/city_buildings.json +++ b/data/mods/Aftershock/maps/city_buildings.json @@ -254,5 +254,16 @@ { "point": [ 0, 0, 1 ], "overmap": "afs_shuttle_pad_a2_roof_south" } ], "locations": [ "land" ] + }, + { + "id": "afs_gene_clinic_1", + "type": "city_building", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "afs_gene_clinic_1_a1_north" }, + { "point": [ 0, 0, 1 ], "overmap": "afs_gene_clinic_1_a2_north" }, + { "point": [ 0, 0, 2 ], "overmap": "afs_gene_clinic_1_a3_north" }, + { "point": [ 0, 0, 3 ], "overmap": "afs_gene_clinic_1_a4_north" } + ], + "locations": [ "land" ] } ] 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 f8c3f0fa0334f..05d30c2f6abe8 100644 --- a/data/mods/Aftershock/maps/furniture_and_terrain/furniture_habitat.json +++ b/data/mods/Aftershock/maps/furniture_and_terrain/furniture_habitat.json @@ -45,6 +45,86 @@ ] } }, + { + "type": "furniture", + "id": "f_gene_editor_inactive", + "name": "Deactivated Mercurial Resequencer", + "description": "A large bio-sarcophagus and accompanying control machinery. Used in gene editing and for general medical purposes, can impart or remove traits using a variety of gene templates. This one stands lifelessly, its screens black and the hum of machinery replaced by an eerie silence.", + "symbol": "O", + "color": "light_blue", + "move_cost_mod": 15, + "coverage": 80, + "comfort": 2, + "required_str": -1, + "looks_like": "t_vat", + "flags": [ "TRANSPARENT", "PLACE_ITEM", "MOUNTABLE", "CAN_SIT" ], + "deconstruct": { + "items": [ + { "item": "afs_energy_storage_2", "count": [ 2, 4 ] }, + { "item": "afs_heat_2_salvage", "count": [ 1, 2 ] }, + { "item": "steel_chunk", "count": [ 1, 2 ] }, + { "item": "reinforced_glass_pane", "count": [ 1, 2 ] }, + { "item": "plastic_sheet", "count": [ 10, 15 ] }, + { "item": "cotton_patchwork", "count": [ 20, 30 ] }, + { "item": "afs_material_1", "count": [ 10, 20 ] }, + { "item": "afs_magnet_2", "count": [ 1, 3 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] } + ] + }, + "bash": { + "str_min": 18, + "str_max": 40, + "sound": "clang!", + "sound_fail": "whump.", + "items": [ + { "item": "afs_energy_storage_2", "count": [ 2, 4 ] }, + { "item": "afs_heat_2_salvage", "count": [ 0, 2 ] }, + { "item": "steel_chunk", "count": [ 3, 6 ] }, + { "item": "glass_shard", "count": [ 3, 6 ] }, + { "item": "plastic_chunk", "count": [ 20, 30 ] }, + { "item": "cotton_patchwork", "count": [ 20, 30 ] }, + { "item": "afs_material_1", "count": [ 10, 20 ] }, + { "item": "afs_magnet_2", "count": [ 1, 3 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] } + ] + } + }, + { + "type": "furniture", + "id": "f_gene_editor_gutted", + "name": "Ravaged Mercurial Resequencer", + "description": "A large bio-sarcophagus and accompanying control machinery. Panels dangle loosely from their hinges revealing a rat's nest of wires and cabling ripped from the machine. Useless metal and electronics scraps are strewn about haphazardly on the floor. It's clear anything of value has long been taken from this machine.", + "symbol": "O", + "color": "light_blue", + "move_cost_mod": 15, + "coverage": 80, + "comfort": 2, + "required_str": -1, + "looks_like": "t_vat", + "flags": [ "TRANSPARENT", "PLACE_ITEM", "MOUNTABLE", "CAN_SIT" ], + "deconstruct": { + "items": [ + { "item": "steel_chunk", "count": [ 1, 2 ] }, + { "item": "reinforced_glass_pane", "count": [ 1, 2 ] }, + { "item": "plastic_sheet", "count": [ 10, 15 ] }, + { "item": "cotton_patchwork", "count": [ 20, 30 ] }, + { "item": "afs_material_1", "count": [ 5, 8 ] } + ] + }, + "bash": { + "str_min": 18, + "str_max": 40, + "sound": "clang!", + "sound_fail": "whump.", + "items": [ + { "item": "steel_chunk", "count": [ 3, 6 ] }, + { "item": "glass_shard", "count": [ 3, 6 ] }, + { "item": "plastic_chunk", "count": [ 20, 30 ] }, + { "item": "cotton_patchwork", "count": [ 20, 30 ] }, + { "item": "afs_material_1", "count": [ 5, 8 ] } + ] + } + }, { "type": "furniture", "id": "f_habitat_kitchenette", @@ -590,5 +670,26 @@ { "item": "rock", "count": [ 1, 2 ] } ] } + }, + { + "type": "furniture", + "id": "f_genetech_mannequin", + "name": "Genetech display mannequin", + "description": "A life-size painted plastic figure of a person displaying prominent genetic alterations. Commonly used as part of Mercurial Ad campaigns intended to sell the public on Genetech treatments.", + "symbol": "@", + "color": "white", + "looks_like": "f_mannequin", + "move_cost_mod": 2, + "coverage": 40, + "required_str": 5, + "flags": [ "PLACE_ITEM", "TRANSPARENT" ], + "deconstruct": { "items": [ { "item": "plastic_chunk", "count": 15 } ] }, + "bash": { + "str_min": 6, + "str_max": 40, + "sound": "smash!", + "sound_fail": "whump.", + "items": [ { "item": "plastic_chunk", "count": [ 9, 12 ] } ] + } } ] diff --git a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_card_readers.json b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_card_readers.json index 6bb33136f5070..d3034b29e7b33 100644 --- a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_card_readers.json +++ b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_card_readers.json @@ -44,5 +44,28 @@ "success_msg": "You opened the door!", "redundant_msg": "The door is already open." } + }, + { + "type": "terrain", + "id": "t_afs_mercurial_card_reader", + "name": "Old Mercurial Card Reader", + "description": "A smartcard based lock system once fitted to corporate Mercurial prefab facilities. While an original key would be impossible to find, the machine is ancient and obsolete, and it can be hacked or masterkeys can be obtained to bypass it.", + "symbol": "6", + "color": "green", + "copy-from": "t_card_science_maintenance_green", + "looks_like": "t_card_science_maintenance_green", + "examine_action": { + "type": "cardreader", + "flags": [ "OLD_MERCURIAL_CARD" ], + "consume_card": false, + "allow_hacking": true, + "despawn_monsters": false, + "radius": 3, + "terrain_changes": { "t_door_metal_locked": "t_door_metal_c" }, + "query": true, + "query_msg": "Are you sure you want to open this door?", + "success_msg": "You opened the door!", + "redundant_msg": "The door is already open." + } } ] diff --git a/data/mods/Aftershock/maps/mapgen/gene_clinic_1.json b/data/mods/Aftershock/maps/mapgen/gene_clinic_1.json new file mode 100644 index 0000000000000..f3e57095edf17 --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen/gene_clinic_1.json @@ -0,0 +1,424 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": "afs_gene_clinic_1_a1", + "object": { + "fill_ter": "t_linoleum_white", + "rows": [ + "©©1™™©1©©©1©©™1©™©1™©1™™", + "™©|©©©|©™™|™©©|™™©|©©|©™", + "™©©™™™©©™™™©©™©©©©™™™©©™", + "©©™℗℗℗©℗℗℗©℗℗℗℗℗™©©™™©©©", + "™™|)))|)))|))))℗™™™©©|1™", + "™™|n2n|n2n|n2n)℗©™™©©©™™", + "™™|{;{{{;{{{;2)℗©©™©™™™™", + "™™||||||:|||{n)℗3©©©℗©™™", + "™||{{nn{{nn||||)|!!|)|™™", + "™™#hp{{hp{{{hp|2|{{|2|™™", + "™||ck{{ck{{{ck|;|;;|;|™™", + "™™|hh{{hh{{{hh|:|!!|:|™™", + "™||{{{;{{{{{;{{{{{{{{|™™", + "™™#{{n2n{{2{{{{{{{{{y|™™", + "™||::|||{pkh{{jcj{2{s|™™", + "™™|;;|q:{hch{{j;j{;{s|™™", + "™™|{{|q|)))))|J{c{n{s|™™", + "™™|<<|{|†††††||||:|:||™™", + "™™||||#|||||||||{;|;{|™™", + "™™™™™|™|™™™™™™™|~n|~n|™™", + "™™™™™™™™™™™™™™™|||||||™™", + "™™|™™™|™™™|™™™|™™™™™™™™™", + "™™|™™™|™™™|™™™|™™™™™™™™™", + "™™™™™™™™™™™™™™™™™™™™™™™™" + ], + "palettes": [ + "afs_habitat_structure", + "afs_habitat_exterior", + "afs_terra", + "afs_habitat_residential_furnishing", + "afs_light_param_palette" + ], + "terrain": { "1": "t_sidewalk", "3": "t_sidewalk" }, + "furniture": { "1": "f_screenmirror", "2": "f_genetech_mannequin" }, + "signs": { + "3": { "signage": "Mercurial Gene Clinic: Welcome to the better you. Genetech: Embrace the next evolution." } + }, + "items": { + "q": { "item": "afs_mutant_colonist_eva_g", "chance": 60, "repeat": [ 1, 2 ] }, + "k": { "item": "office", "chance": 60 } + }, + "place_monster": [ { "group": "AFS_GROUP_RUIN_MOXIE", "x": [ 3, 20 ], "y": [ 8, 16 ], "pack_size": [ 2, 5 ], "chance": 60 } ], + "place_nested": [ + { "chunks": [ { "param": "lightstatus", "fallback": "null" } ], "x": 0, "y": 0 }, + { + "chunks": [ + { + "switch": { "param": "lightstatus", "fallback": "null" }, + "cases": { "null": "afs_dead_plants", "afs_map_lights_on": "null" } + } + ], + "x": 0, + "y": 0 + } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "afs_gene_clinic_1_a2", + "object": { + "fill_ter": "t_linoleum_white", + "rows": [ + " [[[[[[[[[[[[[[[[[[[[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " ||)|||)|||)||))||||| ", + " |@yn|@yn|@yn|{{{{{{| ", + " |@;{|@;{|@;{|;;|;;{| ", + " |{{c|{{c|{{c|<<|{{{| ", + " ||:|||:|||:|||||4!!1| ", + " #{{{{;{{{;{{{{{{;{{| ", + " ||{{{{;{{{;{{{{{{;{{| ", + " |;;|:||:||:||{{||:|| ", + " ||{{|;{|;{|;{|;;|{;{| ", + " #{{|bb|bb|~n|{{|{{{| ", + " ||::||||||||||3:||||| ", + " |;;|❶❷❺|{{{{v{{|nnl| ", + " |{{|{;{:{;{{{;{:{{{| ", + " |>>|❸{❹5hyhhyh{|b;{| ", + " |||||#|||)))||:|b{{| ", + " [............|~|b{{| ", + " [..❻.❻.❻....[|||))|| ", + " [...........[ ", + " [[[[[[[[[[[[[ ", + " " + ], + "palettes": [ + "afs_habitat_structure", + "afs_habitat_life_support", + "afs_habitat_residential_furnishing", + "afs_light_param_palette", + "afs_gene_clinc_1_params" + ], + "terrain": { + "1": "t_afs_mercurial_card_reader", + "3": "t_concrete_wall", + "4": "t_concrete_wall", + "5": "t_concrete_wall", + " ": "t_open_air", + "❻": "t_metal_floor" + }, + "place_monster": [ { "group": "AFS_GROUP_RUIN_MOXIE", "x": [ 3, 20 ], "y": [ 5, 17 ], "pack_size": [ 2, 4 ], "chance": 60 } ], + "graffiti": { + "3": { + "text": "Employee Breakroom: We would like to remind you that all staff break times are extensively monitored by Corp Security. And remember, the customer is always right! - Management" + }, + "4": { + "text": "Gene-Editing Lab: The new you is waiting just beyond these doors. All clients must be accompanied by Mercurial Staff." + }, + "5": { "text": "Only licensed Mercurial Repair Techs beyond this point: Life Support Room" } + }, + "place_nested": [ + { + "chunks": [ + { + "switch": { "param": "looted", "fallback": "afs_gene_clinic_1_a2_unlooted" }, + "cases": { + "afs_gene_clinic_1_a2_unlooted": "afs_gene_clinic_1_a2_unlooted", + "afs_gene_clinic_1_a2_looted": "afs_gene_clinic_1_a2_looted" + } + } + ], + "x": 0, + "y": 0 + }, + { "chunks": [ { "param": "lightstatus", "fallback": "null" } ], "x": 0, "y": 0 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "afs_gene_clinic_1_a3", + "object": { + "fill_ter": "t_linoleum_white", + "rows": [ + " ", + " ", + " ", + " ", + " |||||||||||||))))))) ", + " |{{@{{|{{@{{|{{{{{{) ", + " |{{@{{|{{@{{|;;|{;{) ", + " |{{;{{|{{;{{|>>|{{{) ", + " |ch{{{|ch{{{||||{{{) ", + " |))91!|))91!|ck|{;{) ", + " |{{{{{;{{{{{{{;{{{{) ", + " |{{{{{;{{{{{{{;{{{{) ", + " ||!17||||||{{||||||| ", + " |4..4|4|{{|{{:{{{ch) ", + " |4''4|)|{{1{{6{{;{{) ", + " ||!!||{{;{!;;|p{{{v) ", + " |.'..|{{{{8{{6|||||| ", + " |....|{|{{|{{:{{{ch) ", + " |||||||||||))|{{;{{) ", + " |p{{{v) ", + " |)))))) ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_structure", "afs_habitat_residential_furnishing", "afs_light_param_palette", "afs_gene_clinc_1_params" ], + "terrain": { + "1": "t_afs_mercurial_card_reader", + "4": "t_metal_floor", + "6": "t_concrete_wall", + "7": "t_concrete_wall", + "8": "t_concrete_wall", + "9": "t_reinforced_glass", + " ": "t_open_air" + }, + "furniture": { "4": "f_drone_recharge_station" }, + "graffiti": { + "6": { "text": "Doctor 's Office." }, + "7": { "text": "Only licensed Mercurial Repair Techs beyond this point: Drone Storage and Maintenance." }, + "8": { "text": "Gene-Vault: All removal of Genetech products must be promptly logged. - Management." }, + "9": { "text": "Operating Theatre" } + }, + "place_nested": [ + { + "chunks": [ + { + "switch": { "param": "looted", "fallback": "afs_gene_clinic_1_a3_unlooted" }, + "cases": { + "afs_gene_clinic_1_a2_unlooted": "afs_gene_clinic_1_a3_unlooted", + "afs_gene_clinic_1_a2_looted": "afs_gene_clinic_1_a3_looted" + } + } + ], + "x": 0, + "y": 0 + }, + { "chunks": [ { "param": "lightstatus", "fallback": "null" } ], "x": 0, "y": 0 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": "afs_gene_clinic_1_a4", + "object": { + "fill_ter": "t_metal_floor", + "rows": [ + " ", + " ", + " ", + " ", + " [[[[[[[[[[[[[[[[[[[[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [..................[ ", + " [[[[[[[[[[[[[[.....[ ", + " [.....[ ", + " [[[[[[[ ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_structure", "afs_habitat_residential_furnishing" ], + "terrain": { " ": "t_open_air" } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_gene_clinic_1_a2_unlooted", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ö ", + " k k k ", + " ", + " 11 ", + " ", + " ", + " ", + " l l l q ", + " l q ", + " ", + " FoUU l ", + " l ", + " l ", + " l ", + " l ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_residential_furnishing" ], + "terrain": { "1": "t_door_metal_locked" }, + "monster": { "ö": { "monster": "mon_afs_commercial_laser_turret" } }, + "items": { "k": { "item": "office", "chance": 60 }, "q": { "item": "afs_colonist_outfit", "chance": 40 } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_gene_clinic_1_a2_looted", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " ", + " 2k 2k 2k ", + " 2 2 2 ", + " 11 ", + " 2 22 2 222 ", + " 2 2 2 22 2 2 ", + " ", + " 2l 2l l2q ", + " l2q ", + " ", + " FoUU l ", + " 2 22 22l ", + " 22 2l ", + " 2l ", + " 2l ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_residential_furnishing_looted" ], + "terrain": { "1": "t_mdoor_frame" }, + "items": { "2": { "item": "trash", "chance": 10, "repeat": [ 1, 4 ] } } + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_gene_clinic_1_a3_unlooted", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " à 3 à 3 ", + " k k ", + " k k ", + " ", + " 2 2 ", + " ", + " ", + " 2 ", + " qq ", + " á k ", + " 2 ", + " ", + " 5 qq ", + " á k ", + " ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_residential_furnishing" ], + "terrain": { "2": "t_door_metal_locked" }, + "furniture": { "3": "f_gene_editor_inactive", "5": "f_e_safe_l", "à": "f_locker", "á": "f_locker" }, + "place_item": [ { "item": "bot_sentinel_lx", "x": 8, "y": 13, "amount": 1, "chance": 100 } ], + "items": { + "5": { "item": "afs_genetech_commerical_safe" }, + "à": [ + { "item": "harddrugs", "chance": 60 }, + { "item": "gear_medical", "chance": 60, "repeat": [ 1, 3 ] }, + { "item": "drugs_analgesic", "chance": 60, "repeat": [ 1, 3 ] }, + { "item": "drugs_rare", "chance": 60 }, + { "item": "surgery", "chance": 60 } + ], + "á": [ { "item": "gear_medical", "chance": 60, "repeat": [ 1, 3 ] }, { "item": "surgery", "chance": 60 } ], + "k": { "item": "office", "chance": 60 }, + "q": { "item": "afs_genetech_commercial_shelf", "chance": 60 } + }, + "place_monster": [ + { "group": "AFS_GROUP_ROBOT_MODERATE_RISK", "x": [ 4, 19 ], "y": [ 10, 11 ], "pack_size": 1, "chance": 100 }, + { "group": "AFS_GROUP_ROBOT_LOW_RISK", "x": [ 3, 6 ], "y": [ 13, 14 ], "pack_size": 2, "chance": 30 }, + { "group": "AFS_GROUP_ROBOT_LOW_RISK", "x": [ 3, 13 ], "y": [ 5, 8 ], "pack_size": 1, "chance": 15 }, + { "group": "AFS_GROUP_ROBOT_LOW_RISK", "x": [ 16, 20 ], "y": [ 13, 19 ], "pack_size": 1, "chance": 15 } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "afs_gene_clinic_1_a3_looted", + "object": { + "mapgensize": [ 24, 24 ], + "rows": [ + " ", + " ", + " ", + " ", + " ", + " à 3 à 3 ", + " k1 1 k1 1 ", + " k11 k11 ", + " 11 11 ", + " 2 2 ", + " 11 11 1 1 ", + " 1 11 1 11 1 ", + " 2 1 ", + " qq 1 ", + " 1 1 á 1k1 ", + " 1 1211 11 ", + " 1 1 ", + " 5 qq 1 1 ", + " á 1k1 ", + " 11 ", + " ", + " ", + " ", + " " + ], + "palettes": [ "afs_habitat_residential_furnishing_looted" ], + "terrain": { "2": "t_mdoor_frame" }, + "furniture": { "3": "f_gene_editor_gutted", "5": "f_e_safe_o", "à": "f_locker", "á": "f_locker" }, + "items": { "1": { "item": "trash", "chance": 10, "repeat": [ 1, 4 ] } } + } + }, + { + "type": "palette", + "id": "afs_gene_clinc_1_params", + "parameters": { + "looted": { + "type": "nested_mapgen_id", + "default": { "distribution": [ [ "afs_gene_clinic_1_a2_unlooted", 60 ], [ "afs_gene_clinic_1_a2_looted", 40 ] ] } + } + } + } +] diff --git a/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_structure.json b/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_structure.json index c5d24fe6b9d78..1294c9fe53b44 100644 --- a/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_structure.json +++ b/data/mods/Aftershock/maps/mapgen_pallete/afs_habitat_structure.json @@ -112,6 +112,18 @@ { "type": "palette", "id": "afs_habitat_residential_furnishing", + "palettes": [ "afs_habitat_residential_furnishing_looted" ], + "items": { + "o": { "item": "afs_kitchenette", "chance": 60 }, + "U": { "item": "afs_old_food_storage", "chance": 60 }, + "F": { "item": "afs_old_food_storage", "chance": 60 }, + "l": { "item": "afs_frontier_cryo_g", "chance": 50 } + } + }, + { + "type": "palette", + "id": "afs_habitat_residential_furnishing_looted", + "//": "Defines the furniture ids and loot items that aren't valuable enough to steal.", "furniture": { "@": "f_bed", "S": "f_sleep_pod", @@ -137,13 +149,9 @@ "e": "f_entertainment_center" }, "items": { - "o": { "item": "afs_kitchenette", "chance": 60 }, - "U": { "item": "afs_old_food_storage", "chance": 60 }, - "F": { "item": "afs_old_food_storage", "chance": 60 }, - "W": { "item": "afs_colonist_outfit", "chance": 60 }, - "l": { "item": "afs_frontier_cryo_g", "chance": 50 }, "@": { "item": "bed", "chance": 50 }, - "v": { "item": "trash", "chance": 30, "repeat": [ 1, 4 ] } + "v": { "item": "trash", "chance": 30, "repeat": [ 1, 4 ] }, + "W": { "item": "afs_colonist_outfit", "chance": 60 } } }, { diff --git a/data/mods/Aftershock/maps/mapgen_pallete/afs_param_palettes.json b/data/mods/Aftershock/maps/mapgen_pallete/afs_param_palettes.json new file mode 100644 index 0000000000000..77d48a78367b3 --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen_pallete/afs_param_palettes.json @@ -0,0 +1,9 @@ +[ + { + "type": "palette", + "id": "afs_light_param_palette", + "parameters": { + "lightstatus": { "type": "nested_mapgen_id", "default": { "distribution": [ [ "afs_map_lights_on", 20 ], [ "null", 80 ] ] } } + } + } +] diff --git a/data/mods/Aftershock/maps/overmap_terrain.json b/data/mods/Aftershock/maps/overmap_terrain.json index 58e79bd63ef4f..1faa88a088630 100644 --- a/data/mods/Aftershock/maps/overmap_terrain.json +++ b/data/mods/Aftershock/maps/overmap_terrain.json @@ -576,5 +576,15 @@ "see_cost": "high", "mondensity": 2, "flags": [ "SOURCE_SAFETY" ] + }, + { + "type": "overmap_terrain", + "name": "Mercurial Gene Clinic", + "id": [ "afs_gene_clinic_1_a1", "afs_gene_clinic_1_a2", "afs_gene_clinic_1_a3", "afs_gene_clinic_1_a4" ], + "sym": "G", + "color": "green", + "see_cost": "high", + "mondensity": 2, + "flags": [ "SIDEWALK" ] } ] diff --git a/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json b/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json index d065deda908c6..8a9ea1f73f70c 100644 --- a/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json +++ b/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json @@ -32,6 +32,18 @@ { "monster": "mon_skitterbot_rat", "weight": 500, "cost_multiplier": 0 } ] }, + { + "type": "monstergroup", + "id": "AFS_GROUP_ROBOT_MODERATE_RISK", + "default": "mon_advbot_laser", + "monsters": [ + { "monster": "mon_advbot_laser", "weight": 100, "cost_multiplier": 40 }, + { "monster": "afs_mon_sentinel_lx", "weight": 100, "cost_multiplier": 30 }, + { "monster": "mon_defbot_shot", "weight": 100, "cost_multiplier": 40 }, + { "monster": "mon_milbot_556", "weight": 100, "cost_multiplier": 100 }, + { "monster": "mon_milbot_needle", "weight": 100, "cost_multiplier": 100 } + ] + }, { "type": "monstergroup", "id": "GROUP_PIRATE__BOT_AMBUSH", diff --git a/data/mods/Aftershock/region_settings.json b/data/mods/Aftershock/region_settings.json index ca6853324536b..7cbe3b52358a9 100644 --- a/data/mods/Aftershock/region_settings.json +++ b/data/mods/Aftershock/region_settings.json @@ -7,6 +7,7 @@ "shop_sigma": 300, "shops": { "afs_augmentation_clinic_1": 400, + "afs_gene_clinic_1": 400, "city_block_2": 300, "urban_35_hospital": 175, "office_skyscraper": 300, diff --git a/data/mods/aftershock_exoplanet/region_settings.json b/data/mods/aftershock_exoplanet/region_settings.json index 70bc7c3f1884e..128b59da071b8 100644 --- a/data/mods/aftershock_exoplanet/region_settings.json +++ b/data/mods/aftershock_exoplanet/region_settings.json @@ -44,6 +44,7 @@ "parks": { "afs_city_ruinfield": 100, "afs_shuttle_pad": 10, "afs_enclosed_park": 30 }, "shops": { "afs_augmentation_clinic_1": 400, + "afs_gene_clinic_1": 400, "afs_astrobiology_lab": 400, "afs_general_store_1": 400, "afs_city_urban_farm_small": 300,