[
  {
    "type": "npc",
    "id": "robofac_merc_1",
    "name_unique": "Cranberry Foster",
    "//": "Appears in the surface of Hub 01 as an external mercenary.",
    "name_suffix": "Hub Mercenary",
    "mission_offered": "MISSION_ROBOFAC_MERC_1_RADIO",
    "class": "NC_ROBOFAC_MERC_1",
    "attitude": 0,
    "mission": 7,
    "chat": "TALK_ROBOFAC_MERC_1",
    "faction": "robofac_auxiliaries"
  },
  {
    "type": "npc_class",
    "id": "NC_ROBOFAC_MERC_1",
    "name": { "str": "Hub Mercenary" },
    "job_description": "Fighting for the all-mighty dollar.",
    "common": false,
    "//1": "Cranberry is a former park ranger that held out at home for a while during and after the Cataclysm.  They lived near Hub 01's headquarters and was curious what was inside the building, so when they left their home, they went to it.",
    "//2": "They are generally laid back and talk in an informal, relaxed way.  Things have been hard, but they're generally optimistic and have largely come to terms with the new state of the world.",
    "//3": "Writing note: Cranberry's appearance and voice are androgynous, and so their gender is never specified; they directly tease the player about it in a dialogue option that appears once they have enough trust with the player.  Use neutral terms and pronouns when referring to them.",
    "traits": [
      { "trait": "TOUGH" },
      { "trait": "QUICK" },
      { "trait": "OPTIMISTIC" },
      { "trait": "FORGETFUL" },
      { "trait": "PACIFIST" },
      { "trait": "TRUTHTELLER" },
      { "trait": "hair_medium", "variant": "blond" },
      { "trait": "natural_hair_color_blond" },
      { "trait": "eye_color", "variant": "blue" },
      { "trait": "SKIN_PINK" }
    ],
    "bonus_str": 2,
    "bonus_dex": 3,
    "bonus_per": 1,
    "worn_override": "NC_ROBOFAC_MERC_1_worn",
    "carry_override": "NC_ROBOFAC_MERC_1_carry",
    "weapon_override": "NC_ROBOFAC_MERC_1_wield",
    "skills": [
      { "skill": "gun", "bonus": 4 },
      { "skill": "rifle", "bonus": 4 },
      { "skill": "pistol", "bonus": 1 },
      { "skill": "melee", "bonus": 4 },
      { "skill": "cutting", "bonus": 3 },
      { "skill": "fabrication", "bonus": 1 },
      { "skill": "firstaid", "bonus": 1 },
      { "skill": "swimming", "bonus": 3 },
      { "skill": "survival", "bonus": 4 },
      { "skill": "cooking", "bonus": 4 },
      { "skill": "computer", "bonus": 6 },
      { "skill": "electronics", "bonus": 4 },
      { "skill": "driving", "bonus": 3 }
    ]
  },
  {
    "type": "item_group",
    "id": "NC_ROBOFAC_MERC_1_worn",
    "subtype": "collection",
    "items": [
      { "item": "under_armor" },
      { "item": "under_armor_shorts" },
      { "item": "socks" },
      { "item": "ring_wedding" },
      { "item": "robofac_enviro_suit" },
      { "group": "molle_backpacks_and_accessories" },
      { "group": "clothing_watch" },
      { "item": "robofac_kevlar_vambraces" },
      { "item": "robofac_kevlar_greaves" },
      { "item": "knife_combat", "container-item": "bootsheath" },
      { "group": "robofac_mantle_merc" },
      { "group": "robofac_helmet_merc" }
    ]
  },
  {
    "type": "item_group",
    "id": "NC_ROBOFAC_MERC_1_carry",
    "subtype": "collection",
    "items": [
      { "item": "ear_plugs", "custom-flags": [ "no_auto_equip" ] },
      { "item": "robofac40", "ammo-item": "556", "charges": 40 },
      { "item": "robofac_gun_kit" },
      { "item": "grenade_emp" },
      { "group": "mil_food_nodrugs" },
      { "item": "bot_grenade_hack", "count": 2 },
      { "item": "protein_bar_evac", "count": 7 },
      { "item": "water_clean", "count": 2 },
      { "item": "RobofacCoin", "count": [ 15, 18 ] },
      { "group": "charged_smart_phone" },
      { "group": "full_1st_aid" }
    ]
  },
  {
    "type": "item_group",
    "id": "NC_ROBOFAC_MERC_1_wield",
    "subtype": "collection",
    "items": [
      { "item": "robofac_gun", "ammo-item": "556", "charges": 40, "contents-item": [ "shoulder_strap", "robofac_gun_ar" ] }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1",
    "type": "talk_topic",
    "dynamic_line": {
      "compare_string": [ "yes", { "u_val": "general_meeting_u_met_Cranberry" } ],
      "no": "&There's a person reclined on the sofa here.  They're very tall, with their legs reaching to the other armrest, and they're wearing a set of Hub 01's modular armor.  An environmental suit in blue-and-brown is crumpled in a misshapen heap on the floor near the table, and leaning against the far armrest is a rifle looking like nothing you've seen before.\n\nThey look up towards you as you come through the door and wave a hand.  \"Placeholder text.\"",
      "yes": {
        "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_stay" } ],
        "no": [ "Did I scare you off the first time?", "Hi again, other person.", "*waves." ],
        "yes": {
          "compare_string": [ "yes", { "npc_val": "general_robofac_merc_1_temporal_follower" } ],
          "yes": [
            "Better keep our eyes on the road.",
            "*looks at you expectantly.",
            "Better be careful around here.",
            "Yeah?",
            "What's up?"
          ],
          "no": [
            "Got something to say?",
            "I charge hourly, y'know.",
            "Hey.",
            "*looks at you expectantly.",
            "Yeah?",
            "What's up?",
            "Good to see you."
          ]
        }
      }
    },
    "speaker_effect": {
      "effect": { "u_add_var": "general_meeting_u_met_Cranberry", "value": "yes" },
      "sentinel": "robofac_merc_1_first_meeting"
    },
    "responses": [
      {
        "text": "…Did you just say \"placeholder text\" out loud?",
        "topic": "TALK_ROBOFAC_MERC_1_PLACEHOLDER_TEXT",
        "condition": {
          "and": [
            { "not": { "compare_string": [ "yes", { "u_val": "general_meeting_u_met_Cranberry" } ] } },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_stay" } ] } }
          ]
        }
      },
      {
        "text": "Uh… okay.  Who are you?",
        "topic": "TALK_ROBOFAC_MERC_1_WHO",
        "condition": {
          "and": [
            { "not": { "compare_string": [ "yes", { "u_val": "general_meeting_u_met_Cranberry" } ] } },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_stay" } ] } }
          ]
        }
      },
      {
        "text": "Who are you, exactly?",
        "topic": "TALK_ROBOFAC_MERC_1_WHO",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "general_meeting_u_met_Cranberry" } ] },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_stay" } ] } }
          ]
        }
      },
      { "text": "About that job…", "topic": "TALK_MISSION_INQUIRE", "condition": "has_assigned_mission" },
      {
        "text": "About those jobs…",
        "topic": "TALK_MISSION_LIST_ASSIGNED",
        "condition": "has_many_assigned_missions"
      },
      {
        "text": "I wanted to talk.",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_stay" } ] },
            { "not": { "compare_string": [ "yes", { "npc_val": "general_robofac_merc_1_temporal_follower" } ] } }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_MAIN"
      },
      {
        "text": "Want help with something else?",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_helped_with_missions" } ] },
            { "not": { "compare_string": [ "yes", { "npc_val": "general_robofac_merc_1_temporal_follower" } ] } },
            { "not": "has_many_assigned_mission" },
            { "not": "has_assigned_mission" }
          ]
        },
        "topic": "TALK_MISSION_LIST"
      },
      {
        "text": "Let's set up a combat strategy.",
        "condition": { "compare_string": [ "yes", { "npc_val": "general_robofac_merc_1_temporal_follower" } ] },
        "topic": "TALK_DONE",
        "effect": "npc_rules_menu"
      },
      { "text": "<end_talking_nevermind>", "topic": "TALK_DONE" }
    ]
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_MAIN", "TALK_ROBOFAC_MERC_1_STAY_AWHILE", "TALK_ROBOFAC_MERC_1_GOLD_MISSION_ACCEPTED" ],
    "type": "talk_topic",
    "dynamic_line": [
      "Rough out there, isn't it?",
      "Good to have some company.",
      "Have something to say?",
      "Did you want something?",
      "*waits expectantly."
    ],
    "responses": [
      { "text": "So what's going on?", "topic": "TALK_ROBOFAC_MERC_1_GOING_ON" },
      {
        "text": "Anything on your mind?",
        "condition": {
          "and": [
            { "not": { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_has_gold_deal" } ] } },
            { "not": "has_many_assigned_mission" },
            { "not": "has_assigned_mission" }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_COINS"
      },
      {
        "text": "Anything on your mind?",
        "condition": { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_has_gold_deal" } ] },
        "topic": "TALK_ROBOFAC_MERC_1_RANDOM_THOUGHTS"
      },
      {
        "text": "What was <the_cataclysm> like for you?",
        "condition": { "not": { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_helped_with_missions" } ] } },
        "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_NO"
      },
      {
        "text": "What was <the_cataclysm> like for you?",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_helped_with_missions" } ] },
            { "not": { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_heard_backstory" } ] } }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND"
      },
      {
        "text": "Want help with something?",
        "condition": { "not": { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_helped_with_missions" } ] } },
        "topic": "TALK_MISSION_LIST"
      },
      { "text": "What do you know about our employers?", "topic": "TALK_ROBOFAC_MERC_1_ASK_HUB" },
      {
        "text": "That gun isn't like anything I've ever seen.  What am I looking at?",
        "condition": {
          "and": [
            {
              "or": [ { "u_has_perception": 10 }, { "math": [ "u_skill('mechanics') >= 4" ] }, { "math": [ "u_skill('gun') >= 2" ] } ]
            },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_HWP" } ] } }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_HWP"
      },
      {
        "text": "What's the deal with your gun again?",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_HWP" } ] },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_hub_rnd_u_can_research_rifle" } ] } }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION"
      },
      {
        "text": "I've helped you out now.  Do you think you could vouch for me with our employers?",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_HWP" } ] },
            { "math": [ "u_favor_owed_to_u_robofac_merc_1_favor == 1 " ] },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_hub_rnd_u_can_research_rifle" } ] } }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_HWP_YES"
      },
      {
        "text": "How can I get a gun like that?",
        "condition": {
          "and": [
            { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_robofac_merc_1_HWP" } ] },
            { "math": [ "u_favor_owed_to_u_robofac_merc_1_favor != 1 " ] },
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_hub_rnd_u_can_research_rifle" } ] } }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_HWP_NO"
      },
      {
        "text": "I just realized, we've been in touch for a while now and I don't actually know; are you a man or a woman?",
        "condition": {
          "and": [
            { "not": { "compare_string": [ "yes", { "u_val": "dialogue_robofac_merc_1_asked_gender" } ] } },
            { "math": [ "n_npc_trust() >= 3" ] }
          ]
        },
        "topic": "TALK_ROBOFAC_MERC_1_GENDER"
      },
      {
        "text": "About the gold you wanted…",
        "condition": { "compare_string": [ "yes", { "u_val": "general_robofac_merc_1_has_gold_deal" } ] },
        "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION_QUERY"
      },
      { "text": "<end_talking_leave>", "topic": "TALK_DONE" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_GENDER",
    "type": "talk_topic",
    "dynamic_line": "Yes.",
    "speaker_effect": {
      "effect": { "u_add_var": "dialogue_robofac_merc_1_asked_gender", "value": "yes" },
      "sentinel": "robofac_merc_1_asked_gender"
    },
    "responses": [ { "text": "I don't know what I was expecting.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_STAY_AWHILE",
    "type": "talk_topic",
    "dynamic_line": "Cool."
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_PLACEHOLDER_TEXT", "TALK_ROBOFAC_MERC_1_OTHER_MERCS" ],
    "type": "talk_topic",
    "dynamic_line": "I sure did.  Sorry, just a stupid icebreaker.  Old habits and all that.\"  They sit up.  \"What's up?",
    "responses": [
      { "text": "Who exactly are you?", "topic": "TALK_ROBOFAC_MERC_1_WHO" },
      {
        "text": "I thought I was the only one working for the people here.",
        "topic": "TALK_ROBOFAC_MERC_1_OTHER_MERCS"
      },
      { "text": "Just saying hi.  I'll be on my way now.", "topic": "TALK_DONE" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_OTHER_MERCS",
    "type": "talk_topic",
    "dynamic_line": {
      "gendered_line": "Surprise!\"  They do jazz hands.  \"Sorry.  Well, I'm told that I'm part of a small group right now.  Maybe you were the first.",
      "relevant_genders": [ "u" ]
    }
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_WHO",
    "type": "talk_topic",
    "dynamic_line": "Just the same as you.  Some nobody doing dirty work for scraps.  Uh, no offense.",
    "responses": [
      { "text": "None taken.  I guess that makes two of us.", "topic": "TALK_ROBOFAC_MERC_1_TWO_OF_US" },
      { "text": "Well, never mind.", "topic": "TALK_DONE" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_TWO_OF_US",
    "type": "talk_topic",
    "dynamic_line": "I guess so.\"  They beam sheepishly.  \"Uh, call me Cranberry.  Cran is fine too.  It's nice to meet someone else from here.  I guess having some company for once wouldn't be awful.",
    "speaker_effect": {
      "effect": { "u_add_var": "dialogue_robofac_merc_1_robofac_merc_1_stay", "value": "yes" },
      "sentinel": "robofac_merc_1_stay"
    },
    "responses": [
      { "text": "Alright.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" },
      { "text": "I guess I could stay for a while.", "topic": "TALK_ROBOFAC_MERC_1_STAY_AWHILE" },
      { "text": "Actually, I have some places to be right now.  Good to meet you.", "topic": "TALK_DONE" }
    ]
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_ASK_HUB", "TALK_ROBOFAC_MERC_1_ASK_HUB_DOCS", "TALK_ROBOFAC_MERC_1_ASK_HUB_NETWORK" ],
    "type": "talk_topic",
    "dynamic_line": "Not a whole lot, really.  They made me track down and destroy some government documents a while back.  Obviously I read them first, but it wasn't much.  As far as I know, this place had an experimental computer network before everything went to hell.  What's going on in there now is anybody's guess.",
    "responses": [
      { "text": "Hold on, government documents?", "topic": "TALK_ROBOFAC_MERC_1_ASK_HUB_DOCS" },
      { "text": "Computer network?", "topic": "TALK_ROBOFAC_MERC_1_ASK_HUB_NETWORK" },
      { "text": "Strange bedfellows…", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_ASK_HUB_DOCS",
    "type": "talk_topic",
    "dynamic_line": "Yeah!  Crazy shit.  They sent me to an office building to find a folder with a certain serial and get rid of it.  They didn't even care what was on it.  By the time I got there, though, the building was pretty much a wreck.  The folder had been sitting in a puddle for God knows how long, and there was nothing even remotely legible by then."
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_ASK_HUB_NETWORK",
    "type": "talk_topic",
    "dynamic_line": "That's what the news said, anyway.  It was only about a 20-minute trip from my apartment and sometimes I'd drive past it, so I was curious and I did some research into it.  The only info I could find about it online said that it was a NASA lab for computer research, but that was probably bullshit.  I mean, do you see any NASA logos?  Sure, we got huge steel doors and 15-foot concrete walls, but not a logo in sight.  The building probably goes underground, right?  It's way too small to be a whole laboratory up here."
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_GOING_ON", "TALK_ROBOFAC_MERC_1_GOING_ON_SLEEP" ],
    "type": "talk_topic",
    "dynamic_line": "Just trying to get some rest.  I don't have anywhere else to stay, so they let me sleep on the couch out here as long as I keep my gun handy.",
    "responses": [
      { "text": "They don't let you in to sleep?", "topic": "TALK_ROBOFAC_MERC_1_GOING_ON_SLEEP" },
      { "text": "Fair enough.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_GOING_ON_SLEEP",
    "type": "talk_topic",
    "dynamic_line": "Dude, I wish.  It sounds like there's different people on the mic at different times, but all of them give me the same spiel: nobody's allowed in right now.  I guess I shouldn't raise a fuss about it, honestly.  All being considered, this compound is pretty safe, and the couch ain't so bad."
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_COINS",
    "type": "talk_topic",
    "dynamic_line": {
      "gendered_line": "Yeah.  Have you noticed how they pay us in these tiny little gold coins?\"  Cranberry holds one up for emphasis.  \"It's bizarre.  You'd think they have a gold mine in there, but no, they don't, so they make me cross the damn world grabbing gold bars.  As far as scrip goes, it seems inconvenient as hell to make.",
      "relevant_genders": [ "u" ]
    },
    "responses": [
      { "text": "You sound frustrated about it.", "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION" },
      { "text": "Now that you mention it, it does seem rather strange.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_RANDOM_THOUGHTS",
    "type": "talk_topic",
    "dynamic_line": [
      "Thinking I should go hunt something soon…",
      "Just wondering if things will get better someday.",
      "Hmm?  Nothing, I guess I just like resting in this place.  I feel good today.",
      { "gendered_line": "Have you ever noticed how… wait no, never mind.", "relevant_genders": [ "u" ] },
      "Wondering if the whole world is like this now.  It has to be, right?  I was watching some foreign news channels when everything was going down, and it sounded like things were just as bad there…",
      {
        "gendered_line": "Hey, did you notice that there's working wi-fi here?  Not that anything else is online anymore, but still.",
        "relevant_genders": [ "u" ]
      },
      "Just vibing."
    ],
    "responses": [ { "text": "I see.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_HWP",
    "type": "talk_topic",
    "dynamic_line": "*picks the gun up and shows it to you from a few different angles.  You've never seen anything like it; it has a steel body with composite blue furniture, and looks lightweight and cutting-edge.  It features a modern hybrid scope, built-in attachments, and a strange quick-release button on the side.  The magazine looks like something for an assault rifle, but the magazine well itself is strangely designed and seems to be fitted with an adapter to make the magazine actually fit.\n\n\"Whatcha think?\"",
    "responses": [
      { "text": "Is that a custom Hub rifle?", "topic": "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION" },
      { "text": "Where'd you find that thing?", "topic": "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION" },
      { "text": "Sweet piece of salvage.", "topic": "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION" }
    ]
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION", "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION_WHERE" ],
    "type": "talk_topic",
    "dynamic_line": "It's from our employers.  Apparently, it's a custom platform they make for field agents.  It's got quick swap barrels for 9mm, the standard NATO cartridges, and shotgun shells too.  It's great for if you're on a long field mission and run out of ammo.  A lot of dudes bit the dust on their way home from the gun store with a box of nine-mil.  I guess it's better them than us; they don't need it now.",
    "speaker_effect": {
      "effect": { "u_add_var": "dialogue_robofac_merc_1_robofac_merc_1_HWP", "value": "yes" },
      "sentinel": "robofac_merc_1_HWP"
    },
    "responses": [
      { "text": "Damn.  Where can I get one of those?", "topic": "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION_WHERE" },
      {
        "text": "I've helped you out now.  Do you think you could vouch for me with our employers?",
        "condition": { "math": [ "u_favor_owed_to_u_robofac_merc_1_favor == 1 " ] },
        "topic": "TALK_ROBOFAC_MERC_1_HWP_YES"
      },
      { "text": "I see.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_HWP_EXPLANATION_WHERE",
    "type": "talk_topic",
    "dynamic_line": "You'll have to work that out with the intercom.  They seem stingy with them."
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_HWP_YES",
    "type": "talk_topic",
    "dynamic_line": {
      "compare_string": [ "yes", { "u_val": "dialogue_hub_merc_promised_u" } ],
      "no": "I do owe you one.  Tell you what: I'll let the Hub know that you're worth manufacturing some proper gear for.  Let 'em know that I sent you next time you talk with them and I'm sure they'll help you.",
      "yes": "As promised earlier, I'll let the Hub know that you're worth manufacturing some proper gear for.  Let 'em know that I sent you next time you talk with them and I'm sure they'll help you."
    },
    "speaker_effect": { "effect": { "u_add_var": "dialogue_hub_rnd_u_can_research_rifle", "value": "yes" } },
    "responses": [ { "text": "Thanks.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_HWP_NO",
    "type": "talk_topic",
    "dynamic_line": "You'll have to work it out with the intercom.  I don't want to vouch for someone I don't really know.",
    "responses": [
      {
        "text": "Anything I can do to change your mind?",
        "condition": { "and": [ { "not": "has_many_assigned_mission" }, { "not": "has_assigned_mission" } ] },
        "topic": "TALK_MISSION_LIST"
      },
      {
        "text": "Anything I can do to change your mind?",
        "condition": { "not": { "and": [ { "not": "has_many_assigned_mission" }, { "not": "has_assigned_mission" } ] } },
        "topic": "TALK_ROBOFAC_MERC_1_HWP_IF_I_OWE_YOU"
      },
      { "text": "Alright.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_HWP_IF_I_OWE_YOU",
    "type": "talk_topic",
    "dynamic_line": "Once we finish up this job, I'll vouch for you.  Pinkie promise.",
    "speaker_effect": { "effect": { "u_add_var": "dialogue_hub_merc_promised_u", "value": "yes" } },
    "responses": [ { "text": "Alright.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND",
    "type": "talk_topic",
    "dynamic_line": "*goes quiet.  They chew their lip, looking off towards a point in space.",
    "responses": [
      { "text": "I'm sorry.  Too personal?", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_1" },
      { "text": "Hey, it can wait.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_1" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_1",
    "type": "talk_topic",
    "dynamic_line": "No, no!  It's fine, promise.  It's just been a hot minute, and I'm trying to remember it.  It's been a while.  You sure you want to hear it?",
    "responses": [
      { "text": "I'm sure.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_2" },
      { "text": "I might not have the time.  Hold that thought for later.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_2",
    "type": "talk_topic",
    "dynamic_line": "*stares at a point at the wall, thinking.  Their wedding ring glints on their left hand.",
    "responses": [ { "text": "[Wait.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_3" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_3",
    "type": "talk_topic",
    "dynamic_line": "…Alright.  Well.  For starters, I lived alone in an apartment, and I didn't have any family or relatives I really cared about, so things were a lot easier for me than they could have been.",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_4" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_4",
    "type": "talk_topic",
    "dynamic_line": "I've never really been a prepper, but I was into conspiracy theories.  Not as a participant, just as an observer.  I think information spread is interesting.\"  They pause.  \"I think it was in early March that I started thinking something was wrong.  Like, the riots were bad beforehand, right?  And that just seemed like normal unrest.  But then suddenly you're seeing it happening in other countries where the normal explanations don't work.  So I dug deeper, and once I did, I realized that this had been happening since January, and getting worse since then.  That was when I started to take it seriously.",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_5" } ]
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_BACKGROUND_5", "TALK_ROBOFAC_MERC_1_BACKGROUND_5_1" ],
    "type": "talk_topic",
    "dynamic_line": "But like, I was a park ranger.  I wasn't exactly making six figures, and you know how bad rent was.  I couldn't buy a ton of canned food, but what I *could* do is can things myself.  Not in tin cans, but in jars; the old way.  So every paycheck, I'd use a little bit to buy one or two big glass jars, and on the weekends I'd spend a few hours filling them up with food and sealing them.  I started brushing up at the range too.  Proud gun owner, baby.",
    "responses": [
      { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_6" },
      { "text": "What food were you canning?", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_5_1" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_5_1",
    "type": "talk_topic",
    "dynamic_line": "I bought fruit and veggies from the store for my greens, but I figured those didn't really have enough calories for the long-term, so I hunted.  To be more accurate, I poached in the park I worked at.  It was never anything huge; I had to be able to conceal this stuff, remember.  But we were on a shoestring budget as it is and we never had the people we needed, so it was trivial to bag an animal using a rifle from one of the ranger stations.  I'd dress the carcass, then leave it in a place that I could either bring with me in my truck that day or come back later to sneak it out.  I never got caught.  I'm not proud of it, but I'm not really ashamed of it, either.  Besides, venison is great."
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_6",
    "type": "talk_topic",
    "dynamic_line": "So I figured that this wasn't going to be a problem a few months down the line, right?  Just a flash in the pan.  I had my emergency stock of food in case things went bad for a little while.  Best case scenario, I never have to worry about it, things go back to normal after a bit, and I save some money on groceries for a while.  And I wanted to keep doing this for a few more weeks, but…",
    "responses": [ { "text": "But what?", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_7" } ]
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_BACKGROUND_7", "TALK_ROBOFAC_MERC_1_BACKGROUND_7_1" ],
    "type": "talk_topic",
    "dynamic_line": "March 30th happened.\"  Cranberry seems shaken, and talks a little louder for a second.  \"You remember that video, right?  That was what set off alarm bells in my head.  That shit was fucking scary.  And at that point I realized, okay, I think things are about to get bad and this is for real.",
    "responses": [
      { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_8" },
      { "text": "I don't remember the video.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_7_1" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_7_1",
    "type": "talk_topic",
    "dynamic_line": "Whoo-ee, someone was living under a rock, huh?  It was all over the news.  Video on YouTube, it was a livestream of one of the riots in Minneapolis.  A mom was…\"  They hesitate.  \"I don't want to go into detail, but it was real bad.  Real bad.  That's what set off people panicking."
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_8",
    "type": "talk_topic",
    "dynamic_line": "People started freaking out.  I did, too.  I don't know how bad things got elsewhere, but shit was flying off the shelves where I lived.  Empty racks at grocery stores everywhere you looked.  I had enough food for a few weeks, so it wasn't a problem for me, but it still shook me up bad.  Every day some horrible new shit was happening somewhere in the world, and things got just worse and worse.  Then that insanity with Rhode Island happened, and once the national emergency came out, I knew that okay, this is happening, it's actually happening.\"\n\n\"Did you know that I was still going to work that entire time?  I don't know, it just felt meditative.  I lived in a pretty rural area, so there wasn't the kind of chaos in the cities and congestion on the roads.  I could just take a side road there and have a day of quiet.  Just the woods and whoever else actually bothered to show up that day.  The park closed for visitors closed a day or two before the state of emergency, and it was really peaceful, being there alone.",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_9" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_9",
    "type": "talk_topic",
    "dynamic_line": "Then the portals happened, and you know the rest from there.  Two days later, the world was over.  There was a lot of chaos in my complex.  I just nailed shut my front door, drew all the curtains, kept my shotgun loaded, and probably slept maybe ten hours total that week.  I don't know if there was someone up in the sky watching over me, but if there was, I sure as hell owe them big time.",
    "responses": [ { "text": "How did you get here?", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_10" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_10",
    "type": "talk_topic",
    "dynamic_line": "I kind of lost track of the days.  Every day was the same; eat, check the barricades, look on the Internet, play some games with the sound off to try and distract myself.  I filled up my bathtub, and once the water went out, I'd drink from there with a lifestraw when I needed to hydrate.  Meal planning got easier after I was down to just my canned stuff.  The Internet didn't stay on for long, though, which I guess was a blessing because of how many people were sharing their fear and awful experiences in real time.  I did that routine every day until that emergency broadcast came through that no help was coming, and then I knew it was over.",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_11" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_11",
    "type": "talk_topic",
    "dynamic_line": "It took a bit for me to muster the nerve to leave, but I wanted to.  Had to see, y'know?  It was… a shock, zombies just walking in the parking lot.  Like, sure, I could look out the window, but it feels different up close.  I had my knife handy, and I didn't want to make too much noise, so that's what I used.  I stabbed one of my dead neighbors in the neck that day.\"  They smile wistfully.  \"I threw up on my shoes after the first one, but it got easier.",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_12" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_12",
    "type": "talk_topic",
    "dynamic_line": "My truck was still there, and was on half a tank of gas.  I thought, okay, this isn't gonna be easy, but I can pack my food and the things I need to take with me into the truck, and then drive to that building I know about that was so reinforced.\"  They gesture around them.  \"This building.  The Hub.  So I got some stuff into a bugout bag in the cabin and filled up the truck bed, and off I went.  The roads were bad, but I'm not a bad driver.  Zombies are slow.",
    "responses": [ { "text": "And the rest is history.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_13" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_13",
    "type": "talk_topic",
    "dynamic_line": "If only, huh?  No, not quite.  About five miles away I hit a bad pothole and skidded off the road and got stuck.  That's not a problem on its own, but a few minutes into trying to get it unstuck, I saw a big furrow of dirt coming towards me and decided, you know what, maybe I should get off the side of the road.  So I grab my bugout bag from the cabin and a little food from the bed, and I book it onto the road.  Now, I don't know what this thing was, but it hit the truck from below and *flipped it over*.  That was enough to make me say 'Nope, I can go on foot.'",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_14" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_14",
    "type": "talk_topic",
    "dynamic_line": "It took me a few days from there.  I had a heavy load, and it was slow going.  I slept on the road the first night because I was so freaked out by what I saw, but the day after I got the nerves to walk through the woods.  I had a tent, so it wasn't so bad.  Every now and then, I'd run into a zombie, or a wrecked car that still had some of them buckled in.  I left my shotgun behind in the truck, so I got better at using the knife.  It gets easier, y'know?",
    "responses": [ { "text": "[Listen.]", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_15" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_15",
    "type": "talk_topic",
    "dynamic_line": "A while later, I made it here.  The gate was open, so I just walked right in.  I tried the intercom, but nobody answered, which I'm sure you had happen to you, too.  Then I realize: this building is super reinforced, unlocked, and seems abandoned now.  Why don't I just stay here?  So I set up my stuff in this here lobby and I spend the night there.  Then I try the intercom again.",
    "responses": [ { "text": "Did they answer that time?", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_16" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_16",
    "type": "talk_topic",
    "dynamic_line": "Hoo boy, yes they did, and let me tell you, they were not happy campers about me crashing on their couch.  Now, these people don't tell me who they are, but they tell me to get off the premises immediately.  I wasn't having that.  I had been through hell and come out the other end, and I don't remember what I said to them, but it was along the lines of 'I have nowhere to go, and your building is nice and cozy, so if you want me to leave, you can come out here and make me.'\"  They laugh.  \"They weren't expecting me to bite back.  So I turn off the intercom and I go eat lunch.  When I go back again, the first thing they ask is if I want a job.",
    "responses": [ { "text": "Just like that?", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_17" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_17",
    "type": "talk_topic",
    "dynamic_line": "Well, no.  It was obvious they just wanted to get rid of me, but I decided I wanted to show that I was useful.  They tell me to find a crashed drone somewhere in the surrounding area and bring it back here.  No directions, of course.  Y'know, go find this drone in the middle of the woods, it'll be easy.  But I had some tools in my bag, right?  And yours truly has repaired some drones in the park service.\"\n\n\"So it takes me a whole-ass afternoon, but I find their stupid drone stuck in a tree.  I can see the camera's still on, so I pick it up and I tell the lens: 'Hey, you want me to fix it too?'  And I do.  It was just a cracked frame and the wiring to the rotors was sliced up.  The propellers themselves were fine.  So I bring it out of the woods and turn it off.  Then I open up the casing, solder up the wires, and use superglue to hold the frame together, which wasn't perfect, but I figured it'd hold until it got back home.  Then I turned it back on, and wouldn't you know, it immediately starts up and sits there for a minute, like 'What the fuck?  Why am I working again?'  And then it flies away, and I walk my smug ass back home.",
    "responses": [ { "text": "And *now* the rest is history.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_18" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_18",
    "type": "talk_topic",
    "dynamic_line": "You got it.\"  Cranberry grins.  \"I ask them if their drone got home in one piece, and it did.  They said that my work wasn't bad at all and did a little impromptu interview asking where I learned my skills and how I got to the building.  I got the canned intro of 'we underestimated your usefulness', and like you say, the rest is history.  Now we're here.",
    "responses": [
      {
        "text": "That's quite the story.  You seem to be feeling pretty good, in spite of the world ending.",
        "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_19"
      }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_19",
    "type": "talk_topic",
    "dynamic_line": "I guess I am, yeah.  It feels nice to be putting all my skills to use instead of working an underpaid job to walk around the same woods flying a quadcopter around and being a glorified PR rep to cranky parents who are only at the park because they promised their kids they'd go.  Mind you, I'd still go back to it if I could.\"  Their expression falters a little.  \"We all had our struggles, but things are different now, you know?  We get to worry about the future in a whole new way; an existential way that we never had to consider before, not really.  Sure, there was the occasional nuke scare, but as a society, we had things pretty good.  Unless the dead stop getting back up, I… don't think things are going to ever go back to normal.\"\n\nCranberry pauses for a moment, then shakes it off.  \"But… right now, I'm feeling at peace with everything, despite it all.  Maybe I'm just in shock, and it'll all come crashing down one of these days.  Things might get worse, and they may never get better.  But I feel alright.  And I think that's enough for me.",
    "responses": [ { "text": "Thank you for telling me.", "topic": "TALK_ROBOFAC_MERC_1_BACKGROUND_END" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_END",
    "type": "talk_topic",
    "dynamic_line": "*smiles at you, genuine and warm.  \"It feels nice to tell it.  You're welcome.\"",
    "speaker_effect": {
      "effect": { "u_add_var": "general_robofac_merc_1_heard_backstory", "value": "yes" },
      "sentinel": "robofac_merc_1_background_shared"
    },
    "responses": [ { "text": "[Spend a while in silence.]", "topic": "TALK_DONE" }, { "text": "[Leave.]", "topic": "TALK_DONE" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_BACKGROUND_NO",
    "type": "talk_topic",
    "dynamic_line": "I'm sorry, that's a bit personal.  Like, you seem alright, but that's kind of heavy stuff, y'know?  Maybe I can tell you another time.",
    "responses": [ { "text": "Alright.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" } ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_GOLD_MISSION",
    "type": "talk_topic",
    "dynamic_line": "I guess I am, yeah.  Feels like a stupid fetch quest.\"  They suddenly pause.  \"Hey.  If you happen across any gold out in the world, I'll pay you to bring it back for me.  Right now my assignment stipulates eight scrip per kilo, and I'd be willing to give you all of that.  I just want something else to do.  Just maybe don't mention it to the intercom, alright?  This is supposed to be my job.",
    "responses": [
      {
        "text": "You got it.  I'll let you know if I find any gold.",
        "effect": { "u_add_var": "general_robofac_merc_1_has_gold_deal", "value": "yes" },
        "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION_ACCEPTED"
      },
      { "text": "Actually, I don't think I have time for that, sorry.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_GOLD_MISSION_ACCEPTED",
    "type": "talk_topic",
    "dynamic_line": "Thanks a lot."
  },
  {
    "id": [ "TALK_ROBOFAC_MERC_1_GOLD_MISSION_QUERY", "TALK_ROBOFAC_MERC_1_GOLD_MISSION_TRADE" ],
    "type": "talk_topic",
    "dynamic_line": "Got some gold for me?",
    "responses": [
      {
        "text": "[200 gold] Here's a batch for you.",
        "condition": { "u_has_items": { "item": "gold_small", "count": 200 } },
        "effect": [
          { "u_consume_item": "gold_small", "count": 200 },
          { "u_spawn_item": "RobofacCoin", "count": 8 },
          { "math": [ "n_npc_trust()++" ] },
          { "math": [ "n_npc_value()++" ] }
        ],
        "topic": "TALK_ROBOFAC_MERC_1_GOLD_MISSION_TRADE"
      },
      { "text": "I don't have 200 gold for you right now.", "topic": "TALK_ROBOFAC_MERC_1_MAIN" }
    ]
  },
  {
    "id": "TALK_ROBOFAC_MERC_1_GOLD_MISSION_TRADE",
    "type": "talk_topic",
    "dynamic_line": [
      "I appreciate it.  Here's the scrip; don't spend it all in one place.",
      "Honestly, sometimes I feel like an ATM.",
      "Thanks.  I never thought I'd get exhausted of carrying pure gold around, but here we are.",
      "Exchanging my money for goods and services.  Just as the founding fathers intended."
    ],
    "speaker_effect": {
      "effect": [
        { "u_add_var": "general_robofac_merc_1_gold_mission_complete", "value": "yes" },
        { "u_add_var": "general_robofac_merc_1_helped_with_missions", "value": "yes" }
      ],
      "sentinel": "robofac_merc_1_first_gold_trade"
    }
  },
  {
    "id": "MISSION_ROBOFAC_MERC_1_RADIO",
    "type": "mission_definition",
    "name": { "str": "Active Noise Control" },
    "description": "Investigate Hub 01's radio tower, discover the source of the interference, and fix the problem.",
    "goal": "MGOAL_KILL_MONSTER",
    "difficulty": 5,
    "value": 0,
    "start": {
      "effect": [ "follow_only", { "npc_add_var": "general_robofac_merc_1_temporal_follower", "value": "yes" } ],
      "assign_mission_target": { "om_terrain": "radio_tower_1", "om_special": "hub_01", "reveal_radius": 1 },
      "update_mapgen": [
        { "place_monster": [ { "monster": "mon_leech_radio", "x": 12, "y": 10, "target": true } ] },
        { "place_nested": [ { "chunks": [ "robofac_radio_leech" ], "x": 0, "y": 0 } ] }
      ]
    },
    "end": { "effect": [ { "add_mission": "MISSION_ROBOFAC_MERC_1_RETURN_TO_HUB" } ] },
    "origins": [ "ORIGIN_SECONDARY" ],
    "has_generic_rewards": false,
    "dialogue": {
      "describe": "…",
      "offer": "Well… a little while ago, I set up a radio transmitter in the radio tower not far from here, but apparently it's stopped transmitting.  If you're willing to back me up while I check it out, I'll owe you a favor.",
      "accepted": "Alright, let's be off.  You don't mind taking point, right?",
      "rejected": "Well, thanks for offering.",
      "advice": "I'm sure we'll figure it out once there.  Bring a good weapon and some ammo just in case, if you can; no idea what insanity <the_cataclysm> has brought us this time.",
      "inquire": "You think we fixed the problem?",
      "success": "Sure seems like it.  What even was that…?  Eh, doesn't matter.  Let's go back to the Hub; hopefully the tower's working now.",
      "success_lie": "*frowns at you.  \"I've been with you this whole time, dude.  C'mon.",
      "failure": "…"
    }
  },
  {
    "id": "MISSION_ROBOFAC_MERC_1_RETURN_TO_HUB",
    "type": "mission_definition",
    "name": { "str": "Return to Hub 01" },
    "description": "With the source of the radio tower's interference fixed, return to Hub 01 with Cranberry.",
    "goal": "MGOAL_GO_TO_TYPE",
    "destination": "robofachq_surface_entrance",
    "difficulty": 0,
    "value": 0,
    "start": {
      "assign_mission_target": { "om_terrain": "robofachq_surface_entrance", "om_special": "hub_01", "reveal_radius": 1, "z": 0 }
    },
    "end": {
      "effect": [
        "stop_following",
        { "math": [ "u_favor_owed_to_u_robofac_merc_1_favor++" ] },
        { "npc_lose_var": "general_robofac_merc_1_temporal_follower" },
        { "u_add_var": "general_robofac_merc_1_helped_with_missions", "value": "yes" },
        { "math": [ "n_npc_trust()", "+=", "2" ] },
        { "math": [ "n_npc_value()", "+=", "2" ] }
      ]
    },
    "origins": [ "ORIGIN_SECONDARY" ],
    "has_generic_rewards": false,
    "dialogue": {
      "describe": "…",
      "offer": "Let's get back home.",
      "accepted": "Alright, let's be off.  You don't mind taking point, right?",
      "rejected": "…",
      "advice": "Hey, you have a map, don't you?  You can use mine, if you need.",
      "inquire": "Are we there yet?",
      "success": "Thanks a lot for having my back.  Like I said, I owe you one.",
      "success_lie": "…",
      "failure": "…"
    }
  }
]
