Repository: pioneerspacesim/pioneer
Pull request #4746: New mission: Find person
Author: login: robothauler
Labels: name: New feature
Created: 2019-11-23T17:12:43Z | Merged: 2025-05-11T10:53:15Z

The player has to find a person or a person with a ship and hand over a message. Which means hopping from station to station. Then return, or transport the person back. The ideas are taken from https://forum.pioneerspacesim.net/viewtopic.php?f=3&t=487. I tried to add some surprises like pirates firing missiles or mercenaries who try to intercept if close to the planet.

Unfortunately, merging this will cause two issues.

1. ~~The missile launch is not detected. No warning.~~ ~~No police action.~~
2. Close to a station, the mercenary can fire what he can. But the player is immediately attacked by the police.

While 2. can be solved later. ~~It would be great if someone can take care of 1. e.g. play a warning sound and trigger an event so that other modules can take action.~~


Diff:
diff --git a/data/lang/module-findperson/en.json b/data/lang/module-findperson/en.json
new file mode 100644
index 0000000000..437f845e23
--- /dev/null
+++ b/data/lang/module-findperson/en.json
@@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. I have transferred the document to you."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "MISSING PERSON"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her that my patience is running thin. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him that my patience is running thin. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence due to a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence due to a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over your dead body!"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, Please tell this {client} I've nothing to say. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message?"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this silly message to me? You better get out of here!"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
+  },
+  "RISK_FEMALE_5": {
+    "description": "",
+    "message": "In my opinion, {wanted} is completely insane. I advise you to be careful!"
+  },
+  "RISK_MALE_1": {
+    "description": "",
+    "message": "No, there's no risk."
+  },
+  "RISK_MALE_2": {
+    "description": "",
+    "message": "I expect no trouble. But who knows?"
+  },
+  "RISK_MALE_3": {
+    "description": "",
+    "message": "I'm not sure. He's a curious guy."
+  },
+  "RISK_MALE_4": {
+    "description": "",
+    "message": "{wanted} is a paranoid nut. Be careful!"
+  },
+  "RISK_MALE_5": {
+    "description": "",
+    "message": "Oh yes indeed. {wanted} is a maniac. You should be prepared for everything!"
+  },
+  "SET_AS_TARGET": {
+    "description": "",
+    "message": "Set as navigation target"
+  },
+  "SET_RETURN_ROUTE": {
+    "description": "",
+    "message": "Set return route"
+  },
+  "SHIP": {
+    "description": "",
+    "message": "Ship:"
+  },
+  "SPACEPORT": {
+    "description": "",
+    "message": "Spaceport:"
+  },
+  "SUCCESS_ATK_1": {
+    "description": "",
+    "message": "What? {wanted} attacked you? Please accept this money as compensation!"
+  },
+  "SUCCESS_ATK_2": {
+    "description": "",
+    "message": "Really? {wanted} attacked you? Unbelievable! Whatever. I transferred the money."
+  },
+  "SUCCESS_ATK_3": {
+    "description": "",
+    "message": "You met {wanted} and survived? Great! Here's your money."
+  },
+  "SUCCESS_INT_1": {
+    "description": "",
+    "message": "I heard you had trouble. Good to see you after all. I've paid you in full."
+  },
+  "SUCCESS_INT_2": {
+    "description": "",
+    "message": "You had a disagreement with a mercenary? Well, here's your compensation!"
+  },
+  "SUCCESS_INT_3": {
+    "description": "",
+    "message": "I just paid you. I heard you had a mercenary on your neck. Great job!"
+  },
+  "SUCCESS_MSG_1": {
+    "description": "",
+    "message": "Thank you for this service. I have paid the fee."
+  },
+  "SUCCESS_MSG_2": {
+    "description": "",
+    "message": "Thanks for the service. Your salary has been transferred."
+  },
+  "SUCCESS_MSG_3": {
+    "description": "",
+    "message": "Good job! I have transferred the money."
+  },
+  "SUCCESS_MSG_4": {
+    "description": "",
+    "message": "Thank you very much! I've paid you in full."
+  },
+  "SUCCESS_MSG_5": {
+    "description": "",
+    "message": "You found {wanted}? Great! Here's your payment."
+  },
+  "SYSTEM": {
+    "description": "",
+    "message": "System:"
+  },
+  "TIP_FEMALE_1": {
+    "description": "",
+    "message": "I'm not sure, but I think {wanted} is currently at {station}."
+  },
+  "TIP_FEMALE_2": {
+    "description": "",
+    "message": "I think I know the person you are looking for. I have seen her at {station} recently."
+  },
+  "TIP_FEMALE_3": {
+    "description": "",
+    "message": "I know {wanted}. You can find her at {station}."
+  },
+  "TIP_FEMALE_4": {
+    "description": "",
+    "message": "I think I know a person that fits your description. You should visit {station} for more information."
+  },
+  "TIP_MALE_1": {
+    "description": "",
+    "message": "I think {wanted} is currently at {station}. But I'm not sure!"
+  },
+  "TIP_MALE_2": {
+    "description": "",
+    "message": "I think I know {wanted}. I have seen him at {station}."
+  },
+  "TIP_MALE_3": {
+    "description": "",
+    "message": "You are looking for {wanted}?. He is currently at {station}."
+  },
+  "TIP_MALE_4": {
+    "description": "",
+    "message": "Your description matches a person I met near {station}."
+  },
+  "TRANSMITTING_MSG": {
+    "description": "Message from the ship's computer",
+    "message": "Transmitting message to ship {shipid}"
+  },
+  "WANTED": {
+    "description": "",
+    "message": "Person wanted:"
+  },
+  "YOU_DO_NOT_HAVE_A_CABIN": {
+    "description": "",
+    "message": "Sorry, you do not have a passenger cabin."
+  }
+}
diff --git a/data/modules/FindPerson/FindPerson.lua b/data/modules/FindPerson/FindPerson.lua
new file mode 100644
index 0000000000..0fcb538fb3
--- /dev/null
+++ b/data/modules/FindPerson/FindPerson.lua
@@ -0,0 +1,551 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = utils.round(due, 3600),
+		risk      = risk,
+		urgency   = urgency,
+		reward    = utils.round(reward, 100),
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for _ = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*24*60*60 then -- five day timeout
+			ad.station:RemoveAdvert(ref)
+		end
+	end
+	if Engine.rand:Integer(10*24*60*60) < 60*60 then -- roughly once every ten days
+		makeAdvert(station)
+	end
+end
+
+local onShipFiring = function (ship)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.interceptor == ship and not mission.surprise then
+			local greeting = "MERCENARY_GREETING_" .. (mission.wanted.female and "FEMALE" or "MALE")
+			local msg = string.interp(l[greeting .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(greeting))], { wanted = mission.wanted.name })
+			Comms.ImportantMessage(msg, ship.label)
+			mission.surprise = true
+		end
+	end
+end
+
+local onShipHit = function (ship, attacker)
+	if ship:IsPlayer() then return end
+	if attacker == nil then return end
+
+	if attacker:isa('Ship') then
+		for ref, mission in pairs(missions) do
+			if mission.ship == ship then
+				ship:AIKill(attacker)
+				break
+			end
+		end
+	end
+end
+
+local onShipDestroyed = function (ship, attacker)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.ship == ship then
+			mission.ship = nil
+			break
+		end
+		if mission.interceptor == ship then
+			mission.interceptor = nil
+			break
+		end
+	end
+end
+
+local onFrameChanged = function (player)
+	if not player:isa("Ship") or not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and player.frameBody
+			and player.frameBody.path == Space.GetBody(mission.destination:GetSystemBody().parent.index).path
+			and not mission.flavour.ship and not mission.interceptor then
+
+			local riskmargin = Engine.rand:Number(-0.3, 0.0) -- Add some random luck
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				-- The wanted person or one of his/her enemies has hired a mercenary to intercept
+				local threat = 10.0 + mission.risk * 25.0
+				local ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), MercenaryTemplate, threat)
+				mission.interceptor = ship
+				if mission.destination.type == "STARPORT_SURFACE" then
+					ship:AIEnterLowOrbit(Space.GetBody(mission.destination:GetSystemBody().parent.index))
+				end
+				Timer:CallAt(Game.time + 5, function () ship:AIKill(player) end)
+			end
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onEnterSystem = function (player)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and mission.status == "ACTIVE" and mission.flavour.ship then
+
+			local ship, pirate_msg
+			local threat = 10.0 + mission.risk * 25.0
+			local riskmargin = Engine.rand:Number(-0.3, 0.3) -- Add some random luck
+
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				ship = ShipBuilder.MakeShipNear(player, PirateTemplate, threat, 50, 100)
+				ship:SetLabel(mission.shipid)
+				pirate_msg = string.interp(l["PIRATE_GREETING_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_GREETING"))], { client = mission.client.name })
+				Comms.ImportantMessage(pirate_msg, ship.label)
+				Comms.ImportantMessage(string.interp(l.TRANSMITTING_MSG, { shipid = mission.shipid }))
+				Timer:CallAt(Game.time + 5, function ()
+					riskmargin = Engine.rand:Number(-0.3, 0.3)
+					if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+						pirate_msg = string.interp(l["PIRATE_TAUNTS_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_TAUNTS"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						mission.surprise = true
+						ship:FireMissileAt("any", player)
+						ship:AIKill(player)
+					else
+						pirate_msg = string.interp(l["PIRATE_ANSWER_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_ANSWER"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						ship:AIDockWith(Space.GetBody(mission.destination.bodyIndex))
+					end
+					mission.status = "PENDING_RETURN"
+				end)
+			else
+				ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), PirateTemplate, threat)
+				ship:SetLabel(mission.shipid)
+			end
+			mission.ship = ship
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onShipDocked = function (player, station)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		local msg
+
+		if mission.interceptor then
+			if station.type == "STARPORT_SURFACE" then
+				mission.interceptor:AIEnterLowOrbit(Space.GetBody(station:GetSystemBody().parent.index))
+			else
+				mission.interceptor:AIFlyTo(station)
+			end
+		end
+
+		if mission.status == "PENDING_RETURN" then
+			if mission.domicile == station.path then
+				local reputation = 2
+				local oldReputation = Character.persistent.player.reputation
+				if Game.time <= mission.due then
+					if mission.surprise then
+						if mission.flavour.ship then
+							msg = string.interp(l["SUCCESS_ATK_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_ATK"))], { wanted = mission.wanted.name })
+						else
+							msg = string.interp(l["SUCCESS_INT_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_INT"))], { wanted = mission.wanted.name })
+						end
+					else
+						msg = string.interp(l["SUCCESS_MSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_MSG"))], { wanted = mission.wanted.name })
+					end
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation + reputation
+					player:AddMoney(mission.reward)
+				else
+					msg = string.interp(l["FAILUREMSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("FAILUREMSG"))], { wanted = mission.wanted.name })
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation - reputation
+				end
+				if mission.flavour.taxi then
+					Passengers.DisembarkPassenger(player, mission.wanted)
+				end
+				Event.Queue("onReputationChanged", oldReputation, Character.persistent.player.killcount,
+					Character.persistent.player.reputation, Character.persistent.player.killcount)
+				mission.wanted:UnSave() -- remove character from the persistent characters table
+				mission:Remove()
+				missions[ref] = nil
+			end
+		else
+			if mission.destination == station.path then
+				msg = string.interp(l["GREETING_" .. mission.flavour.id], { client = mission.client.name })
+				Comms.ImportantMessage(msg, mission.wanted.name)
+				if mission.flavour.taxi then
+					if Passengers.CountFreeBerths(player) > 0 then
+						Passengers.EmbarkPassenger(player, mission.wanted)
+						mission.status = "PENDING_RETURN"
+					else
+						-- cabin occupied or player has removed cabin?
+						Comms.ImportantMessage(l.YOU_DO_NOT_HAVE_A_CABIN, mission.wanted.name)
+					end
+				else
+					mission.status = "PENDING_RETURN"
+				end
+			else
+				-- do nothing if not in the right system or a tipster was already there
+				if mission.destination:IsSameSystem(Game.system.path) and not mission.tipster then
+					-- don't increase probability if last station is current station
+					if station.path ~= mission.visited[#mission.visited] then
+						table.insert(mission.visited, station.path)
+					end
+					if #mission.visited > Engine.rand:Number(4) then
+						local tipster = Character.New()
+						local tip = "TIP_" .. (mission.wanted.female and "FEMALE" or "MALE")
+						msg = string.interp(l[tip .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(tip))], { wanted = mission.wanted.name, station = mission.destination:GetSystemBody().name })
+						Comms.ImportantMessage(msg, tipster.name)
+						mission.tipster = true
+					end
+				end
+			end
+		end
+	end
+end
+
+local onShipUndocked = function (player, station)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.interceptor then
+			mission.interceptor:AIKill(player)
+		end
+	end
+end
+
+local onLeaveSystem = function (ship)
+	if ship:IsPlayer() then
+		nearbysystems = nil
+		for ref, mission in pairs(missions) do
+			mission.ship = nil
+			mission.interceptor = nil
+		end
+	end
+end
+
+local onReputationChanged = function (oldRep, oldKills, newRep, newKills)
+	for ref, ad in pairs(ads) do
+		local oldQualified = isQualifiedFor(oldRep, ad)
+		if isQualifiedFor(newRep, ad) ~= oldQualified then
+			Event.Queue("onAdvertChanged", ad.station, ref);
+		end
+	end
+end
+
+local loaded_data
+
+local onGameStart = function ()
+	if loaded_data and loaded_data.ads then
+		ads = {}
+		missions = {}
+
+		for _, ad in pairs(loaded_data.ads) do
+			placeAdvert(ad.station, ad)
+		end
+		missions = loaded_data.missions
+		loaded_data = nil
+	end
+end
+
+local onGameEnd = function ()
+	nearbysystems = nil
+end
+
+local buildMissionDescription = function (mission)
+	local ui = require 'pigui'
+	local desc = {}
+	local dist = Game.system and string.format("%.2f", Game.system:DistanceTo(mission.location)) or "???"
+	local domicileDist = Game.system and string.format("%.2f", Game.system:DistanceTo(mission.domicile)) or "???"
+	local danger = getRiskMsg(mission)
+
+	desc.description = mission.introtext:interp({
+		client = mission.client.name,
+		wanted = mission.wanted.name,
+		company = mission.company,
+		system = mission.destination:GetStarSystem().name,
+		sectorx = mission.destination.sectorX,
+		sectory = mission.destination.sectorY,
+		sectorz = mission.destination.sectorZ,
+		shipid = mission.shipid,
+		domicile = mission.domicile:GetSystemBody().name,
+		cash = ui.Format.Money(mission.reward, false),
+		dist = dist
+	})
+
+	desc.location = mission.location
+	desc.client = mission.client
+	desc.returnLocation = mission.domicile
+
+	desc.details = {
+		{ l.WANTED, mission.wanted.name },
+		{ l.SYSTEM, ui.Format.SystemPath(mission.location) },
+		{ l.DISTANCE, dist .. " " .. lc.UNIT_LY },
+		mission.flavour.ship and { l.SHIP, mission.shipid },
+		false,
+		{ l.CLIENT, mission.client.name },
+		{ l.SYSTEM, ui.Format.SystemPath(mission.domicile) },
+		{ l.SPACEPORT, mission.domicile:GetSystemBody().name },
+		{ l.DISTANCE, domicileDist .. " " .. lc.UNIT_LY },
+		mission.flavour.company and { l.COMPANY, mission.company },
+		false,
+		{ l.DEADLINE, ui.Format.Date(mission.due) },
+		{ l.DANGER, string.interp(danger, { wanted = mission.wanted.name }) },
+	}
+
+	return desc
+end
+
+local serialize = function ()
+	return { ads = ads, missions = missions }
+end
+
+local unserialize = function (data)
+	loaded_data = data
+end
+
+Event.Register("onCreateBB", onCreateBB)
+Event.Register("onUpdateBB", onUpdateBB)
+Event.Register("onFrameChanged", onFrameChanged)
+Event.Register("onEnterSystem", onEnterSystem)
+Event.Register("onLeaveSystem", onLeaveSystem)
+Event.Register("onShipDocked", onShipDocked)
+Event.Register("onShipUndocked", onShipUndocked)
+Event.Register("onShipFiring", onShipFiring)
+Event.Register("onShipHit", onShipHit)
+Event.Register("onShipDestroyed", onShipDestroyed)
+Event.Register("onGameStart", onGameStart)
+Event.Register("onGameEnd", onGameEnd)
+Event.Register("onReputationChanged", onReputationChanged)
+
+Mission.RegisterType("FindPerson", l.FIND_PERSON, buildMissionDescription)
+
+Serializer:Register("FindPerson", serialize, unserialize)
+


Reviews:
user: login: impaktor
body: I've made some comments, mainly suggestions on the en.json file. I see you have many of the strings doubled, to have a female and male gendered sentence. I don't think any other module does that, but I guess that helps with translation for some languages. I've not repeated my comments for both male/female versions of sentences, so I'll leave that up to you.

I have yet to go through the Lua file. I'm curious how a player can find an NPC in a "bar" or "shipyard", or just "anywhere in System X", that the language file seems to suggest should be possible.
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2019-12-24T15:15:53Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2019-12-26T19:33:46Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2019-12-26T19:42:14Z
user: login: impaktor
body: I have yet to go through the actual Lua file, but I've done the en.json / language strings, and glanced over the C++ commit. Perhaps @Web-eWorks, or other team-C++ people could have a quick gander at the commit that implements an Alert Missile Warning state in Ship.cpp:
dc8b03179220e9acd9b6048be8e07d9229f32e56

(I'll get cracking on the Lua file now)
state: COMMENTED
author_association: MEMBER
submitted_at: 2019-12-29T11:23:32Z
user: login: impaktor
state: COMMENTED
author_association: MEMBER
submitted_at: 2019-12-29T11:25:06Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2019-12-29T17:24:36Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2019-12-29T17:36:31Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2019-12-29T17:42:12Z
user: login: sturnclaw
state: COMMENTED
author_association: MEMBER
submitted_at: 2019-12-29T18:39:21Z
user: login: impaktor
state: APPROVED
author_association: MEMBER
submitted_at: 2020-01-01T18:24:51Z
user: login: impaktor
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-02-22T09:42:57Z
user: login: impaktor
body: I've tried one mission, was of type visit some stations, then get tip of where to go, go there, then return. Nice.

Have some additional thoughts:

## LSP
I recommend you use a LSP (language server protocol) in your editor (they all support it nowadays, unless you're in Notepad) e.g. on Arch Linux I use lua-language-server [upstream source](https://luals.github.io/) it shows various issues in the code (and gives you variable auto-complete, bells and whistles)

## debug info
This is just a suggestion, but for your own sanity (and who ever else will be working on this code), displaying values of internal active mission varialbes to the debug window (Ctrl+i) helps a lot with future development, testing, and debugging, and will pay off in the long run. Look at NewsEventCommodity module code and how it's usied in the debug window (Ctrl+i, click the "i"-icon).

(I know sturnclaw has mentioned grouping mission module debug tabs in some nifty way in the future, but for now it can play nice with the other tabs in the debug window.)

## other thoughts
I note there are several different versions of this mission, i.e. quite diverse set of missions, that each will have to be tested. some look to be taxi-missions requiring empty cabin. I've not tested those. (spawning these different types of missions on the BBS could be implemented in the debug window).
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-09T11:00:19Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T16:24:15Z
user: login: impaktor
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-15T11:21:52Z
user: login: zonkmachine
body: Looks fine to me. Maybe a bit repetitive when you've got a lot of ads at the same time.
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-25T17:07:02Z
user: login: impaktor
body: Left some suggestions (I did not duplicate them for male/female flavor).
Do with them as you wish.
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-26T16:59:43Z
user: login: zonkmachine
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-02T17:31:17Z
user: login: zonkmachine
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-03T14:27:31Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T16:22:25Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T16:30:04Z
user: login: zonkmachine
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-03T16:33:04Z
user: login: robothauler
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-03T16:35:02Z
user: login: zonkmachine
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-03T20:34:39Z

Review comments:
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Sounds strange to me to start the sentence with double courtesy phrase.
created_at: 2019-12-24T14:28:39Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Also, I think we do UK spelling ("favour")
created_at: 2019-12-24T14:32:20Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: So a woman looking for a previous sexual partner? Or just "friend", as the Male version of this string suggests?
created_at: 2019-12-24T14:33:13Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: "She don't trust", isn't it "doesn't"? (and same with the male string)
created_at: 2019-12-24T14:37:01Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I'd change "the apartment" to "an apartment", at least it was very unclear who's apartment it was talking about until the end of the sentence, when it's revealed that it's an "unknown" person's apartment.
created_at: 2019-12-24T14:43:33Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: This sounds a bit lame in my ears. If it's someone attacking the player, I'd suggest:

"You want to meet {wanted}? I will make you meet your maker first!", or similar.
created_at: 2019-12-24T14:48:44Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: "for" or "from"?
created_at: 2019-12-24T14:49:43Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, I've nothing to say. Please tell this {client}. Have a nice day."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Swap sentence order? I.e. "Please tell this {client} I've nothing to say."
created_at: 2019-12-24T14:52:12Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, I've nothing to say. Please tell this {client}. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message. Go ahead!"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Second sentence is redundant, and ending with a question instead of exclamation feels better, I think.
"I heard you were supposed to give me a message?"
created_at: 2019-12-24T14:53:28Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, I've nothing to say. Please tell this {client}. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message. Go ahead!"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this stupid message to me? You better get out of here!"
+  },
+  "PROGRESS": {
+    "description": "",
+    "message": "Mission progress:"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
+  },
+  "RISK_FEMALE_5": {
+    "description": "",
+    "message": "In my opinion, {wanted} is completely insane. I advise you to be careful!"
+  },
+  "RISK_MALE_1": {
+    "description": "",
+    "message": "No, there's no risk."
+  },
+  "RISK_MALE_2": {
+    "description": "",
+    "message": "I expect no trouble. But who knows?"
+  },
+  "RISK_MALE_3": {
+    "description": "",
+    "message": "I'm not sure. He's a curious guy."
+  },
+  "RISK_MALE_4": {
+    "description": "",
+    "message": "{wanted} is a paranoid nut. Be careful!"
+  },
+  "RISK_MALE_5": {
+    "description": "",
+    "message": "Oh yes indeed. {wanted} is a maniac. You should be prepared for everything!"
+  },
+  "SET_AS_TARGET": {
+    "description": "",
+    "message": "Set as navigation target"
+  },
+  "SET_RETURN_ROUTE": {
+    "description": "",
+    "message": "Set return route"
+  },
+  "SHIP": {
+    "description": "",
+    "message": "Ship:"
+  },
+  "SPACEPORT": {
+    "description": "",
+    "message": "Spaceport:"
+  },
+  "SUCCESS_ATK_1": {
+    "description": "",
+    "message": "What? {wanted} attacked you? Please accept this money as compensation!"
+  },
+  "SUCCESS_ATK_2": {
+    "description": "",
+    "message": "Really? {wanted} attacked you? Unbelievable! Whatever. I transferred the money."
+  },
+  "SUCCESS_ATK_3": {
+    "description": "",
+    "message": "You beat {wanted}? Great! Here's your money."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Should it really be "beat"? Not "meet"?
created_at: 2019-12-24T14:56:18Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, I've nothing to say. Please tell this {client}. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message. Go ahead!"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this stupid message to me? You better get out of here!"
+  },
+  "PROGRESS": {
+    "description": "",
+    "message": "Mission progress:"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
+  },
+  "RISK_FEMALE_5": {
+    "description": "",
+    "message": "In my opinion, {wanted} is completely insane. I advise you to be careful!"
+  },
+  "RISK_MALE_1": {
+    "description": "",
+    "message": "No, there's no risk."
+  },
+  "RISK_MALE_2": {
+    "description": "",
+    "message": "I expect no trouble. But who knows?"
+  },
+  "RISK_MALE_3": {
+    "description": "",
+    "message": "I'm not sure. He's a curious guy."
+  },
+  "RISK_MALE_4": {
+    "description": "",
+    "message": "{wanted} is a paranoid nut. Be careful!"
+  },
+  "RISK_MALE_5": {
+    "description": "",
+    "message": "Oh yes indeed. {wanted} is a maniac. You should be prepared for everything!"
+  },
+  "SET_AS_TARGET": {
+    "description": "",
+    "message": "Set as navigation target"
+  },
+  "SET_RETURN_ROUTE": {
+    "description": "",
+    "message": "Set return route"
+  },
+  "SHIP": {
+    "description": "",
+    "message": "Ship:"
+  },
+  "SPACEPORT": {
+    "description": "",
+    "message": "Spaceport:"
+  },
+  "SUCCESS_ATK_1": {
+    "description": "",
+    "message": "What? {wanted} attacked you? Please accept this money as compensation!"
+  },
+  "SUCCESS_ATK_2": {
+    "description": "",
+    "message": "Really? {wanted} attacked you? Unbelievable! Whatever. I transferred the money."
+  },
+  "SUCCESS_ATK_3": {
+    "description": "",
+    "message": "You beat {wanted}? Great! Here's your money."
+  },
+  "SUCCESS_INT_1": {
+    "description": "",
+    "message": "I heard you had trouble. Good to see you after all. I've paid you in full."
+  },
+  "SUCCESS_INT_2": {
+    "description": "",
+    "message": "You had a disagreement with a mercenary? Well, here's your compensation!"
+  },
+  "SUCCESS_INT_3": {
+    "description": "",
+    "message": "I just paid you. I heard you had a mercenary on your neck. Great job!"
+  },
+  "SUCCESS_MSG_1": {
+    "description": "",
+    "message": "Thank you for this service. I have paid the fee."
+  },
+  "SUCCESS_MSG_2": {
+    "description": "",
+    "message": "Thanks for the service. The salary was transferred."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I prefer: "Your salary"
created_at: 2019-12-24T14:57:12Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I prefer "_the_ data has been copied" 
created_at: 2019-12-24T14:58:36Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: "Excuse me Sir, _but_ I need a pilot who has more experience."
created_at: 2019-12-24T15:00:15Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: "gonna" might sting in some eyes. Might be fine for very informal talk, but if conversation is in writing, e.g. through a BBS, I'd prefer "I will".

(I don't think we've decided if the BBS is a visi-phone system, or how it actually functions).
created_at: 2019-12-24T15:03:02Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
path: data/lang/module-findperson/en.json
user: login: robothauler
body: This is an answer from the pirate with a return message for the client.
created_at: 2019-12-26T19:33:45Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,554 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. Data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find person in the {system} system. Pay {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Pilot needed for a search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "SEARCH MISSION. Find person in the {system} system."
+  },
+  "ADTEXT_4": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED. Compensation for expenses {cash}."
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, I need a pilot who has more experience."
+  },
+  "DENY_2": {
+    "description": "",
+    "message": "Sorry, I don't have time for you."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I'm gonna hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "How do you do? Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favor. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old girlfriend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She don't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He don't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside the apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there a risk?"
+  },
+  "LY": {
+    "description": "light year",
+    "message": "ly"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting her!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will prevent you from meeting him!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, I've nothing to say. Please tell this {client}. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message. Go ahead!"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this stupid message to me? You better get out of here!"
+  },
+  "PROGRESS": {
+    "description": "",
+    "message": "Mission progress:"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
+  },
+  "RISK_FEMALE_5": {
+    "description": "",
+    "message": "In my opinion, {wanted} is completely insane. I advise you to be careful!"
+  },
+  "RISK_MALE_1": {
+    "description": "",
+    "message": "No, there's no risk."
+  },
+  "RISK_MALE_2": {
+    "description": "",
+    "message": "I expect no trouble. But who knows?"
+  },
+  "RISK_MALE_3": {
+    "description": "",
+    "message": "I'm not sure. He's a curious guy."
+  },
+  "RISK_MALE_4": {
+    "description": "",
+    "message": "{wanted} is a paranoid nut. Be careful!"
+  },
+  "RISK_MALE_5": {
+    "description": "",
+    "message": "Oh yes indeed. {wanted} is a maniac. You should be prepared for everything!"
+  },
+  "SET_AS_TARGET": {
+    "description": "",
+    "message": "Set as navigation target"
+  },
+  "SET_RETURN_ROUTE": {
+    "description": "",
+    "message": "Set return route"
+  },
+  "SHIP": {
+    "description": "",
+    "message": "Ship:"
+  },
+  "SPACEPORT": {
+    "description": "",
+    "message": "Spaceport:"
+  },
+  "SUCCESS_ATK_1": {
+    "description": "",
+    "message": "What? {wanted} attacked you? Please accept this money as compensation!"
+  },
+  "SUCCESS_ATK_2": {
+    "description": "",
+    "message": "Really? {wanted} attacked you? Unbelievable! Whatever. I transferred the money."
+  },
+  "SUCCESS_ATK_3": {
+    "description": "",
+    "message": "You beat {wanted}? Great! Here's your money."
path: data/lang/module-findperson/en.json
user: login: robothauler
body: "Beat"! But ... the player has always the choice to fight or to run. So I changed it to "You met {wanted} and survived? Great! Here's your money."
created_at: 2019-12-26T19:42:13Z
author_association: CONTRIBUTOR
diff_hunk: @@ -887,6 +887,10 @@
     "description": "",
     "message": "missile"
   },
+  "MISSILE_DETECTED": {
+    "description": "",
+    "message": "Missile launch detected."
+  },
path: data/lang/core/en.json
user: login: impaktor
body: Just a thought: will this trigger for any missile launch (except for the player's, of course?), or just for missiles aimed at the player?
created_at: 2019-12-29T11:00:03Z
author_association: MEMBER
diff_hunk: @@ -1135,24 +1150,34 @@ void Ship::UpdateAlertState()
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
 		}
+		if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
+		}
 		break;
 
 	case ALERT_SHIP_NEARBY:
-		if (!ship_is_near) {
+		if (!ship_is_near && !missile_detected) {
path: src/Ship.cpp
user: login: impaktor
body: I haven't really devoured this code, but just from a symmetry argument, why don't we need the `!ship_is_firing`, but the `!missile_detected` is needed in the condition?  
created_at: 2019-12-29T11:10:50Z
author_association: MEMBER
diff_hunk: @@ -1135,24 +1150,34 @@ void Ship::UpdateAlertState()
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
 		}
+		if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
+		}
 		break;
 
 	case ALERT_SHIP_NEARBY:
-		if (!ship_is_near) {
+		if (!ship_is_near && !missile_detected) {
 			SetAlertState(ALERT_NONE);
 			changed = true;
 		} else if (ship_is_firing) {
 			m_lastFiringAlert = Pi::game->GetTime();
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
+		} else if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
 		}
 		break;
 
 	case ALERT_SHIP_FIRING:
-		if (!ship_is_near) {
+	case ALERT_MISSILE_DETECTED:
path: src/Ship.cpp
user: login: impaktor
body: Please assume I'm talking out of my ass, but just make sure this is correct, and it shouldn't be 
```
case ALERT_SHIP_FIRING || ALERT_MISSILE_DETECTED:
```
Since I can't, at the moment, understand what happens with ship firing alert state, if it's normal pew-pew combat without missiles firing?
created_at: 2019-12-29T11:19:50Z
author_association: MEMBER
diff_hunk: @@ -887,6 +887,10 @@
     "description": "",
     "message": "missile"
   },
+  "MISSILE_DETECTED": {
+    "description": "",
+    "message": "Missile launch detected."
+  },
path: data/lang/core/en.json
user: login: impaktor
body: (I'm asking to see if "Incomming missile detected" is apt, but would only work if this is unique to when only the AI targets the Player.)
created_at: 2019-12-29T11:25:06Z
author_association: MEMBER
diff_hunk: @@ -887,6 +887,10 @@
     "description": "",
     "message": "missile"
   },
+  "MISSILE_DETECTED": {
+    "description": "",
+    "message": "Missile launch detected."
+  },
path: data/lang/core/en.json
user: login: robothauler
body: It is triggered for any missile launch similar "Ship firing"
created_at: 2019-12-29T17:24:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1135,24 +1150,34 @@ void Ship::UpdateAlertState()
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
 		}
+		if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
+		}
 		break;
 
 	case ALERT_SHIP_NEARBY:
-		if (!ship_is_near) {
+		if (!ship_is_near && !missile_detected) {
path: src/Ship.cpp
user: login: robothauler
body: If the enemy leaves the 100km radius and the missile is still aiming for the player, the alert state will switch to "ALERT_NONE".
created_at: 2019-12-29T17:36:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1135,24 +1150,34 @@ void Ship::UpdateAlertState()
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
 		}
+		if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
+		}
 		break;
 
 	case ALERT_SHIP_NEARBY:
-		if (!ship_is_near) {
+		if (!ship_is_near && !missile_detected) {
 			SetAlertState(ALERT_NONE);
 			changed = true;
 		} else if (ship_is_firing) {
 			m_lastFiringAlert = Pi::game->GetTime();
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
+		} else if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
 		}
 		break;
 
 	case ALERT_SHIP_FIRING:
-		if (!ship_is_near) {
+	case ALERT_MISSILE_DETECTED:
path: src/Ship.cpp
user: login: robothauler
body: It should work as before
created_at: 2019-12-29T17:42:11Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1135,24 +1150,34 @@ void Ship::UpdateAlertState()
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
 		}
+		if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
+		}
 		break;
 
 	case ALERT_SHIP_NEARBY:
-		if (!ship_is_near) {
+		if (!ship_is_near && !missile_detected) {
 			SetAlertState(ALERT_NONE);
 			changed = true;
 		} else if (ship_is_firing) {
 			m_lastFiringAlert = Pi::game->GetTime();
 			SetAlertState(ALERT_SHIP_FIRING);
 			changed = true;
+		} else if (missile_detected) {
+			m_lastFiringAlert = Pi::game->GetTime();
+			SetAlertState(ALERT_MISSILE_DETECTED);
+			changed = true;
 		}
 		break;
 
 	case ALERT_SHIP_FIRING:
-		if (!ship_is_near) {
+	case ALERT_MISSILE_DETECTED:
path: src/Ship.cpp
user: login: sturnclaw
body: @impaktor this is C-style `switch`, so you don't get to use arbitrary expressions in your case statements. Fallthrough (like in this commit) is the only way to do that.
created_at: 2019-12-29T18:39:21Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,606 @@
+-- Copyright © 2008-2020 Pioneer Developers. See AUTHORS.txt for details
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: copyright 2025
created_at: 2025-02-22T09:42:56Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: L18 L17, L20 are unused & can be dropped.
created_at: 2025-03-09T09:09:57Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+			halfdone    = false,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = due,
+		risk      = risk,
+		urgency   = urgency,
+		reward    = reward,
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for i = 1, num do
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: My mind is foggy, from not coding in a while, but in Python (and according to my lua lint checker) unused variables should be named `_`, rather than `i` here.
created_at: 2025-03-09T09:12:28Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+			halfdone    = false,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = due,
+		risk      = risk,
+		urgency   = urgency,
+		reward    = reward,
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for i = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*60*60*24 then -- five day timeout
+			ad.station:RemoveAdvert(ref)
+		end
+	end
+	if Engine.rand:Integer(4*24*60*60) < 60*60 then -- roughly once every four days
+		makeAdvert(station)
+	end
+end
+
+local onShipFiring = function (ship)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: _if_ we're to do the `_` thingy, then there are a bunch of for loops with `ref` that are unused from this point forward. Personally, I don't mind as it might be useful for future re-visits to re-write the code.
created_at: 2025-03-09T09:14:32Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,562 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Thought: it's less weird to see repeated entries on the BBS of a more generic statement than a specific, here the "sick mother" could be "medical emergency in the family", or something similar
created_at: 2025-03-09T09:17:44Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,562 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: > So I think the time has come for a reconciliation

Nitpick: The "So" word makes it sound like reconciliation follows from someone having seen her/him. I don't know what other's think, but that doesn't follow in my mind. Perhaps "I'd like to see if time (or he/she) is ripe (ready) for reconciliation", 
created_at: 2025-03-09T09:20:56Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,562 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
path: data/lang/module-findperson/en.json
user: login: impaktor
body: This flavor response (male/female) has me split. On one hand, I think there should be a hint. Or maybe there is a point in having the player have to experiment (what say you @bszlrd ?). Should there be hand-holding, or throwing out the player in the deep end of the pool? But I'm currently reading the source to figure out what I'm to do. :P 

am I to look for a ship in the system, or land at a station and hope someone contacts me, or check crew contracts lists, names in BBS adverts?
created_at: 2025-03-09T09:23:36Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: Thought for @bszlrd this module has many flavours, perhaps different icons for some/all? of them?
```lua
local flavours = {
	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
}
```

created_at: 2025-03-09T09:25:51Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,562 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. So I think the time has come for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is very crucial because her mother is seriously ill. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is very crucial because his father is seriously ill. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
+  },
+  "MSTAT_HALF_DONE": {
+    "description": "The progress of the mission",
+    "message": "Half-done"
+  },
+  "MSTAT_NONE": {
+    "description": "The progress of the mission",
+    "message": "None"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, Please tell this {client} I've nothing to say. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message?"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this stupid message to me? You better get out of here!"
+  },
+  "PROGRESS": {
+    "description": "",
+    "message": "Mission progress:"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
+  },
+  "RISK_FEMALE_5": {
+    "description": "",
+    "message": "In my opinion, {wanted} is completely insane. I advise you to be careful!"
+  },
+  "RISK_MALE_1": {
+    "description": "",
+    "message": "No, there's no risk."
+  },
+  "RISK_MALE_2": {
+    "description": "",
+    "message": "I expect no trouble. But who knows?"
+  },
+  "RISK_MALE_3": {
+    "description": "",
+    "message": "I'm not sure. He's a curious guy."
+  },
+  "RISK_MALE_4": {
+    "description": "",
+    "message": "{wanted} is a paranoid nut. Be careful!"
+  },
+  "RISK_MALE_5": {
+    "description": "",
+    "message": "Oh yes indeed. {wanted} is a maniac. You should be prepared for everything!"
+  },
+  "SET_AS_TARGET": {
+    "description": "",
+    "message": "Set as navigation target"
+  },
+  "SET_RETURN_ROUTE": {
+    "description": "",
+    "message": "Set return route"
+  },
+  "SHIP": {
+    "description": "",
+    "message": "Ship:"
+  },
+  "SPACEPORT": {
+    "description": "",
+    "message": "Spaceport:"
+  },
+  "SUCCESS_ATK_1": {
+    "description": "",
+    "message": "What? {wanted} attacked you? Please accept this money as compensation!"
+  },
+  "SUCCESS_ATK_2": {
+    "description": "",
+    "message": "Really? {wanted} attacked you? Unbelievable! Whatever. I transferred the money."
+  },
+  "SUCCESS_ATK_3": {
+    "description": "",
+    "message": "You met {wanted} and survived? Great! Here's your money."
+  },
+  "SUCCESS_INT_1": {
+    "description": "",
+    "message": "I heard you had trouble. Good to see you after all. I've paid you in full."
+  },
+  "SUCCESS_INT_2": {
+    "description": "",
+    "message": "You had a disagreement with a mercenary? Well, here's your compensation!"
+  },
+  "SUCCESS_INT_3": {
+    "description": "",
+    "message": "I just paid you. I heard you had a mercenary on your neck. Great job!"
+  },
+  "SUCCESS_MSG_1": {
+    "description": "",
+    "message": "Thank you for this service. I have paid the fee."
+  },
+  "SUCCESS_MSG_2": {
+    "description": "",
+    "message": "Thanks for the service. Your salary was transferred."
+  },
+  "SUCCESS_MSG_3": {
+    "description": "",
+    "message": "Good job! I have transferred the money."
+  },
+  "SUCCESS_MSG_4": {
+    "description": "",
+    "message": "Thank you very much! I've paid you in full."
+  },
+  "SUCCESS_MSG_5": {
+    "description": "",
+    "message": "You found {wanted}? Great! Here's your payment."
+  },
+  "SYSTEM": {
+    "description": "",
+    "message": "System:"
+  },
+  "TIP_FEMALE_1": {
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Some of these tips are quite similar, but never mind. I suggest at least one starts with "I heard you were looking for {name}, I've seen them in X"
created_at: 2025-03-09T10:09:07Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+			halfdone    = false,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = due,
+		risk      = risk,
+		urgency   = urgency,
+		reward    = reward,
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for i = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*60*60*24 then -- five day timeout
+			ad.station:RemoveAdvert(ref)
+		end
+	end
+	if Engine.rand:Integer(4*24*60*60) < 60*60 then -- roughly once every four days
+		makeAdvert(station)
+	end
+end
+
+local onShipFiring = function (ship)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.interceptor == ship and not mission.surprise then
+			local greeting = "MERCENARY_GREETING_" .. (mission.wanted.female and "FEMALE" or "MALE")
+			local msg = string.interp(l[greeting .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(greeting))], { wanted = mission.wanted.name })
+			Comms.ImportantMessage(msg, ship.label)
+			mission.surprise = true
+		end
+	end
+end
+
+local onShipHit = function (ship, attacker)
+	if ship:IsPlayer() then return end
+	if attacker == nil then return end
+
+	if attacker:isa('Ship') then
+		for ref, mission in pairs(missions) do
+			if mission.ship == ship then
+				ship:AIKill(attacker)
+				break
+			end
+		end
+	end
+end
+
+local onShipDestroyed = function (ship, attacker)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.ship == ship then
+			mission.ship = nil
+			break
+		end
+		if mission.interceptor == ship then
+			mission.interceptor = nil
+			break
+		end
+	end
+end
+
+local onFrameChanged = function (player)
+	if not player:isa("Ship") or not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and player.frameBody
+			and player.frameBody.path == Space.GetBody(mission.destination:GetSystemBody().parent.index).path
+			and not mission.flavour.ship and not mission.interceptor then
+
+			local riskmargin = Engine.rand:Number(-0.3, 0.0) -- Add some random luck
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				-- The wanted person or one of his/her enemies has hired a mercenary to intercept
+				local threat = 10.0 + mission.risk * 25.0
+				local ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), MercenaryTemplate, threat)
+				mission.interceptor = ship
+				if mission.destination.type == "STARPORT_SURFACE" then
+					ship:AIEnterLowOrbit(Space.GetBody(mission.destination:GetSystemBody().parent.index))
+				end
+				Timer:CallAt(Game.time + 5, function () ship:AIKill(player) end)
+			end
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onEnterSystem = function (player)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and not mission.halfdone and mission.flavour.ship then
+
+			local ship
+			local threat = 10.0 + mission.risk * 25.0
+			local riskmargin = Engine.rand:Number(-0.3, 0.3) -- Add some random luck
+
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				ship = ShipBuilder.MakeShipNear(player, PirateTemplate, threat, 50, 100)
+				ship:SetLabel(mission.shipid)
+				pirate_msg = string.interp(l["PIRATE_GREETING_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_GREETING"))], { client = mission.client.name })
+				Comms.ImportantMessage(pirate_msg, ship.label)
+				Comms.ImportantMessage(string.interp(l.TRANSMITTING_MSG, { shipid = mission.shipid }))
+				Timer:CallAt(Game.time + 5, function ()
+					riskmargin = Engine.rand:Number(-0.3, 0.3)
+					if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+						pirate_msg = string.interp(l["PIRATE_TAUNTS_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_TAUNTS"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						mission.surprise = true
+						ship:FireMissileAt("any", player)
+						ship:AIKill(player)
+					else
+						pirate_msg = string.interp(l["PIRATE_ANSWER_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_ANSWER"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						ship:AIDockWith(Space.GetBody(mission.destination.bodyIndex))
+					end
+					mission.halfdone = true
+				end)
+			else
+				ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), PirateTemplate, threat)
+				ship:SetLabel(mission.shipid)
+			end
+			mission.ship = ship
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onShipDocked = function (player, station)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		local msg
+
+		if mission.interceptor then
+			if station.type == "STARPORT_SURFACE" then
+				mission.interceptor:AIEnterLowOrbit(Space.GetBody(station:GetSystemBody().parent.index))
+			else
+				mission.interceptor:AIFlyTo(station)
+			end
+		end
+
+		if mission.halfdone then
+			if mission.domicile == station.path then
+				local reputation = 2
+				local oldReputation = Character.persistent.player.reputation
+				if Game.time <= mission.due then
+					if mission.surprise then
+						if mission.flavour.ship then
+							msg = string.interp(l["SUCCESS_ATK_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_ATK"))], { wanted = mission.wanted.name })
+						else
+							msg = string.interp(l["SUCCESS_INT_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_INT"))], { wanted = mission.wanted.name })
+						end
+					else
+						msg = string.interp(l["SUCCESS_MSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_MSG"))], { wanted = mission.wanted.name })
+					end
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation + reputation
+					player:AddMoney(mission.reward)
+				else
+					msg = string.interp(l["FAILUREMSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("FAILUREMSG"))], { wanted = mission.wanted.name })
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation - reputation
+				end
+				if mission.flavour.taxi then
+					Passengers.DisembarkPassenger(player, mission.wanted)
+				end
+				Event.Queue("onReputationChanged", oldReputation, Character.persistent.player.killcount,
+					Character.persistent.player.reputation, Character.persistent.player.killcount)
+				mission.wanted:UnSave() -- remove character from the persistent characters table
+				mission:Remove()
+				missions[ref] = nil
+			end
+		else
+			if mission.destination == station.path then
+				msg = string.interp(l["GREETING_" .. mission.flavour.id], { client = mission.client.name })
+				Comms.ImportantMessage(msg, mission.wanted.name)
+				if mission.flavour.taxi then
+					if Passengers.CountFreeBerths(player) > 0 then
+						Passengers.EmbarkPassenger(player, mission.wanted)
+						mission.halfdone = true
+					else
+						-- cabin occupied or player has removed cabin?
+						Comms.ImportantMessage(l.YOU_DO_NOT_HAVE_A_CABIN, mission.wanted.name)
+					end
+				else
+					mission.halfdone = true
+				end
+			else
+				-- do nothing if not in the right system or a tipster was already there
+				if mission.destination:IsSameSystem(Game.system.path) and not mission.tipster then
+					-- don't increase probability if last station is current station
+					if station.path ~= mission.visited[#mission.visited] then
+						table.insert(mission.visited, station.path)
+					end
+					if #mission.visited > Engine.rand:Number(4) then
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: This looks strange to me. So the strategy is to increase probability of player finding the person based on number of stations they've landed on (good), but there's no mechanism for _how many_ stations there are in the system to land on? 

It should not be possible to run out of stations, i.e. when landed on 100% of the stations (or lower), then the probability of finding the person should be 100%. Here, if the system has fewer than 4 stations, they might not be able to find the person?

I have a vague memory of using Bebbington's algorithm [A.C. Bebbington, Appl. Stat. vol. 24, p. 136 (1975).] somewhere in the pioneer code before, it's not exactly applicable in your case, but for inspiration, it sates how to place `n` particles on `M` lattice sites with equal probability:

- Start with the first lattice site. Choose to occupy that lattice site with probability `n/M`. If the lattice site was chosen to be occupied decrease `n` by 1, `(n → n − 1)`. Reduce `M` by one `(M → M − 1)`, and proceed to the next lattice site and occupy with probability `n/M` etc. Note that `n` and `M` changes during the loop over lattice sites.

Going through all lattice sites, `1, ..., M`, using the scheme above results in exactly `n` lattice sites being chosen (with equal probability).

Now, in your case, `n` might be people to find in the system (`n=1` always), and `M` be the number of stations, but perhaps replaced with a capped version, M_cap <= M if M is too large (like in Sol). 

What I've written might be goobely-gook, but I had it easily accessible so that's where my brain went.
created_at: 2025-03-09T10:39:45Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+			halfdone    = false,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = due,
+		risk      = risk,
+		urgency   = urgency,
+		reward    = reward,
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for i = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*60*60*24 then -- five day timeout
+			ad.station:RemoveAdvert(ref)
+		end
+	end
+	if Engine.rand:Integer(4*24*60*60) < 60*60 then -- roughly once every four days
+		makeAdvert(station)
+	end
+end
+
+local onShipFiring = function (ship)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.interceptor == ship and not mission.surprise then
+			local greeting = "MERCENARY_GREETING_" .. (mission.wanted.female and "FEMALE" or "MALE")
+			local msg = string.interp(l[greeting .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(greeting))], { wanted = mission.wanted.name })
+			Comms.ImportantMessage(msg, ship.label)
+			mission.surprise = true
+		end
+	end
+end
+
+local onShipHit = function (ship, attacker)
+	if ship:IsPlayer() then return end
+	if attacker == nil then return end
+
+	if attacker:isa('Ship') then
+		for ref, mission in pairs(missions) do
+			if mission.ship == ship then
+				ship:AIKill(attacker)
+				break
+			end
+		end
+	end
+end
+
+local onShipDestroyed = function (ship, attacker)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.ship == ship then
+			mission.ship = nil
+			break
+		end
+		if mission.interceptor == ship then
+			mission.interceptor = nil
+			break
+		end
+	end
+end
+
+local onFrameChanged = function (player)
+	if not player:isa("Ship") or not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and player.frameBody
+			and player.frameBody.path == Space.GetBody(mission.destination:GetSystemBody().parent.index).path
+			and not mission.flavour.ship and not mission.interceptor then
+
+			local riskmargin = Engine.rand:Number(-0.3, 0.0) -- Add some random luck
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				-- The wanted person or one of his/her enemies has hired a mercenary to intercept
+				local threat = 10.0 + mission.risk * 25.0
+				local ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), MercenaryTemplate, threat)
+				mission.interceptor = ship
+				if mission.destination.type == "STARPORT_SURFACE" then
+					ship:AIEnterLowOrbit(Space.GetBody(mission.destination:GetSystemBody().parent.index))
+				end
+				Timer:CallAt(Game.time + 5, function () ship:AIKill(player) end)
+			end
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onEnterSystem = function (player)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and not mission.halfdone and mission.flavour.ship then
+
+			local ship
+			local threat = 10.0 + mission.risk * 25.0
+			local riskmargin = Engine.rand:Number(-0.3, 0.3) -- Add some random luck
+
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				ship = ShipBuilder.MakeShipNear(player, PirateTemplate, threat, 50, 100)
+				ship:SetLabel(mission.shipid)
+				pirate_msg = string.interp(l["PIRATE_GREETING_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_GREETING"))], { client = mission.client.name })
+				Comms.ImportantMessage(pirate_msg, ship.label)
+				Comms.ImportantMessage(string.interp(l.TRANSMITTING_MSG, { shipid = mission.shipid }))
+				Timer:CallAt(Game.time + 5, function ()
+					riskmargin = Engine.rand:Number(-0.3, 0.3)
+					if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+						pirate_msg = string.interp(l["PIRATE_TAUNTS_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_TAUNTS"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						mission.surprise = true
+						ship:FireMissileAt("any", player)
+						ship:AIKill(player)
+					else
+						pirate_msg = string.interp(l["PIRATE_ANSWER_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_ANSWER"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						ship:AIDockWith(Space.GetBody(mission.destination.bodyIndex))
+					end
+					mission.halfdone = true
+				end)
+			else
+				ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), PirateTemplate, threat)
+				ship:SetLabel(mission.shipid)
+			end
+			mission.ship = ship
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onShipDocked = function (player, station)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		local msg
+
+		if mission.interceptor then
+			if station.type == "STARPORT_SURFACE" then
+				mission.interceptor:AIEnterLowOrbit(Space.GetBody(station:GetSystemBody().parent.index))
+			else
+				mission.interceptor:AIFlyTo(station)
+			end
+		end
+
+		if mission.halfdone then
+			if mission.domicile == station.path then
+				local reputation = 2
+				local oldReputation = Character.persistent.player.reputation
+				if Game.time <= mission.due then
+					if mission.surprise then
+						if mission.flavour.ship then
+							msg = string.interp(l["SUCCESS_ATK_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_ATK"))], { wanted = mission.wanted.name })
+						else
+							msg = string.interp(l["SUCCESS_INT_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_INT"))], { wanted = mission.wanted.name })
+						end
+					else
+						msg = string.interp(l["SUCCESS_MSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_MSG"))], { wanted = mission.wanted.name })
+					end
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation + reputation
+					player:AddMoney(mission.reward)
+				else
+					msg = string.interp(l["FAILUREMSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("FAILUREMSG"))], { wanted = mission.wanted.name })
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation - reputation
+				end
+				if mission.flavour.taxi then
+					Passengers.DisembarkPassenger(player, mission.wanted)
+				end
+				Event.Queue("onReputationChanged", oldReputation, Character.persistent.player.killcount,
+					Character.persistent.player.reputation, Character.persistent.player.killcount)
+				mission.wanted:UnSave() -- remove character from the persistent characters table
+				mission:Remove()
+				missions[ref] = nil
+			end
+		else
+			if mission.destination == station.path then
+				msg = string.interp(l["GREETING_" .. mission.flavour.id], { client = mission.client.name })
+				Comms.ImportantMessage(msg, mission.wanted.name)
+				if mission.flavour.taxi then
+					if Passengers.CountFreeBerths(player) > 0 then
+						Passengers.EmbarkPassenger(player, mission.wanted)
+						mission.halfdone = true
+					else
+						-- cabin occupied or player has removed cabin?
+						Comms.ImportantMessage(l.YOU_DO_NOT_HAVE_A_CABIN, mission.wanted.name)
+					end
+				else
+					mission.halfdone = true
+				end
+			else
+				-- do nothing if not in the right system or a tipster was already there
+				if mission.destination:IsSameSystem(Game.system.path) and not mission.tipster then
+					-- don't increase probability if last station is current station
+					if station.path ~= mission.visited[#mission.visited] then
+						table.insert(mission.visited, station.path)
+					end
+					if #mission.visited > Engine.rand:Number(4) then
path: data/modules/FindPerson/FindPerson.lua
user: login: robothauler
body: This is the probability of the tipster! The wanted person always sits in the selected station.
By the way. How about moving the tipster to the BB and letting the player decide whether he wants to pay for the information?
created_at: 2025-03-10T16:24:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,555 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Equipment = require 'Equipment'
+local ShipDef = require 'ShipDef'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+			halfdone    = false,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = due,
+		risk      = risk,
+		urgency   = urgency,
+		reward    = reward,
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for i = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*60*60*24 then -- five day timeout
+			ad.station:RemoveAdvert(ref)
+		end
+	end
+	if Engine.rand:Integer(4*24*60*60) < 60*60 then -- roughly once every four days
+		makeAdvert(station)
+	end
+end
+
+local onShipFiring = function (ship)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.interceptor == ship and not mission.surprise then
+			local greeting = "MERCENARY_GREETING_" .. (mission.wanted.female and "FEMALE" or "MALE")
+			local msg = string.interp(l[greeting .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(greeting))], { wanted = mission.wanted.name })
+			Comms.ImportantMessage(msg, ship.label)
+			mission.surprise = true
+		end
+	end
+end
+
+local onShipHit = function (ship, attacker)
+	if ship:IsPlayer() then return end
+	if attacker == nil then return end
+
+	if attacker:isa('Ship') then
+		for ref, mission in pairs(missions) do
+			if mission.ship == ship then
+				ship:AIKill(attacker)
+				break
+			end
+		end
+	end
+end
+
+local onShipDestroyed = function (ship, attacker)
+	if ship:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.ship == ship then
+			mission.ship = nil
+			break
+		end
+		if mission.interceptor == ship then
+			mission.interceptor = nil
+			break
+		end
+	end
+end
+
+local onFrameChanged = function (player)
+	if not player:isa("Ship") or not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and player.frameBody
+			and player.frameBody.path == Space.GetBody(mission.destination:GetSystemBody().parent.index).path
+			and not mission.flavour.ship and not mission.interceptor then
+
+			local riskmargin = Engine.rand:Number(-0.3, 0.0) -- Add some random luck
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				-- The wanted person or one of his/her enemies has hired a mercenary to intercept
+				local threat = 10.0 + mission.risk * 25.0
+				local ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), MercenaryTemplate, threat)
+				mission.interceptor = ship
+				if mission.destination.type == "STARPORT_SURFACE" then
+					ship:AIEnterLowOrbit(Space.GetBody(mission.destination:GetSystemBody().parent.index))
+				end
+				Timer:CallAt(Game.time + 5, function () ship:AIKill(player) end)
+			end
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onEnterSystem = function (player)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		if mission.destination:IsSameSystem(Game.system.path) and not mission.halfdone and mission.flavour.ship then
+
+			local ship
+			local threat = 10.0 + mission.risk * 25.0
+			local riskmargin = Engine.rand:Number(-0.3, 0.3) -- Add some random luck
+
+			if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+				ship = ShipBuilder.MakeShipNear(player, PirateTemplate, threat, 50, 100)
+				ship:SetLabel(mission.shipid)
+				pirate_msg = string.interp(l["PIRATE_GREETING_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_GREETING"))], { client = mission.client.name })
+				Comms.ImportantMessage(pirate_msg, ship.label)
+				Comms.ImportantMessage(string.interp(l.TRANSMITTING_MSG, { shipid = mission.shipid }))
+				Timer:CallAt(Game.time + 5, function ()
+					riskmargin = Engine.rand:Number(-0.3, 0.3)
+					if (mission.risk + riskmargin) > Engine.rand:Number(1) then
+						pirate_msg = string.interp(l["PIRATE_TAUNTS_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_TAUNTS"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						mission.surprise = true
+						ship:FireMissileAt("any", player)
+						ship:AIKill(player)
+					else
+						pirate_msg = string.interp(l["PIRATE_ANSWER_" .. Engine.rand:Integer(1, getNumberOfFlavours("PIRATE_ANSWER"))], { client = mission.client.name })
+						Comms.ImportantMessage(pirate_msg, ship.label)
+						ship:AIDockWith(Space.GetBody(mission.destination.bodyIndex))
+					end
+					mission.halfdone = true
+				end)
+			else
+				ship = ShipBuilder.MakeShipDocked(Space.GetBody(mission.destination.bodyIndex), PirateTemplate, threat)
+				ship:SetLabel(mission.shipid)
+			end
+			mission.ship = ship
+		end
+
+		if mission.status == "ACTIVE" and Game.time > mission.due then
+			mission.status = "FAILED"
+		end
+	end
+end
+
+local onShipDocked = function (player, station)
+	if not player:IsPlayer() then return end
+
+	for ref, mission in pairs(missions) do
+		local msg
+
+		if mission.interceptor then
+			if station.type == "STARPORT_SURFACE" then
+				mission.interceptor:AIEnterLowOrbit(Space.GetBody(station:GetSystemBody().parent.index))
+			else
+				mission.interceptor:AIFlyTo(station)
+			end
+		end
+
+		if mission.halfdone then
+			if mission.domicile == station.path then
+				local reputation = 2
+				local oldReputation = Character.persistent.player.reputation
+				if Game.time <= mission.due then
+					if mission.surprise then
+						if mission.flavour.ship then
+							msg = string.interp(l["SUCCESS_ATK_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_ATK"))], { wanted = mission.wanted.name })
+						else
+							msg = string.interp(l["SUCCESS_INT_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_INT"))], { wanted = mission.wanted.name })
+						end
+					else
+						msg = string.interp(l["SUCCESS_MSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("SUCCESS_MSG"))], { wanted = mission.wanted.name })
+					end
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation + reputation
+					player:AddMoney(mission.reward)
+				else
+					msg = string.interp(l["FAILUREMSG_" .. Engine.rand:Integer(1, getNumberOfFlavours("FAILUREMSG"))], { wanted = mission.wanted.name })
+					Comms.ImportantMessage(msg, mission.client.name)
+					Character.persistent.player.reputation = Character.persistent.player.reputation - reputation
+				end
+				if mission.flavour.taxi then
+					Passengers.DisembarkPassenger(player, mission.wanted)
+				end
+				Event.Queue("onReputationChanged", oldReputation, Character.persistent.player.killcount,
+					Character.persistent.player.reputation, Character.persistent.player.killcount)
+				mission.wanted:UnSave() -- remove character from the persistent characters table
+				mission:Remove()
+				missions[ref] = nil
+			end
+		else
+			if mission.destination == station.path then
+				msg = string.interp(l["GREETING_" .. mission.flavour.id], { client = mission.client.name })
+				Comms.ImportantMessage(msg, mission.wanted.name)
+				if mission.flavour.taxi then
+					if Passengers.CountFreeBerths(player) > 0 then
+						Passengers.EmbarkPassenger(player, mission.wanted)
+						mission.halfdone = true
+					else
+						-- cabin occupied or player has removed cabin?
+						Comms.ImportantMessage(l.YOU_DO_NOT_HAVE_A_CABIN, mission.wanted.name)
+					end
+				else
+					mission.halfdone = true
+				end
+			else
+				-- do nothing if not in the right system or a tipster was already there
+				if mission.destination:IsSameSystem(Game.system.path) and not mission.tipster then
+					-- don't increase probability if last station is current station
+					if station.path ~= mission.visited[#mission.visited] then
+						table.insert(mission.visited, station.path)
+					end
+					if #mission.visited > Engine.rand:Number(4) then
path: data/modules/FindPerson/FindPerson.lua
user: login: impaktor
body: > This is the probability of the tipster!

Ah, OK. 

> By the way. How about moving the tipster to the BB and letting the player decide whether he wants to pay for the information?

Actually, I think @bszlrd (or someone else?) suggested this a while back on IRC. I think, long term, the player should do _some action_ when they land to do the "search", like looking up station listing/logs, asking someone, pressing a button that issues a request for finding person (I imagine police would know, but I think @sturnclaw  was not sold on that). Making a BBS advert could be _one_ way, but feels like a solution in the realm "this is what we _could_ implement", rather than "how it _aught_ to be", but that's just my initial thoughts.

Would all stations have a permanent BBS advert where you could ask for a person? (This is what would make most sense for me, if it's a BBS advert). So this would be a new "service" offered on the BBS? You could select person to ask for (if having multiple missing person missions"), they would "check with their contacts, or look up in a computer for instant response"? Would it cost money to ask? Would they advice another station that might know, so player would effectively land on 3 stations? Or the BBS tipster would have the same 25% chance of spawning on the BBS? If so, when player lands they don't really know what to do, as there's just a absence of actionable things to do the "search".
 

created_at: 2025-03-15T11:21:52Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,551 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = utils.round(due, 3600),
+		risk      = risk,
+		urgency   = urgency,
+		reward    = utils.round(reward, 100),
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for _ = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*60*60*24 then -- five day timeout
path: data/modules/FindPerson/FindPerson.lua
user: login: zonkmachine
body: `5*24*60*60` to be consistent with 'days-hours-minutes-seconds'
created_at: 2025-03-25T16:03:47Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,551 @@
+-- Copyright © 2008-2025 Pioneer Developers. See AUTHORS.txt for details
+-- Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
+
+local Engine = require 'Engine'
+local Lang = require 'Lang'
+local Game = require 'Game'
+local Space = require 'Space'
+local Comms = require 'Comms'
+local Event = require 'Event'
+local Timer = require 'Timer'
+local Mission = require 'Mission'
+local Passengers = require 'Passengers'
+local Format = require 'Format'
+local Serializer = require 'Serializer'
+local Character = require 'Character'
+local NameGen = require 'NameGen'
+local Ship = require 'Ship'
+local utils = require 'utils'
+
+local MissionUtils = require 'modules.MissionUtils'
+local ShipBuilder = require 'modules.MissionUtils.ShipBuilder'
+
+local l = Lang.GetResource 'module-findperson'
+local lc = Lang.GetResource 'core'
+
+local PirateTemplate = MissionUtils.ShipTemplates.GenericPirate
+local MercenaryTemplate = MissionUtils.ShipTemplates.GenericMercenary
+
+-- Mission framework conditions
+local max_mission_dist = 20
+local typical_reward = 50
+
+local flavours = {
+	{ id = "DELIVER_MESSAGE", ship = false, taxi = false, company = false, max_risk = 0.1 },
+	{ id = "TRAITOR", ship = false, taxi = false, company = true, max_risk = 1 },
+	{ id = "PRIVATEER", ship = true, taxi = false, company = false, max_risk = 0.75 },
+	{ id = "DELIVER_DOCUMENT", ship = true, taxi = false, company = true, max_risk = 1 },
+	{ id = "TAXI", ship = false, taxi = true, company = false, max_risk = 0.1 },
+	{ id = "EVACUATION", ship = false, taxi = true, company = true, max_risk = 1 },
+}
+
+local ads = {}
+local missions = {}
+
+local isQualifiedFor = function(reputation, ad)
+	return reputation >= 16 or
+		reputation >= 8 and ad.risk < 0.8 and ad.urgency < 0.8 or
+		reputation >= 4 and ad.risk < 0.4 and ad.urgency < 0.4 or
+		reputation >= 2 and ad.risk < 0.2 and ad.urgency < 0.2 or
+		false
+end
+
+-- Returns the number of flavours of the given string (assuming first flavour has suffix '_1').
+local getNumberOfFlavours = function (str)
+	local num = 1
+
+	while l:get(str .. "_" .. num) do
+		num = num + 1
+	end
+	return num - 1
+end
+
+local getRiskMsg = function (mission)
+	local gender = (mission.wanted.female and "_FEMALE" or "_MALE")
+	return l:get("RISK_" .. mission.flavour.id .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK_" .. mission.flavour.id .. gender)))
+		or l["RISK" .. gender .. "_" .. math.ceil(mission.risk * getNumberOfFlavours("RISK" .. gender))]
+end
+
+local onChat = function (form, ref, option)
+	local ad = ads[ref]
+
+	form:Clear()
+
+	if option == -1 then
+		form:Close()
+		return
+	end
+
+	local qualified = isQualifiedFor(Character.persistent.player.reputation, ad)
+
+	form:SetFace(ad.client)
+
+	if not qualified then
+		form:SetMessage(l["DENY_" .. Engine.rand:Integer(1, getNumberOfFlavours("DENY"))])
+		return
+	end
+
+	form:AddNavButton(ad.location)
+
+	if option == 0 then
+		local introtext = string.interp(ad.introtext, {
+			client   = ad.client.name,
+			wanted   = ad.wanted.name,
+			company  = ad.company,
+			cash     = Format.Money(ad.reward, false),
+			system   = ad.location:GetStarSystem().name,
+			sectorx  = ad.location.sectorX,
+			sectory  = ad.location.sectorY,
+			sectorz  = ad.location.sectorZ,
+			shipid   = ad.shipid,
+			domicile = ad.domicile:GetSystemBody().name,
+			dist     = string.format("%.2f", ad.dist),
+		})
+		form:SetMessage(introtext)
+
+	elseif option == 1 then
+		local gender = ad.wanted.female and "_FEMALE" or "_MALE"
+		form:SetMessage(l["HOW_TO_" .. ad.flavour.id .. gender])
+
+	elseif option == 2 then
+		form:SetMessage(string.interp(getRiskMsg(ad), { wanted = ad.wanted.name }))
+
+	elseif option == 3 then
+		form:SetMessage(string.interp(l["HOW_MUCH_TIME_" .. ad.flavour.id], { date = Format.Date(ad.due) }))
+
+	elseif option == 4 then
+		if ad.flavour.taxi and Passengers.CountFreeBerths(Game.player) == 0 then
+			form:SetMessage(l.YOU_DO_NOT_HAVE_A_CABIN)
+			form:RemoveNavButton()
+			return
+		end
+		form:RemoveAdvertOnClose()
+		ads[ref] = nil
+		local mission = {
+			type        = "FindPerson",
+			client      = ad.client,
+			wanted      = ad.wanted,
+			company     = ad.company,
+			location    = ad.location:GetStarSystem().path,
+			destination = ad.location,
+			visited     = {},
+			shipid      = ad.shipid,
+			ship        = nil,
+			interceptor = nil,
+			domicile    = ad.domicile,
+			introtext   = ad.introtext,
+			flavour     = ad.flavour,
+			risk        = ad.risk,
+			reward      = ad.reward,
+			due         = ad.due,
+		}
+		table.insert(missions, Mission.New(mission))
+		mission.wanted:Save() -- make the character available for other scripts
+		mission.wanted.lastSavedSystemPath = ad.location
+		form:SetMessage(l["ACCEPTED_" .. ad.flavour.id])
+		return
+	end
+
+	form:AddOption(l["HOW_CAN_I_FIND_" .. (ad.wanted.female and "HER" or "HIM")], 1)
+	form:AddOption(l.IS_THERE_A_RISK, 2)
+	form:AddOption(l.HOW_MUCH_TIME, 3)
+	form:AddOption(l.REPEAT_THE_REQUEST, 0)
+	form:AddOption(l.OK_AGREED, 4)
+end
+
+local onDelete = function (ref)
+	ads[ref] = nil
+end
+
+local isEnabled = function (ref)
+	return ads[ref] ~= nil and isQualifiedFor(Character.persistent.player.reputation, ads[ref])
+end
+
+local placeAdvert = function (station, ad)
+	local desc = string.interp(l["ADTEXT_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTEXT"))], {
+		system = ad.location:GetStarSystem().name,
+		cash   = Format.Money(ad.reward, false),
+	})
+
+	local ref = station:AddAdvert({
+		title       = l["ADTITLE_" .. Engine.rand:Integer(1, getNumberOfFlavours("ADTITLE"))],
+		description = desc,
+		icon        = "default",
+		due         = ad.due,
+		reward      = ad.reward,
+		location    = ad.location,
+		onChat      = onChat,
+		onDelete    = onDelete,
+		isEnabled   = isEnabled})
+	ads[ref] = ad
+end
+
+local nearbysystems
+
+local makeAdvert = function (station)
+	if nearbysystems == nil then
+		nearbysystems = MissionUtils.GetNearbyStationPaths(Game.system, max_mission_dist, function (s) return #s:GetStationPaths() > 2 end)
+	end
+	if #nearbysystems == 0 then return end
+	local location = nearbysystems[Engine.rand:Integer(1, #nearbysystems)]
+	local dist = location:DistanceTo(Game.system)
+
+	local flavour = flavours[Engine.rand:Integer(1, #flavours)]
+	local risk = Engine.rand:Number(0.01, flavour.max_risk)
+	local urgency = Engine.rand:Number(1)
+	local ns = location:GetStarSystem().numberOfStations
+	local reward = math.ceil(dist * (typical_reward + ns) * (1 + risk) * (1.5 + urgency) * Engine.rand:Number(0.8, 1.2))
+	local due = Game.time + ns * 86400 + MissionUtils.TravelTime(dist) * 1.75 * (1.5 - urgency) * Engine.rand:Number(0.9, 1.1)
+
+	local female = Engine.rand:Integer(1) == 1
+	local introtext = "INTROTEXT_" .. flavour.id .. (female and "_FEMALE" or "_MALE")
+
+	local ad = {
+		station   = station,
+		domicile  = station.path,
+		introtext = l[introtext .. "_" .. Engine.rand:Integer(1, getNumberOfFlavours(introtext))],
+		flavour   = flavour,
+		client    = Character.New(),
+		wanted    = Character.New({ female = female }),
+		company   = flavour.company and string.interp(l["COMPANY_" .. Engine.rand:Integer(1, getNumberOfFlavours("COMPANY"))], { name = NameGen.Surname() }) or nil,
+		location  = location,
+		shipid    = flavour.ship and Ship.MakeRandomLabel() or nil,
+		dist      = dist,
+		due       = utils.round(due, 3600),
+		risk      = risk,
+		urgency   = urgency,
+		reward    = utils.round(reward, 100),
+	}
+
+	placeAdvert(station, ad)
+end
+
+local onCreateBB = function (station)
+	local num = Engine.rand:Integer(0, math.ceil(Game.system.population) / 2)
+	for _ = 1, num do
+		makeAdvert(station)
+	end
+end
+
+local onUpdateBB = function (station)
+	for ref, ad in pairs(ads) do
+		if ad.due < Game.time + 5*60*60*24 then -- five day timeout
+			ad.station:RemoveAdvert(ref)
+		end
+	end
+	if Engine.rand:Integer(4*24*60*60) < 60*60 then -- roughly once every four days
path: data/modules/FindPerson/FindPerson.lua
user: login: zonkmachine
body: I would make this a bit more rare or the ads will quickly fill up with similar titles. Maybe once every 10th day or so. With an add every 10th day, tested over 9 months, I saw at the extreme points 1 to 9 ads and a mean of 5.
created_at: 2025-03-25T16:10:15Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
path: data/lang/module-findperson/en.json
user: login: zonkmachine
body: I think some more adtitles/adtexts to spice up the bulletin board would be worth the effort.

Something like:
```
  "ADTITLE_4": {
    "description": "",
    "message": "MISSING PERSON"
  },
---
```


created_at: 2025-03-25T16:44:47Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Should it be "data" & "copied", or "document" and "transferred"/"sent"? Just going by the name of the variable, and comparing it to ACCEPTED_DELIVER_MESSAGE
created_at: 2025-03-26T15:41:41Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: "think" or "hope"?
created_at: 2025-03-26T15:42:28Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: PERSON WANTED indicates the PERSON wanted is the pilot/player to do mission, or PERSON is a fugitive, in my mind. If the "PERSON" is the  missing one, I'd say "MISSING PERSON". I haven't checked the flavor, which is best. Just a thought.
created_at: 2025-03-26T15:45:10Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I think 3 are OK, if distinct, but I'm thinking some are unclear if it's a SEARCH AND RESCUE (module) for a ship or searching for a person. 
created_at: 2025-03-26T15:46:46Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I've been thinking of splitting out company names to a separate module. I think several other modules have company names. That would also establish which companies are in the game. 
No action needed, unless you feel up to doing that now.
created_at: 2025-03-26T15:48:22Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I wonder if "realized you've arrived" could be more "space station-y", like: "when he sees you've landed", or "when registered docked ships include yours". Meh, my last suggestion isn't good. I'll leave it for inspiration.
created_at: 2025-03-26T15:54:21Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Hmm, there's no code for this, I assume? Thus this could be slightly misleading? I.e. there's no code for player to click on the ship repair tab / shipyard?
created_at: 2025-03-26T15:55:59Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,562 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Perhaps have "maybe someone in the system has information?" as hint?
created_at: 2025-03-26T15:59:23Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: could last word be "distant" instead of "away"? Sounds better to me.
created_at: 2025-03-26T16:01:56Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: or: "my patience is running thin"
created_at: 2025-03-26T16:34:10Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: Time is of the essence because there is a medical emergency in the family
->
Time is of the essence due to a medical emergency in the family
created_at: 2025-03-26T16:36:51Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: How about "over _your_ dead body"?
More fun, and I think it works?
created_at: 2025-03-26T16:52:49Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, Please tell this {client} I've nothing to say. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message?"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this stupid message to me? You better get out of here!"
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I'd prefer "silly" over "stupid", a word/insult we've not used thus far in the game. "Silly" feels less harsh, more child friendly.
created_at: 2025-03-26T16:54:50Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, Please tell this {client} I've nothing to say. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message?"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this stupid message to me? You better get out of here!"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
+  },
+  "RISK_FEMALE_5": {
+    "description": "",
+    "message": "In my opinion, {wanted} is completely insane. I advise you to be careful!"
+  },
+  "RISK_MALE_1": {
+    "description": "",
+    "message": "No, there's no risk."
+  },
+  "RISK_MALE_2": {
+    "description": "",
+    "message": "I expect no trouble. But who knows?"
+  },
+  "RISK_MALE_3": {
+    "description": "",
+    "message": "I'm not sure. He's a curious guy."
+  },
+  "RISK_MALE_4": {
+    "description": "",
+    "message": "{wanted} is a paranoid nut. Be careful!"
+  },
+  "RISK_MALE_5": {
+    "description": "",
+    "message": "Oh yes indeed. {wanted} is a maniac. You should be prepared for everything!"
+  },
+  "SET_AS_TARGET": {
+    "description": "",
+    "message": "Set as navigation target"
+  },
+  "SET_RETURN_ROUTE": {
+    "description": "",
+    "message": "Set return route"
+  },
+  "SHIP": {
+    "description": "",
+    "message": "Ship:"
+  },
+  "SPACEPORT": {
+    "description": "",
+    "message": "Spaceport:"
+  },
+  "SUCCESS_ATK_1": {
+    "description": "",
+    "message": "What? {wanted} attacked you? Please accept this money as compensation!"
+  },
+  "SUCCESS_ATK_2": {
+    "description": "",
+    "message": "Really? {wanted} attacked you? Unbelievable! Whatever. I transferred the money."
+  },
+  "SUCCESS_ATK_3": {
+    "description": "",
+    "message": "You met {wanted} and survived? Great! Here's your money."
+  },
+  "SUCCESS_INT_1": {
+    "description": "",
+    "message": "I heard you had trouble. Good to see you after all. I've paid you in full."
+  },
+  "SUCCESS_INT_2": {
+    "description": "",
+    "message": "You had a disagreement with a mercenary? Well, here's your compensation!"
+  },
+  "SUCCESS_INT_3": {
+    "description": "",
+    "message": "I just paid you. I heard you had a mercenary on your neck. Great job!"
+  },
+  "SUCCESS_MSG_1": {
+    "description": "",
+    "message": "Thank you for this service. I have paid the fee."
+  },
+  "SUCCESS_MSG_2": {
+    "description": "",
+    "message": "Thanks for the service. Your salary was transferred."
path: data/lang/module-findperson/en.json
user: login: impaktor
body: I'd write:
was -> has been

created_at: 2025-03-26T16:57:12Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
path: data/lang/module-findperson/en.json
user: login: zonkmachine
body: How about both? `"MERCENARY_GREETING_MALE_4": {`
created_at: 2025-05-02T17:31:17Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
path: data/lang/module-findperson/en.json
user: login: robothauler
body: The customer is always looking for a person. The ship is only an indication of where the person is.
created_at: 2025-05-03T16:22:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
path: data/lang/module-findperson/en.json
user: login: robothauler
body: I think Impactor would say that the two sentences are too similar ;-)
created_at: 2025-05-03T16:30:04Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "PERSON WANTED"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him my patience is running out. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence because there is a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over my dead body!"
path: data/lang/module-findperson/en.json
user: login: zonkmachine
body: Plausible. I err on many strings and little variation. :)
created_at: 2025-05-03T16:33:04Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. The data has been copied."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
path: data/lang/module-findperson/en.json
user: login: robothauler
body: "think"! The player only has to look at the system map.
created_at: 2025-05-03T16:35:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,550 @@
+{
+  "ACCEPTED_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Very well. I have transferred the document to you."
+  },
+  "ACCEPTED_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Excellent. I have copied the message to your computer."
+  },
+  "ACCEPTED_EVACUATION": {
+    "description": "",
+    "message": "Excellent. Take care of you!"
+  },
+  "ACCEPTED_PRIVATEER": {
+    "description": "",
+    "message": "Good. I think you will find the ship very quickly."
+  },
+  "ACCEPTED_TAXI": {
+    "description": "",
+    "message": "Very good. Hurry up!"
+  },
+  "ACCEPTED_TRAITOR": {
+    "description": "",
+    "message": "OK. I've transferred the data to your ship's computer."
+  },
+  "ADTEXT_1": {
+    "description": "",
+    "message": "Find a person in the {system} system. Reward {cash}."
+  },
+  "ADTEXT_2": {
+    "description": "",
+    "message": "Search mission in the {system} system. Payment {cash}."
+  },
+  "ADTEXT_3": {
+    "description": "",
+    "message": "Compensation for expenses {cash}."
+  },
+  "ADTITLE_1": {
+    "description": "",
+    "message": "MISSING PERSON"
+  },
+  "ADTITLE_2": {
+    "description": "",
+    "message": "PILOT FOR A SEARCH MISSION NEEDED"
+  },
+  "ADTITLE_3": {
+    "description": "",
+    "message": "SHIP FOR SEARCH REQUIRED"
+  },
+  "CLIENT": {
+    "description": "",
+    "message": "Client:"
+  },
+  "COMPANY": {
+    "description": "",
+    "message": "Company:"
+  },
+  "COMPANY_1": {
+    "description": "Name of a company",
+    "message": "{name} Avionics Corporation"
+  },
+  "COMPANY_2": {
+    "description": "Name of a company",
+    "message": "{name} Firearms Company"
+  },
+  "COMPANY_3": {
+    "description": "Name of a company",
+    "message": "{name} Fleet Systems Foundation"
+  },
+  "COMPANY_4": {
+    "description": "Name of a company",
+    "message": "{name} Defence Systems Company"
+  },
+  "COMPANY_5": {
+    "description": "Name of a company",
+    "message": "{name} Surveillance Tools Corporation"
+  },
+  "COMPANY_6": {
+    "description": "Name of a company",
+    "message": "{name} Special IT Services Foundation"
+  },
+  "DANGER": {
+    "description": "The risk level",
+    "message": "Danger:"
+  },
+  "DEADLINE": {
+    "description": "Must be delivered by",
+    "message": "Deadline:"
+  },
+  "DENY_1": {
+    "description": "",
+    "message": "Excuse me Sir, but I need a pilot who has more experience."
+  },
+  "DISTANCE": {
+    "description": "Distance in space, between two locations",
+    "message": "Distance:"
+  },
+  "FAILUREMSG_1": {
+    "description": "",
+    "message": "I'm not satisfied with your performance. I won't pay you!"
+  },
+  "FAILUREMSG_2": {
+    "description": "",
+    "message": "You are too late! Sorry, you won't get paid!"
+  },
+  "FIND_PERSON": {
+    "description": "Name of mission type",
+    "message": "Find person"
+  },
+  "GREETING_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Damn, you got me. OK, I have signed the document. Please return it to {client}!"
+  },
+  "GREETING_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "Thank you for the message. I have transmitted an answer for {client} to your ship's computer."
+  },
+  "GREETING_EVACUATION": {
+    "description": "",
+    "message": "Heaven, it's nice to see you! We can take off immediately. There's nothing keeping me here anymore."
+  },
+  "GREETING_PRIVATEER": {
+    "description": "",
+    "message": "Uh, you work for {client}? I have copied valuable data to your ship's computer. {client} will find this useful!"
+  },
+  "GREETING_TAXI": {
+    "description": "",
+    "message": "Oh, no. That's bad news. Let's fly back immediately."
+  },
+  "GREETING_TRAITOR": {
+    "description": "",
+    "message": "What? {client} wants a statement? OK, please return and hand over this document!"
+  },
+  "HOW_CAN_I_FIND_HER": {
+    "description": "",
+    "message": "How can I find her?"
+  },
+  "HOW_CAN_I_FIND_HIM": {
+    "description": "",
+    "message": "How can I find him?"
+  },
+  "HOW_MUCH_TIME": {
+    "description": "",
+    "message": "How much time do I have?"
+  },
+  "HOW_MUCH_TIME_DELIVER_DOCUMENT": {
+    "description": "",
+    "message": "Please be back by {date}."
+  },
+  "HOW_MUCH_TIME_DELIVER_MESSAGE": {
+    "description": "",
+    "message": "If I don't hear from you by {date}, I will hire another pilot!"
+  },
+  "HOW_MUCH_TIME_EVACUATION": {
+    "description": "",
+    "message": "You have to be back by {date}! If not, we are in serious trouble."
+  },
+  "HOW_MUCH_TIME_PRIVATEER": {
+    "description": "",
+    "message": "If you're not back by {date}, our deal's over!"
+  },
+  "HOW_MUCH_TIME_TAXI": {
+    "description": "",
+    "message": "Our deal is over by {date}."
+  },
+  "HOW_MUCH_TIME_TRAITOR": {
+    "description": "",
+    "message": "Time is critical! If you're not back by {date}, we're finished."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_FEMALE": {
+    "description": "",
+    "message": "Find her ship. Then you'll find her."
+  },
+  "HOW_TO_DELIVER_DOCUMENT_MALE": {
+    "description": "",
+    "message": "All you have to do is locate his ship. He shouldn't be far away."
+  },
+  "HOW_TO_DELIVER_MESSAGE_FEMALE": {
+    "description": "",
+    "message": "All I know is that she's supposed to be working at a space station."
+  },
+  "HOW_TO_DELIVER_MESSAGE_MALE": {
+    "description": "",
+    "message": "He works in an office near a spaceport. That's all I know."
+  },
+  "HOW_TO_EVACUATION_FEMALE": {
+    "description": "",
+    "message": "She will certainly contact you if she finds out that you arrived!"
+  },
+  "HOW_TO_EVACUATION_MALE": {
+    "description": "",
+    "message": "He will contact you when he realizes you've arrived!"
+  },
+  "HOW_TO_PRIVATEER_FEMALE": {
+    "description": "",
+    "message": "She very often scraps her ship through dangerous missions. A spaceship workshop would be a good place to start."
+  },
+  "HOW_TO_PRIVATEER_MALE": {
+    "description": "",
+    "message": "He does a lot of risky runs. His ship is often found in the workshop of a space station."
+  },
+  "HOW_TO_TAXI_FEMALE": {
+    "description": "",
+    "message": "I don't know. That's up to you!"
+  },
+  "HOW_TO_TAXI_MALE": {
+    "description": "",
+    "message": "I have no idea. That's your business!"
+  },
+  "HOW_TO_TRAITOR_FEMALE": {
+    "description": "",
+    "message": "Knowing her well, she hangs out in bars near spaceports."
+  },
+  "HOW_TO_TRAITOR_MALE": {
+    "description": "",
+    "message": "He's been known to hang out in spaceport taverns."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_FEMALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. Her name is {wanted}. She's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find her, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_1": {
+    "description": "",
+    "message": "Greetings! I'm {client} and I speak for the {company}. One of our ships had a collision with another vessel just a few seconds before entering hyperspace. There wasn't enough time to stop the hyperjump sequence. Now we need someone who can locate the ship with ID number {shipid} in the {system} ({sectorx}, {sectory}, {sectorz}) system and hand over a proposal for an out-of-court settlement to Commander {wanted}. Please return to {domicile} for your payment of {cash}. You'll have to travel {dist} ly for this."
+  },
+  "INTROTEXT_DELIVER_DOCUMENT_MALE_2": {
+    "description": "",
+    "message": "Nice to meet you. My name is {client}. We are looking for an old business partner who still owes us a favour. His name is {wanted}. He's gone into hiding in the {system} ({sectorx}, {sectory}, {sectorz}) system. If you can find him, hand over an encrypted document and then return to the {company} Office here at {domicile}. We pay {cash} in case of success. {system} is {dist} ly away."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepsister {wanted}. She left the family in anger a few years ago. A friend of mine has seen her recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if she is ready for a reconciliation. I pay you {cash} if you can deliver a message to her and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_FEMALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. Her name is {wanted}. I know she resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know her exact location. I will pay you {cash} if you can deliver a message to her."
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_1": {
+    "description": "",
+    "message": "Hi, my name is {client}. I'm looking for my stepbrother {wanted}. He left the family in anger a few years ago. A friend of mine has seen him recently in the {system} ({sectorx}, {sectory}, {sectorz}) system. I would like to see if he is ready for a reconciliation. I pay you {cash} if you can deliver a message to him and return to {domicile} with an answer. Please do it! Will you?"
+  },
+  "INTROTEXT_DELIVER_MESSAGE_MALE_2": {
+    "description": "",
+    "message": "Hello. I'm {client}. I'm looking for an old friend. His name is {wanted}. I know he resides in the {system} ({sectorx}, {sectory}, {sectorz}) system, but I don't know his exact location. I will pay you {cash} if you can deliver a message to him."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with her is very limited, so we don't know her exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. She doesn't trust the local authorities, so she's gone into hiding. We pay {cash} if you can find her and bring her back to {domicile} safely."
+  },
+  "INTROTEXT_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "Hi. The {company} is in big trouble. Negotiations with an aggressive market competitor in the {system} ({sectorx}, {sectory}, {sectorz}) system, a distance of {dist} ly, went very badly. Our envoy {wanted} must be evacuated. Communication with him is very limited, so we don't know his exact location. We pay {cash} for this run."
+  },
+  "INTROTEXT_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "Hello. Call me {client}. I'm employed by the {company}. Our sales representative {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system, distance {dist} ly, has come into conflict with some dangerous crooks. He doesn't trust the local authorities, so he's gone into hiding. We pay {cash} if you can find him and bring him back to {domicile} safely."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. She owes me a lot of money. According to the latest information, she's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell her that my patience is running thin. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_FEMALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask her a few questions. Her ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_PRIVATEER_MALE_1": {
+    "description": "",
+    "message": "Hi there! My name is {client}. I'm looking for {wanted}. He owes me a lot of money. According to the latest information, he's doing missions in the {system} ({sectorx}, {sectory}, {sectorz}) system. Please tell him that my patience is running thin. Return to {domicile} for your payment of {cash}."
+  },
+  "INTROTEXT_PRIVATEER_MALE_2": {
+    "description": "",
+    "message": "How are you. I'm Private Investigator {client}. I have to find privateer {wanted} in the {system} ({sectorx}, {sectory}, {sectorz}) system and ask him a few questions. His ship has registration number {shipid}. I can't leave {domicile} right now because of another criminal case. So I would like to outsource this task. I will pay {cash} for this mission."
+  },
+  "INTROTEXT_TAXI_FEMALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. Her name is {wanted}. Time is of the essence due to a medical emergency in the family. Please find her and bring her back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_FEMALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find her. Her personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TAXI_MALE_1": {
+    "description": "",
+    "message": "Hi. I'm {client}. I'm looking for a relative in the {system} ({sectorx}, {sectory}, {sectorz}) system. His name is {wanted}. Time is of the essence due to a medical emergency in the family. Please find him and bring him back to {domicile}. I pay you {cash}."
+  },
+  "INTROTEXT_TAXI_MALE_2": {
+    "description": "",
+    "message": "Good day. I'm Insurance Assessor {client}. A high speed delivery drone failed to set a proper course, broke through a window and damaged the antique wooden furniture inside an apartment seriously. Fortunately no one was injured. But we couldn't locate the owner of the apartment in the {system} ({sectorx}, {sectory}, {sectorz}) system so far. So I will pay you {cash} if you can find him. His personal presence is necessary to clarify the claim."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to her workplace at the {company}. She was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from her about her ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_FEMALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. Her name is {wanted}. Management calls her a traitor, but wants to give her the opportunity to reconsider and repent. We pay {cash} if you can find her in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to her."
+  },
+  "INTROTEXT_TRAITOR_MALE_1": {
+    "description": "",
+    "message": "Hello, my name is {client}. {wanted} didn't return from a holiday trip to his workplace at the {company}. He was last seen in the {system} ({sectorx}, {sectory}, {sectorz}) system. {wanted} has knowledge of some vital business secrets. So we need someone who can get a few answers from him about his ongoing absence. We pay {cash} for this mission. {system} is in a distance of {dist} ly."
+  },
+  "INTROTEXT_TRAITOR_MALE_2": {
+    "description": "",
+    "message": "Good day. The {company} is searching for an employee who stole some classified documents. His name is {wanted}. Management calls him a traitor, but wants to give him the opportunity to reconsider and repent. We pay {cash} if you can find him in the {system} ({sectorx}, {sectory}, {sectorz}) system, {dist} ly distance, and deliver a message to him."
+  },
+  "IS_THERE_A_RISK": {
+    "description": "",
+    "message": "Is there any risk?"
+  },
+  "MERCENARY_GREETING_FEMALE_1": {
+    "description": "",
+    "message": "I'm sorry. Your death is my business!"
+  },
+  "MERCENARY_GREETING_FEMALE_2": {
+    "description": "",
+    "message": "I'll cut you to slices!"
+  },
+  "MERCENARY_GREETING_FEMALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? I will make you meet your maker first!"
+  },
+  "MERCENARY_GREETING_MALE_1": {
+    "description": "",
+    "message": "It's nothing personal. I kill you for a fee!"
+  },
+  "MERCENARY_GREETING_MALE_2": {
+    "description": "",
+    "message": "I'll send you to hell!"
+  },
+  "MERCENARY_GREETING_MALE_3": {
+    "description": "",
+    "message": "You want to meet {wanted}? Over your dead body!"
+  },
+  "OK_AGREED": {
+    "description": "",
+    "message": "OK, agreed."
+  },
+  "PIRATE_ANSWER_1": {
+    "description": "",
+    "message": "I have transferred an answer for {client} to you. Good bye."
+  },
+  "PIRATE_ANSWER_2": {
+    "description": "",
+    "message": "Please pass the message I'm currently transferring to you to {client}. Bye."
+  },
+  "PIRATE_ANSWER_3": {
+    "description": "",
+    "message": "Haha, Please tell this {client} I've nothing to say. Have a nice day."
+  },
+  "PIRATE_GREETING_1": {
+    "description": "",
+    "message": "I heard you were looking for me. You have my attention. What do you want?"
+  },
+  "PIRATE_GREETING_2": {
+    "description": "",
+    "message": "OK, you got me. Don't waste time and tell me what you want!"
+  },
+  "PIRATE_GREETING_3": {
+    "description": "",
+    "message": "I heard you were supposed to give me a message?"
+  },
+  "PIRATE_TAUNTS_1": {
+    "description": "",
+    "message": "You want an answer? Well, here it comes!"
+  },
+  "PIRATE_TAUNTS_2": {
+    "description": "",
+    "message": "Enough of this! Prepare to go to hell!"
+  },
+  "PIRATE_TAUNTS_3": {
+    "description": "",
+    "message": "You actually went all this way to deliver this silly message to me? You better get out of here!"
+  },
+  "REPEAT_THE_REQUEST": {
+    "description": "",
+    "message": "Could you please repeat the request?"
+  },
+  "RISK_EVACUATION_FEMALE_1": {
+    "description": "",
+    "message": "The situation is tense. We think {wanted} is in danger."
+  },
+  "RISK_EVACUATION_FEMALE_2": {
+    "description": "",
+    "message": "{wanted} is in extreme danger. She should leave the system as soon as possible."
+  },
+  "RISK_EVACUATION_MALE_1": {
+    "description": "",
+    "message": "{wanted} thinks he should leave the system very soon."
+  },
+  "RISK_EVACUATION_MALE_2": {
+    "description": "",
+    "message": "{wanted} is in big trouble! He'd better leave the system sooner than later."
+  },
+  "RISK_FEMALE_1": {
+    "description": "",
+    "message": "By no means."
+  },
+  "RISK_FEMALE_2": {
+    "description": "",
+    "message": "I don't think so."
+  },
+  "RISK_FEMALE_3": {
+    "description": "",
+    "message": "I don't know. She's a bit weird."
+  },
+  "RISK_FEMALE_4": {
+    "description": "",
+    "message": "Maybe. {wanted} can be a little quick-tempered sometimes."
path: data/lang/module-findperson/en.json
user: login: zonkmachine
body: For variation, of the RISK strings, I would substitute {wanted} with another variable which takes the return of a small function that returns either surname or full name. Weight: 2 surname for 1 full name.
created_at: 2025-05-03T20:34:39Z
author_association: MEMBER

PR comments:
user: login: impaktor
created_at: 2019-11-23T17:41:35Z
body: Hey! I think I have a very old branch, where I have a lot of "mysterious" messages that can be delivered. Could that be incorporated in this? (I have not tried this PR or looked at your code yet).

Look at `MESSAGE_1`-`MESSAGE_70` here: https://github.com/impaktor/pioneer/blob/deliverMessage/data/lang/module-delivermessage/en.json#L102

__EDIT__: the reason I never opened a PR on that branch is because the code is just a copy-pase of DeliverPackage, which wouldn't really add any novel game play.
author_association: MEMBER
user: login: mike-f1
created_at: 2019-11-24T11:04:21Z
body: > The missile launch is not detected. No warning. No police action.

You can modify: https://github.com/pioneerspacesim/pioneer/blob/0c66156d227cb266fa3320507a4cb8303aa0e2a9/src/Ship.cpp#L1064

In order to obtain a "Warning" for missile launch, you should change the "for" to handle `Missile`...

Optionally, you can add a method to get the target of `Missile` and narrow the alert state propagation.

author_association: CONTRIBUTOR
user: login: robothauler
created_at: 2019-11-25T10:55:02Z
body: @impaktor, the message is more a file or a document or simply "If you want to be alive, jump into my ship".

@mike-f1, thank you for the hint.

author_association: CONTRIBUTOR
user: login: mike-f1
created_at: 2019-12-03T14:17:55Z
body: > @mike-f1, thank you for the hint.

You're welcome :)

If I may, why not to "push" a different string instead of "ship-firing" (in `LuaPlayer.cpp`)?

And another thing I would note and could be done here or in a different PR:
wouldn't it be easy to move the code for 'ship-equipping' in `Ship.lua`? ...IIRC there are a lot of code spreads along all modules which do the same exact thing. Just pick one ;)

> Close to a station, the mercenary can fire what he can. But the player is immediately attacked by the police.

Found (and probably a change here will also close #4713) :

https://github.com/pioneerspacesim/pioneer/blob/d2ab921b62daa20e8a58f45c1c04c1e406b80a0a/data/modules/CrimeTracking/CrimeTracking.lua#L29

...which have an obious fix ;) Though I can't beat it will works well.

It's still quite limited even if you let any ship as a target: for example only a single mercenary/pirate will be prosecuted; if you fire back even you will be prosecuted... But at least you can obtain a more realistic behaviour.

author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2019-12-15T16:50:40Z
body: Just an update from my side: I intend to review this (read code, and test play a mission), I'll have time over Christmas, which for me starts now on Tuesday (I had some vacation saved up), so please nag on me if I'm inactive.
author_association: MEMBER
user: login: impaktor
created_at: 2019-12-21T09:12:15Z
body: I've just done a fist quick glance, and I note:

- There's no BBS-icon. That's perfectly fine in my book, and can be added later (E.g. magnifying glass over a person?), maybe @nozmajner has thoughts / want to know.

- Not all mission headlines (specifically `ADTEXT_1` & `ADTEXT_2`) start with uppercase on BBS. E.g. "SEARCH MISSION" does, but "Find person in X system" doesn't.
Technically, I don't think we have this as a formal rule, but (almost?) all adverts follow it, so I'd recommend this module to do the same.

I'll get back with more feedback.

author_association: MEMBER
user: login: bszlrd
created_at: 2019-12-21T10:13:37Z
body: I'll make an icon, not sure when I can get to it though.
author_association: CONTRIBUTOR
user: login: robothauler
created_at: 2019-12-26T19:51:57Z
body: > I have yet to go through the Lua file. I'm curious how a player can find an NPC in a "bar" or "shipyard", or just "anywhere in System X", that the language file seems to suggest should be possible.

Please do not expect too much! You need a bit of imagination here. ;-)
author_association: CONTRIBUTOR
user: login: sturnclaw
created_at: 2019-12-29T18:42:44Z
body: The C++ code looks good to me so far, fairly standard and in keeping with the rest of the code. You'll need to make sure it conforms with our existing style guides as best as possible, but I don't have any objections.

...That doesn't mean I like how the alert system is implemented in general, but that's a complaint for another time, when I have the energy to rip the whole thing out.
author_association: MEMBER
user: login: impaktor
created_at: 2020-01-01T18:24:23Z
body: 
### intro

Am I understanding it correctly, that the format for this mission type is:

1. fly to system X

2. visit every spaceport in system X until mission becomes halfdone (i.e.
   player happens to visit the station where the missing person is)

3. they fly back to mission contractor?

(plus chance of being attacked/intercepted)


### feedback

If So, it's quite similar to all our other delivery missions, except the player now has to figure out the correct starport?

I tried two missions, one to Sol, and another to some other densely populated system, so I really didn't feel like visiting 10-20 stations, so I gave up (sorry).

Due to the amount of in-system travel, it might be worth only assigning missions to single star systems, and possibly have the number of stations in it add to the deadline in some way (square root of the number?), or filter out the worst offenders (although that wouldn't be stable if we change our universe to be more densely packed in the future). Maybe only use the N most sparse system within some radius of the BBS?

Anyway, these are just some random thoughts/suggestions, you decide if you want to act on them, I'm just pointing out what struck me when I played it.

The best would be if any of our players could test this out.

(By the way, the new Missile Alert state isn't needed for this PR, right? So anyone wanting to test can just download the lua + json file, and not needing any recompile?)


### Some more suggested changes:

- "Is there a risk" --> "Is there any risk"

- Also, the copyrright for the new files you've added (except *.json files): 2019 -> 2020

author_association: MEMBER
user: login: robothauler
created_at: 2020-01-04T13:45:54Z
body: I increased the probability of the tipster. After a few stations the player should now know where to go.
author_association: CONTRIBUTOR
user: login: robothauler
created_at: 2020-01-04T13:53:05Z
body: > (By the way, the new Missile Alert state isn't needed for this PR, right? So anyone wanting to test can just download the lua + json file, and not needing any recompile?)

Yes, that should work.

author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2020-01-05T15:33:02Z
body: I'll give it another play through.

By the way, something that I thought of, you have a flavour that's very specific, a drone flying into someone's apartment, it just struck me that the more specific a description is, the stranger it will look to see that one twice, or multiple times.

I.e. "Hi, I'm X, I want transport to Y" works repeatedly, but "Hi find Y because a drone flew into their apartment" is less general. But perhaps in the future there's serious drone hazard? 

Anyway, it could be more general by being un-specific about what caused the damaged. or even more general to say property, rather than apartment, but that might be a little flavour less. Anyway, that's just what came into my mind when I read it.
author_association: MEMBER
user: login: robothauler
created_at: 2020-01-08T19:10:12Z
body: > But perhaps in the future there's serious drone hazard?

If that's not worth a headline in a BBS newspaper ...

author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2020-01-11T11:55:00Z
body: OK, I've tested it now.

I get tip of which station I should go to every time (3 out of 3) times I land. Maybe fluke? I haven't looked at the code, but I imagine it could be some cumulative probability, i.e. after you landed on 2-3 stations the probability of getting a tip next time you land is close to 100%

Just a thought.

What probably should be fixed, is that I get tip for station even if I'm not in the mission system. E.g. if I land on a base in Tau Ceti, I get "I heard Jimmy Hoffa is in London". I imagine such information of which starbase they're on to only be "local", in the mission system?
author_association: MEMBER
user: login: Gliese852
created_at: 2020-01-13T20:33:27Z
body: Is it possible to add options to the other items on the bulletin board with the question of the person you are looking for?
author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2020-01-16T09:12:00Z
body: OK, I really hate it when I do work, get a little feedback, fix it, thinking I'm done, then get some more nitpick feedback, fix it thinking, "OK, _now_ I'm done", and loop continues iterating. Thus I don't want to be like that here. Also, I've seen many PRs die because people suggest to "make it more general", or is some other way expand the scope beyond what the author contributed.

Thus, I apologize for doing all of the above now, but I just need to shoot off these ideas:


> Is it possible to add options to the other items on the bulletin board with the question of the person you are looking for?

It's kind of hackish solution, but maybe less so than the current one, i.e. land and you "auto detect" people's presence.

Such a button would do best to e.g. engage the lobby-staff in a conversation, and get a box:

```
  +----------------------+
  |  Have anyone seen:   |
  |----------------------+
  | L. Skywalker         |
  | J. Hoffa             |
  | Lindbergh Jr.        |
  |                      |
  |                      |
  +------------------+---+
  | +----------+         |
  | |  ASK     |         |
  | +----------+         |
  +----------------------+
```

They might answer something like:
- Yes, they're here
- No, but perhaps another station knows
- No, but I've heard / computer system said they're in station `A` in this system
- `if lawlessness >> 0 then:` For `x` credits I can get the information you're looking for

(If we could engage the lobby in conversation, then the advice/rumor module could move to that as well.)

Anyway, my main objection with this module is it's too similar to delivery package / taxi missions / cargo mission, i.e. 1. go to mission system, 2. land on stations until you notice a message on your comms, 3. go back to client's system/station.

Although pioneer is more limited than I'd like, in what is possible to do, there are still some  interesting modules left to be written:

- [X] __Search & rescue__: interesting because let's player see NPC ships up close
- [X] __Cargo mission__: interesting because uses custom cargo functionality, but suffers from the dull station-traveling
- [x] __Cargo-scoop-mission__ (as suggested by @robothauler): Pick up debris after space battle, or illegal cargo pick up, interesting due to use of cargo scoop
- [ ] __Exploration__: interesting because player gets to fly long distances, to discover new systems and set a system as [explored](https://pioneerspacesim.net/codedoc/files/LuaStarSystem-cpp.html#StarSystem.explored). I know we've had a long discussion on the dev-forum, but I think one could have a stab at it with simple as possible: get payed for number of systems explored, and bodies discovered, or similar.
- [x] __Scout__: interesting because it forces player to fly close to land, showing off terrain generator (I have a [branch](https://github.com/impaktor/pioneer/tree/scout-mission) on this, just a UI progress-bar missing, I think)
- [ ] __Find missing person__: could be interesting in adding immersion to the universe in that the NPCs are more "real" they persist across jumps, they are known to other NPCs, and can be missed.

I realize what I'm suggesting above regarding lobby is way more work, but it would really make this "unique", I think, but, yeah, main work is of course figuring out how to bend that code to this will.

I guess other's have to give feedback on how much work that might be. Logs say @vakhoir is the main Lobby-hacker.

Anyway, there is that bug I pointed out in my previous post that needs fixing on this PR.

__EDIT__ Updated 2025-02-22 after fluffy's comment below reminded me this PR is still open. Checked off many of the boxes above of mission modules we now have in the game.
author_association: MEMBER
user: login: robothauler
created_at: 2020-01-18T16:23:56Z
body: 
> > Is it possible to add options to the other items on the bulletin board with the question of the person you are looking for?
> 
> It's kind of hackish solution, but maybe less so than the current one, i.e. land and you "auto detect" people's presence.
> 
> Such a button would do best to e.g. engage the lobby-staff in a conversation, and get a box:
> ...

Or add a new tab view for a very simple bar e.g. only clickable faces

author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2020-01-18T19:19:17Z
body: @robothauler This is what I've been doing this morning:
![2020-01-18-153251_1600x900_scrot](https://user-images.githubusercontent.com/619390/72669119-6ffd4f80-3a2e-11ea-8169-c1e126b8ef9b.png)

I need to replace that list with clickable names, that opens an interaction dialogue. Not sure I have the skill to do that, but I'll see how deep into pigui territory I can get. But my thinking was to move _advice module_, and _illegal goods trader_ into the bar, plus _assassination missions_, which you get by talking to the people there, a bar would consist of random NPC visitors + permanent "fixers", and shady "Tony Soprano"-characters. 

Downside with using a bar for finding missing people, is then they're always in the bar, and never found through the BBS. In the original Frontier the BBS adverts weren't modularised like we have it, so their "find missing person" mission worked across all characters in the station, which I guess is the "propper way" (not sure if we can/should do that even in the long run). 

Today I realized it might make "the most" sense to have the previously described ask-lobby-for-missing-person in the police tab instead? That's not even in pigui, so even more work...
author_association: MEMBER
user: login: Gliese852
created_at: 2020-01-18T19:51:44Z
body: It seems to me not very difficult to organize a dialogue with any character in the game. with the lobby, the police, the service man, the pilot of another ship. When a certain button is pressed, a communication window may appear, and an event is generated with the parameters of this character, which any script can catch, and add its own dialogue branches to this window. Maybe I'm too optimistic.
author_association: CONTRIBUTOR
user: login: Gliese852
created_at: 2020-01-18T20:01:24Z
body: And I would like to clarify about the bar, does the player leave the ship at all? I ask because the entire menu of the station is accessible through the "comms" button.
author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2020-01-29T10:00:44Z
body: OK, I cherry-picked the two detect missile commits, to avoid bitrot, as I suspect this PR might take a few weeks before merging, since:
1. I'm slightly hopeful to impolement a "search for person" option in the police station
2. With #4775, the dialouges will need to be re-done in pigui. I can see if I can help doing that, if you want

@robothauler could you please rebase to remove those two commits?
Then rebase this PR to master, and force push?
```shell
# from PR-branch, assuming pioneerspacesim's master is your 'upstream':
git fetch --all -p            
git rebase upstream/master    
git push -f
```
author_association: MEMBER
user: login: impaktor
created_at: 2020-02-08T14:30:14Z
body: Hey, I thought this blast from the past was interesting, in how the missing person adverts worked in Elite II, Frontier (here on the Amiga, I believe):
https://www.youtube.com/watch?v=KV81D4Oceh8&list=PL9E1E1F7AA6193498&index=4&t=1m58s

I.e. they were persistent to the BBS, and you didn't sign up to find the person, instead you had to keep an eye out, and if discovered, you return and say you'd found them, and get reward. As previously mentioned, we can't get the character names of other BBS adverts in Pioneer, due to the modularity of the missions. 
author_association: MEMBER
user: login: sturnclaw
created_at: 2020-02-28T01:40:19Z
body: We're in the process of porting mission display code away from the old UI now, so this PR is going to be waiting a little while longer, sorry! If there's anything you need to do on your end before this PR is ready to merge / ready to rebase, please let us know.
author_association: MEMBER
user: login: impaktor
created_at: 2020-02-28T08:16:29Z
body: I think this needs rebasing, and need to work with the pigui BBS, @robothauler you can have a look at the modifications that were needed on the other mission modules with #4775, probably just a few lines regarding character face rendering, if memory serves me.

I'm still mulling over how this module can be made in a good way. I believe one of the main reasons Frontier were showing face + name everywhere, like in lobby, police, shipyard, BBS adverts, was for player to look for missing persons. Without a working missing person module there kind of isn't any reason for us to show faces in Lobby, that character doesn't serve a function.

Now: we do have the persistent character functionality, never used in pioneer so far. I wonder if e.g. deliver missions could create persistent characters that the find person module could check which characters are persistent in a system, or some similar functionality.
author_association: MEMBER
user: login: fluffyfreak
created_at: 2020-05-03T18:13:44Z
body: Ok what's happening with this one?
author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2020-05-05T11:34:22Z
body: @fluffyfreak see my previous post. basically: I think it needs some integration / function with station for asking for missing persons or getting list of all people at base, or persistent character module, or something.
author_association: MEMBER
user: login: fluffyfreak
created_at: 2025-02-15T13:57:59Z
body: Instead of asking people to clear bars and add functionality to other areas before allowing new features in, I think it's better to take what is presented with it's current scope. Utilising the persistent character work might be nice, but what really happens is that a new features gets abandoned for 5 years and eventually dropped.
author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2025-02-22T10:00:13Z
body: # Update 5 years later

OK, I've gone through the above discussions to remember what this was about (I've fixed broken link to forum, and updated one of [my key posts](https://github.com/pioneerspacesim/pioneer/pull/4746#issuecomment-575055727) above).

This PR was stalled in part because we were in the process of moving BBS (and police) screens to pigui, which this PR then needs to take into consideration.

@robothauler I see you've pushed updated code, I'm very happy to see you're still with us and motivated (enough) to keep this PR alive. Pardon the 5 years in limbo. I see you've put it as a draft release (also new github feature that did not exist 5 years ago). What is the minimum work needed to move this PR to 'active'(non-draft) state?

# Where do we find missing persons?

If I'm to think out loud how we _ideally_ like things to work (not saying poor @robothauler should implement this). Above several possibilities were suggested:
 - Missing persons are always to be found in a bar (to-be-implemented tab with list of people in the bar) of some space station. I started on this in NewUI, but should be easier in pigui.
 -  Police tab has a button: "find missing person" where a you can select person you're looking for (if looking for several) and see if police know their whereabouts.
 - As in [Frontier](https://www.youtube.com/watch?v=KV81D4Oceh8&list=PL9E1E1F7AA6193498&index=4&t=1m58s): missing person are persistent and BBS adverts pull from some queue of [persistent characters](https://codedoc.pioneerspacesim.net/#LuaClass:Character) when creating new missions? I imagine that would be a way to have BBS adverts share information.
- Just like how BBS dialogue boxes add some additional buttons from pigui library ("set as destination", "close", I think) one could have a button "I'm looking for someone", (conditional on having accepted a missing person mission?). Might open a table of people you're looking for.
- @Gliese852 suggested:
> It seems to me not very difficult to organize a dialogue with any character in the game. with the lobby, the police, the service man, the pilot of another ship. When a certain button is pressed, a communication window may appear, and an event is generated with the parameters of this character, which any script can catch, and add its own dialogue branches to this window. Maybe I'm too optimistic.

That's the summary of above discussions.

@robothauler is this in playable testable state?
author_association: MEMBER
user: login: robothauler
created_at: 2025-02-22T10:41:42Z
body: > @robothauler is this in playable testable state?

I'm just trying to find out what works and what doesn't.
author_association: CONTRIBUTOR
user: login: robothauler
created_at: 2025-03-07T10:29:21Z
body: It is now in a playable condition again.
author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2025-03-15T11:28:40Z
body: Super-nerdy thought for a future "version 10.0" of this mission: the stations in the target system could all form nodes in a directed asyclic graph, that would then just give information which next node / station the player should go to, in order to find the next clue to eventually land on correct station (node 7 below). Player might be lucky and land on node/station 4,5,6 and only need to visit one additional station
![directed-acyclic-graph-300x191](https://github.com/user-attachments/assets/ee2260f4-86ed-4163-92b0-c2e87ac41858)

Or perhaps something like this:
![graph](https://github.com/user-attachments/assets/69912205-8e81-4797-88b3-19af639e5e0f)


author_association: MEMBER
user: login: impaktor
created_at: 2025-03-23T19:35:37Z
body: @robothauler Anything more you intend to do here, or should we just merge?

(Also, if you're interested in debug power for this module  #6085 might be inspirational)
author_association: MEMBER
user: login: robothauler
created_at: 2025-03-23T20:21:41Z
body: > @robothauler Anything more you intend to do here, or should we just merge?

No, not at the moment. Just merge. Would be great!

> (Also, if you're interested in debug power for this module #6085 might be inspirational)

I will take a look and start a separate PR later.
author_association: CONTRIBUTOR
user: login: impaktor
created_at: 2025-03-26T15:33:40Z
body: status:
- [x] I'd like to go through the en.json before merge
- [ ] I'll also wait until bugfix release is out (possibly 1st of April) with merging this, as that should not be part of "zuper ztable bugfix release". 

EDIT: Have done first point now.
author_association: MEMBER
user: login: zonkmachine
created_at: 2025-05-03T14:27:09Z
body: I think the module works well, especially as it's quite different from the other modules. I haven't found any real issues/bugs. I'll have another look on the strings now but it looks and feels ready for a merge.
 
Some ideas.

1. When a wanted person has been found and has boarded the ship for transfer home, there is nothing in the mission description that indicates that the mission has a passenger on board.
2. I believe there are still a bit too many missions generated. I would cut the number in half, both from **onCreateBB()** and **onUpdateBB()**.
3. The character name now is split in first name/surname, with new methods to use them, to allow some variation in how you address the characters involved. Instead of "He/She's a nut" you could go "Johnson is a nut". If it's about a friend, maybe there is a use case for  the firstname. See https://github.com/pioneerspacesim/pioneer/pull/6114
4. The Police station could have a list of wanted persons or could give info on people who have done crime and the wanted person could be on this list, literally wanted.
5. Maybe a search object has been killed in action or maybe they are just gone and can't be found? Maybe they have moved to another system?
author_association: MEMBER
user: login: impaktor
created_at: 2025-05-11T04:30:16Z
body: @robothauler Commit history needs squashing, I could do that at merge, or you want to do that? Actually, I see no reason to not just squash everything to a single commit and merge. I'll do that in 12 hours (tops) if no one stops me.

__EDIT__ This has been in review long enough, any further development can be done with new PR, when this is merged into in master.
author_association: MEMBER
user: login: impaktor
created_at: 2025-05-11T11:16:39Z
body: Merged!
Thanks for keeping this alive for such a lengthy review process.

What I'd like to see in a "version 2" is the player doing some action when landed that constitutes a "search", as I've mentioned in previous post above.
author_association: MEMBER
user: login: robothauler
created_at: 2025-05-11T16:30:54Z
body: Jesus, I can't believe it ;-) Tanks to @fluffyfreak for bringing this up again.
author_association: CONTRIBUTOR
user: login: fluffyfreak
created_at: 2025-05-12T13:25:39Z
body: A mere 5 and half years, you give me hope that I'll eventually finish some of mine :D 
author_association: CONTRIBUTOR
user: login: zonkmachine
created_at: 2025-10-26T20:32:39Z
body: I'm surprised at how well this module works in the game considering the simple text interface and no bar (_Edit: With well I mean 'really well'. These are my favourite missions_). I think there are still a bit too many adverts considering how few flavors there are right now. @robothauler Where are the preferred channel to bring up suggestions? Are you active in the forum? I have some more more strings and maybe an idea or two to contribute.

> I'll make an icon, not sure when I can get to it though.

@bszlrd It could use an icon, yes.

author_association: MEMBER
user: login: robothauler
created_at: 2025-10-27T08:58:51Z
body: I usually just skim through the Github messages to see if there's anything of interest to me.

Perhaps the taxi and delivery icons can be used according to the flavors?
author_association: CONTRIBUTOR
user: login: zonkmachine
created_at: 2025-10-27T12:06:31Z
body: > Perhaps the taxi and delivery icons can be used according to the flavors?

That's a good idea. You can just add a new string variable to the flavours line. EVACUATION could perhaps be a combat mission. I know taxi drivers and they get all kinds of odd runs but this is more a mercenary kind of thing. I've actually done it for fun to tweak it into an assassination mission. :wink: 

```diff
+  "GREETING_MURDER": {
+    "description": "",
+    "message": "Wait a minute, you're not the guy from HR!"
```

It's your module and I'm busy elsewhere but I have I think five or so new strings in the vein of the ones already in the game. I can either make a PR, of which I have a worrying amount going on already, or dump them on you. Either way is fine with me.

> I usually just skim through the Github messages to see if there's anything of interest to me.

Yes, but this is a major module and I think it needs it's own forum post for feedback. I dropped a list [here](https://github.com/pioneerspacesim/pioneer/pull/4746#issuecomment-2848650508) but it's in a merged/closed PR and that list has since grown. Maybe an issue here on GitHub is best in this case, if you're not on the developer forum?
author_association: MEMBER
user: login: robothauler
created_at: 2025-11-10T15:56:30Z
body: @zonkmachine I'm not currently registered on the forum. At least, I don't think so. I can't remember. Choose the path you think is best. I will then adapt accordingly.
author_association: CONTRIBUTOR
user: login: zonkmachine
created_at: 2025-11-11T00:07:31Z
body: > Choose the path you think is best. I will then adapt accordingly.

#6249 :wink: 
author_association: MEMBER