Skip to content

Commit

Permalink
NPC Elvira Fish, Circulations (CleverRaven#68081)
Browse files Browse the repository at this point in the history
* Create NPC_Elvira_Fish.json

* remove linting trash

* Create great_library_librarian_goods.json

* rem misc item group

* more accurate desc

* Create great_library_librarian_itemlist.json

* Tools name fix

* tools name fix

* Match caps

* Create great_library_librarian_talk.json

* spaces in places

* First greeting fix

* Create great_library_librarian_talk_fluff.json

* most senior

* space

* spawn Elvira

* fix guard name

* change spawn ids

* fix spawn locations

* Elvira fixes

* fix greeting effect

* Elvira isn't always bald

* Updated goods comments

* Guards have bookbags

* move outside guards outside
  • Loading branch information
LyleSY authored and detahramet committed Nov 6, 2023
1 parent 8a610e6 commit 374adc9
Show file tree
Hide file tree
Showing 8 changed files with 410 additions and 6 deletions.
20 changes: 15 additions & 5 deletions data/json/mapgen/campus/buildings/media_f0.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"_b.?|,,,,,,,,,,,,,,,,,,,,,|[.b__________________",
"bb[.|,,,,,,,,,,,,,,,,,,,,,|.?bbbbbbbbbbbbbbbbb__",
"b?.?|,,,,,,,,,,,,,,,,,,,,,|.[?.[..?.??.?..?..b__",
"|||||,,,,,,,,,,,,,,,,,,,,,|||||||||[.|||||||.bbb",
"|||||||||||||||||||||||,,,|||||||||[.|||||||.bbb",
"|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,||||,,,,,|.?.b",
"|,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|||.b",
":,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|.b",
Expand All @@ -30,9 +30,9 @@
":,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|||__",
":,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,||||,,,,,|____",
"|,,,,,,,,,,,,,,,,,,,,,,,,,,,|||||||__|||||||____",
"||||||,,,,,,,,,,,,,,,,,,,,,,|_________________bb",
"b....|,,,,,,,,,,,,,,,,,,,,,||________________bb'",
"b.||||,,,,,,,,,,,,,,,,,,,,,|________________bb''",
"||||||||||||||||||||||||,,,,|_________________bb",
"b....|,,,,,,,,|,,,,,,,,|,,,||________________bb'",
"b.|||||||0||||||||0|||||,,,|________________bb''",
"b.|,,,,,,,,,,,,,,,,,,,,,,,,|_______________bb'''",
"b.|,,,,,,,,,,,,,,,,,,,,,,,,|_______________b''''",
"b.|,,,,,,,,,,,,,,,,,,,,,,,,|_______________b''''",
Expand All @@ -58,7 +58,17 @@
],
"terrain": { " ": "t_open_air" },
"furniture": { },
"palettes": [ "campus_common" ]
"palettes": [ "campus_common" ],
"place_npcs": [
{ "class": "great_library_guard", "x": 13, "y": 1, "unique_id": "GREAT_LIBRARY_GUARD1" },
{ "class": "great_library_guard", "x": 18, "y": 1, "unique_id": "GREAT_LIBRARY_GUARD2" },
{ "class": "great_library_guard", "x": 18, "y": 5, "unique_id": "GREAT_LIBRARY_GUARD3" },
{ "class": "great_library_librarian", "x": 15, "y": 7 },
{ "class": "great_library_guard", "x": 52, "y": 4, "unique_id": "GREAT_LIBRARY_GUARD4" },
{ "class": "great_library_guard", "x": 73, "y": 3, "unique_id": "GREAT_LIBRARY_GUARD5" },
{ "class": "great_library_guard", "x": 89, "y": 3, "unique_id": "GREAT_LIBRARY_GUARD6" },
{ "class": "great_library_guard", "x": 88, "y": 19, "unique_id": "GREAT_LIBRARY_GUARD7" }
]
}
}
]
54 changes: 54 additions & 0 deletions data/json/npcs/campus/NPC_Elvira_Fish.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
[
{
"type": "npc",
"id": "great_library_librarian",
"name_unique": "Elvira Fish",
"//": "Appears in the Great Library as essentially a shopkeeper. Faction critical.",
"gender": "female",
"name_suffix": "Circulations",
"class": "NC_GREAT_LIBRARY_LIBRARIAN",
"attitude": 0,
"mission": 3,
"chat": "TALK_GREAT_LIBRARY_LIBRARIAN",
"faction": "the_great_library"
},
{
"type": "npc_class",
"id": "NC_GREAT_LIBRARY_LIBRARIAN",
"name": { "str": "Circulations" },
"job_description": "I'm a librarian.",
"common": false,
"sells_belongings": false,
"//": "Elvira is a young librarian, one of the few surviving librarians from before. She is also heir to the fabulous Fish fortune, but she threw that all away to pursue her passion for library science.",
"//2": "Elvira has a formal, professional tone but breaks into stutters when asked anything personal or uncomfortable. She will not lie.",
"//3": "Most of her dialogue goes in 'great_library_librarian_dialogue.json'. Dialogue that just does worldbuilding goes into 'great_library_librarian_dialogue_fluff.json'.",
"bonus_int": 4,
"shopkeeper_item_group": [ { "group": "GREAT_LIBRARY_Shop", "rigid": true } ],
"shopkeeper_consumption_rates": "elvira_shop_rates",
"worn_override": "NC_GREAT_LIBRARY_LIBRARIAN_worn",
"weapon_override": "NC_GREAT_LIBRARY_LIBRARIAN_carried",
"traits": [
{ "group": "Appearance_demographics" },
{ "trait": "LOVES_BOOKS" },
{ "trait": "TRUTHTELLER" },
{ "trait": "OPTIMISTIC" },
{ "trait": "STRONGBACK" },
{ "trait": "CLUMSY" },
{ "trait": "IGNORE_SOUND" },
{ "trait": "NO_BASH" },
{ "trait": "RETURN_TO_START_POS" }
],
"skills": [ { "skill": "firstaid", "bonus": 1 }, { "skill": "speech", "bonus": 3 } ]
},
{
"type": "effect_type",
"id": "u_Elvira_onetime_greeting",
"//": "12-hour period for the player to ask follow up questions about Elvira's initial greeting."
},
{
"id": "elvira_shop_rates",
"copy-from": "basic_shop_rates",
"type": "shopkeeper_consumption_rates",
"extend": { "rates": [ { "item": "FMCNote", "rate": -1 } ] }
}
]
2 changes: 1 addition & 1 deletion data/json/npcs/campus/NPC_campus_guard_generic.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[
{
"type": "npc",
"id": "guard",
"id": "great_library_guard",
"//": "A generic guard for the campus faction.",
"name_suffix": "Guard",
"class": "NC_CAMPUS_GUARD",
Expand Down
4 changes: 4 additions & 0 deletions data/json/npcs/campus/generic_class_definitions.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@
"prob": 100
},
{ "distribution": [ { "item": "vest", "prob": 80 }, { "item": "vest_leather", "prob": 40 } ], "prob": 70 },
{
"distribution": [ { "item": "backpack", "prob": 80 }, { "item": "backpack_leather", "prob": 40 } ],
"prob": 70
},
{
"distribution": [
{ "item": "glasses_safety", "prob": 10 },
Expand Down
50 changes: 50 additions & 0 deletions data/json/npcs/campus/great_library_librarian_goods.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
[
{
"//1": "This list tracks the things that Elvira will sell the player.",
"//2": "As a general rule of thumb, Elvira should offer any book or magazine for sale that can be easily replaced. She will never sell a rare or unique work.",
"//3": "Non-book resources should be at a minimum. Another NPC may deal in that in the future.",
"//4": "Elvira offers the following things:",
"//5": "- Books, magazines, manuals, games;",
"//6": "- Tools and resources useful for copying documents like paper and pens.",
"type": "item_group",
"id": "GREAT_LIBRARY_Shop",
"subtype": "collection",
"items": [
{ "group": "GREAT_LIBRARY_Shop_Supplies", "count": [ 10, 20 ] },
{ "group": "GREAT_LIBRARY_Shop_Books", "count": [ 40, 50 ] },
{ "group": "GREAT_LIBRARY_Shop_Tools", "count": [ 5, 8 ] }
]
},
{
"//": "Generic spare parts that can be used to make or repair written materials",
"type": "item_group",
"id": "GREAT_LIBRARY_Shop_Supplies",
"subtype": "distribution",
"items": [
{ "item": "duct_tape", "charges": [ 35, 50 ] },
{ "item": "superglue", "count": [ 0, 1 ] },
{ "item": "paper", "count": [ 150, 200 ] },
{ "item": "cardboard", "count": [ 10, 20 ] }
]
},
{
"//": "Books and games that could reasonably be found in a Community College library. No unique or rare books for sale",
"type": "item_group",
"id": "GREAT_LIBRARY_Shop_Books",
"subtype": "distribution",
"items": [
{ "group": "novels", "count": [ 9, 12 ] },
{ "group": "manuals_school", "count": [ 9, 12 ] },
{ "group": "textbooks_school", "count": [ 9, 12 ] },
{ "group": "literature", "count": [ 9, 12 ] },
{ "group": "games", "count": [ 5, 6 ] }
]
},
{
"//": "Tools needed to copy and repair books.",
"type": "item_group",
"id": "GREAT_LIBRARY_Shop_Tools",
"subtype": "collection",
"items": [ { "group": "pens", "count": [ 9, 12 ] }, { "item": "xacto", "count": [ 1, 2 ] } ]
}
]
23 changes: 23 additions & 0 deletions data/json/npcs/campus/great_library_librarian_itemlist.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[
{
"type": "item_group",
"id": "NC_GREAT_LIBRARY_LIBRARIAN_worn",
"subtype": "collection",
"items": [
{ "item": "panties" },
{ "item": "skirt" },
{ "item": "dress_shirt" },
{ "item": "heels" },
{ "item": "purse" },
{ "item": "diamond_ring" },
{ "item": "pearl_gold_earring" },
{ "item": "gold_bracelet" }
]
},
{
"type": "item_group",
"id": "NC_GREAT_LIBRARY_LIBRARIAN_carried",
"subtype": "collection",
"items": [ { "item": "magnifying_glass" } ]
}
]
169 changes: 169 additions & 0 deletions data/json/npcs/campus/great_library_librarian_talk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
[
{
"id": "TALK_GREAT_LIBRARY_LIBRARIAN",
"type": "talk_topic",
"dynamic_line": {
"u_has_var": "u_met_Elvira",
"type": "general",
"context": "meeting",
"value": "yes",
"yes": [
"*whispering. \"Welcome back to the Library.\"",
"*whispering. \"Hello again. Can I help you find something?\"",
"*whispering. \"Hello.\""
],
"no": "*waves and smiles. \"Welcome fellow reader.\""
},
"responses": [
{
"text": "Hello, who are you? This is a library, is it?",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Intro",
"condition": { "not": { "u_has_var": "u_met_Elvira", "type": "general", "context": "meeting", "value": "yes" } },
"effect": { "u_add_var": "u_met_Elvira", "type": "general", "context": "meeting", "value": "yes" }
},
{
"text": "Oh sorry, I'm not interested right now.",
"topic": "TALK_DONE",
"condition": { "not": { "u_has_var": "u_met_Elvira", "type": "general", "context": "meeting", "value": "yes" } }
},
{
"text": "I wanted to talk.",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Talk",
"condition": { "u_has_var": "u_met_Elvira", "type": "general", "context": "meeting", "value": "yes" }
},
{
"text": "Let me see what you have.",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_DoneTrading",
"condition": { "u_has_var": "u_met_Elvira", "type": "general", "context": "meeting", "value": "yes" },
"effect": "start_trade"
},
{
"text": "Just saying hello.",
"topic": "TALK_DONE",
"condition": { "u_has_var": "u_met_Elvira", "type": "general", "context": "meeting", "value": "yes" }
}
]
},
{
"id": "TALK_GREAT_LIBRARY_LIBRARIAN_DoneTrading",
"type": "talk_topic",
"dynamic_line": [ "Always glad to help another reader.", "Never stop learning.", "I just love books." ],
"responses": [
{ "text": "About other things…", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Talk" },
{
"text": "Let me see what you have.",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_DoneTrading",
"effect": "start_trade"
},
{ "text": "When will you have new material?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_AskedRestock" },
{ "text": "That's all for now. Take care.", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_GREAT_LIBRARY_LIBRARIAN_AskedRestock",
"type": "talk_topic",
"dynamic_line": [
"It can be hard to predict the way things are now, but I am expecting new materials around <interval>.",
"I am expecting some new materials <interval>, hopefully some good escapism."
],
"responses": [
{ "text": "Actually, I wanted to ask…", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Talk" },
{ "text": "Thanks, I will make sure to check back.", "topic": "TALK_DONE" }
]
},
{
"id": "TALK_GREAT_LIBRARY_LIBRARIAN_Intro",
"type": "talk_topic",
"dynamic_line": "Before you ask, we can't lend out books anymore. We've had too many stolen and destroyed. If you want to read something, either do it here or I will need to sell it to you for something useful, like a book. Oh, my name is Elvira Fish, I run Circulations here. I hope you learn something.",
"speaker_effect": [
{
"sentinel": "has_onetime_greeting_effect",
"condition": { "not": { "u_has_effect": "u_Elvira_onetime_greeting" } },
"effect": [ { "u_add_effect": "u_Elvira_onetime_greeting", "duration": "12 hours" } ]
}
],
"responses": [
{ "text": "Can you answer some questions for me?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Talk" },
{
"text": "Let me look at what you have.",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_DoneTrading",
"effect": "start_trade"
},
{ "text": "I just want to browse. See you.", "topic": "TALK_DONE" }
]
},
{
"id": [
"TALK_GREAT_LIBRARY_LIBRARIAN_Talk",
"TALK_GREAT_LIBRARY_LIBRARIAN_AboutGreeting_End",
"TALK_GREAT_LIBRARY_LIBRARIAN_WhosInCharge"
],
"type": "talk_topic",
"dynamic_line": [ "Of course, how can I help?", "I would be happy to assist.", "Of course, please ask.", "What questions do you have?" ],
"responses": [
{
"text": "You can't lend out books? What kind of library is that?",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_AboutGreeting",
"condition": { "u_has_effect": "u_Elvira_onetime_greeting" },
"effect": { "u_lose_effect": "u_Elvira_onetime_greeting" }
},
{ "text": "What are you doing here?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Plans" },
{ "text": "You want even more books?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_MoreBooks" },
{ "text": "Who's in charge here?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_WhosInCharge" },
{ "text": "Is there any way I can join your group?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_AskJoin" },
{ "text": "What's your story?", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_AboutMe" },
{
"text": "Have you heard anything about the rest of the world?",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_OutsideWorld"
},
{
"text": "Let me see what you have.",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_DoneTrading",
"effect": "start_trade"
},
{ "text": "Actually, I need to head out.", "topic": "TALK_DONE" }
]
},
{
"id": [
"TALK_GREAT_LIBRARY_LIBRARIAN_OutsideWorld",
"TALK_GREAT_LIBRARY_LIBRARIAN_OutsideWorld1",
"TALK_GREAT_LIBRARY_LIBRARIAN_OutsideWorld2"
],
"type": "talk_topic",
"dynamic_line": "Some, here and there. My responsibilities keep me here but I have spoken with traveling merchants. They thought we wanted guns and were confused that we wished to trade books for books. I must assume that most of the other survivors are more violent and less scholarly.",
"responses": [
{
"text": "Are there any other settlements around?",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Robofac",
"condition": {
"and": [
{
"not": { "u_has_var": "u_hub01_breadcrumb_accepted", "type": "general", "context": "free_merchants", "value": "yes" }
},
{
"not": { "u_has_var": "completed_robofac_intercom_2", "type": "dialogue", "context": "intercom", "value": "yes" }
}
]
}
},
{
"text": "Are there any other settlements around?",
"topic": "TALK_GREAT_LIBRARY_LIBRARIAN_OutsideWorld2",
"condition": {
"or": [
{ "u_has_var": "u_hub01_breadcrumb_accepted", "type": "general", "context": "free_merchants", "value": "yes" },
{ "u_has_var": "completed_robofac_intercom_2", "type": "dialogue", "context": "intercom", "value": "yes" }
]
}
},
{ "text": "That's fine for now.", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Talk" }
]
},
{
"id": "TALK_GREAT_LIBRARY_LIBRARIAN_MoreBooks",
"type": "talk_topic",
"dynamic_line": "Yes we are. We still have some of our original collection, but far too much of it was stolen or destroyed, and of course it was far from complete even before. Some of us go out to try and rebuild the collection from towns nearby, but mostly we rely on people passing through like you. We especially want anything rare and hard to find.",
"responses": [ { "text": "I'll keep that in mind.", "topic": "TALK_GREAT_LIBRARY_LIBRARIAN_Talk" } ]
}
]
Loading

0 comments on commit 374adc9

Please sign in to comment.