diff --git a/data/mods/Aftershock/itemgroups/bionics_groups.json b/data/mods/Aftershock/itemgroups/bionics_groups.json index 332e20adfd54d..73abdbd03d671 100644 --- a/data/mods/Aftershock/itemgroups/bionics_groups.json +++ b/data/mods/Aftershock/itemgroups/bionics_groups.json @@ -9,6 +9,7 @@ [ "afs_bio_linguistic_coprocessor", 10 ], [ "afs_bio_dopamine_stimulators", 10 ], [ "afs_bio_neurosoft_aeronautics", 5 ], + [ "afs_bio_skullgun", 5 ], [ "bio_blaster", 5 ] ] }, @@ -20,7 +21,7 @@ { "id": "bionics_mil", "type": "item_group", - "items": [ [ "bio_blaster", 5 ], [ "afs_bio_neurosoft_aeronautics", 10 ] ] + "items": [ [ "bio_blaster", 5 ], [ "afs_bio_neurosoft_aeronautics", 10 ], [ "afs_bio_skullgun", 2 ] ] }, { "id": "bionics_sci", @@ -35,7 +36,8 @@ [ "afs_bio_wind_turbine", 10 ], [ "afs_bio_missiles", 10 ], [ "afs_bio_neurosoft_aeronautics", 10 ], - [ "afs_bio_dopamine_stimulators", 10 ] + [ "afs_bio_dopamine_stimulators", 10 ], + [ "afs_bio_skullgun", 2 ] ] }, { diff --git a/data/mods/Aftershock/items/books.json b/data/mods/Aftershock/items/books.json index 471d51151b6cb..31700c5914073 100644 --- a/data/mods/Aftershock/items/books.json +++ b/data/mods/Aftershock/items/books.json @@ -130,13 +130,33 @@ "description": "Bearing the logo of Honda, those are assembly plans, design specs, and technical drawings for the tripod. Most of this is useless to you, but you could use the assembly plans to re-assemble the robot from salvaged parts.", "copy-from": "schematics_generic" }, + { + "id": "cyrus'_notes", + "type": "BOOK", + "name": { "str": "Cyrus Whateley's Notes on Repurposing mi-go victims", "str_pl": "copies of Cyrus Whateley's Notes" }, + "description": "A folio of notes written by a madman. They seem to suggestion ways to re-animate the dead and create various affronts to the natural order.", + "weight": "2063 g", + "volume": "2 L", + "price": 929200, + "bashing": 8, + "material": [ "paper" ], + "symbol": "?", + "looks_like": "adv_chemistry", + "color": "light_green", + "skill": "firstaid", + "required_level": 8, + "max_level": 9, + "intelligence": 13, + "fun": -3, + "time": "50 m" + }, { "id": "recipe_uplift", "type": "BOOK", "name": { "str": "Dr Moreau and You", "str_pl": "copies of Dr Moreau and You" }, "description": "In what many considered a stunning example of poor taste and others considered overt specieism this text on the creation of Uplifted Animals references a story about sapient animals killing their creator. Otherwise a dry text about genetic modification.", "copy-from": "textbook_atomic", - "skill": "cooking", + "skill": "chemistry", "required_level": 9, "max_level": 10 }, @@ -152,11 +172,11 @@ "symbol": "?", "looks_like": "ZSG", "color": "cyan", - "skill": "cooking", + "skill": "chemistry", "required_level": 10, "max_level": 10, "intelligence": 16, - "time": "15 m", + "time": "35 m", "fun": -3 } ] diff --git a/data/mods/Aftershock/items/frankenstein_items.json b/data/mods/Aftershock/items/frankenstein_items.json new file mode 100644 index 0000000000000..5829f3a037897 --- /dev/null +++ b/data/mods/Aftershock/items/frankenstein_items.json @@ -0,0 +1,23 @@ +[ + { + "id": "inactive_frankenstein", + "type": "TOOL", + "name": "inactive frankenstein", + "description": "This stitched together abomination in human form lies still and waiting for you to give it the spark of life. In all likelihood you are the monster. ", + "weight": "68 kg", + "volume": "62 L", + "price": 600000, + "to_hit": -3, + "bashing": 8, + "material": "flesh", + "symbol": ";", + "color": "green", + "use_action": { + "type": "place_npc", + "npc_class_id": "frankenstein", + "summon_msg": "It's alive!", + "place_randomly": false, + "moves": 50 + } + } +] diff --git a/data/mods/Aftershock/maps/mapgen/millyficent_lab.json b/data/mods/Aftershock/maps/mapgen/millyficent_lab.json index 063e8e537e6cd..db5cee4d251ae 100644 --- a/data/mods/Aftershock/maps/mapgen/millyficent_lab.json +++ b/data/mods/Aftershock/maps/mapgen/millyficent_lab.json @@ -5,6 +5,7 @@ "om_terrain": [ "mortuary_2story" ], "weight": 100, "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], "fill_ter": "t_floor", "rows": [ "..,,,,,...uuuu...,,,,,..", @@ -95,6 +96,7 @@ "om_terrain": [ "mortuary_basement" ], "weight": 200, "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], "rotation": [ 0, 3 ], "fill_ter": "t_rock", "rows": [ @@ -151,7 +153,7 @@ "T": "t_linoleum_white", "8": "t_console_broken", "W": "t_water_dispenser", - "*": "t_utility_light" + "*": "t_thconc_floor_olight" }, "liquids": { "E": { "liquid": "water_clean", "amount": [ 0, 100 ] } }, "furniture": { @@ -200,6 +202,7 @@ "method": "json", "om_terrain": [ "mortuary_2story_second" ], "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], "fill_ter": "t_floor", "rows": [ "________________________", @@ -217,12 +220,12 @@ "__||wwww||%%%%||wwww||__", "__wZZil.b|%%%%|8....1|__", "|||ZZ..cb|%%%%|F.....w__", - "|&|A....b|%%%%|e.....|__", - "|%+......+%%%%m.....1|__", + "|&|A.*..b|%%%%|e.....|__", + "|%+......+%%%%m..*..1|__", "|S|D ll P|%%%%|E.....|__", "||||||||||:++:|h.....|__", "__|BB>CoC|1..t|a....1|__", - "__|B..*..+.*st|o.....w__", + "__|B..*..+.*st|o.*...w__", "__|TBBfiB|1..t|......|__", "__||||||||||||||w||w||__", "________________________" @@ -241,7 +244,7 @@ "m": "t_door_metal_c", "o": "t_centrifuge", "x": "t_console_broken", - "*": "t_utility_light", + "*": "t_floor_olight", "w": "t_window_bars_curtains", ">": "t_wood_stairs_down", "_": "t_open_air" @@ -282,6 +285,16 @@ "v": "f_ventilator", "Z": "f_bed" }, + "items": { + "U": [ + { "item": "cleaning", "chance": 30 }, + { "item": "supplies_reagents_lab", "chance": 10 }, + { "item": "home_hw", "chance": 50 }, + { "item": "supplies_electronics", "chance": 50 } + ], + "B": [ { "item": "exotic_books", "chance": 70 } ], + "T": [ { "item": "SUS_office_filing_cabinet", "chance": 70 } ] + }, "place_npcs": [ { "class": "millyficent_whately", "x": 17, "y": 14 } ] } }, @@ -333,5 +346,17 @@ } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "whately_cousin_update", + "object": { "mapgensize": [ 1, 1 ], "place_npcs": [ { "class": "whately_cousin", "x": 0, "y": 0 } ] } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "whately_bioturret_update", + "object": { "mapgensize": [ 1, 1 ], "place_monster": [ { "monster": "mon_migoturret_whately", "x": 0, "y": 0 } ] } } ] diff --git a/data/mods/Aftershock/maps/mapgen/whately_lmoe.json b/data/mods/Aftershock/maps/mapgen/whately_lmoe.json new file mode 100644 index 0000000000000..100ba8190e6cb --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen/whately_lmoe.json @@ -0,0 +1,276 @@ +[ + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "whately_lmoe" ], + "//": "Above ground", + "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], + "fill_ter": "t_dirt", + "rows": [ + " S S S", + " S X S S ", + " S S X S ", + " S ", + " S S SSSSS S ", + " SSSSSSSSSSSS ", + " SS$$$$$$$$$$SS ", + " X S$$TTTTTTTT$$S S ", + " SS$$T))))))T$$S ", + " S SS$$T)####)T$$SS ", + " SS$$T)#<>#)T$$SS ", + " SS$$T)#..#)T$$SS ", + " SS$$T)#+##)T$$SS S", + " S S$$T))_)))T$$SS ", + " S$$$$$_$$$$$$S ", + " SS$$$$_$$$$$SS S ", + " SSSSS_SSSSSS ", + "S X S S SS S ", + " S S ", + " S S X ", + " S S ", + " S", + " S S ", + " S " + ], + "palettes": [ "whately_bunker_ext" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "whately_lmoe_roof" ], + "//": "Above ground", + "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], + "fill_ter": "t_dirt", + "rows": [ + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvv((((((vvvvvvvvv", + "vvvvvvvvv(< (vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv( (vvvvvvvvv", + "vvvvvvvvv((v(((vvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv", + "vvvvvvvvvvvvvvvvvvvvvvvv" + ], + "palettes": [ "whately_bunker_ext" ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "whately_lmoe_under_first_floor" ], + "//": "Residence of Cyrus Whately and his clan", + "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], + "fill_ter": "t_metal_floor", + "rows": [ + "########################", + "########################", + "##||||||||||||||||||||##", + "##|{{{{{|UUUUUU|w__BB|##", + "##|u____|U_k__U|d__BB|##", + "##|u___h|U_UU_U|A,,,_|##", + "##|u_k_D|=*==*=|_,k,}|##", + "##|A____:__k___+_,,,}|##", + "##|||||||_1,,1_|S__hD|##", + "##|VVVVV=_e,,P_|||||||##", + "##|__k__*__,,_k__|s_K|##", + "##|vvvvv=_E,,f___+__t|##", + "##|||||||||++|||||||||##", + "##|c_bbbbA|,,|CSCCKCC|##", + "##|c__k___|,,|u__k__C|##", + "##|c_TT___|,,|u_hLh_F|##", + "##|c_TTh__+_k+___k__>|##", + "##|c_TT___|__|rrrr__~|##", + "##|c__k___|k_|||||+|||##", + "##|c______|__*_ka|k_A|##", + "##|ccccccc|<<=G_a|HlW|##", + "##||||||||||||||||||||##", + "########################", + "########################" + ], + "palettes": [ "whately_bunker", "whately_empty_bunker_items" ], + "place_npcs": [ { "class": "wilhemina_whately", "x": 7, "y": 16 }, { "class": "whately_cousin", "x": 19, "y": 8 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "om_terrain": [ "whately_lmoe_under_second_floor" ], + "//": "Whately clan dwellings.", + "//2": "This is a commercially built 4-bed LMOE shelter based on IRL plans.", + "//3": "There are extensive secret rooms which might contain a lot of treasure in the non-looted version.", + "object": { + "faction_owner": [ { "id": "whately_family", "x": [ 0, 23 ], "y": [ 0, 23 ] } ], + "fill_ter": "t_carpet_metal", + "rows": [ + "##|||||#################", + "##|,,<|||||||###########", + "##|Y,<|w,BBd|###########", + "||||+||},BB,|###########", + "|A,,,E|,,k,,|###########", + "|f,k,,|+|||||||||||#####", + "|f,,,e|,,,,b|_____|#####", + "|f,,,,|,,h,,|_____|#####", + "|Dh,,P|,hLh,|__k__|#####", + "|,,k,,|,hLh,|_____|#####", + "|,,,,,+,kh,,|_____|#####", + "|,|||||~,,,u|__k__|#####", + "|,+k,B|K,,,u:_____|#####", + "|,|d,B|COC,u|_____|#####", + "|,||||||||+||__k__|#####", + "|,+k,B|t,k,K|_____|#####", + "|}|d,B|WAv,s|_____|#####", + "|;|||||||||:|||+||||||||", + "|__|_____|__|_______=__|", + "|__|_____||+|___k___*__|", + "|__|___k____|_______=__|", + "|__|________+___>___=__|", + "|__+___k____|___k___=__|", + "||||||||||||||||||||||||" + ], + "palettes": [ "whately_bunker", "whately_empty_bunker_items" ], + "place_nested": [ + { "chunks": [ "lmoe3_storage_11x11" ], "x": 13, "y": 6 }, + { "chunks": [ "lmoe3_tankroom_11x11" ], "x": 1, "y": 18 }, + { "chunks": [ "lmoe3_crafting_11x11" ], "x": 13, "y": 18 } + ], + "place_npcs": [ { "class": "nicodemus_whately", "x": 9, "y": 7 }, { "class": "whately_cousin", "x": 5, "y": 14 } ] + } + }, + { + "type": "palette", + "id": "whately_bunker", + "terrain": { + "#": "t_rock", + "*": "t_chaingate_c", + "+": "t_door_metal_c", + "-": "t_scrap_wall", + "_": "t_metal_floor", + ",": "t_carpet_metal", + "1": "t_column", + "<": "t_stairs_up", + ">": "t_stairs_down", + "=": "t_chainfence", + "|": "t_wall_metal", + ":": "t_secretdoor_metal_c", + ";": "t_secretdoor_metal_o", + "~": "t_water_pump", + "G": "t_generator_broken", + "t": "t_metal_floor", + "k": "t_metal_floor_olight" + }, + "furniture": { + "A": "f_air_filter", + "a": "f_standing_tank", + "b": "f_bookcase", + "B": "f_bed", + "c": "f_counter", + "C": "f_cupboard", + "d": "f_dresser", + "D": "f_desk", + "e": "f_ergometer", + "E": "f_exercise", + "F": "f_fridge", + "f": "f_sofa", + "h": "f_chair", + "H": "f_water_heater", + "K": "f_sink", + "l": "f_utility_shelf", + "L": "f_table", + "O": "f_oven", + "P": "f_punching_bag", + "r": "f_rack", + "R": "f_rack", + "s": "f_shower", + "S": "f_woodstove", + "T": "f_table", + "U": "f_utility_shelf", + "u": "f_utility_shelf", + "v": "f_utility_shelf", + "V": "f_utility_shelf", + "w": "f_wardrobe", + "W": "f_water_purifier", + "Y": "f_rack_coat", + "^": "f_rubble", + "&": "f_trashcan", + "{": "f_rack", + "}": "f_bookcase" + }, + "toilets": { "t": { } } + }, + { + "type": "palette", + "id": "whately_empty_bunker_items", + "items": { + "b": [ { "item": "manuals", "chance": 60 }, { "item": "textbooks", "chance": 40 } ], + "B": { "item": "bed", "chance": 70, "repeat": [ 1, 2 ] }, + "c": { "item": "hardware", "chance": 50 }, + "C": [ { "item": "dining", "chance": 30, "repeat": [ 1, 3 ] }, { "item": "oven", "chance": 20 } ], + "d": { "item": "allclothes", "chance": 80, "repeat": [ 2, 4 ] }, + "D": { "item": "office", "chance": 70 }, + "l": { "item": "hardware", "chance": 50, "repeat": [ 1, 2 ] }, + "L": { "item": "dining", "chance": 30 }, + "r": { "item": "stash_wood", "chance": 85 }, + "R": { "item": "hardware", "chance": 80 }, + "S": { "item": "oven", "chance": 80 }, + "T": { "item": "tools_common", "chance": 60, "repeat": [ 1, 2 ] }, + "U": { "item": "gear_survival", "chance": 20, "repeat": [ 3, 5 ] }, + "u": [ { "item": "cannedfood", "chance": 20, "repeat": [ 1, 5 ] }, { "item": "pasta", "chance": 10, "repeat": [ 1, 3 ] } ], + "v": { "item": "softdrugs", "chance": 50 }, + "V": { "item": "bags", "chance": 30 }, + "w": { "item": "allclothes", "chance": 80, "repeat": [ 2, 4 ] }, + "Y": [ { "item": "jackets", "chance": 15 }, { "item": "hatstore_hats", "chance": 15 }, { "item": "winter", "chance": 10 } ], + "^": { "item": "shelter", "chance": 30 }, + "{": [ { "item": "lmoe_guns", "chance": 80 }, { "item": "ammo", "chance": 5, "repeat": [ 3, 7 ] } ], + "}": { "item": "novels", "chance": 90, "repeat": [ 3, 8 ] } + } + }, + { + "type": "palette", + "id": "whately_bunker_ext", + "terrain": { + " ": [ [ "t_region_groundcover", 60 ], [ "t_region_shrub", 2 ], "t_region_tree" ], + "_": [ "t_region_groundcover", [ "t_region_groundcover_barren", 9 ] ], + "#": "t_rock", + "$": [ "t_region_tree_fruit", "t_region_tree_nut", "t_region_shrub_fruit", "t_region_shrub" ], + "S": [ + [ "t_region_groundcover", 5 ], + "t_region_tree_fruit", + "t_region_tree_nut", + "t_region_tree", + "t_region_shrub_fruit", + "t_region_shrub" + ], + "v": "t_open_air", + "+": "t_door_metal_c", + ".": "t_rock_floor", + ">": "t_stairs_down", + "<": "t_stairs_up", + ")": "t_slope_up", + "(": "t_slope_down", + "T": [ "t_region_tree_fruit", "t_region_tree_nut" ], + "X": "t_grass_dead" + }, + "items": { " ": [ { "item": "forest", "chance": 1 }, { "item": "field", "chance": 2 } ] }, + "monster": { "X": { "monster": "mon_migoturret_whately", "friendly": true } } + } +] diff --git a/data/mods/Aftershock/maps/overmap_specials.json b/data/mods/Aftershock/maps/overmap_specials.json index 71cb777cac0dd..dae26e3e89012 100644 --- a/data/mods/Aftershock/maps/overmap_specials.json +++ b/data/mods/Aftershock/maps/overmap_specials.json @@ -61,5 +61,20 @@ "city_sizes": [ 2, -1 ], "occurrences": [ 0, 1 ], "flags": [ "CLASSIC" ] + }, + { + "type": "overmap_special", + "id": "Strange LMOE Shelter", + "overmaps": [ + { "point": [ 0, 0, 0 ], "overmap": "whately_lmoe_north" }, + { "point": [ 0, 0, 1 ], "overmap": "whately_lmoe_roof_north" }, + { "point": [ 0, 0, -1 ], "overmap": "whately_lmoe_under_first_floor_north" }, + { "point": [ 0, 0, -2 ], "overmap": "whately_lmoe_under_second_floor_north" } + ], + "locations": [ "land" ], + "city_distance": [ 20, -1 ], + "city_sizes": [ 0, 12 ], + "occurrences": [ 0, 0 ], + "flags": [ "UNIQUE" ] } ] diff --git a/data/mods/Aftershock/maps/overmap_terrain.json b/data/mods/Aftershock/maps/overmap_terrain.json index 0361a3988aee4..a289c8eb8c966 100644 --- a/data/mods/Aftershock/maps/overmap_terrain.json +++ b/data/mods/Aftershock/maps/overmap_terrain.json @@ -106,5 +106,41 @@ "sym": "M", "color": "light_green", "see_cost": 3 + }, + { + "type": "overmap_terrain", + "id": "whately_lmoe", + "name": "LMOE shelter", + "sym": "+", + "color": "red", + "see_cost": 2, + "flags": [ "KNOWN_DOWN", "SOURCE_PEOPLE", "SOURCE_SAFETY", "SOURCE_GUN", "SOURCE_AMMO", "SOURCE_FOOD" ] + }, + { + "type": "overmap_terrain", + "id": "whately_lmoe_roof", + "name": "LMOE shelter", + "sym": ".", + "color": "brown", + "see_cost": 2, + "flags": [ "KNOWN_DOWN" ] + }, + { + "type": "overmap_terrain", + "id": "whately_lmoe_under_first_floor", + "name": "LMOE shelter", + "sym": "+", + "color": "red", + "see_cost": 2, + "flags": [ "KNOWN_UP", "SOURCE_PEOPLE", "SOURCE_SAFETY", "SOURCE_GUN", "SOURCE_AMMO", "SOURCE_FOOD" ] + }, + { + "type": "overmap_terrain", + "id": "whately_lmoe_under_second_floor", + "name": "LMOE shelter", + "sym": "+", + "color": "red", + "see_cost": 2, + "flags": [ "KNOWN_UP", "SOURCE_PEOPLE", "SOURCE_SAFETY", "SOURCE_GUN", "SOURCE_AMMO", "SOURCE_FOOD" ] } ] diff --git a/data/mods/Aftershock/maps/terrain.json b/data/mods/Aftershock/maps/terrain.json index 7787f0a693dce..0a8e426411cc2 100644 --- a/data/mods/Aftershock/maps/terrain.json +++ b/data/mods/Aftershock/maps/terrain.json @@ -8,5 +8,55 @@ "color": "light_green", "move_cost": 0, "flags": [ "TRANSPARENT", "CONTAINER", "REDUCE_SCENT", "PERMEABLE", "PLACE_ITEM" ] + }, + { + "type": "terrain", + "id": "t_floor_olight", + "name": "wooden floor, overhead light", + "description": "Interlocking wooden tiles that are more than likely treated against fire, with a still-functioning light attached to the ceiling above.", + "symbol": ".", + "color": "white", + "move_cost": 2, + "light_emitted": 120, + "roof": "t_flat_roof", + "looks_like": "t_floor", + "flags": [ "TRANSPARENT", "FLAMMABLE_HARD", "SUPPORTS_ROOF", "COLLAPSES", "INDOORS", "FLAT", "ROAD" ], + "bash": { + "sound": "SMASH!", + "ter_set": "t_null", + "str_min": 50, + "str_max": 400, + "str_min_supported": 100, + "items": [ + { "item": "splinter", "count": [ 2, 8 ] }, + { "item": "nail", "charges": [ 5, 10 ] }, + { "item": "glass_shard", "count": [ 8, 16 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_metal_floor_olight", + "name": "metal floor, with overhead light", + "description": "High-quality and tough checkered flooring to reduce risk of slips and falls, with a still-functioning light attached to the ceiling above.", + "symbol": ".", + "color": "light_cyan", + "move_cost": 2, + "light_emitted": 120, + "roof": "t_flat_roof", + "flags": [ "TRANSPARENT", "INDOORS", "FLAT", "ROAD" ], + "bash": { + "sound": "thump", + "ter_set": "t_null", + "str_min": 200, + "str_max": 500, + "str_min_supported": 200, + "items": [ + { "item": "steel_lump", "count": [ 1, 4 ] }, + { "item": "steel_chunk", "count": [ 3, 12 ] }, + { "item": "scrap", "count": [ 9, 36 ] }, + { "item": "glass_shard", "count": [ 8, 16 ] } + ] + } } ] diff --git a/data/mods/Aftershock/mobs/monster_faction.json b/data/mods/Aftershock/mobs/monster_faction.json index 5e3d92752628d..e74ee8171bf92 100644 --- a/data/mods/Aftershock/mobs/monster_faction.json +++ b/data/mods/Aftershock/mobs/monster_faction.json @@ -10,9 +10,10 @@ { "type": "MONSTER_FACTION", "name": "whately", - "friendly": [ "human", "player" ], + "friendly": [ "human", "player", "whately", "whately_family" ], "neutral": "herbivore", - "by_mood": [ "insect", "small_animal" ] + "by_mood": [ "insect", "small_animal" ], + "hate": "zombie" }, { "type": "MONSTER_FACTION", diff --git a/data/mods/Aftershock/mobs/robots.json b/data/mods/Aftershock/mobs/robots.json index bd30b063b3f56..80e0a95b44f84 100644 --- a/data/mods/Aftershock/mobs/robots.json +++ b/data/mods/Aftershock/mobs/robots.json @@ -19,6 +19,7 @@ "armor_bash": 14, "armor_cut": 16, "vision_day": 50, + "starting_ammo": { "acidic_bore": 500 }, "revert_to_itype": "bot_migoturret", "special_attacks": [ [ "PARROT", 0 ], @@ -34,6 +35,15 @@ "death_function": [ "BROKEN" ], "flags": [ "SEES", "ELECTRONIC", "IMMOBILE", "NO_BREATHE" ] }, + { + "id": "mon_migoturret_whately", + "type": "MONSTER", + "name": { "str": "Whately family brain blaster" }, + "description": "The Whately family deploys mi-go style techno-organic defensive turrets. They claim that these turrets are made from family members near death, but you have doubts.", + "default_faction": "whately", + "copy-from": "afs_mon_migoturret", + "aggression": 1 + }, { "id": "mon_chickenbot", "type": "MONSTER", diff --git a/data/mods/Aftershock/mutations/mutations.json b/data/mods/Aftershock/mutations/mutations.json index d588cddee04f6..b46957c49af10 100644 --- a/data/mods/Aftershock/mutations/mutations.json +++ b/data/mods/Aftershock/mutations/mutations.json @@ -170,6 +170,8 @@ "points": 3, "description": "You no longer move like a human, others find it disconcerting. Dexterity + 4", "prereqs": [ "ENHANCED_REACTIONS" ], + "threshreq": "THRESH_YUGGOTH", + "social_modifiers": { "persuade": -10, "lie": -6 }, "category": [ "MIGO" ], "passive_mods": { "dex_mod": 4 } }, @@ -181,6 +183,7 @@ "description": "You see some new muscles that you aren't sure you've seen on humans before. Strength + 1", "changes_to": [ "MUSCLE_FIBER" ], "category": [ "MIGO" ], + "social_modifiers": { "persuade": -3, "intimidate": 2 }, "passive_mods": { "str_mod": 1 } }, { @@ -191,6 +194,8 @@ "description": "Fibrous tissue seems to be spreading through your body. Strength + 2", "prereqs": [ "STR_UP" ], "category": [ "MIGO" ], + "social_modifiers": { "persuade": -3, "intimidate": 2 }, + "ugliness": 2, "passive_mods": { "str_mod": 2 } }, { @@ -202,6 +207,7 @@ "description": "Your ears have split into a series of tuberous projections. They waggle towards far away sounds.", "types": [ "EARS" ], "category": [ "MIGO" ], + "ugliness": 4, "hearing_modifier": 1.4 }, { @@ -255,6 +261,7 @@ "prereqs": [ "SMELLY", "SMELLY2" ], "threshreq": [ "THRESH_YUGGOTH" ], "category": [ "MIGO" ], + "ugliness": 1, "scent_type": "sc_fetid" }, { diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_afterlife.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_afterlife.json new file mode 100644 index 0000000000000..d24cf9e4ae9bf --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_afterlife.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_AFTERLIFE_1_STORY1", + "type": "talk_topic", + "dynamic_line": "What level of hell is this? I spent weeks in a sulforous hell being tortured.", + "responses": [ + { "text": "What was that like?", "topic": "BGRS_AFTERLIFE_1_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_AFTERLIFE_1_STORY2", + "type": "talk_topic", + "dynamic_line": "Then they started cutting me open and taking out my organs but adding new ones.", + "responses": [ + { "text": "How did it end?", "topic": "BGRS_AFTERLIFE_1_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_AFTERLIFE_1_STORY3", + "type": "talk_topic", + "dynamic_line": "Now that I finally am able to move and have some freedom, I plan on finding some of these demons and punching through them until I find the devil himself.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_bonesinger.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_bonesinger.json new file mode 100644 index 0000000000000..492d144278107 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_bonesinger.json @@ -0,0 +1,32 @@ +[ + { + "id": "BGRS_Bonesinger_STORY1", + "type": "talk_topic", + "dynamic_line": "I heard the song before the aliens captured me. I did what I could to help the other Bonesingers.", + "responses": [ + { "text": "Where are you from?", "topic": "BGRS_Bonesinger_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_Bonesinger_STORY2", + "type": "talk_topic", + "dynamic_line": "One day I was being chased by some aliens and suddenly I was ambushed by another one that shot me with some kind of pain ray.", + "responses": [ + { "text": "Tell me more?", "topic": "BGRS_Bonesinger_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_Bonesinger_STORY3", + "type": "talk_topic", + "dynamic_line": "Eventually they took the bones from my body. It's strange though, I still hear the song calling to me, even in this new body.", + "responses": [ + { "text": "How did it end?", "topic": "BGSS_CRIMINAL_EXPERIMENT_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_dreamer.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_dreamer.json new file mode 100644 index 0000000000000..befce7e530d53 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_dreamer.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_Dreamer_STORY1", + "type": "talk_topic", + "dynamic_line": "I just spent what felt like weeks in a dream that I was acting as a targeting computer for some kind of alien turret.", + "responses": [ + { "text": "Where are you from then?", "topic": "BGRS_Dreamer_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_Dreamer_STORY2", + "type": "talk_topic", + "dynamic_line": "Now I'm in some kind of Mary Shelley nightmare? I mean at least I have mobility.", + "responses": [ + { "text": "What does that have to do with anything?", "topic": "BGRS_Dreamer_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_Dreamer_STORY3", + "type": "talk_topic", + "dynamic_line": "I'm going to keep going with this dream, hopefully soon I'll get to one where I can fly.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_1.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_1.json new file mode 100644 index 0000000000000..d5d2a0d9e2408 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_1.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_MIGO_1_STORY1", + "type": "talk_topic", + "dynamic_line": "Antes do Cataclisma eu era o cientista que encabeçava um laboratório militar no meu país. Foram dias difíceis…", + "responses": [ + { "text": "Where are you from?", "topic": "BGRS_MIGO_1_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_MIGO_1_STORY2", + "type": "talk_topic", + "dynamic_line": "Nós estávamos pesquisando um remédio que curasse um virus altamente letal na época, mas os resultados dos testes mostravam que o remédio era mais letal do que o próprio virus. Então, ao invés de recolherem os remédios das prateleiras, eles nos forçaram a vendê-lo como sendo a cura para o vírus.", + "responses": [ + { "text": "Ummm?", "topic": "BGRS_MIGO_1_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_MIGO_1_STORY3", + "type": "talk_topic", + "dynamic_line": "Bem… aqueles sem cérebro seguiram cegamente o líder. Quanto àqueles com algum cérebro… bom, acho que você está conversando com um deles agora", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_2.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_2.json new file mode 100644 index 0000000000000..398889a983378 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_2.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_MIGO_2_STORY1", + "type": "talk_topic", + "dynamic_line": "Things have been getting weird for the last couple of years. Then we started hearing rumors of strange lights in the sky at night.", + "responses": [ + { "text": "Where are you from?", "topic": "BGRS_MIGO_2_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_MIGO_2_STORY2", + "type": "talk_topic", + "dynamic_line": "One night I heard my neighbor calling for me to come help him. I went outside wondering what he could possibly need my help with in the middle of the night.", + "responses": [ + { "text": "What happened next?", "topic": "BGRS_MIGO_2_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_MIGO_2_STORY3", + "type": "talk_topic", + "dynamic_line": "Some kind of hideos alien was standing over my neighbors disembowled corpse. It looked at me and said 'You're a great neighbor' then everything faded to black. I feel like everything in my body fits differently now.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_3.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_3.json new file mode 100644 index 0000000000000..895c14bae4553 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_migo_3.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_MIGO_3_STORY1", + "type": "talk_topic", + "dynamic_line": "I worked in a top secret lab. Things kept getting crazier and crazier outside and the scientists inside started making desperate experiments. They worked on something called interdimensional portals.", + "responses": [ + { "text": "Where are you from?", "topic": "BGRS_MIGO_3_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_MIGO_3_STORY2", + "type": "talk_topic", + "dynamic_line": "The eggheads kept sayig we needed to find a way out of here before everything went sideways. So we needed to open more portals even if we hadn't had time to take all the precautions.", + "responses": [ + { "text": "What happened next?", "topic": "BGRS_MIGO_3_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_MIGO_2_STORY3", + "type": "talk_topic", + "dynamic_line": "One day they opened a portal trying to find an earthlike planet and suddenly portals were opening all over the lab and these fast and dangerous aliens overwhelmed the lab. They killed most of the staff and took the rest prisoner.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_schizo_1.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_schizo_1.json new file mode 100644 index 0000000000000..19c0a55b36308 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_schizo_1.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_SCHIZO_1_STORY1", + "type": "talk_topic", + "dynamic_line": "Monsters! Monsters everywhere. Everyone is suspect, how do I know you aren't a monster?", + "responses": [ + { "text": "Are you ok?", "topic": "BGRS_SCHIZO_1_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_SCHIZO_1_STORY2", + "type": "talk_topic", + "dynamic_line": "You can't trust anyone these days. Everyone is either a cannibal or a monster or a government spook.", + "responses": [ + { "text": "Why would you trust me then?", "topic": "BGRS_SCHIZO_1_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_SCHIZO_1_STORY3", + "type": "talk_topic", + "dynamic_line": "Because, what if I'm the monster?", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BGRS_schizo_2.json b/data/mods/Aftershock/npcs/Backgrounds/BGRS_schizo_2.json new file mode 100644 index 0000000000000..97c9268886da5 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/BGRS_schizo_2.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGRS_SCHIZO_2_STORY1", + "type": "talk_topic", + "dynamic_line": "If you think this Universe is bad, you should see some of the others.", + "responses": [ + { "text": "Where are you from then?", "topic": "BGRS_SCHIZO_2_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_SCHIZO_2_STORY2", + "type": "talk_topic", + "dynamic_line": "Believing something existed and then finding out it didn't was like reaching the top of the stairs and thinking there was one more step.", + "responses": [ + { "text": "What does that have to do with anything?", "topic": "BGRS_SCHIZO_2_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGRS_SCHIZO_2_STORY3", + "type": "talk_topic", + "dynamic_line": "I think a lot of psychopaths are just geniuses who drove so fast that they lost control.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BG_tableofcontents_AFS.JSON b/data/mods/Aftershock/npcs/Backgrounds/BG_BR_tableofcontents_AFS.json similarity index 50% rename from data/mods/Aftershock/npcs/Backgrounds/BG_tableofcontents_AFS.JSON rename to data/mods/Aftershock/npcs/Backgrounds/BG_BR_tableofcontents_AFS.json index ab902d29257da..dbbcd754ead53 100644 --- a/data/mods/Aftershock/npcs/Backgrounds/BG_tableofcontents_AFS.JSON +++ b/data/mods/Aftershock/npcs/Backgrounds/BG_BR_tableofcontents_AFS.json @@ -68,5 +68,79 @@ "topic": "BGSS_CRIMINAL_EXPERIMENT_STORY1", "condition": { "npc_has_trait": "BGSS_CRIMINAL_EXPERIMENT" }, "switch": true + }, + { + "text": "", + "topic": "BGRS_AFTERLIFE_1_STORY1", + "condition": { "npc_has_trait": "BGSS_RADIATION_1" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_MIGO_1_STORY1", + "condition": { "npc_has_trait": "BGRS_MIGO_1" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_MIGO_2_STORY1", + "condition": { "npc_has_trait": "BGRS_MIGO_2" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_MIGO_3_STORY1", + "condition": { "npc_has_trait": "BGRS_MIGO_3" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_SCHIZO_1_STORY1", + "condition": { "npc_has_trait": "BGRS_SCHIZO_1" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_SCHIZO_2_STORY1", + "condition": { "npc_has_trait": "BGRS_SCHIZO_2" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_Dreamer_STORY1", + "condition": { "npc_has_trait": "BGRS_Dreamer" }, + "switch": true + }, + { + "text": "", + "topic": "BGRS_Bonesinger_STORY1", + "condition": { "npc_has_trait": "BGRS_Bonesinger" }, + "switch": true + }, + { + "text": "", + "topic": "BGSS_GANGER_1_STORY1", + "condition": { "npc_has_trait": "BGSS_GANGER_1" }, + "switch": true + }, + { + "text": "", + "topic": "BGSS_GANGER_2_STORY1", + "condition": { "npc_has_trait": "BGSS_GANGER_2" }, + "switch": true + }, + { + "text": "", + "topic": "BGSS_GANGER_3_STORY1", + "condition": { "npc_has_trait": "BGSS_GANGER_3" }, + "switch": true + }, + { + "text": "", + "topic": "BGSS_CYBERNINJA_STORY1", + "condition": { "npc_has_trait": "BGSS_CYBERNINJA" }, + "switch": true } + ] + } ] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BG_trait_groups_afs.json b/data/mods/Aftershock/npcs/Backgrounds/BG_trait_groups_afs.json index cf63b826f6afe..ac243ae76da16 100644 --- a/data/mods/Aftershock/npcs/Backgrounds/BG_trait_groups_afs.json +++ b/data/mods/Aftershock/npcs/Backgrounds/BG_trait_groups_afs.json @@ -17,5 +17,21 @@ { "trait": "BGSS_VATGROWN_1" }, { "trait": "BGSS_CRIMINAL_EXPERIMENT" } ] + }, + { + "//": "This group picks out background traits that could apply to any Frankenstein revivee.", + "type": "trait_group", + "id": "BG_revival_story_FRANKENSTEIN", + "subtype": "distribution", + "traits": [ + { "trait": "BGRS_AFTERLIFE_1" }, + { "trait": "BGRS_MIGO_1" }, + { "trait": "BGRS_MIGO_2" }, + { "trait": "BGRS_MIGO_3" }, + { "trait": "BGRS_SCHIZO_1" }, + { "trait": "BGRS_SCHIZO_2" }, + { "trait": "BGRS_Dreamer" }, + { "trait": "BGRS_Bonesinger_1" } + ] } ] diff --git a/data/mods/Aftershock/npcs/Backgrounds/BG_traits_afs.json b/data/mods/Aftershock/npcs/Backgrounds/BG_traits_afs.json index 62568660c8241..9dfb7d43d6634 100644 --- a/data/mods/Aftershock/npcs/Backgrounds/BG_traits_afs.json +++ b/data/mods/Aftershock/npcs/Backgrounds/BG_traits_afs.json @@ -1,8 +1,4 @@ [ - { - "type": "mutation_type", - "id": "BACKGROUND_SURVIVAL_STORY" - }, { "type": "mutation", "id": "BGSS_RECENT_MUTATION_1", @@ -134,5 +130,113 @@ "purifiable": false, "types": [ "BACKGROUND_SURVIVAL_STORY" ], "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGSS_Whately", + "name": { "str": "Whately Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_MIGO_1", + "name": { "str": "Survivor Story" }, + "player_display": false, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_MIGO_2", + "name": { "str": "Survivor Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_MIGO_3", + "name": { "str": "Survivor Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_SCHIZO_1", + "name": { "str": "Survivor Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_SCHIZO_2", + "name": { "str": "Survivor" }, + "player_display": false, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_Dreamer", + "name": { "str": "Survivor Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGRS_Bonesinger", + "name": { "str": "Whately Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] + }, + { + "type": "mutation", + "id": "BGSS_CYBERNINJA", + "name": { "str": "Whately Story" }, + "points": 0, + "description": "This NPC could tell you about how they survived the Cataclysm", + "player_display": false, + "valid": false, + "purifiable": false, + "types": [ "BACKGROUND_SURVIVAL_STORY" ], + "flags": [ "BG_SURVIVAL_STORY" ] } ] diff --git a/data/mods/Aftershock/npcs/Backgrounds/cyberninja.json b/data/mods/Aftershock/npcs/Backgrounds/cyberninja.json new file mode 100644 index 0000000000000..ad2c1f782f147 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/cyberninja.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGSS_CYBERNINJA_STORY1", + "type": "talk_topic", + "dynamic_line": "As a corporate wetworks specialist I'm used to crazy situations. But this is like nothing I've ever experienced.", + "responses": [ + { "text": "What are you going to do now?", "topic": "BGSS_CYBERNINJA_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_CYBERNINJA_STORY2", + "type": "talk_topic", + "dynamic_line": "I'm gonna find somewhere that people are making a stand. And if I can agree with their plans I'll make my stand with them.", + "responses": [ + { "text": "Where is that?", "topic": "BGSS_CYBERNINJA_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_CYBERNINJA_STORY3", + "type": "talk_topic", + "dynamic_line": "Right now you are looking like the best leader I've met so far in this Cataclysm.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/ganger_1.json b/data/mods/Aftershock/npcs/Backgrounds/ganger_1.json new file mode 100644 index 0000000000000..230bcf1b8f732 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/ganger_1.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGSS_GANGER_1_STORY1", + "type": "talk_topic", + "dynamic_line": "I was born at the bottom of the habitat. No silver spoon in my mouth.", + "responses": [ + { "text": "That must have been rough.", "topic": "BGSS_GANGER_1_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_GANGER_1_STORY2", + "type": "talk_topic", + "dynamic_line": "I saw my best friend die in front of me by the time I was eight.", + "responses": [ + { "text": "Where is that?", "topic": "BGSS_GANGER_1_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_GANGEER_1_STORY3", + "type": "talk_topic", + "dynamic_line": "I guess it prepared me for everyone dying yesterday.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/ganger_2.json b/data/mods/Aftershock/npcs/Backgrounds/ganger_2.json new file mode 100644 index 0000000000000..3e05001255ecc --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/ganger_2.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGSS_GANGER_2_STORY1", + "type": "talk_topic", + "dynamic_line": "I've spent my life in the hive. When things started turning strange I snuck out of the city.", + "responses": [ + { "text": "You seem like you are out of your element.", "topic": "BGSS_GANGER_2_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_GANGER_2_STORY2", + "type": "talk_topic", + "dynamic_line": "I've never seen so many trees outside of a video. And there is so much wildlife.", + "responses": [ + { "text": "What will you do?", "topic": "BGSS_GANGER_2_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_GANGEER_2_STORY3", + "type": "talk_topic", + "dynamic_line": "I'm going to live my best life in a dead world.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/ganger_3.json b/data/mods/Aftershock/npcs/Backgrounds/ganger_3.json new file mode 100644 index 0000000000000..e6b158c598efe --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/ganger_3.json @@ -0,0 +1,28 @@ +[ + { + "id": "BGSS_GANGER_3_STORY1", + "type": "talk_topic", + "dynamic_line": "There's so much sky out here. It's horrible.", + "responses": [ + { "text": "You seem like you are out of your element.", "topic": "BGSS_GANGER_3_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_GANGER_3_STORY2", + "type": "talk_topic", + "dynamic_line": "It might be worse than the dead rising.", + "responses": [ + { "text": "What will you do?", "topic": "BGSS_GANGER_3_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_GANGEER_3_STORY3", + "type": "talk_topic", + "dynamic_line": "I'm going to kill my way back into the city so I can get out from under this sky.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/talk_cyborg_abomination.json b/data/mods/Aftershock/npcs/Backgrounds/talk_cyborg_abomination.json new file mode 100644 index 0000000000000..03ab9420ce416 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/talk_cyborg_abomination.json @@ -0,0 +1,132 @@ +[ + { + "id": "TALK_CYBORG_Abomination_1", + "type": "talk_topic", + "dynamic_line": { + "npc_has_var": "cyborg_abomination_has_talked", + "type": "dialogue", + "context": "cyborg_abomination", + "value": "yes", + "no": "I… can move again. I have a real body! Is this a body?", + "yes": "Hey again. *kzzz*" + }, + "speaker_effect": { + "effect": { "npc_add_var": "cyborg_abomination_has_talked", "type": "dialogue", "context": "cyborg_abomination", "value": "yes" } + }, + "responses": [ + { + "switch": true, + "condition": { "npc_has_var": "cyborg_abomination_has_talked", "type": "dialogue", "context": "cyborg_abomination", "value": "yes" }, + "text": "So you must have seen some weird stuff?", + "topic": "TALK_STRANGER_NEUTRAL" + }, + { + "switch": true, + "default": true, + "text": "I built this body and rescued you…", + "trial": { "type": "PERSUADE", "difficulty": 0 }, + "success": { "topic": "TALK_CYBORG_ABOMINATION_FRIENDLY", "opinion": { "trust": 1, "value": 1 } }, + "failure": { "topic": "TALK_CYBORG_ABOMINATION_WARY", "opinion": { "anger": 1, "fear": 1 } } + }, + { + "switch": true, + "default": true, + "text": "I can put you back in the pieces I found you in.", + "trial": { "type": "INTIMIDATE", "difficulty": 20, "mod": [ [ "AGGRESSION", -2 ], [ "BRAVERY", -2 ] ] }, + "success": { "topic": "TALK_CYBORG_ABOMINATION_FEARFUL", "opinion": { "trust": -4, "fear": 3, "value": -1, "anger": 4 } }, + "failure": { "topic": "TALK_CYBORG_ABOMINATION_BREAKDOWN", "opinion": { "trust": -4, "value": -5, "anger": 10 } } + }, + { + "switch": true, + "default": true, + "text": "No one deserves the hell you've been through. I hope you find peace.", + "topic": "TALK_DONE" + } + ] + }, + { + "id": "TALK_CYBORG_ABOMINATION_FRIENDLY", + "type": "talk_topic", + "dynamic_line": "*crackle* So why would you do this?", + "responses": [ + { + "text": "Come with me. We can help each other out.", + "trial": { "type": "PERSUADE", "difficulty": 0, "mod": [ [ "value", 2 ] ] }, + "success": { "topic": "TALK_AGREE_FOLLOW", "effect": "follow", "opinion": { "trust": 1, "value": 1 } }, + "failure": { "topic": "TALK_DENY_FOLLOW", "effect": "deny_follow", "opinion": { "trust": -1, "fear": 1 } } + }, + { "text": "We both go our separate ways. Enjoy your freedom.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_CYBORG_ABOMINATION_WARY", + "type": "talk_topic", + "dynamic_line": "…This is just another torture isn't it!", + "responses": [ + { + "text": "I went to a lot of trouble to provide you with a body.", + "trial": { "type": "PERSUADE", "difficulty": 5, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ] ] }, + "success": { "topic": "TALK_CYBORG_ABOMINATION_FRIENDLY", "opinion": { "trust": 1, "value": 1 } }, + "failure": { "topic": "TALK_CYBORG_ABOMINATION_LEAVES" } + }, + { + "text": "For all you know, I did. I'm being nice for now. You'd better hope that it lasts.", + "trial": { "type": "INTIMIDATE", "difficulty": 20, "mod": [ [ "AGGRESSION", -2 ], [ "BRAVERY", -2 ] ] }, + "success": { "topic": "TALK_CYBORG_ABOMINATION_FEARFUL", "opinion": { "trust": -4, "fear": 3, "value": -1, "anger": 4 } }, + "failure": { "topic": "TALK_CYBORG_ABOMINATION_BREAKDOWN", "opinion": { "trust": -4, "value": -5, "anger": 10 } } + }, + { "text": "Forget it. Enjoy your freedom.", "topic": "TALK_DONE" } + ] + }, + { + "id": "TALK_CYBORG_ABOMINATION_FEARFUL", + "type": "talk_topic", + "dynamic_line": "Okay, okay, *sizzle* I'm sorry! Don't hurt me again! Anything to stay away from those fiends!", + "responses": [ + { + "text": "Follow me and do my bidding, then.", + "trial": { "type": "INTIMIDATE", "difficulty": 20, "mod": [ [ "FEAR", 8 ], [ "VALUE", 2 ], [ "TRUST", 2 ], [ "BRAVERY", -2 ] ] }, + "success": { "topic": "TALK_AGREE_FOLLOW", "effect": "follow", "opinion": { "trust": -4, "fear": 3, "value": -1, "anger": 4 } }, + "failure": { "topic": "TALK_CYBORG_ABOMINATION_BREAKDOWN", "opinion": { "trust": 4, "value": -5, "anger": 10 } } + }, + { + "text": "Get out of my sight.", + "topic": "TALK_DONE", + "effect": "flee", + "opinion": { "trust": -1, "fear": -2, "anger": -2 } + }, + { + "text": "No, *I'm* sorry, I didn't mean that. Go do what you want.", + "trial": { "type": "PERSUADE", "difficulty": 10 }, + "success": { "topic": "TALK_DONE", "opinion": { "trust": 1, "value": 1, "anger": -1 } }, + "failure": { "topic": "TALK_CYBORG_ABOMINATION_BREAKDOWN", "opinion": { "trust": 4, "value": -5, "anger": 10 } } + } + ] + }, + { + "id": "TALK_CYBORG_ABOMINATION_BREAKDOWN", + "type": "talk_topic", + "dynamic_line": "…You're one of those mocking monsters! I'm going to tear you apart!", + "responses": [ + { + "text": "Run while you still can!", + "trial": { "type": "INTIMIDATE", "difficulty": 20, "mod": [ [ "FEAR", 8 ], [ "VALUE", 2 ], [ "TRUST", 2 ], [ "BRAVERY", -2 ] ] }, + "success": { "topic": "TALK_DONE", "effect": "flee" }, + "failure": { "topic": "TALK_DONE", "effect": "hostile" } + }, + { "text": "Not if I kill you first!", "topic": "TALK_DONE", "effect": "hostile" }, + { + "text": "I'm sorry! I shouldn't have said that!", + "trial": { "type": "PERSUADE", "difficulty": 30 }, + "success": { "topic": "TALK_DONE", "opinion": { "trust": 1, "value": 1, "anger": -1 } }, + "failure": { "topic": "TALK_DONE", "effect": "hostile" } + } + ] + }, + { + "id": "TALK_CYBORG_ABOMINATION_LEAVES", + "type": "talk_topic", + "dynamic_line": "I don't know what's happening but I'm going back home.", + "responses": [ { "text": "Suit yourself.", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/Backgrounds/whately.json b/data/mods/Aftershock/npcs/Backgrounds/whately.json new file mode 100644 index 0000000000000..195f93124e417 --- /dev/null +++ b/data/mods/Aftershock/npcs/Backgrounds/whately.json @@ -0,0 +1,38 @@ +[ + { + "id": "BGSS_Whately_STORY1", + "type": "talk_topic", + "dynamic_line": "Staying at the family compounds scattered across New England, we've managed to maintain some organization post Cataclysm.", + "responses": [ + { "text": "Where are you from?", "topic": "BGSS_Whately_STORY2" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_Whately_STORY2", + "type": "talk_topic", + "dynamic_line": "The Whately family has been outcast in these parts for centuries. But it made us stronger as a family.", + "responses": [ + { "text": "Tell me more?", "topic": "BGSS_Whately_STORY3" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_Whately_STORY3", + "type": "talk_topic", + "dynamic_line": "We've been talking to those from other places from the beginning.", + "responses": [ + { "text": "How did it end?", "topic": "BGSS_Whately_STORY4" }, + { "text": "", "topic": "TALK_FRIEND" }, + { "text": "", "topic": "TALK_DONE" } + ] + }, + { + "id": "BGSS_Whately_STORY4", + "type": "talk_topic", + "dynamic_line": "All the earth was flame in a holocaust of ecstasy and freedom.", + "responses": [ { "text": "", "topic": "TALK_FRIEND" }, { "text": "", "topic": "TALK_DONE" } ] + } +] diff --git a/data/mods/Aftershock/npcs/classes.json b/data/mods/Aftershock/npcs/classes.json index 5327aa960cf84..cc5696dbc594b 100644 --- a/data/mods/Aftershock/npcs/classes.json +++ b/data/mods/Aftershock/npcs/classes.json @@ -45,14 +45,15 @@ { "type": "npc", "id": "millyficent_whately", - "name_unique": "Millyficen Whately", + "name_unique": "Millyficent Whately", "name_suffix": "Xenobiologist, madwoman", "class": "afs_xenobiologist_madwoman", "attitude": 0, "mission": 7, "chat": "TALK_Millyficent_1", "mission_offered": "MISSION_migo_biology_1", - "faction": "whately_family" + "faction": "whately_family", + "gender": "female" }, { "type": "npc_class", @@ -66,8 +67,7 @@ [ "WARM_NATURED", 100 ], [ "INT_UP_3", 100 ], [ "DEX_UP_2", 100 ], - [ "STR_UP", 100 ], - { "group": "Appearance_demographics", "prob": 100 } + [ "STR_UP", 100 ] ], "bonus_dex": { "rng": [ -1, 0 ] }, "bonus_int": { "rng": [ 2, 5 ] }, @@ -78,5 +78,86 @@ { "skill": "firstaid", "bonus": { "rng": [ 1, 4 ] } }, { "skill": "cooking", "bonus": { "rng": [ 6, 8 ] } } ] + }, + { + "type": "npc_class", + "id": "whately_cousin", + "name": "Whately Cousin", + "common": false, + "job_description": "Our family has been through hard times before. We know how to survive.", + "skills": [ + { "skill": "dodge", "bonus": { "rng": [ 3, 6 ] } }, + { "skill": "melee", "bonus": { "rng": [ 3, 6 ] } }, + { "skill": "unarmed", "bonus": { "rng": [ 3, 6 ] } } + ], + "bonus_str": 2, + "bonus_dex": 2, + "traits": [ + { "group": "trait_mutant_npc_common" }, + { "group": "trait_group_migo" }, + { "distribution": [ { "group": "trait_group_migo_nonthres" }, { "group": "trait_group_migo_postthres" } ] }, + [ "BGSS_Whately", 100 ] + ] + }, + { + "type": "npc", + "id": "cyrus_whately", + "name_unique": "Cyrus Whately", + "name_suffix": "Patriarch, doomseer", + "class": "afs_whately_patriarch", + "attitude": 0, + "mission": 7, + "chat": "TALK_CYRUS_1", + "mission_offered": "MISSION_FRANKENSTEIN_1", + "faction": "whately_family", + "gender": "male" + }, + { + "type": "npc_class", + "id": "afs_whately_patriarch", + "name": "Aspiring Frankenstein", + "job_description": "Friend to outsiders…", + "common": false, + "traits": [ + [ "SKIN_LIGHT", 100 ], + [ "MIGO_HEAT_RESIST", 100 ], + [ "ALIEN_INT", 100 ], + [ "THRESH_YUGGOTH", 100 ], + [ "OTHERWORLDLY_GRACE", 100 ], + [ "MIGO_BREATHE", 100 ] + ], + "bonus_dex": { "rng": [ -1, 0 ] }, + "bonus_int": { "rng": [ 2, 5 ] }, + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "constant": -4 } ] } ] } }, + { "skill": "computer", "bonus": { "rng": [ 1, 5 ] } }, + { "skill": "electronics", "bonus": { "rng": [ 1, 5 ] } }, + { "skill": "firstaid", "bonus": { "rng": [ 1, 4 ] } }, + { "skill": "chemistry", "bonus": { "rng": [ 6, 8 ] } } + ] + }, + { + "type": "npc", + "id": "wilhemina_whately", + "name_unique": "Wilhemina Whately", + "name_suffix": "Shopkeeper", + "class": "whately_cousin", + "attitude": 0, + "mission": 3, + "chat": "TALK_WHATELY_GENERIC1", + "faction": "whately_family", + "gender": "female" + }, + { + "type": "npc", + "id": "nicodemus_whately", + "name_unique": "Nicodemus Whately", + "name_suffix": "Whately, Hatchetman", + "class": "whately_cousin", + "attitude": 0, + "mission": 3, + "chat": "TALK_WHATELY_GENERIC1", + "faction": "whately_family", + "gender": "male" } ] diff --git a/data/mods/Aftershock/npcs/cyborg_npcs/npc_classes_cyborg.json b/data/mods/Aftershock/npcs/cyborg_npcs/npc_classes_cyborg.json index cc5b097fe2965..422bd5beb6e95 100644 --- a/data/mods/Aftershock/npcs/cyborg_npcs/npc_classes_cyborg.json +++ b/data/mods/Aftershock/npcs/cyborg_npcs/npc_classes_cyborg.json @@ -13,7 +13,6 @@ { "skill": "pistol", "bonus": { "rng": [ 3, 6 ] } }, { "skill": "unarmed", "bonus": { "rng": [ 3, 6 ] } } ], - "common": true, "worn_override": "NC_GANGER_worn", "carry_override": "NC_GANGER_carried", "weapon_override": "NC_GANGER_wield", @@ -67,7 +66,6 @@ { "skill": "rifle", "bonus": { "rng": [ 1, 6 ] } }, { "skill": "smg", "bonus": { "rng": [ 1, 4 ] } } ], - "common": true, "worn_override": "NC_CYBERNINJA_worn", "carry_override": "NC_CYBERNINJA_carried", "weapon_override": "NC_CYBERNINJA_wield", diff --git a/data/mods/Aftershock/npcs/cyrus_whately.json b/data/mods/Aftershock/npcs/cyrus_whately.json new file mode 100644 index 0000000000000..e42509a09d772 --- /dev/null +++ b/data/mods/Aftershock/npcs/cyrus_whately.json @@ -0,0 +1,219 @@ +[ + { + "type": "effect_type", + "id": "u_met_cyrus" + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_1", + "dynamic_line": { + "u_has_var": "u_met_cyrus", + "type": "general", + "context": "meeting", + "value": "yes", + "yes": [ "What brings you here today?", "Hello.", "How are you?", "Welcome!", "Are you ready to leave this marble?" ], + "no": "You look like one of my niece's lab assistants." + }, + "responses": [ + { + "text": "Who are you?", + "effect": { "u_add_var": "u_met_cyrus", "type": "general", "context": "meeting", "value": "yes" }, + "condition": { "not": { "u_has_var": "u_met_cyrus", "type": "general", "context": "meeting", "value": "yes" } }, + "topic": "TALK_CYRUS_firstmeet" + }, + { + "text": "What is this place?", + "condition": { "u_has_var": "u_met_cyrus", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_CYRUS_place" + }, + { + "text": "How did you get here?", + "condition": { "u_has_var": "u_met_cyrus", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_CYRUS_ask_past" + }, + { + "text": "How are things here?", + "condition": { "u_has_var": "u_met_cyrus", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_CYRUS_ask_mood" + }, + { + "text": "Can I do anything for you? Are you as crazy as your niece?", + "condition": { "u_has_var": "u_met_cyrus", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_MISSION_LIST" + }, + { "text": "I'm going on my way now.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_firstmeet", + "dynamic_line": "Are you here because you are morally flexible and willing to take questionable directions from obviously insane people.", + "responses": [ + { "text": "Your niece is looking for you.", "topic": "TALK_CYRUS_millyficent" }, + { "text": "How did you survive the Cataclysm?", "topic": "TALK_CYRUS_cataclysm" }, + { "text": "Quite the setup you have here.", "topic": "TALK_CYRUS_1" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_place", + "dynamic_line": "This is a Whately family property. And you are an intruder.", + "responses": [ + { "text": "I've met your niece.", "topic": "TALK_CYRUS_millyficent" }, + { "text": "I didn't mean to intrude.", "topic": "TALK_CYRUS_1" }, + { "text": "I think there's been a mistake.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_millyficent", + "dynamic_line": "She's always been so precocious! I knew that she was going places and we'd see great things from her.", + "responses": [ + { "text": "She needed a lab assistant, do you?", "topic": "TALK_MISSION_LIST" }, + { "text": "This whole family is deranged.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_ask_past", + "dynamic_line": "The Whately family has been part of the fabric of New England since before the Revolutionary War. And I have been growing our interests for the last few decades.", + "responses": [ { "text": "Let's talk about something else.", "topic": "TALK_CYRUS_1" } ] + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_cataclysm", + "dynamic_line": "Muttering 'They whispered of a prison. Ragnarok engine humming. Wrapped they in darkness dreaming'. He shakes himself, 'Anyway it looks like something woke up, for at least a little bit.'", + "responses": [ { "text": "Let's talk about something else.", "topic": "TALK_CYRUS_1" } ] + }, + { + "type": "talk_topic", + "id": "TALK_CYRUS_ask_mood", + "dynamic_line": "This is a time of great danger and great opportunity and it must not be squandered.", + "responses": [ { "text": "This is not reassuring.", "topic": "TALK_CYRUS_1" } ] + }, + { + "id": "MISSION_FRANKENSTEIN_1", + "type": "mission_definition", + "name": "In the absence of life", + "description": "Find self healing polymers.", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 5, + "value": 0, + "item": "afs_biomaterial_4", + "count": 4, + "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_FRANKENSTEIN_2", + "dialogue": { + "describe": "I need 4 self healing polymers from wherever you can find them.", + "offer": "My experiments are at a critical point. Could you find about… 4 self healing polymers for me?", + "accepted": "Don't forget to tell me when you have them.", + "rejected": "Then why are you even here? Just let me know if you reconsider.", + "advice": "Hospitals, DIY geneticists.", + "inquire": "Why aren't you done yet?", + "success": "My niece shared her research, show me if it works.", + "success_lie": "Thanks for trying… I guess.", + "failure": "Put a stopper in death? No you never will." + }, + "end": { "effect": [ { "u_buy_item": "mutagen_migo", "container": "bottle_glass", "count": 3 } ] } + }, + { + "id": "MISSION_FRANKENSTEIN_2", + "type": "mission_definition", + "name": "Making Connections", + "description": "I need a neurosynaptic interface matrix.", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 6, + "value": 0, + "item": "afs_neural_io_5", + "count": 1, + "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_FRANKENSTEIN_3", + "dialogue": { + "describe": "I need one neurosynaptic interface matrix.", + "offer": "I want to test something and I need a viable version to reverse engineer. Bring me one neurosynaptic interface matrix.", + "accepted": "Without this all that's possible is 'Ye liveliest awfulness'.", + "rejected": "You'd give up a new world just to bring back Foodplace!", + "advice": "You're going to have to hunt this down.", + "inquire": "Have you found my matrix?", + "success": "Have this.", + "success_lie": "How could you possibly lie to me about an object you have not put in my hands.", + "failure": "Do you have any head cybernetics? I could possibly salvage one out of your skull." + }, + "end": { "effect": [ { "u_buy_item": "afs_energy_storage_4", "count": 4 } ] } + }, + { + "id": "MISSION_FRANKENSTEIN_3", + "type": "mission_definition", + "name": "Alpha Mutagen", + "description": "Bring me 3 alpha mutagen.", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 4, + "value": 0, + "item": "mutagen", + "count": 3, + "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_FRANKENSTEIN_4", + "dialogue": { + "describe": "I need three alpha mutagen.", + "offer": "I know that one of the corporations were creating a so called Alpha mutagen. I need three doses to prepare the body.", + "accepted": "Better living through chemistry.", + "rejected": "Would you take it yourself?", + "advice": "If you can't make it yourself go hit up a lab. Be prepared for anything in there.", + "inquire": "Did you get taller since the last time I saw you?", + "success": "I've got something more potent for you this time.", + "success_lie": "Lies and the lying liars who tell them.", + "failure": "You are keeping me from my experiments. Would you like to become one?" + }, + "end": { "effect": [ { "u_buy_item": "iv_mutagen_migo", "container": "bottle_glass", "count": 3 } ] } + }, + { + "id": "MISSION_FRANKENSTEIN_4", + "type": "mission_definition", + "name": "Broken Cyborg", + "description": "We need a strong base for our experiment.", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 6, + "value": 0, + "item": "bot_broken_cyborg", + "count": 3, + "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_FRANKENSTEIN_5", + "dialogue": { + "describe": "I need an unconscious broken cyborg. They are already brain dead so it won't be murder.", + "offer": "If you go to labs you should find some broken cyborg experiments. Bring an inactive one to me.", + "accepted": "Are you ready for a little necromancy?", + "rejected": "I'm telling you they're already brain dead.", + "advice": "Look for surgical centers inside the labs.", + "inquire": "So where are my fresh parts?", + "success": "I've got something more potent for you this time.", + "success_lie": "Lies and the lying liars who tell them.", + "failure": "What kinds of body modifications do you have?" + }, + "end": { "effect": [ { "u_buy_item": "iv_mutagen_migo", "container": "bottle_glass", "count": 3 } ] } + }, + { + "id": "MISSION_FRANKENSTEIN_5", + "type": "mission_definition", + "name": "A-Mi-go, You-go find me some brains", + "description": "Find 6 living brains in jars.", + "//": "Sometime consider changing the end effect of this item and making the test site it's own quest.", + "goal": "MGOAL_FIND_ITEM", + "difficulty": 8, + "value": 0, + "item": "living_brain_jar", + "count": 2, + "origins": [ "ORIGIN_SECONDARY" ], + "dialogue": { + "describe": "I need some brains, but brains that are still living. We've got our own brain blasters, but I won't risk them in experiments.", + "offer": "If this works I may be able to give some of these poor souls bodies again. Six should do.", + "accepted": "I knew I could count on your generosity.", + "rejected": "I would have given you the title of Whately family Igor.", + "advice": "Brain blasters, that's what I call them. Some kind of automated weapon system the mi-go use.", + "inquire": "They speak sometimes. I wonder if they still think.", + "success": "Go somewhere, far away, and then connect the power system. Come back and tell me how things went.", + "success_lie": "Thanks for trying… I guess.", + "failure": "I can't be Dr Frankenstein unless you get me these." + }, + "end": { "effect": [ { "u_buy_item": "inactive_frankenstein", "count": 1 } ] } + } +] diff --git a/data/mods/Aftershock/npcs/frankenstein_classes.json b/data/mods/Aftershock/npcs/frankenstein_classes.json new file mode 100644 index 0000000000000..2108b34a7879f --- /dev/null +++ b/data/mods/Aftershock/npcs/frankenstein_classes.json @@ -0,0 +1,61 @@ +[ + { + "type": "npc_class", + "id": "frankenstein", + "name": "Abomination", + "job_description": "The mi-go took me and vivisected me. Now you've given me a body again.", + "//": "Make a Frankenstein BG story", + "traits": [ + { "group": "BG_revival_story_FRANKENSTEIN" }, + { "group": "NPC_starting_traits" }, + { "group": "Appearance_demographics" }, + [ "SHOUT1", 75 ] + ], + "skills": [ + { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 4, 2 ] }, { "rng": [ -3, -1 ] } ] } ] } } + ], + "worn_override": "NC_CYBORG_worn", + "carry_override": "NC_CYBORG_carried", + "common": false, + "bionics": [ + { "id": "bio_ankles", "chance": 50 }, + { "id": "bio_dis_shock", "chance": 50 }, + { "id": "bio_dis_acid", "chance": 50 }, + { "id": "bio_drain", "chance": 50 }, + { "id": "bio_noise", "chance": 50 }, + { "id": "bio_power_weakness", "chance": 50 }, + { "id": "bio_itchy", "chance": 50 }, + { "id": "bio_nostril", "chance": 50 }, + { "id": "bio_thumbs", "chance": 50 }, + { "id": "bio_spasm", "chance": 50 }, + { "id": "bio_shakes", "chance": 50 }, + { "id": "bio_leaky", "chance": 50 }, + { "id": "bio_blade", "chance": 50 }, + { "id": "bio_deformity", "chance": 100 }, + { "id": "bio_voice", "chance": 100 }, + { "id": "bio_eye_enhancer", "chance": 50 }, + { "id": "bio_ankles", "chance": 50 }, + { "id": "bio_trip", "chance": 50 }, + { "id": "bio_stiff", "chance": 50 }, + { "id": "bio_armor_head", "chance": 50 }, + { "id": "bio_armor_torso", "chance": 50 }, + { "id": "bio_armor_arms", "chance": 50 }, + { "id": "bio_armor_legs", "chance": 50 }, + { "id": "bio_armor_eyes", "chance": 50 }, + { "id": "bio_claws", "chance": 50 }, + { "id": "bio_power_storage", "chance": 100 }, + { "id": "bio_torsionratchet", "chance": 100 } + ] + }, + { + "type": "npc", + "id": "frankenstein", + "//": "An abomination you have revived.", + "name_suffix": "Cyborg Abomination", + "class": "frankenstein", + "attitude": 1, + "mission": 0, + "chat": "TALK_CYBORG_Abomination_1", + "faction": "no_faction" + } +] diff --git a/data/mods/Aftershock/npcs/whately_dialogue.json b/data/mods/Aftershock/npcs/milly_whately_dialogue.json similarity index 79% rename from data/mods/Aftershock/npcs/whately_dialogue.json rename to data/mods/Aftershock/npcs/milly_whately_dialogue.json index c0a01a5004b8e..107d1c4f55810 100644 --- a/data/mods/Aftershock/npcs/whately_dialogue.json +++ b/data/mods/Aftershock/npcs/milly_whately_dialogue.json @@ -129,8 +129,8 @@ "origins": [ "ORIGIN_SECONDARY" ], "followup": "MISSION_migo_biology_3", "dialogue": { - "describe": "I need 56 chunks of mi-go resin.", - "offer": "I need to understand more about their environment and how they create it. This research wasn't even possible previously. Bring me fifty six chunks of mi-go resin.", + "describe": "I need 50 chunks of mi-go resin.", + "offer": "I need to understand more about their environment and how they create it. This research wasn't even possible previously. Bring me fifty chunks of mi-go resin.", "accepted": "My notes suggest that their building materials are alive. I need you to help me confirm that.", "rejected": "You can't just walk away from this. We're changing the world!", "advice": "Find their buildings, jackhammer them. What did you do before the world changed for the better, cold call salesman?", @@ -177,6 +177,7 @@ "item": "humming_heart", "count": 2, "origins": [ "ORIGIN_SECONDARY" ], + "followup": "MISSION_FIND_CYRUS", "dialogue": { "describe": "Parts, parts, parts. Bring me some hearts. ", "offer": "The Whately's are known in these parts for gathering body parts. Ha! That's just rumors and hearsay. But I do need two humming hearts.", @@ -188,6 +189,41 @@ "success_lie": "Thanks for trying… I guess.", "failure": "I can't be Dr Frankenstein unless you get me these." }, - "end": { "effect": [ { "u_buy_item": "mutagen_migo", "container": "flask_glass", "count": 2 } ] } + "end": { "effect": [ { "u_buy_item": "mutagen_migo", "container": "bottle_glass", "count": 3 } ] } + }, + { + "id": "MISSION_FIND_CYRUS", + "type": "mission_definition", + "name": "Find my great uncle Cyrus Whately", + "description": "Cyrus and his family were poorly liked even for Whately's before the end of the world. They went so far off grid that they may not even know anything has changed. I need to know he's alive and where his research has taken him.", + "goal": "MGOAL_TALK_TO_NPC", + "difficulty": 2, + "value": 150000, + "origins": [ "ORIGIN_SECONDARY" ], + "has_generic_rewards": false, + "dialogue": { + "describe": "My great uncle Cyrus had an unconventional relationship with both his neighbors and the mi-go before the Cataclysm. I'd like to know where he has gotten with his research since I haven't heard from him in years.", + "offer": "Can you go find my uncle and let him know where I am?", + "accepted": "Of course you said yes, you want to know what he's found just as much as I do!", + "rejected": "Oh well. I was hoping to teach you some new things, so you could start your own experiments.", + "advice": "I've given you directions to that branch of the family's bunker. Yes I said bunker did you think he'd be in a tower?", + "inquire": "How is the search going?", + "success": "Thanks, now that he knows I'm here he's sent some of my cousins. Now that I have more disposable help, take a copy of my early research.", + "success_lie": "What good does this do us?", + "failure": "I hope he didn't meet Leandrus' fate…" + }, + "start": { + "assign_mission_target": { + "om_terrain": "whately_lmoe_under_first_floor", + "om_special": "Strange LMOE Shelter", + "z": 0, + "reveal_radius": 3, + "must_see": false, + "random": true, + "search_range": 180 + }, + "update_mapgen": { "place_npcs": [ { "class": "cyrus_whately", "x": 11, "y": 10, "target": true } ] } + }, + "end": { "opinion": { "trust": 1, "value": 1 }, "effect": [ { "u_buy_item": "millyficents_diary", "count": 1 } ] } } ] diff --git a/data/mods/Aftershock/npcs/mutant_npcs/trait_groups.json b/data/mods/Aftershock/npcs/mutant_npcs/trait_groups.json index 7f96b7efc88f3..b66b06ffc801b 100644 --- a/data/mods/Aftershock/npcs/mutant_npcs/trait_groups.json +++ b/data/mods/Aftershock/npcs/mutant_npcs/trait_groups.json @@ -967,5 +967,57 @@ ] } ] + }, + { + "type": "trait_group", + "id": "trait_group_migo", + "subtype": "collection", + "traits": [ + { "trait": "PATCHFUR", "prob": 50 }, + { "trait": "LEATHER_FEET", "prob": 50 }, + { "trait": "SKINFOLDS", "prob": 50 }, + { "trait": "HAULER", "prob": 50 }, + { "trait": "WEAKJOINTS", "prob": 50 }, + { "trait": "UPLIFTED" }, + { "trait": "ELEPHANTINE_SMELL", "prob": 50 }, + { "trait": "SPECAILIZED_DIET", "prob": 50 }, + { "trait": "ELEPHANTINE_SMELL", "prob": 50 }, + { "trait": "CRUSHINGFEET", "prob": 50 }, + { "trait": "HERBIVORE", "prob": 50 }, + { "trait": "FACEBUMPS", "prob": 50 } + ] + }, + { + "type": "trait_group", + "id": "trait_group_migo_nonthres", + "subtype": "collection", + "traits": [ + { "trait": "MIGO_BREATHE", "prob": 50 }, + { "trait": "SHOUT1", "prob": 50 }, + { "trait": "NEURAL_IMPROVEMENT", "prob": 50 }, + { "trait": "ENHANCED_REACTIONS", "prob": 50 }, + { "trait": "QUICKENING", "prob": 50 }, + { "distribution": [ { "trait": "NEURAL_IMPROVEMENT" }, { "trait": "EXPANDED_CONSCIOUSNESS" } ] }, + { "distribution": [ { "trait": "WARM_NATURED" }, { "trait": "MOUTH_TENDRILS" } ] } + ] + }, + { + "type": "trait_group", + "id": "trait_group_migo_postthres", + "subtype": "collection", + "traits": [ + { "trait": "THRESH_YUGGOTH" }, + { "distribution": [ { "trait": "UPLIFTED" }, { "trait": "ALIEN_INT" } ] }, + { "trait": "MIGO_HEAT_RESIST", "prob": 50 }, + { "trait": "OTHERWORLDLY_GRACE", "prob": 20 }, + { "trait": "NEW_MUSCLES", "prob": 20 }, + { "trait": "MUSCLE_FIBER", "prob": 50 }, + { + "distribution": [ + { "trait": "MIGO_EARS" }, + { "collection": [ { "trait": "NEW_MUSCLES" }, { "trait": "MUSCLE_FIBER" }, { "trait": "DETACHMENT" } ] } + ] + } + ] } ] diff --git a/data/mods/Aftershock/npcs/npc.json b/data/mods/Aftershock/npcs/npc.json index c420e2d9addb2..34ced1f4a8b27 100644 --- a/data/mods/Aftershock/npcs/npc.json +++ b/data/mods/Aftershock/npcs/npc.json @@ -9,5 +9,16 @@ "mission": 0, "chat": "TALK_PrepNet_gardener_1", "faction": "Prepnet_Phyle" + }, + { + "type": "npc", + "id": "whately_cousin", + "//": "Abomination. Change the chat if this loads.", + "name_suffix": "Cousin", + "class": "whately_cousin", + "attitude": 1, + "mission": 0, + "chat": "TALK_WHATELY_1", + "faction": "whately_family" } ] diff --git a/data/mods/Aftershock/npcs/whately_generic_dialogue.json b/data/mods/Aftershock/npcs/whately_generic_dialogue.json new file mode 100644 index 0000000000000..103efa7e472d0 --- /dev/null +++ b/data/mods/Aftershock/npcs/whately_generic_dialogue.json @@ -0,0 +1,106 @@ +[ + { + "type": "effect_type", + "id": "u_met_whately" + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_1", + "dynamic_line": { + "u_has_var": "u_met_whately", + "type": "general", + "context": "meeting", + "value": "yes", + "yes": [ "Outsider.", "Hello.", "Hospitality rites are civilization.", "Guest.", "How's the madness outside?" ], + "no": "We don't get outsiders around here all that much." + }, + "responses": [ + { + "text": "Who are you?", + "effect": { "u_add_var": "u_met_whately", "type": "general", "context": "meeting", "value": "yes" }, + "condition": { "not": { "u_has_var": "u_met_whately", "type": "general", "context": "meeting", "value": "yes" } }, + "topic": "TALK_WHATELY_firstmeet" + }, + { + "text": "What is this place?", + "condition": { "u_has_var": "u_met_whately", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_WHATELY_place" + }, + { + "text": "What's your story?", + "condition": { "u_has_var": "u_met_whately", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_WHATELY_ask_past" + }, + { + "text": "How are things here?", + "condition": { "u_has_var": "u_met_whately", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_WHATELY_ask_mood" + }, + { + "text": "Can I do anything for you?", + "condition": { "u_has_var": "u_met_whately", "type": "general", "context": "meeting", "value": "yes" }, + "topic": "TALK_MISSION_LIST" + }, + { "text": "How do I join the family?", "topic": "TALK_WHATELY_ask_membership" }, + { "text": "I'm going on my way now.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_firstmeet", + "dynamic_line": "I'm a member of the Whately Family. Who are you?", + "responses": [ + { "text": "I am lost and really need something to eat.", "topic": "TALK_WHATELY_food" }, + { "text": "I am just a fellow survivor.", "topic": "TALK_WHATELY_1" }, + { "text": "I've done some tasks for your relatives.", "topic": "TALK_WHATELY_1" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_place", + "dynamic_line": "Welcome to Whately lands. Behave yourself or we'll harvest you for parts.", + "responses": [ + { "text": "Can you give me something to eat then?", "topic": "TALK_WHATELY_food" }, + { "text": "What can I buy here?", "topic": "TALK_WHATELY_ask_goods" }, + { "text": "Oh, okay.", "topic": "TALK_WHATELY_1" }, + { "text": "Family bonds above all, huh?", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_food", + "dynamic_line": "We aren't in the habit of breaking bread with outsiders.", + "responses": [ + { "text": "I can pay.", "topic": "TALK_WHATELY_ask_goods" }, + { "text": "How do I join your family?", "topic": "TALK_WHATELY_ask_membership" }, + { "text": "Well I'm heading out then", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_ask_goods", + "dynamic_line": "Then let's see what you've got to trade.", + "responses": [ + { "text": "It was worth a try.", "topic": "TALK_WHATELY_1" }, + { "text": "What can I buy here?", "effect": "start_trade", "topic": "TALK_WHATELY_1" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_ask_membership", + "dynamic_line": "Only blood allowed, and the family Elders can make you of the blood.", + "responses": [ { "text": "Well that sounds creepy.", "topic": "TALK_WHATELY_1" } ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_ask_past", + "dynamic_line": "I was born part of the family. We've never been accepted here but our wealth and talents have kept us alive through the centuries.", + "responses": [ { "text": "Let's talk about something else.", "topic": "TALK_WHATELY_1" } ] + }, + { + "type": "talk_topic", + "id": "TALK_WHATELY_ask_mood", + "dynamic_line": "Family keeps me busy and our experiments and projects take up the rest of my time.", + "responses": [ { "text": "I'm glad you stay busy.", "topic": "TALK_WHATELY_1" } ] + } +] diff --git a/data/mods/Aftershock/recipes/frankenstein_recipes.json b/data/mods/Aftershock/recipes/frankenstein_recipes.json new file mode 100644 index 0000000000000..77d699718bff2 --- /dev/null +++ b/data/mods/Aftershock/recipes/frankenstein_recipes.json @@ -0,0 +1,28 @@ +[ + { + "type": "recipe", + "result": "inactive_frankenstein", + "category": "CC_ELECTRONIC", + "subcategory": "CSC_ELECTRONIC_CBMS", + "skill_used": "electronics", + "skills_required": [ "firstaid", 8 ], + "difficulty": 7, + "time": 50000, + "reversible": true, + "decomp_learn": 5, + "book_learn": [ [ "cyrus'_notes", 7 ] ], + "using": [ [ "soldering_standard", 20 ] ], + "tools": [ [ [ "afs_solderers_item", -1 ], [ "toolset", -1 ] ] ], + "qualities": [ { "id": "SCREW_FINE", "level": 1 }, { "id": "CUT_FINE", "level": 2 } ], + "components": [ + [ [ "afs_energy_storage_4", 6 ] ], + [ [ "afs_biomaterial_3", 4 ] ], + [ [ "living_brain_jar", 1 ] ], + [ [ "humming_heart", 2 ] ], + [ [ "bot_broken_cyborg", 1 ] ], + [ [ "thread", 600 ] ], + [ [ "1st_aid", 4 ] ], + [ [ "chain", 2 ] ] + ] + } +] diff --git a/data/mods/Aftershock/vehicles/vehicle_parts.json b/data/mods/Aftershock/vehicles/vehicle_parts.json index d73701ac55381..754a468909f8a 100644 --- a/data/mods/Aftershock/vehicles/vehicle_parts.json +++ b/data/mods/Aftershock/vehicles/vehicle_parts.json @@ -10,7 +10,7 @@ "location": "center", "durability": 200, "description": "This is little more than a sheetmetal basin welded to the bottom of the vehicle, extending below it. Though it holds a lot of stuff, its shoddiness makes it fragile.", - "size": 1200, + "size": 600, "breaks_into": [ { "item": "steel_lump", "count": [ 4, 6 ] }, { "item": "scrap", "count": [ 4, 6 ] } ] }, {