summaryrefslogtreecommitdiff
path: root/npc-10_bunker-merchant.patch
diff options
context:
space:
mode:
Diffstat (limited to 'npc-10_bunker-merchant.patch')
-rw-r--r--npc-10_bunker-merchant.patch396
1 files changed, 396 insertions, 0 deletions
diff --git a/npc-10_bunker-merchant.patch b/npc-10_bunker-merchant.patch
new file mode 100644
index 0000000..4ec3c31
--- /dev/null
+++ b/npc-10_bunker-merchant.patch
@@ -0,0 +1,396 @@
+--- a/data/json/mapgen/bunker_shop.json
++++ b/data/json/mapgen/bunker_shop.json
+@@ -0,0 +1,180 @@
++[
++ {
++ "type": "mapgen",
++ "method": "json",
++ "om_terrain": [ "bunker_shop_g" ],
++ "object": {
++ "fill_ter": "t_floor",
++ "rows": [
++ "kkkkkkkkkkkkkkkkkkkkkkkk",
++ "kkkkkkkkkkkkkkkkkkkkkkkk",
++ "kkkkkkkkkkkkkkkkkkkkkkkk",
++ "kkaasaaGnnGnnGnnGnnoookk",
++ "kkaEDDakkkkkkkkkkkkoqokk",
++ "GnaEDDakkkkzkkkkkkkopokk",
++ "nkaaCaakkkkkkkkAkkkktnkk",
++ "nkkktttttttttttttttttnkk",
++ "GkkktkkkiicjaraaaajktGkk",
++ "nkkktkkkjkkkwwyakkjktnkk",
++ "nttttttkjkkkww a krktnkk",
++ "Gttttttkakk a jktGkk",
++ "nttttttkaaagaaaaagaagaak",
++ "nttttttka lj akkkak",
++ "Gttttttka ljvv gkk sk",
++ "nttttttbbd i akk ak",
++ "nttttttbedk iia a sk",
++ "Gttttttbbdkk a ak",
++ "nttttttkakkkk iijjak",
++ "nttttttFjkkkkkk jkkkkk",
++ "GBBBBBBGiijrcjgjjijkkkkk",
++ "kttttttFkf kkkkgkkkAkkk",
++ "kttttttkkj kkkjkkkkkkk",
++ "kttttttkkjjrrcrjjkkkkkkk"
++ ],
++ "terrain": {
++ "a": "t_wall_wood",
++ "b": "t_rock",
++ "c": "t_window_empty",
++ "d": "t_rock_floor",
++ "e": "t_rock_floor",
++ "f": "t_door_b",
++ "g": "t_door_frame",
++ "h": "t_door_c",
++ "i": "t_wall_wood_broken",
++ "j": "t_wall_wood_chipped",
++ "k": [ "t_grass", "t_grass", "t_grass", "t_dirt" ],
++ "m": "t_dirt",
++ "n": "t_chainfence_h",
++ "o": "t_concrete_wall",
++ "p": "t_door_metal_c",
++ "q": "t_stairs_down",
++ "r": "t_window_frame",
++ "s": "t_window_boarded",
++ "t": "t_dirt",
++ "l": "t_floor",
++ "u": "t_floor",
++ "v": "t_floor",
++ "w": "t_floor",
++ "x": "t_wall_wood_chipped",
++ "y": "t_floor",
++ "z": "t_tree_plum",
++ "A": "t_tree_apple",
++ "B": "t_door_metal_locked",
++ "C": "t_door_c",
++ "D": "t_dirtfloor",
++ "E": "t_dirtfloor",
++ "F": "t_gates_mech_control",
++ "G": "t_wall"
++ },
++ "furniture": {
++ "e": "f_brazier",
++ "m": "f_rubble",
++ "l": "f_crate_o",
++ "u": "f_woodstove",
++ "v": "f_table",
++ "w": "f_bed",
++ "y": "f_dresser",
++ "E": "f_locker"
++ },
++ "place_loot": [
++ { "group": "floor_trash", "chance": 90, "repeat": 5, "x": [ 9, 12 ], "y": [ 13, 19 ] },
++ { "group": "floor_trash", "chance": 90, "repeat": 5, "x": [ 13, 17 ], "y": [ 17, 19 ] },
++ { "group": "floor_trash", "chance": 90, "repeat": 5, "x": [ 14, 17 ], "y": [ 13, 15 ] },
++ { "group": "floor_trash", "chance": 90, "repeat": 5, "x": [ 9, 14 ], "y": [ 9, 11 ] },
++ { "group": "floor_trash", "chance": 90, "repeat": 5, "x": [ 19, 21 ], "y": [ 13, 17 ] },
++ { "group": "floor_trash", "chance": 90, "repeat": 5, "x": [ 10, 15 ], "y": [ 21, 22 ] },
++ { "group": "floor_trash", "chance": 90, "repeat": 3, "x": [ 16, 17 ], "y": [ 9, 11 ] }
++ ]
++ }
++ },
++ {
++ "type": "mapgen",
++ "method": "json",
++ "om_terrain": [ "bunker_shop_b" ],
++ "object": {
++ "fill_ter": "t_rock",
++ "rows": [
++ " fff ",
++ " fvffffff ",
++ " fbbbbbbf ",
++ " fbffffbf ",
++ " fffff fbf faf ",
++ " fftsrf fbf fff ",
++ " fvbbbf fbf ",
++ " ffffffdfffdfffff ",
++ " fnccmfbfjubbxfvf ",
++ " fllccbbdbbbbbebf ",
++ " fvccofjfbbbbbfbf ",
++ " fffffffffgggffbf ",
++ " fjhhhbfbf ",
++ " fffffffffbbpbbdbf ",
++ " fviiiiivfibbbbfff ",
++ " fffbbbbbbbfibvbwf ",
++ " fkdbiiiiibdbbbbhf ",
++ " fffbbbbbbbfiqqbhf ",
++ " fviiiiivffffdff ",
++ " ffffffffffnlcmf ",
++ " fvbbbdclcmf ",
++ " fftsrfcccvf ",
++ " ffffffffff ",
++ " "
++ ],
++ "terrain": {
++ "a": "t_stairs_up",
++ "b": "t_thconc_floor",
++ "c": "t_floor",
++ "d": "t_door_metal_c",
++ "e": "t_door_metal_locked",
++ "f": "t_concrete_wall",
++ "g": "t_reinforced_glass",
++ "h": "t_thconc_floor",
++ "i": "t_thconc_floor",
++ "j": "t_thconc_floor",
++ "k": "t_plut_generator",
++ "l": "t_floor",
++ "m": "t_floor",
++ "n": "t_floor",
++ "o": "t_floor",
++ "p": "t_thconc_floor",
++ "q": "t_thconc_floor",
++ "r": "t_thconc_floor",
++ "s": "t_thconc_floor",
++ "t": "t_thconc_floor",
++ "u": "t_thconc_floor",
++ "v": "t_utility_light",
++ "w": "t_console_broken",
++ "x": "t_atm"
++ },
++ "furniture": {
++ "h": "f_table",
++ "i": "f_rack",
++ "j": "f_locker",
++ "l": "f_bed",
++ "m": "f_dresser",
++ "n": "f_table",
++ "o": "f_sofa",
++ "p": "f_chair",
++ "q": "f_sofa",
++ "r": "f_toilet",
++ "s": "f_sink",
++ "t": "f_shower",
++ "u": "f_crate_o"
++ },
++ "place_loot": [
++ { "group": "mil_food_nodrugs", "chance": 90, "repeat": [ 10 ], "x": [ 6, 10 ], "y": [ 18, 18 ] },
++ { "group": "ammo_rifle_milspec", "chance": 90, "repeat": [ 10 ], "x": [ 6, 10 ], "y": [ 16, 16 ] },
++ { "group": "camping", "chance": 90, "repeat": [ 10 ], "x": [ 6, 10 ], "y": [ 14, 14 ] },
++ { "group": "allclothes", "chance": 90, "repeat": [ 4 ], "x": [ 17, 17 ], "y": [ 19, 20 ] },
++ { "group": "allclothes", "chance": 90, "repeat": [ 4 ], "x": [ 9, 9 ], "y": [ 8, 8 ] },
++ { "group": "book_military", "chance": 90, "repeat": [ 1 ], "x": [ 6, 6 ], "y": [ 8, 8 ] },
++ { "group": "book_military", "chance": 90, "repeat": [ 1 ], "x": [ 14, 14 ], "y": [ 12, 12 ] },
++ { "group": "cleaning_bulk", "chance": 90, "repeat": [ 2 ], "x": [ 11, 11 ], "y": [ 10, 10 ] },
++ { "group": "cleaning_bulk", "chance": 90, "repeat": [ 2 ], "x": [ 13, 13 ], "y": [ 12, 12 ] },
++ { "group": "guns_milspec", "chance": 90, "repeat": [ 2 ], "x": [ 13, 13 ], "y": [ 14, 15 ] },
++ { "group": "mil_food_nodrugs", "chance": 90, "repeat": [ 5 ], "x": [ 13, 13 ], "y": [ 17, 17 ] },
++ { "group": "mil_armor", "chance": 90, "repeat": [ 5 ], "x": [ 17, 17 ], "y": [ 15, 17 ] }
++ ],
++ "place_npcs": [ { "class": "bunker_merchant", "x": 15, "y": 13 } ]
++ }
++ }
++]
+--- a/data/json/npcs/bunker_shop/NC_BUNKER_MERCHANT.json
++++ b/data/json/npcs/bunker_shop/NC_BUNKER_MERCHANT.json
+@@ -0,0 +1,72 @@
++[
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_pants_male",
++ "items": [ [ "pants_cargo", 60 ], [ "pants", 20 ], [ "shorts_cargo", 20 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_pants_female",
++ "items": [ [ "pants_cargo", 60 ], [ "pants", 20 ], [ "shorts_cargo", 20 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_shoes",
++ "items": [ [ "boots_combat", 90 ], [ "boots", 10 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_shirt_male",
++ "items": [ [ "undershirt", 30 ], [ "sweatshirt", 20 ], [ "under_armor", 20 ], [ "longshirt", 20 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_shirt_female",
++ "items": [ [ "undershirt", 30 ], [ "sweatshirt", 20 ], [ "under_armor", 20 ], [ "longshirt", 20 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_gloves",
++ "items": [ [ "null", 20 ], [ "gloves_tactical", 60 ], [ "gloves_fingerless", 20 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_coat",
++ "items": [ [ "hoodie", 50 ], [ "kevlar", 50 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_extra",
++ "items": [ [ "rucksack", 100 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_hat",
++ "items": [ [ "hat_ball", 100 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_eyes",
++ "items": [ [ "null", 80 ], [ "glasses_bal", 20 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_masks",
++ "items": [ [ "scarf", 100 ] ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_BUNKER_MERCHANT_misc",
++ "items": [
++ { "group": "ammo_reloaded", "prob": 100, "count-min": 5, "count-max": 10 },
++ { "group": "everyday_gear", "prob": 100, "count-min": 5, "count-max": 25 },
++ { "group": "guns_survival", "prob": 100, "count-min": 5, "count-max": 5 },
++ { "group": "tools_survival", "prob": 100, "count-min": 5, "count-max": 5 },
++ { "group": "supplies_electronics", "prob": 100, "count-min": 5, "count-max": 5 },
++ { "group": "clothing_outdoor_torso", "prob": 100, "count-min": 5, "count-max": 5 },
++ { "group": "clothing_outdoor_pants", "prob": 100, "count-min": 5, "count-max": 5 },
++ { "group": "clothing_outdoor_shoes", "prob": 100, "count-min": 5, "count-max": 5 },
++ { "group": "drugs_soldier", "prob": 100, "count-min": 5, "count-max": 5 }
++ ]
++ }
++]
+--- a/data/json/npcs/bunker_shop/TALK_BUNKER_MERCHANT.json
++++ b/data/json/npcs/bunker_shop/TALK_BUNKER_MERCHANT.json
+@@ -0,0 +1,46 @@
++[
++ {
++ "type": "talk_topic",
++ "id": "TALK_BUNKER_MERCHANT",
++ "dynamic_line": "Heya, scav.",
++ "responses": [
++ { "text": "Did you build this place?", "topic": "TALK_BUNKER_MERCHANT_HERE" },
++ { "text": "Who are you?", "topic": "TALK_BUNKER_MERCHANT_WHO" },
++ { "text": "Why do you still use cash?", "topic": "TALK_BUNKER_MERCHANT_WHY" },
++ { "text": "You're a trader?", "topic": "TALK_BUNKER_MERCHANT_TRADE" },
++ { "text": "I need some supplies.", "effect": "start_trade", "topic": "TALK_BUNKER_MERCHANT" },
++ { "text": "Need help with anything?", "topic": "TALK_BUNKER_MERCHANT_MISSION" },
++ { "text": "Well, bye.", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "type": "talk_topic",
++ "id": "TALK_BUNKER_MERCHANT_HERE",
++ "dynamic_line": "No, no… well, maybe a little. It was just as wrecked down here as it is up top when I found it, wasn't too hard to fix up. You're welcome to stay in the spare room awhile, just don't hog it. You're not the only scav out there.",
++ "responses": [ { "text": "Interesting…", "topic": "TALK_BUNKER_MERCHANT" } ]
++ },
++ {
++ "type": "talk_topic",
++ "id": "TALK_BUNKER_MERCHANT_WHO",
++ "dynamic_line": "Just a scav who got lucky. Now I'm content to sit around here on my pile of treasure. I'm more than willing to trade if you've got the cash.",
++ "responses": [ { "text": "I see…", "topic": "TALK_BUNKER_MERCHANT" } ]
++ },
++ {
++ "type": "talk_topic",
++ "id": "TALK_BUNKER_MERCHANT_WHY",
++ "dynamic_line": "Why not? Everyone else does, so I suppose that's all that matters. My ATM over there still works, connected to the bank servers and everything.",
++ "responses": [ { "text": "Hmm…", "topic": "TALK_BUNKER_MERCHANT" } ]
++ },
++ {
++ "type": "talk_topic",
++ "id": "TALK_BUNKER_MERCHANT_TRADE",
++ "dynamic_line": "I suppose I am. Scavs like you need supplies, right? And I could always use more money.",
++ "responses": [ { "text": "Alright…", "topic": "TALK_BUNKER_MERCHANT" } ]
++ },
++ {
++ "type": "talk_topic",
++ "id": "TALK_BUNKER_MERCHANT_MISSION",
++ "dynamic_line": "Not at the moment, check back later perhaps.",
++ "responses": [ { "text": "Sure…", "topic": "TALK_BUNKER_MERCHANT" } ]
++ }
++]
+--- a/data/json/npcs/bunker_shop/classes.json
++++ b/data/json/npcs/bunker_shop/classes.json
+@@ -0,0 +1,21 @@
++[
++ {
++ "type": "npc_class",
++ "id": "NC_BUNKER_MERCHANT",
++ "name": "Merchant",
++ "common": false,
++ "job_description": "",
++ "bonus_str": { "rng": [ -1, 2 ] },
++ "bonus_dex": { "rng": [ -1, 1 ] },
++ "bonus_int": { "rng": [ -1, 4 ] },
++ "bonus_per": { "rng": [ -1, 2 ] },
++ "skills": [
++ { "skill": "ALL", "level": { "mul": [ { "one_in": 3 }, { "sum": [ { "dice": [ 2, 2 ] }, { "constant": 0 } ] } ] } },
++ { "skill": "gun", "bonus": { "rng": [ 1, 5 ] } },
++ { "skill": "rifle", "bonus": { "rng": [ 1, 5 ] } },
++ { "skill": "pistol", "bonus": { "rng": [ 1, 4 ] } },
++ { "skill": "smg", "bonus": { "rng": [ 1, 3 ] } },
++ { "skill": "speech", "bonus": { "rng": [ 1, 6 ] } }
++ ]
++ }
++]
+--- a/data/json/npcs/bunker_shop/npc.json
++++ b/data/json/npcs/bunker_shop/npc.json
+@@ -0,0 +1,12 @@
++[
++ {
++ "type": "npc",
++ "id": "bunker_merchant",
++ "name_suffix": "Merchant",
++ "class": "NC_BUNKER_MERCHANT",
++ "attitude": 0,
++ "mission": 3,
++ "chat": "TALK_BUNKER_MERCHANT",
++ "faction": "no_faction"
++ }
++]
+--- a/data/json/overmap/overmap_special/specials.json
++++ b/data/json/overmap/overmap_special/specials.json
+@@ -7151,5 +7151,19 @@
+ "city_sizes": [ 4, -1 ],
+ "occurrences": [ 0, 2 ],
+ "flags": [ "CLASSIC", "WILDERNESS", "ELECTRIC_GRID" ]
++ },
++ {
++ "type": "overmap_special",
++ "id": "bunker shop",
++ "overmaps": [
++ { "point": [ 0, 0, 0 ], "overmap": "bunker_shop_g_south" },
++ { "point": [ 0, 0, -1 ], "overmap": "bunker_shop_b_south" }
++ ],
++ "connections": [ { "point": [ 0, -1, 0 ], "existing": true, "connection": "local_road", "from": [ 0, 0, 0 ] } ],
++ "locations": [ "wilderness" ],
++ "city_distance": [ 10, -1 ],
++ "city_sizes": [ 1, 12 ],
++ "occurrences": [ 5, 100 ],
++ "flags": [ "CLASSIC", "UNIQUE", "WILDERNESS", "ELECTRIC_GRID" ]
+ }
+ ]
+--- a/data/json/overmap/overmap_terrain/overmap_terrain_residential.json
++++ b/data/json/overmap/overmap_terrain/overmap_terrain_residential.json
+@@ -491,5 +491,25 @@
+ "name": "derelict property",
+ "sym": "X",
+ "color": "i_brown"
++ },
++ {
++ "type": "overmap_terrain",
++ "id": "bunker_shop_g",
++ "name": "derelict property",
++ "sym": "X",
++ "color": "i_brown",
++ "see_cost": 5,
++ "extras": "build",
++ "mondensity": 2
++ },
++ {
++ "type": "overmap_terrain",
++ "id": "bunker_shop_b",
++ "name": "scavenger bunker",
++ "sym": "B",
++ "color": "light_green",
++ "see_cost": 5,
++ "extras": "build",
++ "mondensity": 2
+ }
+ ]