aboutsummaryrefslogtreecommitdiff
path: root/npcs
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2021-05-06 19:08:34 -0700
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2021-05-06 19:08:34 -0700
commit0cf0e572abefec3ff0632703d44323964cf2f56e (patch)
tree46cfb0bc05e4a5a017ccbd6e90a70f2822a58de7 /npcs
parentStandardize hardcase lower weapon volumes to 1250 mL (diff)
downloadcataclysm-bn-mod_battle-maid-redone-0cf0e572abefec3ff0632703d44323964cf2f56e.tar.xz
Port to Bright Nights
Merge in new mod data (sans the erotic stuff)
Diffstat (limited to 'npcs')
-rw-r--r--npcs/NC_SHOGGOTH_MAID.json8
-rw-r--r--npcs/TALK_MAID_ALLY.json434
-rw-r--r--npcs/classes.json34
-rw-r--r--npcs/npcs.json13
4 files changed, 489 insertions, 0 deletions
diff --git a/npcs/NC_SHOGGOTH_MAID.json b/npcs/NC_SHOGGOTH_MAID.json
new file mode 100644
index 0000000..8d0e022
--- /dev/null
+++ b/npcs/NC_SHOGGOTH_MAID.json
@@ -0,0 +1,8 @@
+[
+ {
+ "type": "item_group",
+ "id": "NC_SHOGGOTH_MAID_worn",
+ "subtype": "collection",
+ "entries": [ { "item": "maid_dress_french_shoggoth", "prob": 100 }, { "item": "maid_cap_shoggoth", "prob": 100 } ]
+ }
+]
diff --git a/npcs/TALK_MAID_ALLY.json b/npcs/TALK_MAID_ALLY.json
new file mode 100644
index 0000000..50a6025
--- /dev/null
+++ b/npcs/TALK_MAID_ALLY.json
@@ -0,0 +1,434 @@
+[
+ {
+ "id": [ "TALK_MAID_ALLY" ],
+ "type": "talk_topic",
+ "dynamic_line": {
+ "is_by_radio": " *pshhhttt* I'm reading you Mistress, over.",
+ "no": { "has_reason": { "use_reason": true }, "no": "What is it, Mistress?" }
+ },
+ "speaker_effect": {
+ "sentinel": "maid_init",
+ "condition": { "npc_rule": "allow_pick_up" },
+ "effect": { "toggle_npc_rule": "allow_pick_up", "opinion": { "trust": 5, "value": 5, "anger": -5, "fear": -5 } }
+ },
+ "responses": [
+ { "text": "I want to give you some commands for combat.", "topic": "TALK_COMBAT_COMMANDS" },
+ { "text": "I want to set some miscellaneous rules.", "topic": "TALK_MISC_RULES_MAID" },
+ {
+ "text": "I'd like to know a bit more about your abilities.",
+ "topic": "TALK_MAID_ALLY",
+ "effect": "reveal_stats"
+ },
+ { "text": "There's something I want you to do.", "topic": "TALK_MAID_ORDERS" },
+ { "text": "I just wanted to talk for a bit.", "topic": "TALK_MAID_SOCIAL" },
+ { "text": "I'm going to go my own way for a while.", "topic": "TALK_LEAVE" },
+ { "text": "Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": [ "TALK_MAID_SOCIAL" ],
+ "type": "talk_topic",
+ "dynamic_line": {
+ "is_by_radio": " *tshk* Whatever you desire, Mistress. Though perhaps we should meet up first?",
+ "no": "Is there something you need help with, Mistress?"
+ },
+ "responses": [
+ {
+ "text": "Mind if we just chat for a bit about your history?",
+ "topic": "TALK_MAID_CONVERSATION",
+ "condition": {
+ "and": [ "at_safe_space", { "or": [ { "npc_has_trait_flag": "BG_SURVIVAL_STORY" }, { "npc_has_trait": "NPC_STATIC_NPC" } ] } ]
+ },
+ "//": "If the NPC already has a BG story, or started out as a static NPC (and so probably doesn't need a random bg story), then go on.",
+ "switch": true
+ },
+ {
+ "text": "Mind if we just chat for a bit about your history?",
+ "topic": "TALK_MAID_CONVERSATION",
+ "condition": "at_safe_space",
+ "switch": true,
+ "effect": { "npc_add_trait": "BGSS_Confused_1" },
+ "//": "If the NPC doesn't have a BG survival story flagged trait, and didn't start the game as a static NPC, give them a BG story.",
+ "//2": "This is a stand-in for some kind of better system to add a random trait."
+ },
+ {
+ "text": "Mind if we just chat for a bit about your history?",
+ "topic": "TALK_CONVERSATION_DANGER_MAID",
+ "condition": { "not": "at_safe_space" },
+ "switch": true
+ },
+ {
+ "text": "Mind if we just chat for a bit about your history?",
+ "topic": "TALK_MAID_CONVERSATION",
+ "condition": { "not": "is_by_radio" },
+ "switch": true
+ },
+ {
+ "text": "Let's just chitchat for a while, I could use some relaxation.",
+ "topic": "TALK_FRIEND_CHAT",
+ "condition": { "not": { "or": [ { "npc_has_effect": "asked_to_socialize" }, { "npc_has_trait": "THRESH_SHOGGOTH" } ] } }
+ },
+ {
+ "text": "Let's just chitchat for a while, I could use some relaxation.",
+ "topic": "TALK_SHOGGOTH_CHAT",
+ "condition": { "not": { "or": [ { "npc_has_effect": "asked_to_socialize" }, { "not": { "npc_has_trait": "THRESH_SHOGGOTH" } } ] } }
+ },
+ { "text": "Can I do anything for you?", "topic": "TALK_MISSION_LIST" },
+ {
+ "text": "I don't want to ever be apart from you.",
+ "topic": "TALK_SHOGGOTH_HEART",
+ "condition": { "npc_has_trait": "THRESH_SHOGGOTH" }
+ },
+ { "text": "I changed my mind, wanted to ask you something else.", "topic": "TALK_MAID_ALLY" },
+ { "text": "Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_SHOGGOTH_HEART",
+ "type": "talk_topic",
+ "dynamic_line": "Oh Mistress...♪ I feel the same way! But you know, there is a way we can be together forever, no matter how cold or cruel this world is...",
+ "responses": [ { "text": "Tell me more.", "topic": "TALK_SHOGGOTH_HEART2" } ]
+ },
+ {
+ "id": "TALK_SHOGGOTH_HEART2",
+ "type": "talk_topic",
+ "dynamic_line": "Take my heart and eat it. Ah, don't worry♪ I won't die. My strength will become our strength, and nobody will be able to separate us then!",
+ "responses": [
+ { "text": "This...let's do it. Now.", "topic": "TALK_SHOGGOTH_HEART3" },
+ { "text": "You know what? Never mind.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_SHOGGOTH_HEART3",
+ "type": "talk_topic",
+ "dynamic_line": "For my beloved Mistress, I would do anything! Oh, if you ever change your mind, just put my heart back in the flask - I'll be back in no time!",
+ "speaker_effect": { "effect": [ { "u_buy_item": "meat_shoggoth", "count": 2 }, "npc_die" ] },
+ "responses": [ { "text": "...", "topic": "TALK_DONE" } ]
+ },
+ {
+ "id": [ "TALK_MAID_ORDERS" ],
+ "type": "talk_topic",
+ "dynamic_line": [ "As you command, my Mistress.", "Do you have orders for me?", "How can I serve you?", "Just say the word." ],
+ "responses": [
+ {
+ "text": "Can you teach me anything?",
+ "condition": { "not": "is_by_radio" },
+ "trial": {
+ "type": "CONDITION",
+ "condition": {
+ "or": [
+ { "npc_need": "thirst", "amount": 80 },
+ { "npc_need": "hunger", "amount": 160 },
+ { "npc_need": "fatigue", "level": "TIRED" },
+ { "npc_has_effect": "asked_to_train" },
+ "u_driving",
+ "npc_driving"
+ ]
+ }
+ },
+ "success": { "topic": "TALK_DENY_TRAIN" },
+ "failure": { "topic": "TALK_TRAIN_PERSUADE_MAID" }
+ },
+ {
+ "text": "Let's trade items.",
+ "condition": { "not": { "or": [ "is_by_radio", { "npc_has_trait": "MAID_RESTRICT" } ] } },
+ "topic": "TALK_MAID_ALLY",
+ "effect": "start_trade",
+ "switch": true,
+ "default": true
+ },
+ {
+ "text": "Let's trade items",
+ "topic": "TRADE_HALLU",
+ "condition": { "npc_has_trait": "HALLUCINATION" },
+ "switch": true,
+ "default": false
+ },
+ {
+ "text": "I want you to use this item.",
+ "condition": { "not": { "or": [ "is_by_radio", { "npc_has_trait": "MAID_RESTRICT" } ] } },
+ "topic": "TALK_MAID_ALLY",
+ "effect": "npc_gets_item_to_use"
+ },
+ {
+ "text": "Hold on to this item.",
+ "condition": { "not": { "or": [ "is_by_radio", { "npc_has_trait": "MAID_RESTRICT" } ] } },
+ "topic": "TALK_MAID_ALLY",
+ "effect": "npc_gets_item"
+ },
+ {
+ "text": "Guard this position.",
+ "condition": { "not": "is_by_radio" },
+ "topic": "TALK_MAID_GUARD",
+ "effect": "assign_guard"
+ },
+ {
+ "text": "I want to assign you to work at this camp.",
+ "condition": { "npc_at_om_location": "FACTION_CAMP_ANY" },
+ "topic": "TALK_MAID_GUARD",
+ "effect": "assign_camp"
+ },
+ {
+ "text": "Find a horse and mount up!",
+ "condition": { "not": "npc_is_riding" },
+ "topic": "TALK_DONE",
+ "effect": "find_mount"
+ },
+ {
+ "text": "Get off your mount, please.",
+ "condition": "npc_is_riding",
+ "topic": "TALK_DONE",
+ "effect": "dismount"
+ },
+ {
+ "text": "Please go to this location.",
+ "topic": "TALK_GOTO_LOCATION",
+ "condition": { "or": [ "is_by_radio", "u_has_camp" ] },
+ "effect": "goto_location"
+ },
+ {
+ "text": "I want you to build a camp here.",
+ "topic": "TALK_HALLU_CAMP",
+ "condition": { "npc_has_trait": "HALLUCINATION" },
+ "switch": true
+ },
+ {
+ "text": "I want you to build a camp here.",
+ "topic": "TALK_DONE",
+ "effect": "start_camp",
+ "condition": { "npc_at_om_location": "FACTION_CAMP_START" },
+ "switch": true,
+ "default": true
+ },
+ {
+ "text": "Since we can't build a camp here, I want you to tell me where can we build a camp?",
+ "topic": "TALK_CAMP_SITES",
+ "condition": { "not": { "npc_at_om_location": "FACTION_CAMP_START" } },
+ "switch": true,
+ "default": true
+ },
+ {
+ "text": "We need to abandon this camp.",
+ "condition": { "npc_at_om_location": "FACTION_CAMP_ANY" },
+ "topic": "TALK_DONE",
+ "effect": "abandon_camp"
+ },
+ {
+ "text": "Show me what needs to be done at the camp.",
+ "topic": "TALK_DONE",
+ "effect": "basecamp_mission",
+ "condition": { "npc_at_om_location": "FACTION_CAMP_ANY" }
+ },
+ { "text": "Let's talk about your current activity.", "topic": "TALK_ACTIVITIES" },
+ { "text": "Let's go.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_MAID_GUARD",
+ "type": "talk_topic",
+ "dynamic_line": "With my life, Mistress!",
+ "responses": [
+ { "text": "I need you to come with me.", "topic": "TALK_MAID_ALLY", "effect": "stop_guard" },
+ { "text": "See you around.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_TRAIN_PERSUADE_MAID",
+ "type": "talk_topic",
+ "dynamic_line": "But Mistress...you can just leave everything to me!",
+ "responses": [
+ {
+ "text": "Come on, we're friends.",
+ "trial": { "type": "PERSUADE", "difficulty": 0, "mod": [ [ "TRUST", 6 ], [ "VALUE", 2 ], [ "ANGER", -6 ] ] },
+ "success": { "topic": "TALK_TRAIN" },
+ "failure": { "topic": "TALK_DENY_PERSONAL", "effect": { "npc_add_effect": "asked_to_train", "duration": 3600 } }
+ },
+ { "text": "Forget it, let's get going.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_CONVERSATION_DANGER_MAID",
+ "type": "talk_topic",
+ "dynamic_line": "Are you sure? This doesn't seem like a particularly safe place for small talk…",
+ "responses": [
+ { "text": "It's fine, we've got a moment.", "topic": "TALK_MAID_CONVERSATION" },
+ { "text": "You're right. Forget I said anything, let's get moving.", "topic": "TALK_DONE" }
+ ]
+ },
+ {
+ "id": "TALK_MAID_CONVERSATION",
+ "type": "talk_topic",
+ "dynamic_line": "My history? You mean before I served you? ...I'm sorry, but...",
+ "responses": [ { "text": "Actually, never mind.", "topic": "TALK_DONE" } ]
+ },
+ {
+ "id": "TALK_SHOGGOTH_CHAT",
+ "type": "talk_topic",
+ "dynamic_line": "<shoggoth_chat>",
+ "responses": [
+ {
+ "text": "<chitchat_player_responses>",
+ "topic": "TALK_DONE",
+ "switch": true,
+ "effect": [ "morale_chat_activity", { "npc_add_effect": "asked_to_socialize", "duration": 7000 } ]
+ }
+ ]
+ },
+ {
+ "id": "TALK_MISC_RULES_MAID",
+ "type": "talk_topic",
+ "dynamic_line": {
+ "and": [
+ {
+ "and": [
+ { "npc_override": "allow_pick_up", "yes": "OVERRIDE: " },
+ {
+ "npc_rule": "allow_pick_up",
+ "yes": { "has_pickup_list": "<ally_rule_allow_pick_up_true_list_text>", "no": "<ally_rule_allow_pick_up_true_text>" },
+ "no": "<ally_rule_allow_pick_up_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "allow_bash", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "allow_bash",
+ "yes": "<ally_rule_allow_bash_true_text>",
+ "no": "<ally_rule_allow_bash_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "allow_sleep", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "allow_sleep",
+ "yes": "<ally_rule_allow_sleep_true_text>",
+ "no": "<ally_rule_allow_sleep_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "allow_complain", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "allow_complain",
+ "yes": "<ally_rule_allow_complain_true_text>",
+ "no": "<ally_rule_allow_complain_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "allow_pulp", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "allow_pulp",
+ "yes": "<ally_rule_allow_pulp_true_text>",
+ "no": "<ally_rule_allow_pulp_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "close_doors", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "close_doors",
+ "yes": "<ally_rule_close_doors_true_text>",
+ "no": "<ally_rule_close_doors_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "ignore_noise", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "ignore_noise",
+ "yes": "<ally_rule_ignore_noise_true_text>",
+ "no": "<ally_rule_ignore_noise_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "avoid_doors", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "avoid_doors",
+ "yes": "<ally_rule_avoid_doors_true_text>",
+ "no": "<ally_rule_avoid_doors_false_text>"
+ }
+ ]
+ },
+ {
+ "and": [
+ { "npc_override": "forbid_engage", "yes": " OVERRIDE: ", "no": " " },
+ {
+ "npc_rule": "forbid_engage",
+ "yes": "<ally_rule_forbid_engage_true_text>",
+ "no": "<ally_rule_forbid_engage_false_text>"
+ }
+ ]
+ }
+ ]
+ },
+ "responses": [
+ {
+ "truefalsetext": { "condition": { "npc_rule": "allow_pick_up" }, "true": "Don't pick up items.", "false": "You can pick up items now." },
+ "topic": "TALK_MISC_RULES_MAID",
+ "condition": { "not": { "npc_has_trait": "MAID_RESTRICT" } },
+ "effect": { "toggle_npc_rule": "allow_pick_up" }
+ },
+ {
+ "truefalsetext": { "condition": { "npc_rule": "allow_bash" }, "true": "Don't bash obstacles.", "false": "You can bash obstacles." },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "allow_bash" }
+ },
+ {
+ "truefalsetext": { "condition": { "npc_rule": "allow_sleep" }, "true": "Stay awake.", "false": "Sleep when you feel tired." },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "allow_sleep" }
+ },
+ {
+ "truefalsetext": { "condition": { "npc_rule": "allow_complain" }, "true": "Stay quiet.", "false": "Tell me when you need something." },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "allow_complain" }
+ },
+ {
+ "truefalsetext": { "condition": { "npc_rule": "allow_pulp" }, "true": "Leave corpses alone.", "false": "Smash zombie corpses." },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "allow_pulp" }
+ },
+ {
+ "truefalsetext": { "condition": { "npc_rule": "close_doors" }, "true": "Leave doors open.", "false": "Close the doors." },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "close_doors" }
+ },
+ {
+ "truefalsetext": {
+ "condition": { "npc_rule": "avoid_doors" },
+ "true": "Open doors to get where you're going.",
+ "false": "Don't walk through closed doors."
+ },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "avoid_doors" }
+ },
+ {
+ "truefalsetext": {
+ "condition": { "npc_rule": "ignore_noise" },
+ "true": "If you hear a noise but can't see the source, move to investigate it.",
+ "false": "Don't investigate noises that you can't see."
+ },
+ "topic": "TALK_MISC_RULES_MAID",
+ "effect": { "toggle_npc_rule": "ignore_noise" }
+ },
+ {
+ "text": "Set up pickup rules.",
+ "topic": "TALK_MISC_RULES_MAID",
+ "condition": { "not": { "npc_has_trait": "MAID_RESTRICT" } },
+ "effect": "set_npc_pickup"
+ },
+ { "text": "Clear all overrides.", "topic": "TALK_MISC_RULES_MAID", "effect": "clear_overrides" },
+ { "text": "Never mind.", "topic": "TALK_DONE" }
+ ]
+ }
+]
diff --git a/npcs/classes.json b/npcs/classes.json
new file mode 100644
index 0000000..f5a900e
--- /dev/null
+++ b/npcs/classes.json
@@ -0,0 +1,34 @@
+[
+ {
+ "type": "npc_class",
+ "id": "NC_SHOGGOTH_MAID",
+ "name": { "str": "shoggoth maid" },
+ "job_description": "I'm your loyal slave, master!",
+ "common": false,
+ "bonus_str": { "rng": [ 4, 4 ] },
+ "bonus_dex": { "rng": [ 2, 2 ] },
+ "bonus_int": { "rng": [ -2, -2 ] },
+ "skills": [ { "skill": "melee", "bonus": { "rng": [ 5, 7 ] } }, { "skill": "unarmed", "bonus": { "rng": [ 5, 7 ] } } ],
+ "traits": [
+ [ "MUT_TOUGH3", 100 ],
+ [ "SHOGGOTH_BUFF_OK", 100 ],
+ [ "SHUFFLING_HORROR", 100 ],
+ [ "AMORPHOUS", 100 ],
+ [ "PER_SLIME_OK", 100 ],
+ [ "HUNGER", 100 ],
+ [ "THRESH_SHOGGOTH", 100 ],
+ [ "SHOGGOTH_BODY_NPC", 100 ],
+ [ "NOPAIN", 100 ],
+ [ "INFIMMUNE", 100 ],
+ [ "hair_black_long", 50 ],
+ [ "hair_red_long", 25 ],
+ [ "hair_blond_long", 25 ],
+ [ "hair_brown_long", 25 ],
+ [ "MAID_RESTRICT", 100 ],
+ [ "PRETTY", 100 ]
+ ],
+ "worn_override": "NC_SHOGGOTH_MAID_worn",
+ "carry_override": "naked_prisoner",
+ "weapon_override": "naked_prisoner"
+ }
+]
diff --git a/npcs/npcs.json b/npcs/npcs.json
new file mode 100644
index 0000000..19962a9
--- /dev/null
+++ b/npcs/npcs.json
@@ -0,0 +1,13 @@
+[
+ {
+ "type": "npc",
+ "id": "shoggoth_maid",
+ "name_suffix": "Shoggoth Maid",
+ "class": "NC_SHOGGOTH_MAID",
+ "gender": "female",
+ "attitude": 3,
+ "mission": 0,
+ "chat": "TALK_MAID_ALLY",
+ "faction": "no_faction"
+ }
+]