From 9774b81d7b05a0c488fd75cbdb769419d56e3e51 Mon Sep 17 00:00:00 2001 From: John Candlebury Date: Fri, 28 May 2021 04:20:57 -0600 Subject: [PATCH] Aftershock: Basic Exoplanet Region (#48206) --- .../Aftershock/maps/overmap_specials.json | 6 +- .../Map/overmap_terrain/ice_fields.json | 52 +++++ .../aftershock_exoplanet/game_balance.json | 16 ++ data/mods/aftershock_exoplanet/modinfo.json | 12 + .../aftershock_exoplanet/region_settings.json | 207 ++++++++++++++++++ data/mods/aftershock_exoplanet/scenarios.json | 13 ++ .../location_blacklist.json | 89 ++++++++ .../setting_blacklists/mon_blacklist.json | 9 + .../scenario_blacklist.json | 7 + .../aftershock_exoplanet/weather_type.json | 130 +++++++++++ 10 files changed, 537 insertions(+), 4 deletions(-) create mode 100644 data/mods/aftershock_exoplanet/Map/overmap_terrain/ice_fields.json create mode 100644 data/mods/aftershock_exoplanet/game_balance.json create mode 100644 data/mods/aftershock_exoplanet/modinfo.json create mode 100644 data/mods/aftershock_exoplanet/region_settings.json create mode 100644 data/mods/aftershock_exoplanet/scenarios.json create mode 100644 data/mods/aftershock_exoplanet/setting_blacklists/location_blacklist.json create mode 100644 data/mods/aftershock_exoplanet/setting_blacklists/mon_blacklist.json create mode 100644 data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json create mode 100644 data/mods/aftershock_exoplanet/weather_type.json diff --git a/data/mods/Aftershock/maps/overmap_specials.json b/data/mods/Aftershock/maps/overmap_specials.json index 440fb168d2728..3063859b1d991 100644 --- a/data/mods/Aftershock/maps/overmap_specials.json +++ b/data/mods/Aftershock/maps/overmap_specials.json @@ -7,8 +7,7 @@ "locations": [ "land" ], "city_distance": [ 5, -1 ], "city_sizes": [ 2, -1 ], - "occurrences": [ 0, 1 ], - "flags": [ "CLASSIC" ] + "occurrences": [ 0, 1 ] }, { "type": "overmap_special", @@ -91,8 +90,7 @@ "locations": [ "land" ], "city_distance": [ 5, -1 ], "city_sizes": [ 2, -1 ], - "occurrences": [ 0, 1 ], - "flags": [ "CLASSIC" ] + "occurrences": [ 0, 1 ] }, { "type": "overmap_special", diff --git a/data/mods/aftershock_exoplanet/Map/overmap_terrain/ice_fields.json b/data/mods/aftershock_exoplanet/Map/overmap_terrain/ice_fields.json new file mode 100644 index 0000000000000..f470565670d0a --- /dev/null +++ b/data/mods/aftershock_exoplanet/Map/overmap_terrain/ice_fields.json @@ -0,0 +1,52 @@ +[ + { + "type": "overmap_terrain", + "id": "field", + "copy-from": "generic_open_land", + "name": "Ice Fields", + "sym": ".", + "color": "light_gray", + "see_cost": 2, + "extras": "field", + "mapgen": [ { "method": "builtin", "name": "field" } ], + "flags": [ "NO_ROTATE" ] + }, + { + "type": "overmap_terrain", + "id": "forest", + "copy-from": "generic_forest", + "name": "hydrothermal flats", + "sym": "%", + "color": "light_red", + "see_cost": 3, + "extras": "forest", + "spawns": { "group": "GROUP_FOREST", "population": [ 0, 3 ], "chance": 13 }, + "flags": [ "NO_ROTATE", "SOURCE_FORAGE" ] + }, + { + "type": "overmap_terrain", + "id": "forest_thick", + "copy-from": "generic_forest", + "name": "hydrothermal flats", + "sym": "%", + "color": "light_red", + "see_cost": 4, + "extras": "forest_thick", + "spawns": { "group": "GROUP_FOREST", "population": [ 0, 6 ], "chance": 15 }, + "mapgen": [ { "method": "builtin", "name": "forest" } ], + "flags": [ "NO_ROTATE", "SOURCE_FORAGE" ] + }, + { + "type": "overmap_terrain", + "id": "forest_water", + "copy-from": "generic_wetland_forest", + "name": "hydrothermal flats", + "sym": "%", + "color": "cyan", + "see_cost": 4, + "extras": "forest_water", + "spawns": { "group": "GROUP_SWAMP", "population": [ 1, 4 ], "chance": 16 }, + "mapgen": [ { "method": "builtin", "name": "forest" } ], + "flags": [ "NO_ROTATE", "SOURCE_FORAGE", "RISK_HIGH" ] + } +] diff --git a/data/mods/aftershock_exoplanet/game_balance.json b/data/mods/aftershock_exoplanet/game_balance.json new file mode 100644 index 0000000000000..f36efb1980153 --- /dev/null +++ b/data/mods/aftershock_exoplanet/game_balance.json @@ -0,0 +1,16 @@ +[ + { + "type": "EXTERNAL_OPTION", + "name": "GENERIC_PROFESSION_ID", + "info": "The profession selected by default in the character creator menu.", + "stype": "string_input", + "value": "afs_rating" + }, + { + "type": "EXTERNAL_OPTION", + "name": "GENERIC_SCENARIO_ID", + "info": "The scenario selected by default in the character creator menu.", + "stype": "string_input", + "value": "escape_pod" + } +] diff --git a/data/mods/aftershock_exoplanet/modinfo.json b/data/mods/aftershock_exoplanet/modinfo.json new file mode 100644 index 0000000000000..343b808c968e6 --- /dev/null +++ b/data/mods/aftershock_exoplanet/modinfo.json @@ -0,0 +1,12 @@ +[ + { + "type": "MOD_INFO", + "id": "aftershock_exoplanet", + "name": "Aftershock: Exoplanet", + "authors": [ "Maleclypse", "Candlebury", "Mom_Bun" ], + "maintainers": [ "Maleclypse", "Candlebury", "Mom_Bun" ], + "description": "An experimental implementation of Aftershock's exoplanet region, not recommended for actual playthroughs. Adds no new content by itself, and requires the main mod to function correctly.", + "category": "content", + "dependencies": [ "dda", "aftershock" ] + } +] diff --git a/data/mods/aftershock_exoplanet/region_settings.json b/data/mods/aftershock_exoplanet/region_settings.json new file mode 100644 index 0000000000000..615b3cd483879 --- /dev/null +++ b/data/mods/aftershock_exoplanet/region_settings.json @@ -0,0 +1,207 @@ +[ + { + "type": "region_settings", + "id": "default", + "overmap_feature_flag_settings": { + "clear_blacklist": false, + "blacklist": [ "BLOB", "BEE", "ANT", "FUNGAL", "SLIME", "TRIFFID", "MI-GO", "LAB", "CLASSIC" ], + "clear_whitelist": false, + "whitelist": [ ] + }, + "default_oter": "field", + "default_groundcover": [ [ "t_region_groundcover", 1 ] ], + "river_scale": 0, + "city": { + "shop_radius": 30, + "shop_sigma": 80, + "park_radius": 20, + "park_sigma": 80, + "houses": { "afs_city_ruinfield": 400, "afs_formless_ruins_dynamic": 600 }, + "parks": { "afs_city_ruinfield": 100 }, + "shops": { "afs_augmentation_clinic_1": 400, "afs_astrobiology_lab": 400 } + }, + "weather": { + "base_temperature": -50.0, + "base_humidity": 80.0, + "base_pressure": 1015.0, + "base_wind": 9.0, + "base_wind_distrib_peaks": 80, + "base_wind_season_variation": 50, + "weather_types": [ "clear", "sunny", "cloudy", "afs_whiteout", "afs_thunder", "afs_lightning", "afs_flurries", "afs_snowing" ] + }, + "region_terrain_and_furniture": { + "terrain": { + "t_region_groundcover": { "t_snow": 32, "t_ice": 2, "t_deaddirt": 5 }, + "t_region_groundcover_urban": { "t_snow": 20, "t_ice": 3 }, + "t_region_groundcover_forest": { "t_snow": 410, "t_lichen": 300, "t_lichendirt": 300, "t_fuma_ice": 1 }, + "t_region_groundcover_swamp": { "t_snow": 410, "t_lichen": 300, "t_lichendirt": 300, "t_fuma_ice": 1 }, + "t_region_groundcover_barren": { "t_snow": 20, "t_ice": 3 }, + "t_region_grass": { "t_lichen": 1 }, + "t_region_soil": { "t_deaddirt": 1 }, + "t_region_shrub": { "t_lichen": 30 }, + "t_region_shrub_fruit": { "t_lichenyum": 30 }, + "t_region_shrub_decorative": { "t_lichenyum": 3, "t_lichendirt": 1 }, + "t_region_tree": { "t_tree_worm": 30, "t_tree_lichen": 15, "t_tree_xenoinfested": 10 }, + "t_region_tree_fruit": { "t_lichenyum": 30 }, + "t_region_tree_nut": { "t_tree_worm": 30, "t_tree_xenoinfested": 15 }, + "t_region_tree_evergreen": { "t_tree_xenoinfested": 32, "t_tree_xeno": 16 } + }, + "furniture": { + "f_region_flower": { "f_shrub_moss": 1 }, + "f_region_flower_decorative": { + "f_lily": 4, + "f_flower_tulip": 4, + "f_black_eyed_susan": 3, + "f_dahlia": 2, + "f_bluebell": 2, + "f_flower_spurge": 1, + "f_chicory": 1, + "f_sunflower": 1 + }, + "f_region_weed": { "f_shrub_moss": 1 }, + "f_region_water_plant": { "f_shrub_moss": 15 } + } + }, + "field_coverage": { + "percent_coverage": 0.02, + "default_ter": "t_lichen", + "other": { + "t_region_tree": 1, + "t_region_shrub": 3, + "f_region_weed": 49, + "f_region_flower": 37, + "f_boulder_small": 5, + "f_boulder_medium": 4, + "f_boulder_large": 1 + }, + "boost_chance": 0.03, + "boosted_percent_coverage": 2.5, + "boosted_other": { "t_lichen": 0.2, "t_lichendirt": 0.1 }, + "boosted_other_percent": 50.0 + }, + "overmap_lake_settings": { + "noise_threshold_lake": 10.0, + "lake_size_min": 20, + "lake_depth": -5, + "shore_extendable_overmap_terrain": [ "forest", "forest_thick", "forest_water", "field" ], + "shore_extendable_overmap_terrain_aliases": [ + { "om_terrain": "island_forest", "om_terrain_match_type": "TYPE", "alias": "forest" }, + { "om_terrain": "island_forest_thick", "om_terrain_match_type": "TYPE", "alias": "forest_thick" }, + { "om_terrain": "island_forest_water", "om_terrain_match_type": "TYPE", "alias": "forest_water" }, + { "om_terrain": "island_field", "om_terrain_match_type": "TYPE", "alias": "field" } + ] + }, + "overmap_ravine_settings": { "num_ravines": 15, "ravine_width": 3, "ravine_range": 45, "ravine_depth": -3 }, + "overmap_forest_settings": { + "noise_threshold_forest": 0.5, + "noise_threshold_forest_thick": 0.55, + "noise_threshold_swamp_adjacent_water": 0.3, + "noise_threshold_swamp_isolated": 0.6, + "river_floodplain_buffer_distance_min": 3, + "river_floodplain_buffer_distance_max": 15 + }, + "forest_mapgen_settings": { + "forest": { + "sparseness_adjacency_factor": 9, + "item_group": "forest", + "item_group_chance": 60, + "item_spawn_iterations": 1, + "clear_groundcover": false, + "groundcover": { "t_region_groundcover_forest": 1 }, + "clear_components": false, + "components": { + "trees": { "sequence": 0, "chance": 12, "clear_types": false, "types": { "t_region_tree": 128 } }, + "shrubs_and_flowers": { "sequence": 1, "chance": 10, "clear_types": false, "types": { "t_region_shrub": 100, "f_region_weed": 20 } }, + "clutter": { + "sequence": 2, + "chance": 80, + "clear_types": false, + "types": { + "f_geo_vent": 128, + "t_dirtmound": 128, + "f_boulder_small": 128, + "f_rubble_rock": 32, + "f_boulder_medium": 8, + "f_boulder_large": 1, + "t_pit": 1, + "t_pit_shallow": 1 + } + }, + "water": { "sequence": 3, "chance": 512, "clear_types": false, "types": { "t_water_sh": 1 } } + }, + "clear_terrain_furniture": false, + "terrain_furniture": { } + }, + "forest_thick": { + "sparseness_adjacency_factor": 4, + "item_group": "forest", + "item_group_chance": 60, + "item_spawn_iterations": 1, + "clear_groundcover": false, + "groundcover": { "t_region_groundcover_forest": 1 }, + "clear_components": false, + "components": { + "trees": { "sequence": 0, "chance": 5, "clear_types": false, "types": { "t_region_tree": 100 } }, + "shrubs_and_flowers": { "sequence": 1, "chance": 5, "clear_types": false, "types": { "t_region_shrub": 100, "f_region_weed": 20 } }, + "clutter": { + "sequence": 2, + "chance": 64, + "clear_types": false, + "types": { + "f_geo_vent": 14, + "t_dirtmound": 24, + "f_boulder_small": 32, + "f_rubble_rock": 32, + "f_boulder_medium": 16, + "f_boulder_large": 4, + "t_pit": 1, + "t_pit_shallow": 1 + } + }, + "water": { "sequence": 3, "chance": 512, "clear_types": false, "types": { "t_water_sh": 1 } } + }, + "clear_terrain_furniture": false, + "terrain_furniture": { } + }, + "forest_water": { + "sparseness_adjacency_factor": 2, + "item_group": "forest", + "item_group_chance": 60, + "item_spawn_iterations": 1, + "clear_groundcover": false, + "groundcover": { "t_region_groundcover_swamp": 1 }, + "clear_components": false, + "components": { + "trees": { "sequence": 1, "chance": 45, "clear_types": false, "types": { "f_geo_vent": 40 } }, + "shrubs_and_flowers": { "sequence": 1, "chance": 15, "clear_types": false, "types": { "t_region_shrub": 80, "f_region_weed": 30 } }, + "clutter": { + "sequence": 2, + "chance": 75, + "clear_types": false, + "types": { "t_trunk": 1, "f_boulder_small": 2, "f_boulder_medium": 1 } + }, + "water": { "sequence": 3, "chance": 2, "clear_types": false, "types": { "t_water_hot": 12 } } + }, + "clear_terrain_furniture": false, + "terrain_furniture": { "t_water_hot": { "chance": 2, "clear_furniture": false, "furniture": { "f_region_water_plant": 1 } } } + } + }, + "forest_trail_settings": { + "chance": 2, + "border_point_chance": 2, + "minimum_forest_size": 100, + "random_point_min": 4, + "random_point_max": 50, + "random_point_size_scalar": 100, + "trailhead_chance": 1, + "trailhead_road_distance": 6, + "trail_center_variance": 3, + "trail_width_offset_min": 1, + "trail_width_offset_max": 3, + "clear_trail_terrain": false, + "trail_terrain": { "t_deaddirt": 1 }, + "trailheads": { "trailhead_basic": 1, "trailhead_outhouse": 1, "trailhead_shack": 1 } + }, + "map_extras": { } + } +] diff --git a/data/mods/aftershock_exoplanet/scenarios.json b/data/mods/aftershock_exoplanet/scenarios.json new file mode 100644 index 0000000000000..f78814a1fb57d --- /dev/null +++ b/data/mods/aftershock_exoplanet/scenarios.json @@ -0,0 +1,13 @@ +[ + { + "type": "scenario", + "id": "evacuee", + "name": "Stranded Spacer", + "points": 1, + "description": "What was to be a routine cargo transfer ended in tragedy when, in a brief moment of chaos, your space ship was intercepted and destroyed by a StO missile. As soon as the MAW alarm flared to life, you scrambled to the nearest escape pod and barely managed reach the uncertain safety of the planet below.", + "allowed_locs": [ "sloc_escape_pod" ], + "professions": [ "afs_espatier", "afs_rating" ], + "flags": [ "LONE_START" ], + "start_name": "Escape Pod" + } +] diff --git a/data/mods/aftershock_exoplanet/setting_blacklists/location_blacklist.json b/data/mods/aftershock_exoplanet/setting_blacklists/location_blacklist.json new file mode 100644 index 0000000000000..80201b69af785 --- /dev/null +++ b/data/mods/aftershock_exoplanet/setting_blacklists/location_blacklist.json @@ -0,0 +1,89 @@ +[ + { + "//": "mostly removes areas with their own storylines, static NPCs, and the like. some will be readded with time", + "type": "overmap_special", + "id": "Necropolis", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "St_Johns_farm", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "Strangle Temple", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "evac_center", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "hub_01", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "Hazardous Waste Sarcophagus", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "Isherwood Farms", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "//": "sorry Mr. Lapin ;w;. temporary until I work on NPCs", + "type": "overmap_special", + "id": "Cabin_Lapin", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "Strange Cabin", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "//": "there will be 'FEMA camps' in the future, but almost even more sinister", + "type": "overmap_special", + "id": "FEMA Camp", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "FEMA_camp", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "lab_surface_big", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "Mass Grave", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + }, + { + "type": "overmap_special", + "id": "Mine Entrance", + "overmaps": [ ], + "occurrences": [ 0, 0 ] + } +] diff --git a/data/mods/aftershock_exoplanet/setting_blacklists/mon_blacklist.json b/data/mods/aftershock_exoplanet/setting_blacklists/mon_blacklist.json new file mode 100644 index 0000000000000..9779163f0ecd7 --- /dev/null +++ b/data/mods/aftershock_exoplanet/setting_blacklists/mon_blacklist.json @@ -0,0 +1,9 @@ +[ + { + "//": "edited from no_wildlife", + "type": "MONSTER_WHITELIST", + "mode": "EXCLUSIVE", + "categories": [ "WILDLIFE", "MUTANT" ], + "species": [ "MOXIE", "ROBOT" ] + } +] diff --git a/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json b/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json new file mode 100644 index 0000000000000..b1ffc6dd09a24 --- /dev/null +++ b/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json @@ -0,0 +1,7 @@ +[ + { + "type": "SCENARIO_BLACKLIST", + "subtype": "whitelist", + "scenarios": [ "escape_pod" ] + } +] diff --git a/data/mods/aftershock_exoplanet/weather_type.json b/data/mods/aftershock_exoplanet/weather_type.json new file mode 100644 index 0000000000000..113a3eee20750 --- /dev/null +++ b/data/mods/aftershock_exoplanet/weather_type.json @@ -0,0 +1,130 @@ +[ + { + "id": "afs_flurries", + "type": "weather_type", + "name": "Flurries", + "color": "white", + "map_color": "h_white", + "sym": ".", + "ranged_penalty": 1, + "sight_penalty": 1.03, + "light_modifier": -20, + "sound_attn": 1, + "dangerous": false, + "precip": "light", + "rains": true, + "acidic": false, + "tiles_animation": "weather_snow_drop", + "weather_animation": { "factor": 0.01, "color": "white", "sym": "." }, + "sound_category": "drizzle", + "sun_intensity": "light", + "requirements": { "pressure_max": 1000, "humidity_min": 97, "humidity_and_pressure": false, "required_weathers": [ "cloudy" ] } + }, + { + "id": "afs_whiteout", + "type": "weather_type", + "name": "Whiteout", + "color": "i_black", + "map_color": "i_black", + "sym": "o", + "ranged_penalty": 1, + "sight_penalty": 1.03, + "light_modifier": -40, + "sound_attn": 1, + "dangerous": false, + "precip": "light", + "rains": false, + "acidic": false, + "tiles_animation": "weather_snow_drop", + "weather_animation": { "factor": 0.01, "color": "white", "sym": "*" }, + "sound_category": "drizzle", + "sun_intensity": "light", + "requirements": { "time": "day", "windpower_min": 20, "humidity_min": 97, "required_weathers": [ "cloudy", "afs_flurries" ] } + }, + { + "id": "afs_snowing", + "type": "weather_type", + "name": "Snowing", + "color": "blue", + "map_color": "h_blue", + "sym": "o", + "ranged_penalty": 3, + "sight_penalty": 1.1, + "light_modifier": -30, + "sound_attn": 4, + "dangerous": false, + "precip": "heavy", + "rains": true, + "acidic": false, + "tiles_animation": "weather_snow_drop", + "weather_animation": { "factor": 0.02, "color": "white", "sym": "*" }, + "sound_category": "rainy", + "sun_intensity": "light", + "requirements": { "pressure_max": 993, "humidity_min": 98, "humidity_and_pressure": false, "required_weathers": [ "afs_flurries", "afs_whiteout" ] } + }, + { + "id": "afs_thunder", + "type": "weather_type", + "name": "Thunder Storm", + "color": "dark_gray", + "map_color": "i_blue", + "sym": "%", + "ranged_penalty": 4, + "sight_penalty": 1.2, + "light_modifier": -40, + "sound_attn": 8, + "dangerous": false, + "precip": "heavy", + "rains": true, + "acidic": false, + "effects": [ + { + "one_in_chance": 50, + "must_be_outside": false, + "sound_message": "You hear a distant rumble of thunder.", + "sound_effect": "thunder_far" + } + ], + "tiles_animation": "weather_snow_drop", + "weather_animation": { "factor": 0.02, "color": "white", "sym": "*" }, + "sound_category": "thunder", + "sun_intensity": "none", + "requirements": { "pressure_max": 950, "required_weathers": [ "afs_snowing" ] } + }, + { + "id": "afs_lightning", + "type": "weather_type", + "name": "Lightning Storm", + "color": "yellow", + "map_color": "h_yellow", + "sym": "%", + "ranged_penalty": 4, + "sight_penalty": 1.25, + "light_modifier": -45, + "sound_attn": 8, + "dangerous": false, + "precip": "heavy", + "rains": true, + "acidic": false, + "effects": [ + { + "one_in_chance": 50, + "must_be_outside": false, + "sound_message": "You hear a distant rumble of thunder.", + "sound_effect": "thunder_far" + }, + { + "one_in_chance": 600, + "must_be_outside": false, + "message": "A flash of lightning illuminates your surroundings!", + "sound_effect": "thunder_near", + "lightning": true + } + ], + "tiles_animation": "weather_snow_drop", + "weather_animation": { "factor": 0.04, "color": "white", "sym": "*" }, + "sound_category": "thunder", + "sun_intensity": "none", + "requirements": { "pressure_max": 940, "required_weathers": [ "afs_thunder" ] } + } +]