From 55c1cb3d9321f0c502c2c6b8fec6269fe7e45265 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Mon, 4 Apr 2022 10:45:58 -0700 Subject: [PATCH 01/20] Add nested map infrastructure This begins the work, eventually will split this to a few files. Also updates with region groundcovers because obviously. --- data/json/mapgen/roadstop.json | 108 ++++++++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 10 deletions(-) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index 5cf1c4fffd72b..d3f46d6d45a1d 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -1,4 +1,54 @@ [ + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "nest_RandEnc_roadstop", + "//": "Select a possible random encounter that would make sense at a roadside outhouse. This is a prototype version that only includes a merchant. Doing this using cascading nested mapgen so that these same random encounter templates can be placed in other maps rather than being designed to only fit in this one.", + "object": { + "mapgensize": [ 24, 24 ], + "place_nested": [ + { + "chunks": [ + [ "RandEnc_FM_Caravan_Rand_8x8", 100 ] + ], + "x": 0, + "y": 15 + } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "RandEnc_FM_Caravan_Rand_8x8", + "//": "Adds a free merchant caravan that has stopped for a rest. This one just has a generic random free merchant trader.", + "object": { + "mapgensize": [ 8, 8 ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "nest_roadstop_zombies1", + "//": "Scatters just a couple zombies and the car they came in on.", + "object": { + "mapgensize": [ 24, 24 ], + "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 8, 20 ] "y": [ 17, 20 ] } ], + "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 19 ], "y": [ 6, 19 ], "chance": 100 } ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "nest_roadstop_zombies2", + "//": "Scatters a few zombies and cars.", + "object": { + "mapgensize": [ 24, 24 ], + "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 8, 12 ] "y": [ 17, 20 ] } ], + "place_vehicles": [ { "chance": 80, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 16, 20 ] "y": [ 17, 20 ] } ], + "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 19 ], "y": [ 6, 19 ], "chance": 100 }, "repeat": [ 2, 3 ] ] + } + }, { "type": "mapgen", "method": "json", @@ -35,12 +85,12 @@ "terrain": { " ": "t_floor", "#": "t_wall_log", - ".": "t_grass", - "2": "t_dirt", + ".": "t_region_groundcover", + "2": "t_region_groundcover_barren", "3": "t_door_c", "6": "t_floor", "7": "t_floor", - "8": "t_dirt", + "8": "t_region_groundcover_barren", "A": "t_floor", "S": "t_sidewalk" }, @@ -50,9 +100,34 @@ { "item": "magazines", "x": [ 11, 12 ], "y": 9, "chance": 80 }, { "item": "trash", "x": [ 11, 12 ], "y": 11, "chance": 80 }, { "item": "magazines", "x": [ 11, 12 ], "y": 13, "chance": 90 } + ], + "place_nested": [ + { + "//": "Overlay a single nested map over the whole region. It may contain nothing, a few zombies, a lot of zombies, or no zombies at all and a script for random encounters to occur here.", + "chunks": [ + [ "null", 50 ], + [ "nest_roadstop_zombies1", 20 ], + [ "nest_roadstop_zombies2", 10 ], + [ "nest_RandEnc_roadstop", 20 ] + ], + "x": 0, + "y": 0 + } ] } }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "nest_RandEnc_NPC_roadstop", + "//": "Random encounter with NPCs at a roadside bathroom.", + "object": { + "mapgensize": [ 24, 24 ], + "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 8, 12 ] "y": [ 17, 20 ] } ], + "place_vehicles": [ { "chance": 80, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 16, 20 ] "y": [ 17, 20 ] } ], + "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 19 ], "y": [ 6, 19 ], "chance": 100 }, "repeat": [ 2, 3 ] ] + } + }, { "type": "mapgen", "method": "json", @@ -125,18 +200,18 @@ "terrain": { " ": "t_floor", "#": "t_wall_log", - ".": "t_grass", - "2": "t_dirt", + ".": "t_region_groundcover", + "2": "t_region_groundcover_barren", "3": "t_door_c", "6": "t_floor", "7": "t_floor", - "8": "t_dirt", + "8": "t_region_groundcover_barren", "9": "t_floor", "A": "t_floor", "S": "t_sidewalk", - "i": "t_dirt", - "o": "t_dirt", - "t": "t_tree" + "i": "t_region_groundcover_barren", + "o": "t_region_groundcover_barren", + "t": "t_region_tree" }, "furniture": { "6": "f_table", "7": "f_toilet", "8": "f_trashcan", "9": "f_toilet", "A": "f_sink", "i": "f_sign", "o": "f_crate_c" }, "signs": { @@ -150,7 +225,20 @@ { "item": "trash", "x": [ 6, 18 ], "y": [ 8, 15 ], "chance": 60 }, { "item": "methlab", "x": [ 6, 18 ], "y": [ 8, 15 ], "chance": 50 } ], - "place_item": [ { "item": "touristmap", "x": [ 11, 12 ], "y": 22, "chance": 50, "amount": 1 } ] + "place_item": [ { "item": "touristmap", "x": [ 11, 12 ], "y": 22, "chance": 50, "amount": 1 } ], + "place_nested": [ + { + "//": "Overlay a single nested map over the whole region. It may contain nothing, a few zombies, a lot of zombies, or no zombies at all and a script for random encounters to occur here.", + "chunks": [ + [ "null", 50 ], + [ "nest_roadstop_zombies1", 20 ], + [ "nest_roadstop_zombies2", 10 ], + [ "nest_RandEnc_roadstop", 20 ] + ], + "x": 0, + "y": 0 + } + ] } }, { From 42043e68bd30d62ef91b459579c0b6b300bdac15 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 07:33:55 -0700 Subject: [PATCH 02/20] Update roadstop.json --- data/json/mapgen/roadstop.json | 100 ++++++++++++++------------------- 1 file changed, 42 insertions(+), 58 deletions(-) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index d3f46d6d45a1d..2d3345e0672c7 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -1,52 +1,62 @@ [ { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "nest_RandEnc_roadstop", - "//": "Select a possible random encounter that would make sense at a roadside outhouse. This is a prototype version that only includes a merchant. Doing this using cascading nested mapgen so that these same random encounter templates can be placed in other maps rather than being designed to only fit in this one.", - "object": { - "mapgensize": [ 24, 24 ], - "place_nested": [ + "type": "effect_on_condition", + "id": "EOC_RandEnc_Roadstop_add", + "recurrence": 3600, + "global": true, + "eoc_type": "OM_MOVE", + "condition": { + "and": [ + { "u_near_om_location": "roadstop_a", "range": 2 }, + { "is_day": true }, + { "one_in_chance": 100 }, + { "days_since_cataclysm": 5 }, { - "chunks": [ - [ "RandEnc_FM_Caravan_Rand_8x8", 100 ] - ], - "x": 0, - "y": 15 + "not": [ + { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": "<", "time": "1 d" }, + { "is_season": "winter" } + ] } ] - } + }, + "effect": [ + { "mapgen_update": "nest_RandEnc_roadstop_a_add", "om_terrain": "roadstop_a" }, + { "u_add_var": "RandEnc", "type": "timer", "context": "caravan", "time": true } + ] }, { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "RandEnc_FM_Caravan_Rand_8x8", - "//": "Adds a free merchant caravan that has stopped for a rest. This one just has a generic random free merchant trader.", - "object": { - "mapgensize": [ 8, 8 ] - } + "type": "effect_on_condition", + "id": "EOC_RandEnc_Roadstop_remove", + "recurrence": 600, + "global": true, + "condition": { + "and": [ + { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" }, + { + "not": [ + { "u_near_om_location": "roadstop_a", "range": 2 } + } + ] + }, + "effect": [ + { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" } + ] }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "nest_roadstop_zombies1", - "//": "Scatters just a couple zombies and the car they came in on.", + "update_mapgen_id": "nest_RandEnc_roadstop_a_add", + "//": "Adds a random encounter at this roadstop", "object": { - "mapgensize": [ 24, 24 ], - "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 8, 20 ] "y": [ 17, 20 ] } ], - "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 19 ], "y": [ 6, 19 ], "chance": 100 } ] + "place_npcs": [ { "class": "evac_broker", "x": 8, "y": 18 } ] } }, { "type": "mapgen", "method": "json", - "nested_mapgen_id": "nest_roadstop_zombies2", - "//": "Scatters a few zombies and cars.", + "update_mapgen_id": "nest_RandEnc_roadstop_a_remove", + "//": "removes a random encounter at this roadstop", "object": { - "mapgensize": [ 24, 24 ], - "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 8, 12 ] "y": [ 17, 20 ] } ], - "place_vehicles": [ { "chance": 80, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 16, 20 ] "y": [ 17, 20 ] } ], - "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 19 ], "y": [ 6, 19 ], "chance": 100 }, "repeat": [ 2, 3 ] ] } }, { @@ -100,19 +110,6 @@ { "item": "magazines", "x": [ 11, 12 ], "y": 9, "chance": 80 }, { "item": "trash", "x": [ 11, 12 ], "y": 11, "chance": 80 }, { "item": "magazines", "x": [ 11, 12 ], "y": 13, "chance": 90 } - ], - "place_nested": [ - { - "//": "Overlay a single nested map over the whole region. It may contain nothing, a few zombies, a lot of zombies, or no zombies at all and a script for random encounters to occur here.", - "chunks": [ - [ "null", 50 ], - [ "nest_roadstop_zombies1", 20 ], - [ "nest_roadstop_zombies2", 10 ], - [ "nest_RandEnc_roadstop", 20 ] - ], - "x": 0, - "y": 0 - } ] } }, @@ -225,20 +222,7 @@ { "item": "trash", "x": [ 6, 18 ], "y": [ 8, 15 ], "chance": 60 }, { "item": "methlab", "x": [ 6, 18 ], "y": [ 8, 15 ], "chance": 50 } ], - "place_item": [ { "item": "touristmap", "x": [ 11, 12 ], "y": 22, "chance": 50, "amount": 1 } ], - "place_nested": [ - { - "//": "Overlay a single nested map over the whole region. It may contain nothing, a few zombies, a lot of zombies, or no zombies at all and a script for random encounters to occur here.", - "chunks": [ - [ "null", 50 ], - [ "nest_roadstop_zombies1", 20 ], - [ "nest_roadstop_zombies2", 10 ], - [ "nest_RandEnc_roadstop", 20 ] - ], - "x": 0, - "y": 0 - } - ] + "place_item": [ { "item": "touristmap", "x": [ 11, 12 ], "y": 22, "chance": 50, "amount": 1 } ] } }, { From 24f74581a4dc7f3ca3b1f3b0b76daee1f589e78d Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 14:23:18 -0700 Subject: [PATCH 03/20] Update roadstop.json --- data/json/mapgen/roadstop.json | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index 2d3345e0672c7..ffe782707ff75 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -31,15 +31,12 @@ "global": true, "condition": { "and": [ - { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" }, - { - "not": [ - { "u_near_om_location": "roadstop_a", "range": 2 } - } + { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" } ] }, "effect": [ - { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" } + { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" }, + { "remove_npc": "FM_caravan_merchant_random" } ] }, { @@ -48,7 +45,7 @@ "update_mapgen_id": "nest_RandEnc_roadstop_a_add", "//": "Adds a random encounter at this roadstop", "object": { - "place_npcs": [ { "class": "evac_broker", "x": 8, "y": 18 } ] + "place_npcs": [ { "class": "FM_caravan_merchant_random", "x": 8, "y": 18 } ] } }, { @@ -113,18 +110,6 @@ ] } }, - { - "type": "mapgen", - "method": "json", - "nested_mapgen_id": "nest_RandEnc_NPC_roadstop", - "//": "Random encounter with NPCs at a roadside bathroom.", - "object": { - "mapgensize": [ 24, 24 ], - "place_vehicles": [ { "chance": 100, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 8, 12 ] "y": [ 17, 20 ] } ], - "place_vehicles": [ { "chance": 80, "fuel": 0, "rotation": 90, "status": 1, "vehicle": "forgotten_vehicles", "x": [ 16, 20 ] "y": [ 17, 20 ] } ], - "place_monsters": [ { "monster": "GROUP_ZOMBIE", "x": [ 6, 19 ], "y": [ 6, 19 ], "chance": 100 }, "repeat": [ 2, 3 ] ] - } - }, { "type": "mapgen", "method": "json", From 25dada6cdf191a3c6727b154ed89bd4da489e060 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 14:24:22 -0700 Subject: [PATCH 04/20] Update roadstop.json --- data/json/mapgen/roadstop.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index ffe782707ff75..5c63a16999073 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -27,7 +27,7 @@ { "type": "effect_on_condition", "id": "EOC_RandEnc_Roadstop_remove", - "recurrence": 600, + "recurrence": 200, "global": true, "condition": { "and": [ From 6e8cc9093b8a20fea7cb1b999a2ee17d0da41ea1 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 14:27:33 -0700 Subject: [PATCH 05/20] Update roadstop.json --- data/json/mapgen/roadstop.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index 5c63a16999073..69825f04fd825 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -36,7 +36,8 @@ }, "effect": [ { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" }, - { "remove_npc": "FM_caravan_merchant_random" } + { "remove_npc": "FM_caravan_merchant_random" }, + { "remove_npc": "FM_caravan_guard_generic" } ] }, { @@ -45,7 +46,7 @@ "update_mapgen_id": "nest_RandEnc_roadstop_a_add", "//": "Adds a random encounter at this roadstop", "object": { - "place_npcs": [ { "class": "FM_caravan_merchant_random", "x": 8, "y": 18 } ] + "place_npcs": [ { "class": "FM_caravan_merchant_random", "x": 8, "y": 18 }, { "class": "FM_caravan_guard_generic", "x": 9, "y": 21 } ] } }, { From 35f7498fe4c9eba2a6d19b6617ebf7e6ab84a565 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 16:43:46 -0700 Subject: [PATCH 06/20] Update roadstop.json --- data/json/mapgen/roadstop.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index 69825f04fd825..2cb383622e6dc 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -57,6 +57,28 @@ "object": { } }, + { + "type": "npc", + "id": "FM_caravan_merchant_random", + "//": "Random NPC, non persistent, can direct you to the free merchants and sell you things.", + "name_suffix": "Caravan Merchant", + "class": "NC_TRADER", + "attitude": 0, + "mission": 3, + "chat": "TALK_CARAVAN_MERCHANT_1", + "faction": "free_merchants" + }, + { + "type": "npc", + "id": "FM_caravan_guard_generic", + "//": "Random NPC, non persistent, doesn't have much to say.", + "name_suffix": "Caravan Guard", + "class": "NC_BOUNTY_HUNTER", + "attitude": 0, + "mission": 3, + "chat": "TALK_CARAVAN_GUARD_GENERIC", + "faction": "free_merchants" + }, { "type": "mapgen", "method": "json", From a548972017f03ee8f3b9bea1a00fa4e9894caae1 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 17:26:37 -0700 Subject: [PATCH 07/20] Update roadstop.json --- data/json/mapgen/roadstop.json | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index 2cb383622e6dc..b972c1b39d7fa 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -30,9 +30,7 @@ "recurrence": 200, "global": true, "condition": { - "and": [ - { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" } - ] + "and": [ { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" } ] }, "effect": [ { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" }, @@ -46,7 +44,21 @@ "update_mapgen_id": "nest_RandEnc_roadstop_a_add", "//": "Adds a random encounter at this roadstop", "object": { - "place_npcs": [ { "class": "FM_caravan_merchant_random", "x": 8, "y": 18 }, { "class": "FM_caravan_guard_generic", "x": 9, "y": 21 } ] + "place_npcs": [ + { "class": "FM_caravan_merchant_random", "x": 10, "y": 18 }, + { "class": "FM_caravan_guard_generic", "x": 11, "y": 21 } + ], + "place_vehicles": [ + { + "vehicle": [ "pickup" ], + "chance": 100, + "fuel": 50, + "faction": "free_merchants", + "x": [ 4 ], + "y": [ 16 ], + "//": "to-do: Add gear to the back of the truck, put the guard in the cab and the merchant on the tailgate" + } + ] } }, { @@ -54,8 +66,7 @@ "method": "json", "update_mapgen_id": "nest_RandEnc_roadstop_a_remove", "//": "removes a random encounter at this roadstop", - "object": { - } + "object": { "remove_vehicles": [ { "vehicles": [ "pickup" ], "x": [ 1, 15 ], "y": [ 16, 23 ] } ] } }, { "type": "npc", From 613b9909c80129a6a1a19ce47144a8a237a0d9a4 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Tue, 5 Apr 2022 21:59:55 -0700 Subject: [PATCH 08/20] dialogue --- data/json/mapgen/roadstop.json | 22 ----- .../free_merchant_caravans.json | 86 +++++++++++++++++++ .../missiondef_free_merchants.json | 3 +- .../NPC_free_merchant_shopkeep.json | 1 + 4 files changed, 89 insertions(+), 23 deletions(-) create mode 100644 data/json/npcs/random_encounters/free_merchant_caravans.json diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index b972c1b39d7fa..e75bba442cb3e 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -68,28 +68,6 @@ "//": "removes a random encounter at this roadstop", "object": { "remove_vehicles": [ { "vehicles": [ "pickup" ], "x": [ 1, 15 ], "y": [ 16, 23 ] } ] } }, - { - "type": "npc", - "id": "FM_caravan_merchant_random", - "//": "Random NPC, non persistent, can direct you to the free merchants and sell you things.", - "name_suffix": "Caravan Merchant", - "class": "NC_TRADER", - "attitude": 0, - "mission": 3, - "chat": "TALK_CARAVAN_MERCHANT_1", - "faction": "free_merchants" - }, - { - "type": "npc", - "id": "FM_caravan_guard_generic", - "//": "Random NPC, non persistent, doesn't have much to say.", - "name_suffix": "Caravan Guard", - "class": "NC_BOUNTY_HUNTER", - "attitude": 0, - "mission": 3, - "chat": "TALK_CARAVAN_GUARD_GENERIC", - "faction": "free_merchants" - }, { "type": "mapgen", "method": "json", diff --git a/data/json/npcs/random_encounters/free_merchant_caravans.json b/data/json/npcs/random_encounters/free_merchant_caravans.json new file mode 100644 index 0000000000000..7252f6b60c0b2 --- /dev/null +++ b/data/json/npcs/random_encounters/free_merchant_caravans.json @@ -0,0 +1,86 @@ +[ + { + "type": "npc", + "id": "FM_caravan_merchant_random", + "//": "Random NPC, non persistent, can direct you to the free merchants and sell you things.", + "name_suffix": "Caravan Merchant", + "class": "NC_TRADER", + "attitude": 0, + "mission": 3, + "chat": "TALK_CARAVAN_MERCHANT_1", + "faction": "free_merchants" + }, + { + "type": "npc", + "id": "FM_caravan_guard_generic", + "//": "Random NPC, non persistent, doesn't have much to say.", + "name_suffix": "Caravan Guard", + "class": "NC_BOUNTY_HUNTER", + "attitude": 0, + "mission": 3, + "chat": "TALK_CARAVAN_GUARD_GENERIC", + "faction": "free_merchants" + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_1", + "dynamic_line": "Well well, another traveler. Don't try anything, you're outnumbered here and we're well armed.", + "responses": [ + { "text": "Are you threatening me?", "topic": "TALK_CARAVAN_MERCHANT_Threatening" }, + { "text": "What's your deal here?", "topic": "TALK_CARAVAN_MERCHANT_Job" }, + { "text": "I won't try anything if you don't. Just passing through.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_Threatening", + "dynamic_line": "No, not at all. Just being cautious. You know how it gets out here. We're not looking for trouble. In fact, if you've got anything worthwhile, maybe we could do a little trading.", + "responses": [ + { "text": "Sure, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "What's your deal here?", "topic": "TALK_CARAVAN_MERCHANT_Job" }, + { "text": "That suits me fine. I'll be on my way.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_Job", + "dynamic_line": "We're just travelers, making a pit stop. Might be willing to trade a bit, if you've got anything to share. We're not looking for trouble, there's plenty of that on the roads already.", + "responses": [ + { "text": "Sure, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "That's it? What's your story?", "topic": "TALK_CARAVAN_MERCHANT_Story" }, + { "text": "That suits me fine. I'll be on my way.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_Story", + "dynamic_line": "We're with a larger group of survivors, working out of one of the old FEMA bunkers. Folks have taken to calling us Free Merchants, although that sounds kinda on the nose to me. We know about a few survivor groups and we make regular trips around, sharing supplies back and forth and bringing them home. We're on the way back now.", + "responses": [ + { "text": "That's interesting. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "Can you give me directions to any of these other survivor groups?", "topic": "TALK_CARAVAN_MERCHANT_Others" }, + { "text": "Where is 'home'?", "topic": "TALK_CARAVAN_MERCHANT_Home", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { "text": "Thanks for chatting. I'd better go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_Others", + "dynamic_line": "No offense, but my clients definitely would not like me giving strangers directions to their hideouts. You'll have to find them on their own terms.", + "responses": [ + { "text": "I can understand that. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "Where is 'home'?", "topic": "TALK_CARAVAN_MERCHANT_Home", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { "text": "Thanks for chatting. I'd better go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_Home", + "dynamic_line": "Here, I'll mark it on your map. Feel free to come by and trade, or if you're the type, we might have use for your services as a merc.", + "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + "responses": [ + { "text": "Hey, thanks. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "Can you give me directions to any of these other survivor groups?", "topic": "TALK_CARAVAN_MERCHANT_Others" }, + { "text": "Thanks for that. I'd better go.", "topic": "TALK_DONE" } + ] + }, +] diff --git a/data/json/npcs/refugee_center/missiondef_free_merchants.json b/data/json/npcs/refugee_center/missiondef_free_merchants.json index 6163a185c1cca..ce9367c09b383 100644 --- a/data/json/npcs/refugee_center/missiondef_free_merchants.json +++ b/data/json/npcs/refugee_center/missiondef_free_merchants.json @@ -8,6 +8,7 @@ "value": 0, "start": "reveal_refugee_center", "origins": [ "ORIGIN_COMPUTER" ], - "destination": "evac_center_18" + "destination": "evac_center_18", + "end": { "effect": [ { "u_add_var": "found_refugee_center", "value": "yes" } ] } } ] diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json index 0b3b084eaadf4..7107a54ba15cc 100644 --- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json +++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json @@ -278,6 +278,7 @@ { "id": "TALK_EVAC_MERCHANT", "type": "talk_topic", + "speaker_effect": { "effect": [ { "u_add_var": "found_refugee_center", "value": "yes" } ] }, "dynamic_line": { "u_is_wearing": "badge_marshal", "yes": "Welcome marshal…", "no": "Welcome…" } }, { From 269e3ccfe2f3871f738434929c6a3cc75815a4af Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 08:52:17 -0700 Subject: [PATCH 09/20] Update free_merchant_caravans.json --- .../free_merchant_caravans.json | 85 ++++++++++++++++++- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/data/json/npcs/random_encounters/free_merchant_caravans.json b/data/json/npcs/random_encounters/free_merchant_caravans.json index 7252f6b60c0b2..0a071e28419d4 100644 --- a/data/json/npcs/random_encounters/free_merchant_caravans.json +++ b/data/json/npcs/random_encounters/free_merchant_caravans.json @@ -12,25 +12,36 @@ }, { "type": "npc", - "id": "FM_caravan_guard_generic", + "id": "FM_caravan_guard_A", "//": "Random NPC, non persistent, doesn't have much to say.", "name_suffix": "Caravan Guard", "class": "NC_BOUNTY_HUNTER", "attitude": 0, "mission": 3, - "chat": "TALK_CARAVAN_GUARD_GENERIC", + "chat": "TALK_CARAVAN_GUARD_A1", "faction": "free_merchants" }, { "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_1", "dynamic_line": "Well well, another traveler. Don't try anything, you're outnumbered here and we're well armed.", + "speaker_effect": { "effect": { "npc_first_topic": "TALK_CARAVAN_MERCHANT_2" } }, "responses": [ { "text": "Are you threatening me?", "topic": "TALK_CARAVAN_MERCHANT_Threatening" }, { "text": "What's your deal here?", "topic": "TALK_CARAVAN_MERCHANT_Job" }, { "text": "I won't try anything if you don't. Just passing through.", "topic": "TALK_DONE" } ] }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_2", + "dynamic_line": "What can I do for you?", + "responses": [ + { "text": "Do you have anything to trade?", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "What's your story?", "topic": "TALK_CARAVAN_MERCHANT_Story" }, + { "text": "Nothing much. Just passing through.", "topic": "TALK_DONE" } + ] + }, { "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_Threatening", @@ -83,4 +94,74 @@ { "text": "Thanks for that. I'd better go.", "topic": "TALK_DONE" } ] }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_MERCHANT_Trade", + "dynamic_line": "Always good to do a little trading.", + "responses": [ + { "text": "Actually I had a little more to trade still.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { "text": "Thanks. What were we talking about before?", "topic": "TALK_NONE" }, + { "text": "Thanks for that. I'd better go.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_A1", + "dynamic_line": "Sup? Nice to see a survivor. If you're here for business, talk to the trader.", + "speaker_effect": { "effect": { "npc_first_topic": "TALK_CARAVAN_GUARD_A2" } }, + "responses": [ + { "text": "What are you doing here?", "topic": "TALK_CARAVAN_GUARD_A_Job" }, + { "text": "Thanks for the tip.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_A2", + "dynamic_line": "Hi again. You want something?", + "responses": [ + { "text": "What are you doing here?", "topic": "TALK_CARAVAN_GUARD_A_Job" }, + { "text": "You looking for work? I might be hiring.", "topic": "TALK_CARAVAN_GUARD_A_Hire" }, + { "text": "Nope, just saying hi.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_A_Job", + "dynamic_line": "I'm a caravan guard, working for the free merchants. I'm an independent contractor though. Seems like a good way to get safety in numbers and try to find a safe place to settle down.", + "responses": [ + { "text": "So you're working for these guys, but aren't one of them?", "topic": "TALK_CARAVAN_GUARD_A_Merc" }, + { "text": "You looking for work? I might be hiring.", "topic": "TALK_CARAVAN_GUARD_A_Hire" }, + { "text": "The Free Merchants? Do they have some kind of trade outpost or anything like that?", "topic": "TALK_CARAVAN_GUARD_A_Directions", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { "text": "It's a living, eh? I'd better get going.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_A_Merc", + "dynamic_line": "Yeah, these guys snagged some kind of FEMA evacuation bunker during the early part of and hoard the space. They don't let anyone else join, but they need supplies, so they send out traders, and those traders need protection, so they send out guys like me.", + "responses": [ + { "text": "You looking for work? I might be hiring.", "topic": "TALK_CARAVAN_GUARD_A_Hire" }, + { "text": "How do I get there?", "topic": "TALK_CARAVAN_GUARD_A_Directions", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { "text": "It's a living, eh? I'd better get going.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_A_Hire", + "dynamic_line": "I'm good for the moment, but you can usually find a merc or two waiting between jobs, back at the Free Merchant base.", + "responses": [ + { "text": "How do I get there?", "topic": "TALK_CARAVAN_GUARD_A_Directions", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { "text": "Thanks for the tip! I'll be on my way.", "topic": "TALK_DONE" } + ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_A_Directions", + "dynamic_line": "Sure, I can mark it on your map if you like. Here.", + "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + "responses": [ + { "text": "Thanks for the tip! What were you saying before?", "topic": "TALK_NONE" }, + { "text": "Thanks for the tip! I'll be on my way.", "topic": "TALK_DONE" } + ] + } ] From 600c9f7bab707209af0232eb396f853d8f4f9e8b Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 10:05:31 -0700 Subject: [PATCH 10/20] cleanup after playtesting --- data/json/encounters/randenc_caravans.json | 69 +++++++++++ data/json/mapgen/roadstop.json | 69 ----------- .../free_merchant_caravans.json | 108 +++++++++++++++--- 3 files changed, 162 insertions(+), 84 deletions(-) create mode 100644 data/json/encounters/randenc_caravans.json diff --git a/data/json/encounters/randenc_caravans.json b/data/json/encounters/randenc_caravans.json new file mode 100644 index 0000000000000..1447b78e219a7 --- /dev/null +++ b/data/json/encounters/randenc_caravans.json @@ -0,0 +1,69 @@ +[ + { + "type": "effect_on_condition", + "id": "EOC_RandEnc_Roadstop_add", + "global": true, + "eoc_type": "OM_MOVE", + "condition": { + "and": [ + { "u_near_om_location": "roadstop_a", "range": 2 }, + "is_day", + { "one_in_chance": 10 }, + { "days_since_cataclysm": 10 }, + { + "not": { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": "<", "time": "1 d" } + }, + { "not": { "is_season": "winter" } } + ] + }, + "effect": [ + { "mapgen_update": "nest_RandEnc_roadstop_a_add", "om_terrain": "roadstop_a" }, + { "u_add_var": "RandEnc", "type": "timer", "context": "caravan", "time": true } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_RandEnc_Roadstop_remove", + "recurrence": 200, + "global": true, + "condition": { + "and": [ { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" } ] + }, + "effect": [ + { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" }, + { "remove_npc": "FM_caravan_merchant_random" }, + { "remove_npc": "FM_caravan_guard_A" }, + { "remove_npc": "FM_caravan_guard_B" } + ] + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "nest_RandEnc_roadstop_a_add", + "//": "Adds a random encounter at this roadstop", + "object": { + "place_npcs": [ + { "class": "FM_caravan_merchant_random", "x": 5, "y": 4 }, + { "class": "FM_caravan_guard_A", "x": 4, "y": 1 }, + { "class": "FM_caravan_guard_B", "x": 4, "y": 2 } + ], + "place_vehicles": [ + { + "vehicle": "pickup", + "chance": 100, + "fuel": 50, + "faction": "free_merchants", + "x": [ 4 ], + "y": [ 1 ], + } + ] + } + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "nest_RandEnc_roadstop_a_remove", + "//": "removes a random encounter at this roadstop", + "object": { "remove_vehicles": [ { "vehicles": [ "pickup" ], "x": [ 1, 15 ], "y": [ 1, 10 ] } ] } + } +] diff --git a/data/json/mapgen/roadstop.json b/data/json/mapgen/roadstop.json index e75bba442cb3e..af4200e1b4c89 100644 --- a/data/json/mapgen/roadstop.json +++ b/data/json/mapgen/roadstop.json @@ -1,73 +1,4 @@ [ - { - "type": "effect_on_condition", - "id": "EOC_RandEnc_Roadstop_add", - "recurrence": 3600, - "global": true, - "eoc_type": "OM_MOVE", - "condition": { - "and": [ - { "u_near_om_location": "roadstop_a", "range": 2 }, - { "is_day": true }, - { "one_in_chance": 100 }, - { "days_since_cataclysm": 5 }, - { - "not": [ - { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": "<", "time": "1 d" }, - { "is_season": "winter" } - ] - } - ] - }, - "effect": [ - { "mapgen_update": "nest_RandEnc_roadstop_a_add", "om_terrain": "roadstop_a" }, - { "u_add_var": "RandEnc", "type": "timer", "context": "caravan", "time": true } - ] - }, - { - "type": "effect_on_condition", - "id": "EOC_RandEnc_Roadstop_remove", - "recurrence": 200, - "global": true, - "condition": { - "and": [ { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": ">", "time": "1 h" } ] - }, - "effect": [ - { "mapgen_update": "nest_RandEnc_roadstop_a_remove", "om_terrain": "roadstop_a" }, - { "remove_npc": "FM_caravan_merchant_random" }, - { "remove_npc": "FM_caravan_guard_generic" } - ] - }, - { - "type": "mapgen", - "method": "json", - "update_mapgen_id": "nest_RandEnc_roadstop_a_add", - "//": "Adds a random encounter at this roadstop", - "object": { - "place_npcs": [ - { "class": "FM_caravan_merchant_random", "x": 10, "y": 18 }, - { "class": "FM_caravan_guard_generic", "x": 11, "y": 21 } - ], - "place_vehicles": [ - { - "vehicle": [ "pickup" ], - "chance": 100, - "fuel": 50, - "faction": "free_merchants", - "x": [ 4 ], - "y": [ 16 ], - "//": "to-do: Add gear to the back of the truck, put the guard in the cab and the merchant on the tailgate" - } - ] - } - }, - { - "type": "mapgen", - "method": "json", - "update_mapgen_id": "nest_RandEnc_roadstop_a_remove", - "//": "removes a random encounter at this roadstop", - "object": { "remove_vehicles": [ { "vehicles": [ "pickup" ], "x": [ 1, 15 ], "y": [ 16, 23 ] } ] } - }, { "type": "mapgen", "method": "json", diff --git a/data/json/npcs/random_encounters/free_merchant_caravans.json b/data/json/npcs/random_encounters/free_merchant_caravans.json index 0a071e28419d4..2d897a157daa1 100644 --- a/data/json/npcs/random_encounters/free_merchant_caravans.json +++ b/data/json/npcs/random_encounters/free_merchant_caravans.json @@ -13,19 +13,30 @@ { "type": "npc", "id": "FM_caravan_guard_A", - "//": "Random NPC, non persistent, doesn't have much to say.", + "//": "Random NPC, non persistent, tells you about being a guard and directs you to free merchants.", "name_suffix": "Caravan Guard", "class": "NC_BOUNTY_HUNTER", "attitude": 0, - "mission": 3, + "mission": 8, "chat": "TALK_CARAVAN_GUARD_A1", "faction": "free_merchants" }, + { + "type": "npc", + "id": "FM_caravan_guard_B", + "//": "Random NPC, non persistent, doesn't have much to say.", + "name_suffix": "Caravan Guard", + "class": "NC_BOUNTY_HUNTER", + "attitude": 0, + "mission": 7, + "chat": "TALK_CARAVAN_GUARD_B", + "faction": "free_merchants" + }, { "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_1", "dynamic_line": "Well well, another traveler. Don't try anything, you're outnumbered here and we're well armed.", - "speaker_effect": { "effect": { "npc_first_topic": "TALK_CARAVAN_MERCHANT_2" } }, + "speaker_effect": { "effect": { "npc_first_topic": "TALK_CARAVAN_MERCHANT_2" } }, "responses": [ { "text": "Are you threatening me?", "topic": "TALK_CARAVAN_MERCHANT_Threatening" }, { "text": "What's your deal here?", "topic": "TALK_CARAVAN_MERCHANT_Job" }, @@ -68,8 +79,20 @@ "dynamic_line": "We're with a larger group of survivors, working out of one of the old FEMA bunkers. Folks have taken to calling us Free Merchants, although that sounds kinda on the nose to me. We know about a few survivor groups and we make regular trips around, sharing supplies back and forth and bringing them home. We're on the way back now.", "responses": [ { "text": "That's interesting. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, - { "text": "Can you give me directions to any of these other survivor groups?", "topic": "TALK_CARAVAN_MERCHANT_Others" }, - { "text": "Where is 'home'?", "topic": "TALK_CARAVAN_MERCHANT_Home", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { + "text": "Can you give me directions to any of these other survivor groups?", + "topic": "TALK_CARAVAN_MERCHANT_Others" + }, + { + "text": "Where is 'home'?", + "topic": "TALK_CARAVAN_MERCHANT_Home", + "condition": { + "and": [ + { "not": { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + { "not": { "u_has_var": "found_refugee_center", "value": "yes" } } + ] + } + }, { "text": "Thanks for chatting. I'd better go.", "topic": "TALK_DONE" } ] }, @@ -78,8 +101,21 @@ "id": "TALK_CARAVAN_MERCHANT_Others", "dynamic_line": "No offense, but my clients definitely would not like me giving strangers directions to their hideouts. You'll have to find them on their own terms.", "responses": [ - { "text": "I can understand that. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, - { "text": "Where is 'home'?", "topic": "TALK_CARAVAN_MERCHANT_Home", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { + "text": "I can understand that. Well, let's trade.", + "topic": "TALK_CARAVAN_MERCHANT_Trade", + "effect": "start_trade" + }, + { + "text": "Where is 'home'?", + "topic": "TALK_CARAVAN_MERCHANT_Home", + "condition": { + "and": [ + { "not": { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + { "not": { "u_has_var": "found_refugee_center", "value": "yes" } } + ] + } + }, { "text": "Thanks for chatting. I'd better go.", "topic": "TALK_DONE" } ] }, @@ -87,10 +123,13 @@ "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_Home", "dynamic_line": "Here, I'll mark it on your map. Feel free to come by and trade, or if you're the type, we might have use for your services as a merc.", - "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, "responses": [ { "text": "Hey, thanks. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, - { "text": "Can you give me directions to any of these other survivor groups?", "topic": "TALK_CARAVAN_MERCHANT_Others" }, + { + "text": "Can you give me directions to any of these other survivor groups?", + "topic": "TALK_CARAVAN_MERCHANT_Others" + }, { "text": "Thanks for that. I'd better go.", "topic": "TALK_DONE" } ] }, @@ -99,7 +138,11 @@ "id": "TALK_CARAVAN_MERCHANT_Trade", "dynamic_line": "Always good to do a little trading.", "responses": [ - { "text": "Actually I had a little more to trade still.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, + { + "text": "Actually I had a little more to trade still.", + "topic": "TALK_CARAVAN_MERCHANT_Trade", + "effect": "start_trade" + }, { "text": "Thanks. What were we talking about before?", "topic": "TALK_NONE" }, { "text": "Thanks for that. I'd better go.", "topic": "TALK_DONE" } ] @@ -108,7 +151,7 @@ "type": "talk_topic", "id": "TALK_CARAVAN_GUARD_A1", "dynamic_line": "Sup? Nice to see a survivor. If you're here for business, talk to the trader.", - "speaker_effect": { "effect": { "npc_first_topic": "TALK_CARAVAN_GUARD_A2" } }, + "speaker_effect": { "effect": { "npc_first_topic": "TALK_CARAVAN_GUARD_A2" } }, "responses": [ { "text": "What are you doing here?", "topic": "TALK_CARAVAN_GUARD_A_Job" }, { "text": "Thanks for the tip.", "topic": "TALK_DONE" } @@ -131,7 +174,16 @@ "responses": [ { "text": "So you're working for these guys, but aren't one of them?", "topic": "TALK_CARAVAN_GUARD_A_Merc" }, { "text": "You looking for work? I might be hiring.", "topic": "TALK_CARAVAN_GUARD_A_Hire" }, - { "text": "The Free Merchants? Do they have some kind of trade outpost or anything like that?", "topic": "TALK_CARAVAN_GUARD_A_Directions", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { + "text": "The Free Merchants? Do they have some kind of trade outpost or anything like that?", + "topic": "TALK_CARAVAN_GUARD_A_Directions", + "condition": { + "and": [ + { "not": { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + { "not": { "u_has_var": "found_refugee_center", "value": "yes" } } + ] + } + }, { "text": "It's a living, eh? I'd better get going.", "topic": "TALK_DONE" } ] }, @@ -141,7 +193,16 @@ "dynamic_line": "Yeah, these guys snagged some kind of FEMA evacuation bunker during the early part of and hoard the space. They don't let anyone else join, but they need supplies, so they send out traders, and those traders need protection, so they send out guys like me.", "responses": [ { "text": "You looking for work? I might be hiring.", "topic": "TALK_CARAVAN_GUARD_A_Hire" }, - { "text": "How do I get there?", "topic": "TALK_CARAVAN_GUARD_A_Directions", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { + "text": "How do I get there?", + "topic": "TALK_CARAVAN_GUARD_A_Directions", + "condition": { + "and": [ + { "not": { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + { "not": { "u_has_var": "found_refugee_center", "value": "yes" } } + ] + } + }, { "text": "It's a living, eh? I'd better get going.", "topic": "TALK_DONE" } ] }, @@ -150,7 +211,16 @@ "id": "TALK_CARAVAN_GUARD_A_Hire", "dynamic_line": "I'm good for the moment, but you can usually find a merc or two waiting between jobs, back at the Free Merchant base.", "responses": [ - { "text": "How do I get there?", "topic": "TALK_CARAVAN_GUARD_A_Directions", "condition": { "not": [ { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" }, { "u_has_var": "found_refugee_center", "value": "yes" } ] } }, + { + "text": "How do I get there?", + "topic": "TALK_CARAVAN_GUARD_A_Directions", + "condition": { + "and": [ + { "not": { "u_has_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + { "not": { "u_has_var": "found_refugee_center", "value": "yes" } } + ] + } + }, { "text": "Thanks for the tip! I'll be on my way.", "topic": "TALK_DONE" } ] }, @@ -158,10 +228,18 @@ "type": "talk_topic", "id": "TALK_CARAVAN_GUARD_A_Directions", "dynamic_line": "Sure, I can mark it on your map if you like. Here.", - "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, + "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, "responses": [ { "text": "Thanks for the tip! What were you saying before?", "topic": "TALK_NONE" }, { "text": "Thanks for the tip! I'll be on my way.", "topic": "TALK_DONE" } ] + }, + { + "type": "talk_topic", + "id": "TALK_CARAVAN_GUARD_B", + "dynamic_line": "*tips their hat down from their eyes and looks at you blearily. \"Huh? Hey, I'm tryin'a sleep here. I was on night watch.", + "responses": [ + { "text": "Oh, uh, sorry.", "topic": "TALK_DONE" } + ] } ] From 552ff80afd81debb7fac8dfc4618d89c9acfe74d Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 10:28:53 -0700 Subject: [PATCH 11/20] Add NPC remove script by Mylie --- data/json/encounters/randenc_caravans.json | 4 ++-- src/dialogue.h | 1 + src/npctalk.cpp | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/data/json/encounters/randenc_caravans.json b/data/json/encounters/randenc_caravans.json index 1447b78e219a7..e7efcebec7a6e 100644 --- a/data/json/encounters/randenc_caravans.json +++ b/data/json/encounters/randenc_caravans.json @@ -9,7 +9,7 @@ { "u_near_om_location": "roadstop_a", "range": 2 }, "is_day", { "one_in_chance": 10 }, - { "days_since_cataclysm": 10 }, + { "days_since_cataclysm": 7 }, { "not": { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": "<", "time": "1 d" } }, @@ -54,7 +54,7 @@ "fuel": 50, "faction": "free_merchants", "x": [ 4 ], - "y": [ 1 ], + "y": [ 1 ] } ] } diff --git a/src/dialogue.h b/src/dialogue.h index c78f8ad0330c3..03223b61d1c06 100644 --- a/src/dialogue.h +++ b/src/dialogue.h @@ -147,6 +147,7 @@ struct talk_effect_fun_t { void set_transform_radius( const JsonObject &jo, const std::string &member, bool is_npc ); void set_place_override( const JsonObject &jo, const std::string &member ); void set_mapgen_update( const JsonObject &jo, const std::string &member ); + void set_remove_npc( const JsonObject &jo, const std::string &member ); void set_revert_location( const JsonObject &jo, const std::string &member ); void set_npc_goal( const JsonObject &jo, const std::string &member ); void set_bulk_trade_accept( bool is_trade, int quantity, bool is_npc = false ); diff --git a/src/npctalk.cpp b/src/npctalk.cpp index beffa3f008d28..9ca999316a235 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -2523,6 +2523,20 @@ void talk_effect_fun_t::set_mapgen_update( const JsonObject &jo, const std::stri }; } +void talk_effect_fun_t::set_remove_npc( const JsonObject &jo, const std::string &member ) +{ + std::string npc_id; + mandatory( jo, false, member, npc_id ); + function = [npc_id]( const dialogue & ) { + std::vector npc_list = g->get_npcs_if( [npc_id]( const npc &npc ) -> bool { + return npc.idz == npc_id; + } ); + for( npc *npc : npc_list ) { + overmap_buffer.remove_npc( npc->getID() ); + } + }; +} + void talk_effect_fun_t::set_revert_location( const JsonObject &jo, const std::string &member ) { duration_or_var dov_time_in_future = get_duration_or_var( jo, "time_in_future", true ); @@ -4176,6 +4190,8 @@ void talk_effect_t::parse_sub_effect( const JsonObject &jo ) subeffect_fun.set_npc_goal( jo, "npc_set_goal" ); } else if( jo.has_member( "mapgen_update" ) ) { subeffect_fun.set_mapgen_update( jo, "mapgen_update" ); + } else if( jo.has_member( "remove_npc" ) ) { + subeffect_fun.set_mapgen_update( jo, "remove_npc" ); } else if( jo.has_member( "revert_location" ) ) { subeffect_fun.set_revert_location( jo, "revert_location" ); } else if( jo.has_member( "place_override" ) ) { From 7dc8bc491d6c676ec48a6d94eeb074b8e089de16 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 11:35:16 -0700 Subject: [PATCH 12/20] astyle --- src/npctalk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/npctalk.cpp b/src/npctalk.cpp index 9ca999316a235..ad708fefb1071 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -2528,7 +2528,7 @@ void talk_effect_fun_t::set_remove_npc( const JsonObject &jo, const std::string std::string npc_id; mandatory( jo, false, member, npc_id ); function = [npc_id]( const dialogue & ) { - std::vector npc_list = g->get_npcs_if( [npc_id]( const npc &npc ) -> bool { + std::vector npc_list = g->get_npcs_if( [npc_id]( const npc & npc ) -> bool { return npc.idz == npc_id; } ); for( npc *npc : npc_list ) { From 52ce629ddc01ba28bd35316b9dfd251ec27771b1 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 12:00:22 -0700 Subject: [PATCH 13/20] Apply suggestions from code review Co-authored-by: Anton Burmistrov --- .../npcs/random_encounters/free_merchant_caravans.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data/json/npcs/random_encounters/free_merchant_caravans.json b/data/json/npcs/random_encounters/free_merchant_caravans.json index 2d897a157daa1..7cc6701b81d6f 100644 --- a/data/json/npcs/random_encounters/free_merchant_caravans.json +++ b/data/json/npcs/random_encounters/free_merchant_caravans.json @@ -56,7 +56,7 @@ { "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_Threatening", - "dynamic_line": "No, not at all. Just being cautious. You know how it gets out here. We're not looking for trouble. In fact, if you've got anything worthwhile, maybe we could do a little trading.", + "dynamic_line": "No, not at all. Just being cautious. You know how it gets out here. We're not looking for trouble. In fact, if you've got anything worthwhile, maybe we could do a little trading.", "responses": [ { "text": "Sure, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, { "text": "What's your deal here?", "topic": "TALK_CARAVAN_MERCHANT_Job" }, @@ -76,7 +76,7 @@ { "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_Story", - "dynamic_line": "We're with a larger group of survivors, working out of one of the old FEMA bunkers. Folks have taken to calling us Free Merchants, although that sounds kinda on the nose to me. We know about a few survivor groups and we make regular trips around, sharing supplies back and forth and bringing them home. We're on the way back now.", + "dynamic_line": "We're with a larger group of survivors, working out of one of the old FEMA bunkers. Folks have taken to calling us Free Merchants, although that sounds kinda on the nose to me. We know about a few survivor groups and we make regular trips around, sharing supplies back and forth and bringing them home. We're on the way back now.", "responses": [ { "text": "That's interesting. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, { @@ -122,7 +122,7 @@ { "type": "talk_topic", "id": "TALK_CARAVAN_MERCHANT_Home", - "dynamic_line": "Here, I'll mark it on your map. Feel free to come by and trade, or if you're the type, we might have use for your services as a merc.", + "dynamic_line": "Here, I'll mark it on your map. Feel free to come by and trade, or if you're the type, we might have use for your services as a merc.", "speaker_effect": { "effect": { "assign_mission": "MISSION_REACH_REFUGEE_CENTER" } }, "responses": [ { "text": "Hey, thanks. Well, let's trade.", "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, @@ -143,7 +143,7 @@ "topic": "TALK_CARAVAN_MERCHANT_Trade", "effect": "start_trade" }, - { "text": "Thanks. What were we talking about before?", "topic": "TALK_NONE" }, + { "text": "Thanks. What were we talking about before?", "topic": "TALK_NONE" }, { "text": "Thanks for that. I'd better go.", "topic": "TALK_DONE" } ] }, @@ -170,7 +170,7 @@ { "type": "talk_topic", "id": "TALK_CARAVAN_GUARD_A_Job", - "dynamic_line": "I'm a caravan guard, working for the free merchants. I'm an independent contractor though. Seems like a good way to get safety in numbers and try to find a safe place to settle down.", + "dynamic_line": "I'm a caravan guard, working for the Free Merchants. I'm an independent contractor though. Seems like a good way to get safety in numbers and try to find a safe place to settle down.", "responses": [ { "text": "So you're working for these guys, but aren't one of them?", "topic": "TALK_CARAVAN_GUARD_A_Merc" }, { "text": "You looking for work? I might be hiring.", "topic": "TALK_CARAVAN_GUARD_A_Hire" }, From ec036938f1d93a5c4607dc64f746b2e074aa89f7 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 12:00:49 -0700 Subject: [PATCH 14/20] Update NPC_free_merchant_shopkeep.json --- .../surface_staff/NPC_free_merchant_shopkeep.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json index 7107a54ba15cc..9946e8dc6efbe 100644 --- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json +++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json @@ -278,7 +278,7 @@ { "id": "TALK_EVAC_MERCHANT", "type": "talk_topic", - "speaker_effect": { "effect": [ { "u_add_var": "found_refugee_center", "value": "yes" } ] }, + "speaker_effect": { "effect": [ { "u_add_var": "found_refugee_center", "value": "yes" } ] }, "dynamic_line": { "u_is_wearing": "badge_marshal", "yes": "Welcome marshal…", "no": "Welcome…" } }, { From 58652b2fb54611f6532af82f9509de3b7b3fdb39 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 13:05:16 -0700 Subject: [PATCH 15/20] change recurrence type Prevents player from forcing a respawn by constantly coming and going from the map. --- data/json/encounters/randenc_caravans.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/json/encounters/randenc_caravans.json b/data/json/encounters/randenc_caravans.json index e7efcebec7a6e..ace3d60aad9b7 100644 --- a/data/json/encounters/randenc_caravans.json +++ b/data/json/encounters/randenc_caravans.json @@ -2,8 +2,8 @@ { "type": "effect_on_condition", "id": "EOC_RandEnc_Roadstop_add", + "recurrence": 6000, "global": true, - "eoc_type": "OM_MOVE", "condition": { "and": [ { "u_near_om_location": "roadstop_a", "range": 2 }, @@ -13,6 +13,7 @@ { "not": { "u_compare_time_since_var": "RandEnc", "type": "timer", "context": "caravan", "op": "<", "time": "1 d" } }, + { "not": { "u_at_om_location": "roadstop_a" } }, { "not": { "is_season": "winter" } } ] }, From 5ad9ad639433467c6087e8fb6f8324f60fce1544 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 13:45:19 -0700 Subject: [PATCH 16/20] Make the pickup custom Contents should still be adjusted a bit. --- data/json/encounters/randenc_caravans.json | 4 +- data/json/vehicles/factional.json | 65 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 data/json/vehicles/factional.json diff --git a/data/json/encounters/randenc_caravans.json b/data/json/encounters/randenc_caravans.json index ace3d60aad9b7..1467b2193a731 100644 --- a/data/json/encounters/randenc_caravans.json +++ b/data/json/encounters/randenc_caravans.json @@ -50,7 +50,7 @@ ], "place_vehicles": [ { - "vehicle": "pickup", + "vehicle": "FM_early_pickup", "chance": 100, "fuel": 50, "faction": "free_merchants", @@ -65,6 +65,6 @@ "method": "json", "update_mapgen_id": "nest_RandEnc_roadstop_a_remove", "//": "removes a random encounter at this roadstop", - "object": { "remove_vehicles": [ { "vehicles": [ "pickup" ], "x": [ 1, 15 ], "y": [ 1, 10 ] } ] } + "object": { "remove_vehicles": [ { "vehicles": [ "FM_early_pickup" ], "x": [ 1, 15 ], "y": [ 1, 10 ] } ] } } ] diff --git a/data/json/vehicles/factional.json b/data/json/vehicles/factional.json new file mode 100644 index 0000000000000..d6061e4077db6 --- /dev/null +++ b/data/json/vehicles/factional.json @@ -0,0 +1,65 @@ +[ + { + "id": "FM_early_pickup", + "type": "vehicle", + "name": "Caravaner's Pickup Truck", + "//": "Basically a pickup truck, but spawns some different items in the bed. Later versions could have a mounted gun, a ram, and some armour.", + "blueprint": [ + [ "-o--+o-" ], + [ "==='#'|" ], + [ "==='#'|" ], + [ "-o--+o-" ] + ], + "parts": [ + { "x": 0, "y": 0, "parts": [ "frame_cross", "seat_windshield", "seatbelt", "controls", "stereo" ] }, + { "x": 0, "y": 0, "parts": [ "dashboard", "vehicle_clock", "vehicle_alarm", "horn_car" ] }, + { "x": 0, "y": 0, "part": "roof" }, + { "x": 0, "y": -1, "parts": [ "frame_vertical_left", "door_nw" ] }, + { "x": 0, "y": 1, "parts": [ "frame_cross", "seat_windshield", "seatbelt", "roof" ] }, + { "x": 0, "y": 2, "parts": [ "frame_vertical_right", "door_ne" ] }, + { "x": 1, "y": -1, "parts": [ "frame_vertical_T_left", "windshield_wheel_left" ] }, + { "x": 1, "y": -1, "parts": [ "wheel_mount_medium_steerable", "wheel" ] }, + { "x": 1, "y": 0, "parts": [ "frame_horizontal_2", "windshield_cover_left" ] }, + { "x": 1, "y": 1, "parts": [ "frame_horizontal_2", "windshield_cover_right" ] }, + { "x": 1, "y": 2, "parts": [ "frame_vertical_T_right", "windshield_wheel_right" ] }, + { "x": 1, "y": 2, "parts": [ "wheel_mount_medium_steerable", "wheel" ] }, + { "x": 2, "y": -1, "parts": [ "frame_nw", "halfboard_nw", "headlight" ] }, + { "x": 2, "y": 0, "parts": [ "frame_horizontal_front", "halfboard_cover_left" ] }, + { "x": 2, "y": 0, "parts": [ "engine_v6", "alternator_truck", "battery_car" ] }, + { "x": 2, "y": 1, "parts": [ "frame_horizontal_front", "halfboard_cover_right" ] }, + { "x": 2, "y": 2, "parts": [ "frame_ne", "halfboard_ne", "headlight" ] }, + { "x": -1, "y": -1, "parts": [ "frame_vertical_left", "windshield_sw" ] }, + { "x": -1, "y": 0, "parts": [ "frame_cross", "windshield_horizontal_rear", "roof" ] }, + { "x": -1, "y": 1, "parts": [ "frame_cross", "windshield_horizontal_rear", "roof" ] }, + { "x": -1, "y": 2, "parts": [ "frame_vertical_right", "windshield_se" ] }, + { "x": -2, "y": -1, "parts": [ "frame_vertical_left", "halfboard_vertical_left" ] }, + { "x": -2, "y": -1, "part": "tank", "fuel": "gasoline" }, + { "x": -2, "y": 0, "parts": [ "frame_cross", "cargo_space", "muffler" ] }, + { "x": -2, "y": 1, "parts": [ "frame_cross", "cargo_space" ] }, + { "x": -2, "y": 2, "parts": [ "frame_vertical_right", "halfboard_vertical_right" ] }, + { "x": -3, "y": -1, "parts": [ "frame_vertical_left", "halfboard_wheel_left" ] }, + { "x": -3, "y": -1, "parts": [ "wheel_mount_medium", "wheel" ] }, + { "x": -3, "y": 0, "parts": [ "frame_cross", "trunk" ] }, + { "x": -3, "y": 1, "parts": [ "frame_cross", "trunk" ] }, + { "x": -3, "y": 2, "parts": [ "frame_vertical_right", "halfboard_wheel_right" ] }, + { "x": -3, "y": 2, "parts": [ "wheel_mount_medium", "wheel" ] }, + { "x": -4, "y": -1, "parts": [ "frame_sw", "halfboard_sw" ] }, + { "x": -4, "y": 0, "parts": [ "frame_horizontal_rear", "trunk" ] }, + { "x": -4, "y": 1, "parts": [ "frame_horizontal_rear", "trunk" ] }, + { "x": -4, "y": 2, "parts": [ "frame_se", "halfboard_se" ] } + ], + "items": [ + { "x": 0, "y": 0, "chance": 15, "item_groups": [ "car_misc" ] }, + { "x": 0, "y": 0, "chance": 10, "item_groups": [ "car_misc" ] }, + { "x": 0, "y": 1, "chance": 10, "item_groups": [ "car_misc" ] }, + { "x": 0, "y": 1, "chance": 5, "item_groups": [ "snacks" ] }, + { "x": 0, "y": 0, "chance": 5, "item_groups": [ "fast_food" ] }, + { "x": -2, "y": 0, "chance": 55, "item_groups": [ "farming_tools" ] }, + { "x": -2, "y": 1, "chance": 52, "item_groups": [ "mischw" ] }, + { "x": -2, "y": 1, "chance": 22, "items": [ "jack", "wheel" ] }, + { "x": -3, "y": 1, "chance": 20, "item_groups": [ "car_kit" ] }, + { "x": -3, "y": 0, "chance": 18, "item_groups": [ "fuel_gasoline" ] }, + { "x": -2, "y": 1, "chance": 13, "items": [ "ax" ] } + ] + }, +] From d5b6e23f182114c5e773b09207ddc498be485d92 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 18:30:02 -0700 Subject: [PATCH 17/20] Update factional.json --- data/json/vehicles/factional.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/vehicles/factional.json b/data/json/vehicles/factional.json index d6061e4077db6..9f06d3eff86d5 100644 --- a/data/json/vehicles/factional.json +++ b/data/json/vehicles/factional.json @@ -61,5 +61,5 @@ { "x": -3, "y": 0, "chance": 18, "item_groups": [ "fuel_gasoline" ] }, { "x": -2, "y": 1, "chance": 13, "items": [ "ax" ] } ] - }, + } ] From 308001acaf96ae83bdbcb19bd6e4c01e3ed3c011 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 18:32:39 -0700 Subject: [PATCH 18/20] Update NPC_free_merchant_shopkeep.json --- .../surface_staff/NPC_free_merchant_shopkeep.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json index 9946e8dc6efbe..d081442b2c08b 100644 --- a/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json +++ b/data/json/npcs/refugee_center/surface_staff/NPC_free_merchant_shopkeep.json @@ -278,7 +278,7 @@ { "id": "TALK_EVAC_MERCHANT", "type": "talk_topic", - "speaker_effect": { "effect": [ { "u_add_var": "found_refugee_center", "value": "yes" } ] }, + "speaker_effect": { "effect": [ { "u_add_var": "found_refugee_center", "value": "yes" } ] }, "dynamic_line": { "u_is_wearing": "badge_marshal", "yes": "Welcome marshal…", "no": "Welcome…" } }, { From 9ecca0c2f6355937d0ca274b453e32c981f23ce9 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 18:34:33 -0700 Subject: [PATCH 19/20] Update free_merchant_caravans.json --- data/json/npcs/random_encounters/free_merchant_caravans.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/data/json/npcs/random_encounters/free_merchant_caravans.json b/data/json/npcs/random_encounters/free_merchant_caravans.json index 7cc6701b81d6f..4e788437fb686 100644 --- a/data/json/npcs/random_encounters/free_merchant_caravans.json +++ b/data/json/npcs/random_encounters/free_merchant_caravans.json @@ -238,8 +238,6 @@ "type": "talk_topic", "id": "TALK_CARAVAN_GUARD_B", "dynamic_line": "*tips their hat down from their eyes and looks at you blearily. \"Huh? Hey, I'm tryin'a sleep here. I was on night watch.", - "responses": [ - { "text": "Oh, uh, sorry.", "topic": "TALK_DONE" } - ] + "responses": [ { "text": "Oh, uh, sorry.", "topic": "TALK_DONE" } ] } ] From 7cf75849033b1b404bf89c685581ee1bb8f80b04 Mon Sep 17 00:00:00 2001 From: I-am-Erk <45136638+I-am-Erk@users.noreply.github.com> Date: Wed, 6 Apr 2022 18:36:06 -0700 Subject: [PATCH 20/20] Update randenc_caravans.json --- data/json/encounters/randenc_caravans.json | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/data/json/encounters/randenc_caravans.json b/data/json/encounters/randenc_caravans.json index 1467b2193a731..67f22712e35e1 100644 --- a/data/json/encounters/randenc_caravans.json +++ b/data/json/encounters/randenc_caravans.json @@ -48,16 +48,7 @@ { "class": "FM_caravan_guard_A", "x": 4, "y": 1 }, { "class": "FM_caravan_guard_B", "x": 4, "y": 2 } ], - "place_vehicles": [ - { - "vehicle": "FM_early_pickup", - "chance": 100, - "fuel": 50, - "faction": "free_merchants", - "x": [ 4 ], - "y": [ 1 ] - } - ] + "place_vehicles": [ { "vehicle": "FM_early_pickup", "chance": 100, "fuel": 50, "faction": "free_merchants", "x": [ 4 ], "y": [ 1 ] } ] } }, {