Skip to content

Commit

Permalink
Prepper NPC quest follow-up (CleverRaven#59515)
Browse files Browse the repository at this point in the history
* initial commit

* add locked LMOE, specials, and new item group

* rename overmap special for clarity

* more conversation

* linting and spellcheck fixes

* add lmoe sign and dialog touchup

* lint json

* add space

* add space

* test kicking

* switch LMOE door ascii

* fill_ter set and trial difficulty change

* move metal door to mapgen

* fix prepper's headcanon; almost forgot
  • Loading branch information
onura46 authored Aug 19, 2022
1 parent d17c11d commit f65b2bc
Show file tree
Hide file tree
Showing 5 changed files with 311 additions and 6 deletions.
78 changes: 78 additions & 0 deletions data/json/mapgen/lmoe.json
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,84 @@
]
}
},
{
"type": "mapgen",
"method": "json",
"om_terrain": [ "lmoe_prepperquest" ],
"//": "Above ground",
"//2": "The front door to this LMOE is locked and can be unlocked by doing the prepper_1 quest line.",
"weight": 100,
"object": {
"fill_ter": "t_metal_floor",
"rows": [
" S S S",
" S S S ",
" S S S ",
" S ",
" S S SSSSS S ",
" SSSSSSSSSSSS ",
" SS$$$$$$$$$$SS ",
" S$$TTTTTTTT$$S S ",
" SS$$T))))))T$$S ",
" S SS$$T)####)T$$SS ",
" SS$$T)#>>#)T$$SS ",
" SS$$T)#..#)T$$SS ",
" SS$$T)#X##)T$$SS S",
" S S$$T))_)))T$$SS ",
" S$$$$$_$$$$$$S ",
" SS$$$$_$$$$$SS S ",
" SSSSS_ SSSSS ",
"S S S SS S ",
" S S ",
" S S ",
" S S ",
" S",
" S S ",
" S "
],
"place_signs": [ { "signage": "Private property! Keep out!", "x": 12, "y": 16 } ],
"terrain": { "X": "t_door_metal_locked" },
"palettes": [ "bunker_ext" ]
}
},
{
"type": "mapgen",
"method": "json",
"om_terrain": [ "lmoe_under_empty_prepperquest" ],
"//": "This particular 2-bed shelter is a more professionally done, all metal bomb shelter with kitchen, secret safe room / gun locker, and workshop.",
"//2": "This terrain is the destination for the prepper_1 quest. The front door is locked and can be unlocked by completing the quest.",
"weight": 100,
"object": {
"fill_ter": "t_metal_floor",
"rows": [
"########################",
"########################",
"##||||||||||||||||||||##",
"##|{{{{{|UUUUUU|w__BB|##",
"##|u____|U____U|d__BB|##",
"##|u___h|U_UU_U|A,,,_|##",
"##|u___D|=*==*=|_,,,}|##",
"##|A____:______+_,,,}|##",
"##|||||||_1,,1_|S__hD|##",
"##|VVVVV=_e,,P_|||||||##",
"##|_____*__,,____|s_K|##",
"##|vvvvv=_E,,f___+__t|##",
"##|||||||||++|||||||||##",
"##|c_bbbbA|,,|CSCCKCC|##",
"##|c______|,,|u_____C|##",
"##|c_TT___|,,|u_hLh_F|##",
"##|c_TTh__+__+_______|##",
"##|c_TT___|__|rrrr__~|##",
"##|c______|__|||||+|||##",
"##|c______|__*__a|__A|##",
"##|ccccccc|<<=G_a|HlW|##",
"##||||||||||||||||||||##",
"########################",
"########################"
],
"palettes": [ "bunker", "empty_prepperquest_bunker_items" ]
}
},
{
"type": "mapgen",
"method": "json",
Expand Down
33 changes: 33 additions & 0 deletions data/json/mapgen_palettes/lmoe.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,39 @@
"}": { "item": "novels", "chance": 90, "repeat": [ 3, 8 ] }
}
},
{
"type": "palette",
"id": "empty_prepperquest_bunker_items",
"//": "Used for the prepper_1 NPC's bunker. Nearly identical to empty_bunker_items but with some added item groups and other spawns buffed ~15-25%, especially food and ammo.",
"items": {
"b": [ { "item": "manuals", "chance": 70 }, { "item": "textbooks", "chance": 50 } ],
"B": { "item": "bed", "chance": 70, "repeat": [ 1, 2 ] },
"c": { "item": "hardware", "chance": 70 },
"C": [
{ "item": "dining", "chance": 35, "repeat": [ 1, 3 ] },
{ "item": "oven", "chance": 20 },
{ "item": "cleaning", "chance": 40, "repeat": [ 1, 2 ] }
],
"d": { "item": "allclothes", "chance": 85, "repeat": [ 2, 4 ] },
"D": { "item": "office", "chance": 75 },
"F": { "item": "SUS_fridge_survivor", "chance": 100 },
"l": { "item": "hardware", "chance": 65, "repeat": [ 1, 3 ] },
"L": { "item": "dining", "chance": 30 },
"r": { "item": "stash_wood", "chance": 80, "repeat": [ 1, 4 ] },
"R": { "item": "hardware", "chance": 80 },
"S": { "item": "oven", "chance": 80 },
"T": { "item": "tools_common", "chance": 70, "repeat": [ 1, 2 ] },
"U": { "item": "gear_survival", "chance": 30, "repeat": [ 3, 5 ] },
"u": [ { "item": "cannedfood", "chance": 50, "repeat": [ 1, 5 ] }, { "item": "pasta", "chance": 20, "repeat": [ 1, 3 ] } ],
"v": { "item": "softdrugs", "chance": 75, "repeat": [ 1, 3 ] },
"V": [ { "item": "bags", "chance": 30 }, { "item": "large_bags", "chance": 8 } ],
"w": { "item": "allclothes", "chance": 80, "repeat": [ 2, 4 ] },
"Y": [ { "item": "jackets", "chance": 20 }, { "item": "hatstore_hats", "chance": 20 }, { "item": "winter", "chance": 15 } ],
"^": { "item": "shelter", "chance": 30 },
"{": [ { "item": "lmoe_guns", "chance": 90 }, { "item": "ammo", "chance": 30, "repeat": [ 2, 8 ] } ],
"}": [ { "item": "novels", "chance": 90, "repeat": [ 3, 8 ] }, { "item": "religious_books", "chance": 25 } ]
}
},
{
"type": "palette",
"id": "bunker_ext",
Expand Down
174 changes: 168 additions & 6 deletions data/json/npcs/Backgrounds/prepper_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
"responses": [
{ "text": "What happened to you?", "topic": "BGSS_PREPPER_1_STORY2" },
{ "text": "What about your shelter?", "topic": "BGSS_PREPPER_1_LMOE" },
{
"text": "You said you could tell me more about the shelter if I wanted. How did these things get built?",
"topic": "BGSS_PREPPER_1_LMOE2",
"condition": { "u_has_var": "prepper_1_finished_quest", "type": "mission", "context": "BGSS", "value": "yes" }
},
{ "text": "<done_conversation_section>", "topic": "TALK_FRIEND" },
{ "text": "<end_talking>", "topic": "TALK_DONE" }
]
Expand Down Expand Up @@ -65,7 +70,7 @@
}
]
},
"trial": { "type": "PERSUADE", "difficulty": 60, "mod": [ [ "TRUST", 4 ], [ "VALUE", 2 ], [ "ANGER", -6 ] ] },
"trial": { "type": "PERSUADE", "difficulty": 10, "mod": [ [ "TRUST", 2 ], [ "VALUE", 2 ], [ "ANGER", -6 ] ] },
"success": {
"topic": "BGSS_PREPPER_1_SHELTERSUCCESS",
"effect": [
Expand All @@ -90,6 +95,146 @@
{ "text": "<end_talking>", "topic": "TALK_DONE" }
]
},
{
"id": "BGSS_PREPPER_1_LMOE2",
"type": "talk_topic",
"dynamic_line": "The shelter? I hired a contractor to build this but did the door myself. Metal pin in the door frame. Can't open unless you remove it. There's a little pulley inside you have to pull up to reset. They made dozens of these in the area, and I couldn't sleep knowing just any <name_b> at that company could waltz in as soon as shit hit the fan. They'd know exactly where to go and what to do! Nah… how do you think I've made it this long? Always keep a trick up your sleeve.",
"responses": [
{ "text": "A contractor? How much does something like a survivalist shelter cost?", "topic": "BGSS_PREPPER_1_LMOE4" },
{
"text": "But we're good to go, right? I mean… the door is the only trick you had? No clever traps hidden in the walls or anything?",
"topic": "BGSS_PREPPER_1_LMOE3"
},
{
"text": "You wouldn't keep ALL your tricks and secrets from me, though, would you? After everything we've been through?",
"condition": { "not": { "u_has_var": "prepper_1_asked_about_secrets", "type": "mission", "context": "BGSS", "value": "yes" } },
"//": "Even though material possessions have been made trivially easy to obtain in the apocalypse, the prepper still values their stash, hence the difficult trial here.",
"trial": { "type": "PERSUADE", "difficulty": -75, "mod": [ [ "TRUST", 1 ], [ "VALUE", 1 ], [ "ANGER", -8 ] ] },
"success": {
"topic": "BGSS_PREPPER_1_SHARELOOTSUCCESS",
"effect": { "u_add_var": "prepper_1_asked_about_secrets", "type": "mission", "context": "BGSS", "value": "yes" }
},
"failure": {
"topic": "BGSS_PREPPER_1_SHARELOOTFAILURE",
"effect": { "u_add_var": "prepper_1_asked_about_secrets", "type": "mission", "context": "BGSS", "value": "yes" },
"opinion": { "trust": -6, "value": -3, "anger": 5 }
}
},
{ "text": "That's all I wanted to know.", "topic": "TALK_DONE" }
]
},
{
"id": "BGSS_PREPPER_1_LMOE3",
"type": "talk_topic",
"dynamic_line": "Nope, that's it. Got the idea for the door from a book on medieval castles, in case you were wondering. But instead of a counterweight holding a drawbridge up, I just ram a hex key in a hole.",
"responses": [ { "text": "Interesting…", "topic": "TALK_NONE" } ]
},
{
"id": "BGSS_PREPPER_1_LMOE4",
"type": "talk_topic",
"dynamic_line": "Almost as much as my house, in the end. I think they realized they could make a lot of money as things got worse and worse. But it's nicer than my house, too. They said the ventilation system was built to withstand a month of anything: nuclear fallout, biological attack, you name it. Concrete and soil above me to absorb radiation, appliances and supplies… I even brought some old books I've never read. I always knew it would come to this.",
"responses": [ { "text": "How many of these places did the company build?", "topic": "BGSS_PREPPER_1_LMOE5" } ]
},
{
"id": "BGSS_PREPPER_1_LMOE5",
"type": "talk_topic",
"dynamic_line": "Dozens, they told me. Probably more by the end of it. But they obviously didn't say where or who for. It was kind of a hot business and I think they were some of the best doing it.",
"responses": [ { "text": "Right…", "topic": "BGSS_PREPPER_1_LMOE2" } ]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTSUCCESS",
"type": "talk_topic",
"dynamic_line": "Okay, listen… across the hall from the bedroom… by the pillars… it's a fake wall. Directly across the hall. If you push in a little bit, the whole thing kinda slides aside. I hid some guns back there and a handful of rounds, too. I meant to bring a lot more - I had boxes on back order - but it started getting hard to buy past a certain point. Might as well share now that we're here. A spare bullet could save your life.",
"responses": [ { "text": "The wall thing is pretty nifty, I have to admit.", "topic": "BGSS_PREPPER_1_SHARELOOTSUCCESS2" } ]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTSUCCESS2",
"type": "talk_topic",
"dynamic_line": "Yeah, but they put the secret room in their advertising. Not really a secret then, is it?",
"responses": [ { "text": "Hmm, good point.", "topic": "TALK_DONE" } ]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTFAILURE",
"type": "talk_topic",
"dynamic_line": "What, like some secret Batcave? Pull back the curtain and it turns out I'm the communist <name_b> who brewed up a demon bio-weapon in their basement? I just gave you food, all the tools in my workshop, and the safest hole in the ground in the county. If I've got any secrets left, they're mine to keep.",
"responses": [
{ "text": "No, you're right! I'm sorry for intruding!", "topic": "BGSS_PREPPER_1_SHARELOOTAPOLOGIZE" },
{
"text": "For all I know, you COULD have something to do with this. Who really knows what happened?",
"topic": "BGSS_PREPPER_1_SHARELOOTFAILURE2",
"opinion": { "anger": 2 }
}
]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTFAILURE2",
"type": "talk_topic",
"dynamic_line": "Well, I certainly wouldn't tell you. The way you talk… the questions you ask… they're extremely suspicious. Why did you ask about the shelter anyway? What do you want from me?",
"responses": [
{
"text": "I just wanted the loot, I'll be honest.",
"topic": "TALK_DONE",
"opinion": { "anger": 5, "value": -5, "trust": -8, "fear": -2 },
"effect": "insult_combat"
},
{
"text": "Well… I'm actually a government agent sent to assassinate you. I just had to find out the location of your secret stash before I took you out!",
"topic": "BGSS_PREPPER_1_SHARELOOTFAILURE3"
},
{
"text": "I thought we could team up. It sounded like a good place to stay safe.",
"topic": "BGSS_PREPPER_1_SHARELOOTAPOLOGIZE2",
"opinion": { "anger": -4 }
}
]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTFAILURE3",
"type": "talk_topic",
"dynamic_line": "*tenses up and stares in disbelief. \"You're playing with me. The government doesn't exist anymore… You better be messing around or I-\"",
"responses": [
{
"text": "Why else would I ask about your shelter? I don't need your gear. I don't need your help. Look around you! I'm tracking down the last free thinkers who have been putting the puzzle pieces together. It's YOU I'm after!",
"topic": "BGSS_PREPPER_1_SHARELOOTFAILURE4"
},
{
"text": "Yeah, I'm just messing with you, don't worry. What, can't take a joke?",
"topic": "BGSS_PREPPER_1_SHARELOOTAPOLOGIZE3",
"opinion": { "trust": -3 }
}
]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTFAILURE4",
"type": "talk_topic",
"dynamic_line": "I knew it… This whole time. It was all part of the plan. The riots, the storms… You always had control…",
"responses": [
{
"text": "Prepare to meet your end, <npc_name>. *Attack*",
"topic": "TALK_DONE",
"opinion": { "anger": 40, "value": -30, "trust": -30, "fear": -10 },
"effect": "hostile"
}
]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTAPOLOGIZE",
"type": "talk_topic",
"dynamic_line": "Yeah, listen, just keep your questions to yourself. I don't trust you and you shouldn't trust me, either.",
"responses": [ { "text": "Sorry, I won't ask again.", "topic": "TALK_DONE", "opinion": { "anger": -1 } } ]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTAPOLOGIZE2",
"type": "talk_topic",
"dynamic_line": "It IS a good place to stay safe. Just don't go prying, okay?",
"responses": [ { "text": "You got it.", "topic": "TALK_DONE" } ]
},
{
"id": "BGSS_PREPPER_1_SHARELOOTAPOLOGIZE3",
"type": "talk_topic",
"dynamic_line": "You think that's funny?! Some of us watched the warning signs for years. All the news, all the violence and the secret plots… Now the dead are walking, reality itself is tearing apart, and you're making jokes like that?!",
"responses": [ { "text": "Yeah…? I didn't realize it bothered you so much.", "topic": "TALK_DONE" } ]
},
{
"id": "BGSS_PREPPER_1_SHELTERSUCCESS",
"type": "talk_topic",
Expand All @@ -111,21 +256,38 @@
"difficulty": 2,
"value": 0,
"start": {
"assign_mission_target": { "om_special": "LMOE Shelter", "om_terrain": "lmoe", "reveal_radius": 3, "search_range": 400 },
"assign_mission_target": { "om_special": "Locked LMOE Shelter", "om_terrain": "lmoe_prepperquest", "reveal_radius": 3, "search_range": 400 },
"effect": { "u_add_var": "prepper_1_started_quest", "type": "mission", "context": "BGSS", "value": "yes" }
},
"end": { "opinion": { "trust": 1, "value": 1 } },
"end": {
"opinion": { "trust": 1, "value": 1 },
"effect": [
{
"u_message": "<npc_name> walks up to the front door and pries back a thin piece of metal from the top of the doorframe, revealing an opening. They reach inside, pull hard on something, and you hear a heavy metal *clunk*.",
"type": "good",
"popup": true
},
{ "mapgen_update": "LMOE_unlock_door", "om_terrain": "lmoe_prepperquest" },
{ "u_add_var": "prepper_1_finished_quest", "type": "mission", "context": "BGSS", "value": "yes" }
]
},
"origins": [ "ORIGIN_SECONDARY" ],
"dialogue": {
"describe": "",
"offer": "",
"accepted": "",
"rejected": "",
"advice": "",
"inquire": "Any luck finding the LMOE shelter?",
"success": "Thank you! I'm so glad we made it. I've tucked away some real loot back here.",
"success_lie": "Great!",
"inquire": "Any luck finding the LMOE shelter? Don't forget to take me with you. I changed the design and you sure as hell aren't getting in unless you know the trick.",
"success": "Damn, can't believe we finally made it. I was smart enough not to store anything that might rot, so as long as nobody else already broke in, I bet there's at least two weeks of good food just sitting there. Pristine workshop down there, too. It cost me a pretty penny to get built. I could tell you all about it sometime if you ever wanted. Anyway, thanks for helping me get back here. It sure ain't safe to travel on your own anymore.",
"success_lie": "",
"failure": "Not that surprising."
}
},
{
"type": "mapgen",
"update_mapgen_id": "LMOE_unlock_door",
"method": "json",
"object": { "translate_ter": [ { "from": "t_door_metal_locked", "to": "t_door_metal_c", "x": 0, "y": 0 } ] }
}
]
14 changes: 14 additions & 0 deletions data/json/overmap/overmap_special/specials.json
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,20 @@
"occurrences": [ 0, 2 ],
"flags": [ "CLASSIC", "MAN_MADE" ]
},
{
"type": "overmap_special",
"id": "Locked LMOE Shelter",
"overmaps": [
{ "point": [ 0, 0, 0 ], "overmap": "lmoe_prepperquest_north" },
{ "point": [ 0, 0, 1 ], "overmap": "lmoe_roof_north" },
{ "point": [ 0, 0, -1 ], "overmap": "lmoe_under_empty_prepperquest_north" }
],
"locations": [ "forest_without_trail" ],
"city_distance": [ 25, -1 ],
"city_sizes": [ 0, 12 ],
"occurrences": [ 80, 100 ],
"flags": [ "CLASSIC", "MAN_MADE", "UNIQUE" ]
},
{
"type": "overmap_special",
"id": "Occupied LMOE Shelter",
Expand Down
18 changes: 18 additions & 0 deletions data/json/overmap/overmap_terrain/overmap_terrain_military.json
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,15 @@
"see_cost": 2,
"flags": [ "KNOWN_DOWN", "SOURCE_PEOPLE", "SOURCE_SAFETY", "SOURCE_GUN", "SOURCE_AMMO", "SOURCE_FOOD" ]
},
{
"type": "overmap_terrain",
"id": "lmoe_prepperquest",
"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": "lmoe_roof",
Expand Down Expand Up @@ -215,6 +224,15 @@
"see_cost": 2,
"flags": [ "KNOWN_UP", "SOURCE_PEOPLE", "SOURCE_SAFETY", "SOURCE_GUN", "SOURCE_AMMO", "SOURCE_FOOD" ]
},
{
"type": "overmap_terrain",
"id": "lmoe_under_empty_prepperquest",
"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": "lmoe_zombie",
Expand Down

0 comments on commit f65b2bc

Please sign in to comment.