summaryrefslogtreecommitdiff
path: root/npc-04_island-prison-update.patch
diff options
context:
space:
mode:
Diffstat (limited to 'npc-04_island-prison-update.patch')
-rw-r--r--npc-04_island-prison-update.patch1731
1 files changed, 1731 insertions, 0 deletions
diff --git a/npc-04_island-prison-update.patch b/npc-04_island-prison-update.patch
new file mode 100644
index 0000000..27d9629
--- /dev/null
+++ b/npc-04_island-prison-update.patch
@@ -0,0 +1,1731 @@
+--- a/data/json/npcs/island_prison/prisoners.json
++++ b/data/json/npcs/island_prison/prisoners.json
+@@ -0,0 +1,631 @@
++[
++ {
++ "type": "npc",
++ "id": "prisoner_generic",
++ "//": "Former prisoner with a melee or ranged weapon and prison clothing. Sometimes they also have prison guards' gear.",
++ "name_suffix": "prisoner",
++ "class": "NC_THUG_PRISONER",
++ "attitude": 0,
++ "mission": 8,
++ "chat": "TALK_PRISONER_GENERIC",
++ "faction": "prisoners"
++ },
++ {
++ "type": "npc",
++ "id": "prisoner_greeter",
++ "//": "Former prisoner with a melee or ranged weapon and prison clothing. Sometimes they also have prison guards' gear.",
++ "name_suffix": "gatekeeper",
++ "class": "NC_THUG_PRISONER",
++ "attitude": 0,
++ "mission": 8,
++ "chat": "TALK_PRISONER_GREET",
++ "faction": "prisoners"
++ },
++ {
++ "type": "npc",
++ "id": "prisoner_leader",
++ "//": "Former prisoner with a melee or ranged weapon and prison clothing. Sometimes they also have prison guards' gear.",
++ "name_suffix": "leader of prisoners",
++ "class": "NC_THUG_PRISONER",
++ "attitude": 0,
++ "mission": 8,
++ "chat": "TALK_PRISONER_LEADER_GREET",
++ "faction": "prisoners",
++ "mission_offered": "MISSION_PRISONER_LEADER_GET_ID_CARD"
++ },
++ {
++ "type": "npc_class",
++ "id": "NC_THUG_PRISONER",
++ "name": { "str": "Prisoner" },
++ "job_description": "I'm here to kick ass.",
++ "traits": [
++ { "group": "BG_survival_story_CRIMINAL" },
++ { "group": "NPC_starting_traits" },
++ { "group": "Appearance_demographics" }
++ ],
++ "bonus_str": { "rng": [ 2, 4 ] },
++ "bonus_dex": { "rng": [ 0, 2 ] },
++ "skills": [
++ { "skill": "ALL", "level": { "sum": [ { "dice": [ 3, 2 ] }, { "constant": -4 } ] } },
++ { "skill": "dodge", "bonus": { "rng": [ 1, 3 ] } },
++ { "skill": "melee", "bonus": { "rng": [ 2, 4 ] } },
++ { "skill": "unarmed", "bonus": { "rng": [ 1, 3 ] } },
++ { "skill": "bashing", "bonus": { "rng": [ 1, 5 ] } },
++ { "skill": "stabbing", "bonus": { "rng": [ 1, 5 ] } },
++ { "skill": "cutting", "bonus": { "rng": [ 1, 5 ] } }
++ ],
++ "worn_override": "NC_THUG_PRISONER_worn",
++ "weapon_override": "NC_THUG_PRISONER_wield"
++ },
++ {
++ "type": "item_group",
++ "id": "NC_THUG_PRISONER_worn",
++ "subtype": "collection",
++ "entries": [
++ { "group": "male_underwear" },
++ { "distribution": [ { "group": "clothing_prisoner_shoes" }, { "group": "cop_shoes" } ] },
++ { "distribution": [ { "item": "striped_shirt" }, { "group": "cop_torso" } ] },
++ { "distribution": [ { "item": "striped_pants" }, { "group": "cop_pants" } ] },
++ { "distribution": [ { "item": "tacvest" }, { "item": "kevlar" } ], "prob": 15 },
++ { "group": "socks_unisex" },
++ { "group": "cop_gloves", "prob": 20 },
++ { "distribution": [ { "item": "bandana" }, { "group": "cop_helmet" } ], "prob": 50 },
++ { "group": "clothing_glasses", "prob": 20 },
++ { "group": "clothing_watch", "prob": 20 },
++ { "item": "police_belt", "prob": 20 }
++ ]
++ },
++ {
++ "type": "item_group",
++ "id": "NC_THUG_PRISONER_wield",
++ "items": [
++ [ "baton-extended", 50 ],
++ [ "PR24-retracted", 50 ],
++ [ "knife_steak", 30 ],
++ [ "knife_chef", 30 ],
++ [ "knife_paring", 30 ],
++ [ "knife_butcher", 30 ],
++ [ "knife_meat_cleaver", 30 ],
++ [ "knife_carving", 30 ],
++ [ "pointy_stick", 30 ],
++ [ "cudgel", 20 ],
++ [ "knuckle_nail", 20 ],
++ [ "spear_spike", 20 ],
++ [ "spear_knife", 15 ],
++ [ "makeshift_sap", 15 ],
++ [ "homewrecker", 15 ],
++ [ "makeshift_knife", 15 ],
++ [ "nailboard", 15 ],
++ [ "sword_wood", 10 ],
++ [ "glass_shiv", 5 ],
++ [ "rock_sock", 5 ],
++ [ "sharp_toothbrush", 5 ],
++ [ "chisel", 5 ],
++ [ "scissors", 5 ],
++ [ "screwdriver", 5 ],
++ [ "knife_steak", 5 ],
++ [ "knuckle_brass", 5 ],
++ [ "switchblade", 5 ],
++ [ "throwing_knife", 5 ],
++ { "group": "guns_cop", "prob": 50 }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_GENERIC",
++ "type": "talk_topic",
++ "dynamic_line": "<get_lost>",
++ "responses": [
++ { "text": "Ok, sorry, I'm already leaving!", "topic": "TALK_DONE" },
++ { "text": "Hey, <fuck_you>!", "topic": "TALK_DONE", "effect": "hostile" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_GREET",
++ "type": "talk_topic",
++ "dynamic_line": {
++ "u_has_var": "first_meeting",
++ "type": "dialogue",
++ "context": "first_meeting",
++ "value": "yes",
++ "no": "Hey, who the fuck are you? I haven't seen you 'round. Ah, fuck it, it doesn't matter.\nHere's the rules. The first and most important one: ALWAYS CLOSE THE FUCKING ENTRY DOOR BEHIND YOUR ASS! If you're okay with that, the following rules are: don't fuck with us, don't steal from us, don't start a fight without a reason with someone from us. Got it, punk? Now get lost.",
++ "yes": "<get_lost>"
++ },
++ "speaker_effect": { "effect": { "u_add_var": "first_meeting", "type": "dialogue", "context": "first_meeting", "value": "yes" } },
++ "responses": [
++ {
++ "text": "Yeah, I got it. See ya.",
++ "topic": "TALK_DONE",
++ "condition": { "not": { "u_has_var": "first_meeting", "type": "dialogue", "context": "first_meeting", "value": "yes" } }
++ },
++ {
++ "text": "I just wanted to ask if you have a job for me.",
++ "topic": "TALK_PRISONER_ANNOYED",
++ "condition": {
++ "and": [
++ { "u_has_var": "first_meeting", "type": "dialogue", "context": "first_meeting", "value": "yes" },
++ {
++ "not": { "u_has_var": "talked_to_greeter", "type": "dialogue", "context": "annoyed_greeter", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "I'm just hungry, and I thought you might give me some food for some job.",
++ "topic": "TALK_PRISONER_ANGRY",
++ "condition": {
++ "and": [
++ { "u_has_var": "first_meeting", "type": "dialogue", "context": "first_meeting", "value": "yes" },
++ { "u_has_var": "talked_to_greeter", "type": "dialogue", "context": "annoyed_greeter", "value": "yes" },
++ {
++ "not": { "u_has_var": "talked_to_greeter", "type": "dialogue", "context": "angry_greeter", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "Can we just talk it over?",
++ "topic": "TALK_PRISONER_READY_TO_MUG",
++ "condition": {
++ "and": [
++ { "u_has_var": "first_meeting", "type": "dialogue", "context": "first_meeting", "value": "yes" },
++ { "u_has_var": "talked_to_greeter", "type": "dialogue", "context": "angry_greeter", "value": "yes" }
++ ]
++ }
++ },
++ { "text": "Hey, <fuck_you>!", "topic": "TALK_DONE", "effect": "hostile" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_ANNOYED",
++ "type": "talk_topic",
++ "dynamic_line": {
++ "u_has_var": "talked_to_greeter",
++ "type": "dialogue",
++ "context": "annoyed_greeter",
++ "value": "yes",
++ "no": "Do I have a <swear> exclamation sign over my <swear> head, like I'm a <swear> quest-giver from some <swear> video game?",
++ "yes": "<get_lost>"
++ },
++ "speaker_effect": { "effect": { "u_add_var": "talked_to_greeter", "type": "dialogue", "context": "annoyed_greeter", "value": "yes" } },
++ "responses": [
++ {
++ "text": "No, of course not! Sorry, I'm leaving.",
++ "topic": "TALK_DONE",
++ "condition": { "not": { "u_has_var": "talked_to_greeter", "type": "dialogue", "context": "annoyed_greeter", "value": "yes" } }
++ },
++ { "text": "Hey, <fuck_you>!", "topic": "TALK_DONE", "effect": "hostile" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_ANGRY",
++ "type": "talk_topic",
++ "dynamic_line": {
++ "u_has_var": "talked_to_greeter",
++ "type": "dialogue",
++ "context": "annoyed_greeter",
++ "value": "yes",
++ "no": "<get_lost>",
++ "yes": "Are you deaf or stupid? I said I don't give a fuck for you and your <swear> problems. Bother me one more time, and you'll regret that. <get_lost>"
++ },
++ "speaker_effect": { "effect": { "u_add_var": "talked_to_greeter", "type": "dialogue", "context": "angry_greeter", "value": "yes" } },
++ "responses": [
++ {
++ "text": "Ok, sorry, I promise I won't bother you anymore.",
++ "topic": "TALK_DONE",
++ "condition": { "not": { "u_has_var": "talked_to_greeter", "type": "dialogue", "context": "angry_greeter", "value": "yes" } }
++ },
++ { "text": "Hey, <fuck_you>!", "topic": "TALK_DONE", "effect": "hostile" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_READY_TO_MUG",
++ "type": "talk_topic",
++ "dynamic_line": "You think you're immortal, huh, <name_b>?",
++ "responses": [
++ { "text": "Gee, what's the matter with you? Okay, okay, I'm leaving.", "topic": "TALK_PRISONER_MUG" },
++ {
++ "text": "It would be you who will regret talking to me like that.",
++ "topic": "TALK_DONE",
++ "effect": "hostile"
++ }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_MUG",
++ "type": "talk_topic",
++ "dynamic_line": [ "Not so fast, I think you need to pay for breaking your promise and bothering me. Give me your shit, now!" ],
++ "responses": [
++ { "text": "Please don't hurt me! Take all that you want.", "topic": "TALK_MUG" },
++ { "text": "What, <no>!", "topic": "TALK_DONE", "effect": "hostile" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_GREET",
++ "type": "talk_topic",
++ "dynamic_line": {
++ "u_has_var": "prisoner_leader_mission",
++ "type": "mission",
++ "context": "military_id",
++ "value": "yes",
++ "yes": "I have nothing more to say to you. <get_lost>",
++ "no": {
++ "u_has_var": "prisoner_leader_mission",
++ "type": "mission",
++ "context": "accepted",
++ "value": "yes",
++ "yes": "So, what are you waiting for?",
++ "no": {
++ "u_has_var": "prisoner_leader_mission",
++ "type": "mission",
++ "context": "completed",
++ "value": "yes",
++ "yes": "I don't know if you know, but there are sewers underneath the prison. I was planning an escape long before <the_cataclysm>, and while I was working on cleaning the sewers, I noticed a damaged wall section. There was a flow of fresh air coming out of it, so I think it's leading to the surface. It could be your way to freedom. Feel free to use it.",
++ "no": {
++ "u_has_var": "talked_to_leader",
++ "type": "dialogue",
++ "context": "first_meeting",
++ "value": "yes",
++ "yes": {
++ "u_has_var": "talked_to_leader",
++ "type": "dialogue",
++ "context": "cannibal",
++ "value": "yes",
++ "no": "It's you again.",
++ "yes": "You are what you eat, as they say."
++ },
++ "no": "Hello there. Haven't seen you around before. You must be from the other wing. Managed to survive, huh?"
++ }
++ }
++ }
++ },
++ "speaker_effect": { "effect": { "u_add_var": "talked_to_leader", "type": "dialogue", "context": "first_meeting", "value": "yes" } },
++ "responses": [
++ {
++ "text": "Yeah, I've been through situations far worse than that.",
++ "topic": "TALK_PRISONER_LEADER_INQUIRY",
++ "condition": {
++ "and": [
++ { "not": { "u_has_var": "talked_to_leader", "type": "dialogue", "context": "first_meeting", "value": "yes" } },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "It was a nightmare, lots of <zombies>, blood everywhere! Thank god I'm among living people again.",
++ "topic": "TALK_PRISONER_LEADER_FROWN",
++ "condition": {
++ "and": [
++ { "not": { "u_has_var": "talked_to_leader", "type": "dialogue", "context": "first_meeting", "value": "yes" } },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "[Cannibal] It's hard to die of hunger when there's so many tasty corpses lying around.",
++ "topic": "TALK_PRISONER_LEADER_LEARNED_ABOUT_CANNIBAL",
++ "condition": {
++ "and": [
++ { "u_has_trait": "CANNIBAL" },
++ {
++ "not": { "u_has_var": "talked_to_leader", "type": "dialogue", "context": "first_meeting", "value": "yes" }
++ },
++ { "not": { "u_has_var": "talked_to_leader", "type": "dialogue", "context": "cannibal", "value": "yes" } },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "I want to get out of this <swear> prison. I hoped you could help me with that.",
++ "topic": "TALK_PRISONER_LEADER_GIVES_WORK",
++ "condition": {
++ "and": [
++ { "u_has_var": "talked_to_leader", "type": "dialogue", "context": "first_meeting", "value": "yes" },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" }
++ },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "I'm on my way.",
++ "topic": "TALK_DONE",
++ "condition": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ },
++ {
++ "text": "I don't know if I'll take your advice, but thanks nevertheless.",
++ "topic": "TALK_DONE",
++ "condition": {
++ "and": [
++ { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "Wait, what? A <swear> can of beans?! I went through hell to get this <swear> thing for you, and all you give me as reward is a <swear> can of beans?! I demand something more substantial.",
++ "topic": "TALK_PRISONER_LEADER_DEMANDED_SUBSTANTIAL_REWARD",
++ "condition": {
++ "and": [
++ { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "Nice talking to ya. Farewell.",
++ "topic": "TALK_DONE",
++ "condition": {
++ "and": [
++ { "u_has_var": "talked_to_leader", "type": "dialogue", "context": "first_meeting", "value": "yes" },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" }
++ },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "Okay.",
++ "topic": "TALK_DONE",
++ "condition": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" }
++ }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_LEARNED_ABOUT_CANNIBAL",
++ "type": "talk_topic",
++ "dynamic_line": [
++ "Huh, even so? I'm not saying I approve your… tastes, but I definitely respect people who use all possibilities life has to offer."
++ ],
++ "speaker_effect": { "effect": { "u_add_var": "talked_to_leader", "type": "dialogue", "context": "cannibal", "value": "yes" } },
++ "responses": [ { "text": "Yeah, we share the same opinions on this matter.", "topic": "TALK_NONE" } ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_INQUIRY",
++ "type": "talk_topic",
++ "dynamic_line": [
++ "Well, that's a boastful statement. Not that I don't believe it, it's just…. Ah, nevermind. Let's get to the point. What do you want?"
++ ],
++ "responses": [
++ {
++ "text": "I want to get out of this <swear> prison. I hoped you could help me with that.",
++ "topic": "TALK_PRISONER_LEADER_GIVES_WORK"
++ }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_FROWN",
++ "type": "talk_topic",
++ "dynamic_line": [ "Hold the horses, pal. Nobody allowed you to stay here - yet." ],
++ "responses": [
++ {
++ "text": "Please! I don't want to go back there! I'm tired and hungry! I just need time to rest!",
++ "topic": "TALK_PRISONER_LEADER_ANNOYED"
++ },
++ { "text": "Shit! Looks like I'm on my own now. Thanks for nothing. Bye.", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_ANNOYED",
++ "type": "talk_topic",
++ "dynamic_line": [
++ "We don't have much space, and there's not much food. Besides, I don't know you at all, and something tells me you won't survive another day."
++ ],
++ "responses": [
++ {
++ "text": "[STR 11] I'm tougher than it seems!",
++ "topic": "TALK_PRISONER_LEADER_NO",
++ "condition": { "u_has_strength": 11 }
++ },
++ {
++ "text": "[Survival 2] I have some survival expertise!",
++ "topic": "TALK_PRISONER_LEADER_NO",
++ "condition": { "u_has_skill": { "skill": "survival", "level": 2 } }
++ },
++ { "text": "I guess I need to find some other place…", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_NO",
++ "type": "talk_topic",
++ "dynamic_line": [
++ "The answer is still no. In fact it might be better for us to kill you right away - you know, the less mouths to feed, the better. But I'm in a good mood today, so I've decided to help you get out of this island."
++ ],
++ "responses": [
++ { "text": "Ok, I'm listening.", "topic": "TALK_PRISONER_LEADER_GIVES_WORK" },
++ { "text": "You know, I think I'll manage without your help. Bye.", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_GIVES_WORK",
++ "type": "talk_topic",
++ "dynamic_line": {
++ "u_has_var": "prisoner_leader_mission",
++ "type": "mission",
++ "context": "accepted",
++ "value": "yes",
++ "no": "I need you to retrieve some stuff from a locked safe. Interested?",
++ "yes": "So, what are you waiting for?"
++ },
++ "responses": [
++ {
++ "text": "[Show the military id card] You mean this stuff?",
++ "topic": "TALK_PRISONER_LEADER_SHOW_MILITARY_ID",
++ "condition": {
++ "and": [
++ { "u_has_item": "id_military" },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "What's in the safe?",
++ "topic": "TALK_PRISONER_LEADER_ASKED_ABOUT_SAFE_CONTENTS",
++ "condition": {
++ "and": [
++ { "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" } },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "What for do you need it?",
++ "topic": "TALK_PRISONER_LEADER_ASKED_ABOUT_WHAT_FOR_DO_YOU_NEED_IT",
++ "condition": {
++ "and": [
++ { "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" } },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "Yeah, sure.",
++ "topic": "TALK_MISSION_OFFER",
++ "condition": {
++ "and": [
++ { "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" } },
++ {
++ "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ }
++ ]
++ }
++ },
++ {
++ "text": "I have a bad feeling about this. Sorry, I'll pass.",
++ "topic": "TALK_DONE",
++ "condition": { "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" } }
++ },
++ {
++ "text": "I'm on my way.",
++ "topic": "TALK_DONE",
++ "condition": {
++ "and": [
++ { "not": { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" } },
++ { "u_has_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" }
++ ]
++ }
++ }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_ASKED_ABOUT_SAFE_CONTENTS",
++ "type": "talk_topic",
++ "dynamic_line": [
++ "As I said, that's the thing I need. You don't need to know what's that exactly. Just grab all things you find in the safe, and call it a day."
++ ],
++ "responses": [
++ { "text": "That's weird.", "topic": "TALK_NONE" },
++ { "text": "I have a bad feeling about this. Sorry, I'll pass.", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_ASKED_ABOUT_WHAT_FOR_DO_YOU_NEED_IT",
++ "type": "talk_topic",
++ "dynamic_line": [ "Let's say that's none of your <swear> business. Other questions?" ],
++ "responses": [
++ { "text": "That's weird.", "topic": "TALK_NONE" },
++ { "text": "I have a bad feeling about this. Sorry, I'll pass.", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_SHOW_MILITARY_ID",
++ "type": "talk_topic",
++ "speaker_effect": { "effect": { "u_add_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" } },
++ "dynamic_line": [ "Hey, where did you get it? Nevermind, just give it to me. Just <swear> now." ],
++ "responses": [
++ {
++ "text": "Hey, no need to be hostile. Here you go, I don't need it anyway.",
++ "topic": "TALK_DONE",
++ "effect": { "u_sell_item": "id_military" }
++ },
++ {
++ "text": "I went through incredible hardships to get it. Please, can I keep this to myself?",
++ "trial": { "type": "PERSUADE", "difficulty": 5, "mod": [ [ "ALTRUISM", 3 ], [ "TRUST", 1 ] ] },
++ "failure": { "topic": "TALK_DONE", "effect": "hostile" },
++ "success": { "topic": "TALK_PRISONER_LEADER_TRIAL_SUCCESS" }
++ },
++ {
++ "text": "I killed tons of <zombies> while I was trying to get this thing. Do you really think you and your handful of losers pose a threat to me?",
++ "trial": { "type": "INTIMIDATE", "difficulty": 30, "mod": [ [ "BRAVERY", -1 ], [ "FEAR", 3 ] ] },
++ "failure": { "topic": "TALK_DONE", "effect": "hostile" },
++ "success": { "topic": "TALK_PRISONER_LEADER_TRIAL_SUCCESS" }
++ },
++ { "text": "What, <no>!", "topic": "TALK_DONE", "effect": "hostile" }
++ ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_TRIAL_SUCCESS",
++ "type": "talk_topic",
++ "dynamic_line": [
++ "Okay. It was convincing. I'll still get what I want, one way or another. You better watch your back from now on."
++ ],
++ "responses": [ { "text": "Noted. Bye.", "topic": "TALK_DONE" } ]
++ },
++ {
++ "id": "TALK_PRISONER_LEADER_DEMANDED_SUBSTANTIAL_REWARD",
++ "type": "talk_topic",
++ "speaker_effect": { "effect": { "u_add_var": "prisoner_leader_mission", "type": "mission", "context": "military_id", "value": "yes" } },
++ "dynamic_line": [ "I'm afraid you're not in the position to demand anything from me, <name_b>. <get_lost>" ],
++ "responses": [
++ { "text": "Hey, <fuck_you>! You'll regret that!", "topic": "TALK_DONE", "effect": "hostile" },
++ { "text": "Okay, fine. Cheapskate!", "topic": "TALK_DONE" }
++ ]
++ },
++ {
++ "id": "MISSION_PRISONER_LEADER_GET_ID_CARD",
++ "type": "mission_definition",
++ "name": { "str": "Get The Thing from the chief's office" },
++ "difficulty": 1,
++ "value": 0,
++ "goal": "MGOAL_FIND_ITEM",
++ "item": "id_military",
++ "origins": [ "ORIGIN_SECONDARY" ],
++ "dialogue": {
++ "describe": "Here's the job…",
++ "offer": "My snitch whispered in my ear that the thing I need is located in the chief's safe in his office. You need to crack it open and bring the contents to me. Don't try to use anything you find in there! Just bring all the stuff to me, and I'll help you. Deal?",
++ "accepted": "Great! Don't forget that I need all stuff from the safe, try not to lose a thing.",
++ "rejected": "Fine, I'll get the thing in any case, sooner or later.",
++ "advice": "The chief's office is on the other side of the prison. I think the road there is full of <zombies>, so you better find a weapon. Also you probably will need some tools to crack the safe open.",
++ "inquire": "Did you get the stuff already?",
++ "success": "At last! Give me a few moments to check if it isn't damaged. Here, take this for your troubles.",
++ "success_lie": "Huh. This isn't going to work like I thought.",
++ "failure": "You're useless. I should've killed you when I met you."
++ },
++ "has_generic_rewards": false,
++ "start": { "effect": [ { "u_add_var": "prisoner_leader_mission", "type": "mission", "context": "accepted", "value": "yes" } ] },
++ "end": {
++ "effect": [
++ { "u_add_var": "prisoner_leader_mission", "type": "mission", "context": "completed", "value": "yes" },
++ { "u_lose_var": "prisoner_leader_mission", "type": "mission", "context": "accepted" },
++ { "u_buy_item": "can_beans", "container": "can_medium" }
++ ]
++ }
++ }
++]
+--- a/data/json/monsters/zed_prisoner.json
++++ b/data/json/monsters/zed_prisoner.json
+@@ -10,5 +10,32 @@
+ "color": "green",
+ "melee_dice_sides": 4,
+ "death_drops": "mon_zombie_prisoner_death_drops"
++ },
++ {
++ "id": "mon_zombie_prisoner_brute",
++ "type": "MONSTER",
++ "name": { "str": "prisoner brute" },
++ "description": "This muscular zombie wears black and white striped prisoner clothes.",
++ "copy-from": "mon_zombie_brute",
++ "looks_like": "mon_zombie_brute",
++ "death_drops": "mon_zombie_prisoner_death_drops"
++ },
++ {
++ "id": "mon_zombie_prisoner_fat",
++ "type": "MONSTER",
++ "name": { "str": "fat prisoner" },
++ "description": "This fat zombie wears black and white striped prisoner clothes.",
++ "copy-from": "mon_zombie_fat",
++ "looks_like": "mon_zombie_fat",
++ "death_drops": "mon_zombie_prisoner_death_drops"
++ },
++ {
++ "id": "mon_zombie_prisoner_tough",
++ "type": "MONSTER",
++ "name": { "str": "tough prisoner" },
++ "description": "This tough-looking zombie wears black and white striped prisoner clothes.",
++ "copy-from": "mon_zombie_tough",
++ "looks_like": "mon_zombie_tough",
++ "death_drops": "mon_zombie_prisoner_death_drops"
+ }
+ ]
+--- a/data/json/mapgen/prison_1.json
++++ b/data/json/mapgen/prison_1.json
+@@ -25,12 +25,12 @@
+ " s_____________________________________s+,,,,d,|--------+---|G|h|h|h|h| ",
+ " s_____________________________________s+,,,,dh|S,T|l,,,,,+<|,|g|g|g|g| ",
+ " s_____________________________________s|hhh,,,+,,,|l,,,,,--|,|h|h|h|h| ",
+- " s____Y____Y____Y____Y____Y____Y_______s|------|---|l,3333,l|,|,,,,,,,| ",
++ " s____Y____Y____Y____Y____Y____Y_______s|------|---|l,5555,l|,|,,,,,,,| ",
+ " s____Y____Y____Y____Y____Y____Y_______s|,,,,,,,,,,|l,,,,,,l|G|------G| ",
+- " s____Y____Y____Y____Y____Y____Y_______s@,,,,,,,,d,|l,3333,l|,,,,,,,|,| ",
++ " s____Y____Y____Y____Y____Y____Y_______s@,,,,,,,,d,|l,5555,l|,,,,,,,|,| ",
+ " s____Y____Y____Y____Y____Y____Y_______s@,,,,,,,,dh|l,,,,,,l|hth,hth|,| ",
+- " s____Y____Y____Y____Y____Y____Y_______s|,,,,,,,,d,|l,3333,l|hth,hth|,| ",
+- " sssssssssssssssssssssssssssssssssssssss|33333,,,,,|l,,,,,,l|,,,,,,,|,| ",
++ " s____Y____Y____Y____Y____Y____Y_______s|,,,,,,,,d,|l,5555,l|hth,hth|,| ",
++ " sssssssssssssssssssssssssssssssssssssss|55555,,,,,|l,,,,,,l|,,,,,,,|,| ",
+ " |---------------------------------------------@@-------@-----R-G-R--G| ",
+ " | f ss f s s s| ",
+ " | sssssssssssssssssssssssssssssssssHssssHsssssssssssssssssss| ",
+@@ -168,9 +168,20 @@
+ "^": "t_concrete",
+ "P": "t_concrete",
+ "Y": "t_pavement_y",
++ "C": "t_floor",
++ "L": "t_floor",
++ "5": "t_floor",
+ "Z": "t_door_bar_o"
+ },
+- "furniture": { "X": "f_exercise", "C": "f_counter", "P": "f_rack", "2": "f_home_furnace", "4": "f_water_heater", "L": "f_locker" },
++ "furniture": {
++ "X": "f_exercise",
++ "C": "f_counter",
++ "5": "f_bench",
++ "P": "f_rack",
++ "2": "f_home_furnace",
++ "4": "f_water_heater",
++ "L": "f_locker"
++ },
+ "items": {
+ "l": [
+ { "item": "prison_weapons", "chance": 30 },
+@@ -465,7 +476,14 @@
+ ],
+ "?": { "item": "autodoc_supplies", "chance": 100 }
+ },
+- "monster": { "Z": { "monster": "mon_zombie_prisoner" }, "C": { "monster": "mon_broken_cyborg" } }
++ "monster": {
++ "Z": [
++ { "monster": "mon_zombie_prisoner" },
++ { "monster": "mon_zombie_prisoner_fat" },
++ { "monster": "mon_zombie_prisoner_tough" }
++ ],
++ "C": { "monster": "mon_broken_cyborg" }
++ }
+ }
+ },
+ {
+@@ -602,7 +620,6 @@
+ "L": [ "t_floor" ],
+ "M": [ "t_floor" ],
+ "N": [ "t_floor" ],
+- "O": [ "t_floor" ],
+ "P": [ "t_floor" ],
+ "Q": [ "t_floor" ],
+ "R": [ "t_floor" ],
+@@ -628,7 +645,6 @@
+ "L": [ "f_drill_press" ],
+ "M": [ "f_heavy_lathe" ],
+ "N": [ "f_utility_shelf" ],
+- "O": [ "f_shredder" ],
+ "P": [ "f_workbench" ],
+ "Q": [ "f_cupboard" ],
+ "R": [ "f_locker" ],
+@@ -663,7 +679,7 @@
+ "U": { "item": "prison_canine_bowl", "chance": 70 },
+ "Y": { "item": "clothing_outdoor_torso", "chance": 60 },
+ "q": { "item": "trash_cart", "chance": 50, "repeat": [ 2, 3 ] },
+- "n": { "item": "oven", "chance": 70 },
++ "n": { "item": "SUS_oven", "chance": 70 },
+ "r": { "item": "cleaning", "chance": 50 },
+ ":": { "item": "animalshelter_toys", "chance": 5 },
+ "1": { "item": "office_paper", "chance": 50 },
+@@ -672,19 +688,39 @@
+ "2": [ { "item": "cannedfood", "chance": 70, "repeat": [ 1, 3 ] }, { "item": "pasta", "chance": 70, "repeat": [ 1, 3 ] } ]
+ },
+ "monster": {
+- ",": [ { "monster": "mon_zombie_cop", "chance": 1 }, { "monster": "mon_zombie_prisoner", "chance": 2 } ],
+- "_": [ { "monster": "mon_zombie_cop", "chance": 1 }, { "monster": "mon_zombie_prisoner", "chance": 2 } ],
+- "(": [ { "monster": "mon_zombie_cop", "chance": 1 }, { "monster": "mon_zombie_prisoner", "chance": 2 } ],
+- "#": [ { "monster": "mon_zombie_cop", "chance": 1 }, { "monster": "mon_zombie_prisoner", "chance": 2 } ],
++ ",": [
++ { "monster": "mon_zombie_cop", "chance": 1 },
++ { "monster": "mon_zombie_prisoner", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_fat", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_tough", "chance": 2 }
++ ],
++ "_": [
++ { "monster": "mon_zombie_cop", "chance": 1 },
++ { "monster": "mon_zombie_prisoner", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_fat", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_tough", "chance": 2 }
++ ],
++ "(": [
++ { "monster": "mon_zombie_cop", "chance": 1 },
++ { "monster": "mon_zombie_prisoner", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_fat", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_tough", "chance": 2 }
++ ],
++ "#": [
++ { "monster": "mon_zombie_cop", "chance": 1 },
++ { "monster": "mon_zombie_prisoner", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_fat", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_tough", "chance": 2 }
++ ],
+ "`": { "monster": "mon_zhark", "chance": 1 },
+ ".": { "monster": "mon_zombie_cop", "chance": 1 },
+- "^": { "monster": "mon_zombie_brute", "chance": 1 },
++ "^": { "monster": "mon_zombie_prisoner_brute", "chance": 1 },
+ " ": { "monster": "mon_dog_zombie_cop", "chance": 1 },
+ "U": { "monster": "mon_dog_gshepherd", "chance": 10 },
+ ":": { "monster": "mon_dog_gshepherd", "chance": 1 },
+ "<": { "monster": "mon_turret_riot" }
+ },
+- "place_monster": [ { "monster": "mon_zombie_hulk", "x": 45, "y": 3 }, { "monster": "mon_zombie_brute", "x": 60, "y": 56 } ],
++ "place_monster": [ { "monster": "mon_zombie_hulk", "x": 45, "y": 3 }, { "monster": "mon_zombie_prisoner_brute", "x": 60, "y": 56 } ],
+ "place_graffiti": [ { "text": "Dufresne was here", "x": 19, "y": 22 } ],
+ "computers": {
+ "a": {
+@@ -740,7 +776,7 @@
+ " ",
+ " ",
+ " ",
+- " 54444444444444444445 54444444444444444444444444445 ",
++ " Ю444444444444444444Ю Ю444444444444444444444444444Ю ",
+ " 1..................1 1...........................1 ",
+ " 1..................1 1...........................1 ",
+ " 1..................1 1...........................1 ",
+@@ -757,7 +793,7 @@
+ " wdh,,qw(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((wq,,hdw ",
+ " |-w+w-| |-w+w-| ",
+ " (^( (^( ",
+- " (^( 5444444444444444444444444444444444444444444444444444444444444444444444445 (^( ",
++ " (^( Ю44444444444444444444444444444444444444444444444444444444444444444444444Ю (^( ",
+ " (^( 1.......................................................................1 (^( ",
+ " (^( 1.......................................................................1 (^( ",
+ " (^( 1.......................................................................1 (^( ",
+@@ -783,10 +819,10 @@
+ " (^( 1.......................1 1...............................1 (^( ",
+ " (^( 1.......................1 1...............................1 (^( ",
+ " (^( 1.......................1 1...............................1 (^( ",
+- " (^( 54444444444441..........1 1...............................1 (^( ",
++ " (^( Ю4444444444441..........1 1...............................1 (^( ",
+ " (^( 1 1..........1 1...............................1 (^( ",
+ " (^( 1 1..........1 1...............................1 (^( ",
+- " (^( 1444444444444444444444445444444444444444544444444444444444444444444444445 (^( ",
++ " (^( 144444444444444444444444Ю444444444444444Ю4444444444444444444444444444444Ю (^( ",
+ " (^( (^( ",
+ " |-w+w-| |-w+w-| ",
+ " wdh,,qw(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((wq,,hdw ",
+@@ -806,7 +842,7 @@
+ "^": [ "t_concrete" ],
+ "1": [ "t_gutter_north" ],
+ "4": [ "t_gutter_west" ],
+- "5": [ "t_gutter_drop" ],
++ "Ю": [ "t_gutter_drop" ],
+ "q": [ "t_floor" ]
+ },
+ "furniture": { "q": [ "f_locker" ] },
+@@ -816,6 +852,682 @@
+ }
+ },
+ {
++ "type": "mapgen",
++ "method": "json",
++ "om_terrain": [
++ [ "prison_island_1_1", "prison_island_1_2", "prison_island_1_3", "prison_island_1_4", "prison_island_1_5" ],
++ [ "prison_island_1_6", "prison_island_1_7", "prison_island_1_8", "prison_island_1_9", "prison_island_1_10" ],
++ [ "prison_island_1_11", "prison_island_1_12", "prison_island_1_13", "prison_island_1_14", "prison_island_1_15" ]
++ ],
++ "object": {
++ "faction_owner": [ { "id": "prisoners", "x": [ 5, 18 ], "y": [ 33, 47 ] }, { "id": "prisoners", "x": [ 5, 18 ], "y": [ 48, 56 ] } ],
++ "fill_ter": "t_region_groundcover_barren",
++ "rows": [
++ "````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````",
++ "````````````###*********````````````````№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№````````````````````",
++ "```````*****###****#¦***```````````````№№''''''''''''''''''''''''''''''''''''''''''''''''''''''''''№````````````````````",
++ "``******###***##***#****``````````````№№'' |----------| '№№№№№'№````````````````````",
++ "``*####*###***##***#******####```````№№'' |7Б7Б77Б7Б7| '№..>№'№````````````````````",
++ "***########******###******######````№№'' |7Б7Б77Б7Б7| '№...№'№````````````````````",
++ "*#############*###################`№№'' |7ББББББББ7| '№№@№№'№````````````````````",
++ "*№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№'' |----?-----| '''''''№````````````````````",
++ "*№''''''''''''''''''''''''''''''''''' /|,,,,,,,,,,| ' №````````````````````",
++ "*№'№№№№№' |--g--|XXX,,,3333|/ ' №````````````````````",
++ "*№'№>пп№' |-----------------------------|,,,,,|----?-----|--------------------------| ' №````````````````````",
++ "*№'№ппп№' |bo|bo|bo|bo|bo|bo|bo|bo|bo|bo|,,,,,,,,,,,,,,,,|bo|bo|bo|bo|bo|bo|bo|bo|b<| ' №````````````````````",
++ "`№'№№@№№' |b,|b,|b,|b,|b,|b,|b,|b,|b,|b,|,,,,,,,,,,,,,,,,|b,|b,|b,|b,|b,|b,|b,|b,|b,| ' №````````````````````",
++ "`№''''''' |T,|T,|T,|T,|T,|T,|T,|T,|T,|T,|,,,|---@----|,,,|T,|T,|T,|T,|T,|T,|T,|T,|T,| ' №````````````````````",
++ "`№'' |-G|-G|-G|-G|-G|-G|-G|-G|-G|-G|,,,|h...Y.А%|,,,|-G|-G|-G|-G|-G|-G|-G|-G|-G| ' №````````````````````",
++ "`№'' |,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,|dd.....1|,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,| ' №````````````````````",
++ "`№'' |,,,,,,,,,,,,,,,,,,,,,,,,,,,,,B,,,|.......1|,,,B,,,,,,,,,,,,,,,,,,,,,,,,,,| ' №````````````````````",
++ "`№'' g,,,3333,,,3333,,,3333,,,3333,G,,,|dh.11..6|,,,G,3333,,,3333,,,3333,,,3333g ' №````````````````````",
++ "`№'' |,,,,,,,,,,,,,,,,,,,,,,,,,,,,,B,,,|d..66...|,,,B,,,,,,,,,,,,,,,,,,,,,,,,,,| ' №````````````````````",
++ "`№'' |,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|,,,|6h..h..6|,,,|,,,,,,,,,,,,,,,,,,,,,,,,,,| ' №````````````````````",
++ "`№'' |-G|-G|-G|-G|-G|-G|-G|-G|-G|-G|,,,|6.....h6|,,,|-G|-G|-G|-G|-G|-G|-G|-G|-G| ' №````````````````````",
++ "`№'' |T,|T,|T,|T,|T,|T,|T,|T,|T,|T,|,,,|--------|,,,|T,|T,|T,|T,|T,|T,|T,|T,|T,| ' №````````````````````",
++ "`№'' |b,|b,|b,|b,|b,|b,|b,|b,|b,|b,|,,,,,,,,,,,,,,,,|b,|b,|b,|b,|b,|b,|b,|b,|b,| ' №````````````````````",
++ "`№'' |bo|bo|bo|bo|bo|bo|bo|bo|bo|bo|,,,,,,,,,,,,,,,,|bo|bo|bo|bo|bo|bo|bo|bo|bo| ' №````````````````````",
++ "`№'' |-----------------------------|,,,,,,,,,,,,,,,,|-----------|--------------| ' №````````````````````",
++ "`№'' B^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|------BGGB------|,,,,,,,,,,,|Н,,,,,,?¡¡¡¡¡¿B ' №````````````````````",
++ "`№'' B^E^^^888^^^E^^^^^^^^^^^^^^^^^^|bbT|,,,,,,|Tbb|L,,,P,,P,,,M|dh,,,,н|-?|¡¡¿B ' №````````````````````",
++ "`№'' B^^^^^^^^^^^^^^^^^^^^^^^^^^^^^8|o,,G,,,,,,G,,o|,,,,P,,P,,,,|---?---|О,|¡¡¿B ' №````````````````````",
++ "`№'' B^E^^^888^^^E^^^^^^^^^^^^^^^^^8|---|,,3,,,|---|L,,,P,,P,,,M|,,,,,,,|--|-----|-| ' №````````````````````",
++ "`№'' B^^^^^^^^^^^^^^^^^^^^^^^^^^^^^8|bbT|,,3,,,|Tbb|,,,,P,,P,,,,|,,ttt,,|,,+,hgh,=,|/ ' №````````````````````",
++ "`№'' B^E^^^888^^^K^^^^^^^^^^^^^^^^^^|o,,G,,3,,,G,,o|L,,,P,,P,,,M|,,,,,,,|,,|-----|,|---|№№Ĝ№№````````````````````",
++ "`№'' / B^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|---|,,3,,,|---|,,,,,,,,,,,,|333,333|,,+,hgh,=,=,,3| ' №````````````````````",
++ "`№''|-------|------|-------|))_____)_____))|bbT|,,,,,,|Tbb|lll,,,,,NNNN|,,,,,,,|,,|-----|,|,,3| ' №№```````````````````",
++ "`№''|°°°°°°°°°°°°°°|o,,T,,o|_))____)____))_|o,,G,,,,,,G,,o|---|,,,|----|333,333|,,+,hgh,=,|,,3| ' №№ZZZZZZZ!!{!!ZZZZZZ",
++ "`№''|°33333°°33333°|bb,,,bb|__))___)___))__|---|,,,,,,|---|М,ММ,,,,мммм|---?---|@-|-----|-|,,,|''''''№!!!!!!!!!!!!!!!!!Z",
++ "`№''|°uuuuu°°uuuuu°|-o,3,o-|f__)___)___)__f|bbT|,,3,,,|Tbb|М,,,,,,,,,,,|^^^^^^^^^^Ĝ,,,,,,,,,,,g''''''B!!!!!!!!!!!!!!!!!Z",
++ "`№''|°33333°°33333°|bb,3,bb|__))___)___))__|o,,G,,3,,,G,,o|М,ММ,,,,,,,,@^^^^^^^^^^Ĝ,,,,,,,,,,,@''''''Ĝ!!!!!!!!!!!!!!!!!Z",
++ "`№''|°°°°°°°°°°°°°°|-o,3,o-|_))____)____))_|---|,,3,,,|---|М,ММ,,,,,,,,|^^^^^|-gg-|------|,,,,g''''''B!!!!!!!!!!!!!!!!!Z",
++ "`№''|°°°°°°°°°°°°°°|bb,3,bb|))_____)_____))|bbT|,,3,,,|Tbb|М,,,,,,,мммм|^^^^^|hd.6|qd...o|,,,,|''''''№!!!!!!!!!!!!!!!!!Z",
++ "`№''|°33333°°33333°|-o,,,o-|^^^^^^^^^^^^^^^|o,,G,,,,,,G,,o|М,ММ,,,,,,,,|^^^^^|.d.6|hd..h.?,,,,| ' №№ZZZZZZZ!!{!!ZZZZZZ",
++ "`№''|°uuuuu°°uuu°°°|bb,,,bb|^^^^^88888^^^^-|---|-BGGB-|---|---|-?-|мммм|^^^^^@...6|......|,,,,| ' №№```````````````````",
++ "`№''|°33333°°33333°|---G---|--G--|--------|^^^^^^^^^^^^|,X|777|,,,|----|-BĜB-|Y..1|%А.11Y|,,,А| ' №````````````````````",
++ "`№''|°°°°°°°°°°°°°°|^^^^^^^^^^^^^|66666611|^^^^^^^^^^^^|,X|БББ|Л,л|йББи|^^^^^|%...|----|-|-?--|№№Ĝ№№````````````````````",
++ "`№''|°°°°°°°°°°°°°°ПØ^^^^^^^^^^^^|..h..h..|^^^^^^^^^^^^|,X|Б77|Л,л|КБББ=^^^^^|66..|Аd.1|vV...J| ' №````````````````````",
++ "`№''|°°°°°°°°°°°°°°ПØ^^^^^^^^^^^^g........@^^^^^^^^^^^^?,,?Б77|Л,л|----|^^^^^|--|?|hd.1|......g ' №±±±±±±``````````````",
++ "`№''|°°°°°°°°°°°°°°|Ø^^^^^^^^^^^^|.h,.....|^^^^^^^^^^^^|,3|БББ|Л,л|КБББ=^^^|-|А%|'|....|...t,A| ' №`````}``````````````",
++ "`№''|°33333°°°°3u3°|^^^^^^^^^^^^^|ddd66А%Y|^^|---|^^^^^|,3|777|,,,|йББи|^^^|Y...|'|A..A|A..t,A| ' №`````}``````````````",
++ "`№''|°uuuuu°°°°3u3°|^^^^^^^^^^^^^|--------|^^|%dq|^^^^^|--|---|-@-|----|^^^@....|'|A..A|A..t,A| ' №`````}``````````````",
++ "`№''|°33333°°°°3u3°|^^^^^^^^^^^^^^^^^^^^^^^^^|hd,?^^^^^^^^^^^^^^^^^^^^^^^^^|1.d.|'|....?......g ''}!!!!µ±``````````````",
++ "`№''|°°°°°°°°°°°°°°|^^^^^^^^^^^^^^^^^^^^^^^^^|,,,|^^^^^^^^^^^^^^^^^^^^^^^^^|1.dH|'|11.%|qА%ooа| ''¶±±±±±±``````````````",
++ "`№''|-------??-----|ĜĜ|------|-ĜĜ-|---?--|---|,,,|^^^^^^^^^^^^^^^^^^^^^^^^^|o.dƼ|'|----|-|----| ' №````````````````````",
++ "`№'' /|22²²ИИИИ³³©©|''||00000|^^^^|x,,,,y|,s,s,,s|^^^^^^^^^^^^^^^^^^^^^^^^^|----|''''''''|дддД| ' №````````````````````",
++ "`№'' |°°°°°°°°°°°°|''}Ĝ....0|^^^^|x,,,,y|,h,h,,h|^^^^|-@---|^^^^^^^^^^^^^^?....|-?----|'|§¢¢¢| ' №````````````````````",
++ "`№'' g§°°°nnnn°°°°@''||....0|^^^^|,,,,,,|,,,,,,,|^^^^|%...6|^^^^^^^^^^^^^^|....|¢¢¢¢¥¢|'|--?-| ' №````````````````````",
++ "`№'' g§°°°nnnn°°°°|'a||00000|^^^^|DDDWWW|,s,s,,s|^^^^|...h6|^^^^^^^^^^^^^^|ЖЖЖЖ|оЁ£|''''''В ' №````````````````````",
++ "`№'' |°°°°°°°°°°°°|---------|^^^^|-------|h,h,,h|^^^^|А1ddd|----G----|-@--|----|---|--|ГВВВВВВ ' №````````````````````",
++ "`№'' |qqИИeeИИИИSS|b|b|b|b|b|^^^^|АAAAooo|------|-G--|--|gg|bo|,,,|ob|Y..А|S44|%.dq|/ ' №````````````````````",
++ "`№''|--------------|bobobobob|^^^^|,,,,,,,H|b,T|.....|T,b| |b,G,,,G,b|........?..dHg''''''''''''' №````````````````````",
++ "`№''|U|U|U|U|З...dd|,,,,,,,,,|^^^^?,,ddd,,,|b,,G.....G,,b| |,T|,,,|T,|........|....|' |w-|w-|w-|--№````````````````````",
++ "`№''|Г|Г|Г|Г|1....h|T,,3333,,G^^^^|%,,h,,,H|---|.....|---| |--|,,,|--|=-|=-|=-|m.1-|' |CI|CI|CI|Кй№````````````````````",
++ "`№''g..............|,,,,,,,,,|^^^^|--------|b,T|.....|T,b| |bo|,,,|ob|,c|,c|,c|m.З|'' |C.|C.|C.|ББ№````````````````````",
++ "`№''|..........|-@-|,obobobob|^^^^@......d5|b,,G.....G,,b| |b,G,,,G,b|,,|,,|,,|---|' |.h|.h|.h|ББ№````````````````````",
++ "`№''|QQQRRRcccS|/''|9|b|b|b|b|^^^^|-=|Y..dH|---|.....|---| |,T|,,,|T,|bb|bb|bb|/ '' /|.d|.d|.d|Би№````````````````````",
++ "`№''|-------g--|'''|---------|-ĜĜ-|ББ|.....|b,T|.ddd.|T,b| |--|---|--|--------| '|--|+-|+-|+-|=-№````````````````````",
++ "`№'''''''В::::::'''Г'''''''''''''/|йи|11.%q|b,,G.6h..G,,b|''''''''''''''''''''''''''+..............g````````````````````",
++ "`№'№№@№№'В:::::::::В ''' |-----g--|---|-----|---|' №№@№№ |+-|+-|+-|+-|=-№````````````````````",
++ "`№'№...№'В:;;;:::::В ''''''''''''''''''''''''''''' №...№ |.d|.d|.d|.d|БЙ№````````````````````",
++ "`№'№>..№'В:::::::::В '' №..>№ |.h|.h|.h|.h|ББ№````````````````````",
++ "`№'№№№№№'ВВВВВВВВВВВ '' №№№№№ |C.|C.|C.|C.|ББ№````````````````````",
++ "`№''''''''''''''''''''''''''' |CI|CI|CI|CI|Б7№````````````````````",
++ "`№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№g№№g№№g№№g№№№№№````````````````````",
++ "````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````"
++ ],
++ "palettes": [ "prison_palette" ],
++ "terrain": {
++ " ": [
++ [ "t_region_groundcover_urban", 20 ],
++ [ "t_region_groundcover_barren", 5 ],
++ [ "t_region_shrub", 2 ],
++ [ "t_region_tree", 1 ]
++ ],
++ "-": "t_brick_wall",
++ "|": "t_brick_wall",
++ "№": "t_concrete_wall",
++ ".": [ "t_floor" ],
++ ":": [ "t_region_groundcover_barren" ],
++ "#": [ "t_sand" ],
++ "*": [ "t_region_groundcover_barren" ],
++ ";": [ "t_trunk" ],
++ "/": [ "t_gutter_downspout" ],
++ "<": [ "t_slope_down" ],
++ "¦": [ "t_slope_down" ],
++ "§": [ "t_stairs_down" ],
++ "!": [ "t_dock" ],
++ "¡": [ "t_region_groundcover" ],
++ "¿": [ "t_shrub_rose" ],
++ "µ": [ "t_gates_control_metal" ],
++ "{": [ "t_dock" ],
++ ")": [ "t_pavement_y" ],
++ "}": [ "t_door_metal_locked" ],
++ "`": [ [ "t_water_dp", 20 ], "t_water_sh" ],
++ "^": [ "t_concrete" ],
++ "'": [ "t_concrete" ],
++ "Ø": [ "t_concrete" ],
++ "£": [ "t_thconc_floor" ],
++ "¢": [ "t_thconc_floor" ],
++ "¤": [ "t_thconc_floor" ],
++ "¥": [ "t_thconc_floor" ],
++ "²": [ "t_floor" ],
++ "³": [ "t_floor" ],
++ "©": [ "t_floor" ],
++ "°": [ "t_floor" ],
++ "¶": [ "t_card_industrial" ],
++ "@": [ "t_door_metal_pickable" ],
++ "?": [ "t_door_locked" ],
++ "%": [ "t_floor" ],
++ "±": [ "t_wall_metal" ],
++ "0": [ "t_floor" ],
++ "1": [ "t_floor" ],
++ "2": [ "t_floor" ],
++ "3": [ "t_floor" ],
++ "4": [ "t_floor" ],
++ "5": [ "t_floor" ],
++ "Ƽ": [ "t_floor" ],
++ "6": [ "t_console_broken" ],
++ "7": [ "t_floor" ],
++ "8": [ "t_concrete" ],
++ "9": [ "t_floor" ],
++ "a": [ "t_card_military" ],
++ "A": [ "t_floor" ],
++ "C": [ "t_floor" ],
++ "E": [ "t_concrete" ],
++ "f": [ "t_backboard" ],
++ "Ĝ": [ "t_door_bar_locked" ],
++ "G": [ "t_door_bar_c", "t_door_bar_o" ],
++ "H": [ "t_floor" ],
++ "I": [ "t_floor" ],
++ "J": [ "t_floor" ],
++ "K": [ "t_concrete" ],
++ "L": [ "t_floor" ],
++ "M": [ "t_floor" ],
++ "N": [ "t_floor" ],
++ "P": [ "t_floor" ],
++ "q": [ "t_floor" ],
++ "Q": [ "t_floor" ],
++ "R": [ "t_floor" ],
++ "s": [ "t_floor" ],
++ "u": [ "t_floor" ],
++ "U": [ "t_concrete" ],
++ "v": [ "t_floor" ],
++ "V": [ "t_floor" ],
++ "y": [ "t_floor" ],
++ "Y": [ "t_floor" ],
++ "x": [ "t_floor" ],
++ "X": [ "t_floor" ],
++ "Z": [ "t_fence_rope" ],
++ "А": [ "t_floor" ],
++ "а": [ "t_floor" ],
++ "Б": [ "t_linoleum_white" ],
++ "В": [ "t_chainfence" ],
++ "Г": [ "t_chaingate_l" ],
++ "Д": [ "t_sewage_pump" ],
++ "д": [ "t_sewage_pipe" ],
++ "Е": [ "t_water_pump" ],
++ "Ё": [ "t_thconc_floor" ],
++ "Ж": [ "t_floor" ],
++ "З": [ "t_floor" ],
++ "И": [ "t_floor" ],
++ "и": [ "t_linoleum_white" ],
++ "Й": [ "t_linoleum_white" ],
++ "й": [ "t_linoleum_white" ],
++ "К": [ "t_linoleum_white" ],
++ "Л": [ "t_floor" ],
++ "л": [ "t_floor" ],
++ "М": [ "t_floor" ],
++ "м": [ "t_floor" ],
++ "Н": [ "t_floor" ],
++ "н": [ "t_floor" ],
++ "О": [ "t_floor" ],
++ "о": [ "t_thconc_floor" ],
++ "П": [ "t_door_boarded" ],
++ "п": [ "t_floor" ]
++ },
++ "furniture": {
++ "²": [ "f_cupboard" ],
++ "³": [ "f_cupboard" ],
++ "©": [ "f_cupboard" ],
++ "<": [ "f_bookcase" ],
++ "{": [ "f_bitts" ],
++ "%": [ "f_air_conditioner" ],
++ "*": [ "f_boulder_large" ],
++ "Ø": [ "f_dumpster" ],
++ "0": [ "f_locker" ],
++ "1": [ "f_filing_cabinet" ],
++ "2": [ "f_cupboard" ],
++ "3": [ "f_metal_bench" ],
++ "4": [ "f_glass_fridge" ],
++ "5": [ "f_safe_l" ],
++ "Ƽ": [ "f_safe_l" ],
++ "7": [ "f_shower" ],
++ "8": [ "f_metal_bench" ],
++ "9": [ "f_dumpster" ],
++ "A": [ "f_sofa" ],
++ "C": [ "f_bed" ],
++ "H": [ "f_armchair" ],
++ "I": [ "f_dresser" ],
++ "J": [ "f_pinball_machine" ],
++ "K": [ "f_floor_canvas" ],
++ "L": [ "f_drill_press" ],
++ "M": [ "f_heavy_lathe" ],
++ "N": [ "f_utility_shelf" ],
++ "P": [ "f_workbench" ],
++ "q": [ "f_trashcan" ],
++ "Q": [ "f_cupboard" ],
++ "R": [ "f_locker" ],
++ "s": [ "f_desk" ],
++ "u": [ "f_table" ],
++ "U": [ "f_fiber_mat" ],
++ "x": [ "f_clothing_rail" ],
++ "X": [ "f_rack_coat" ],
++ "y": [ "f_locker" ],
++ "Y": [ "f_rack_coat" ],
++ "А": [ "f_speaker_cabinet" ],
++ "а": [ "f_fridge" ],
++ "Ж": [ "f_locker" ],
++ "З": [ "f_bookcase" ],
++ "И": [ "f_counter" ],
++ "и": [ "f_sink" ],
++ "Й": [ "f_rack_coat" ],
++ "й": [ "f_toilet" ],
++ "К": [ "f_trashcan" ],
++ "Л": [ "f_utility_shelf" ],
++ "л": [ "f_rack_coat" ],
++ "М": [ "f_crate_c" ],
++ "м": [ "f_crate_c" ],
++ "Н": [ "f_bookcase" ],
++ "н": [ "f_wardrobe" ],
++ "О": [ "f_locker" ],
++ "о": [ "f_locker" ],
++ "п": [ "f_bookcase" ]
++ },
++ "toilets": { "й": { } },
++ "place_item": [
++ { "item": "stethoscope", "x": 82, "y": 56, "chance": 100 },
++ { "item": "basketball", "x": [ 29, 41 ], "y": [ 32, 38 ], "chance": 100, "repeat": [ 1, 2 ] },
++ { "item": "baseball", "x": [ 28, 42 ], "y": [ 25, 28 ], "chance": 100, "repeat": [ 1, 3 ] },
++ { "item": "holy_symbol", "x": 74, "y": 29, "chance": 90 },
++ { "item": "holybook_bible1", "x": 75, "y": 29, "chance": 90 },
++ { "item": "icon", "x": 76, "y": 29, "chance": 90 },
++ { "item": "pliers", "x": 81, "y": 54, "chance": 100 },
++ { "item": "hammer", "x": 59, "y": 32, "chance": 100 },
++ { "item": "id_industrial", "x": 42, "y": 61, "chance": 100 },
++ { "item": "id_military", "x": 79, "y": 50, "chance": 100 },
++ { "item": "holster", "x": 79, "y": 50, "chance": 100 },
++ { "item": "m9", "x": 79, "y": 50, "chance": 100 },
++ { "item": "m9mag", "x": 79, "y": 50, "chance": 100 },
++ { "item": "9mm", "x": 79, "y": 50, "chance": 100 }
++ ],
++ "item": { "н": { "item": "cassock", "chance": 95 } },
++ "place_items": [
++ { "item": "table_destruction", "x": 16, "y": 40, "chance": 100 },
++ { "item": "table_destruction", "x": 17, "y": 40, "chance": 100 }
++ ],
++ "items": {
++ "²": { "item": "SUS_knife_drawer", "chance": 80 },
++ "³": { "item": "SUS_cookware", "chance": 80 },
++ "©": { "item": "SUS_spice_collection", "chance": 80 },
++ "Ø": { "item": "trash_cart", "chance": 50, "repeat": [ 2, 3 ] },
++ "c": { "item": "animalshelter_utility", "chance": 45, "repeat": [ 2, 3 ] },
++ "C": { "item": "bed", "chance": 70 },
++ "I": [ { "item": "cop_torso", "chance": 33 }, { "item": "cop_pants", "chance": 33 }, { "item": "cop_shoes", "chance": 33 } ],
++ "l": [ { "item": "hand_tools", "chance": 50 }, { "item": "tools_carpentry", "chance": 50 } ],
++ "m": [ { "item": "drugs_rare", "chance": 80, "repeat": [ 1, 2 ] } ],
++ "N": [ { "item": "hand_tools", "chance": 50 }, { "item": "tools_carpentry", "chance": 50 } ],
++ "n": { "item": "SUS_oven", "chance": 70 },
++ "q": { "item": "trash_cart", "chance": 50, "repeat": [ 2, 3 ] },
++ "Q": { "item": "prison_canine_food", "chance": 70, "repeat": [ 3, 5 ] },
++ "R": [
++ { "item": "animalshelter_softdrug", "chance": 70, "repeat": [ 1, 2 ] },
++ { "item": "animalshelter_hardrug", "chance": 30, "repeat": [ 1, 2 ] }
++ ],
++ "u": { "item": "mil_base_mess_hall", "chance": 30 },
++ "U": { "item": "prison_canine_bowl", "chance": 70 },
++ "x": [ { "item": "prison_textile", "chance": 90, "repeat": [ 1, 5 ] } ],
++ "Y": { "item": "clothing_outdoor_torso", "chance": 60 },
++ ":": { "item": "animalshelter_toys", "chance": 5 },
++ "0": [
++ { "item": "prison_weapons", "chance": 50, "repeat": [ 1, 3 ] },
++ { "item": "prison_armor", "chance": 50, "repeat": [ 1, 3 ] }
++ ],
++ "1": { "item": "SUS_office_filing_cabinet", "chance": 50 },
++ "2": { "item": "SUS_utensils", "chance": 80 },
++ "4": [ { "item": "softdrugs", "chance": 50 }, { "item": "harddrugs", "chance": 50 } ],
++ "5": { "item": "alcohol_bottled_canned", "chance": 95, "repeat": [ 1, 3 ] },
++ "9": { "item": "trash_cart", "chance": 50, "repeat": [ 2, 3 ] },
++ "а": { "item": "SUS_coffee_cupboard", "chance": 65 },
++ "Ж": { "item": "SUS_janitors_closet", "chance": 95 },
++ "З": { "item": "doctors_books", "chance": 75, "repeat": [ 1, 2 ] },
++ "Л": { "item": "prison_workshop_safety", "chance": 75 },
++ "л": { "item": "prison_jumpsuit", "chance": 75 },
++ "М": { "item": "wood_workshop", "chance": 75 },
++ "м": { "item": "supplies_metal", "chance": 75 },
++ "Н": { "item": "religious_books", "chance": 90, "repeat": [ 1, 3 ] },
++ "О": [
++ { "item": "tools_earthworking", "chance": 90, "repeat": [ 1, 2 ] },
++ { "item": "farming_tools", "chance": 90, "repeat": [ 1, 2 ] },
++ { "item": "hazmat_boots", "chance": 90 }
++ ],
++ "о": { "item": "tools_electronics", "chance": 90, "repeat": [ 1, 2 ] }
++ },
++ "vendingmachines": { "v": { "item_group": "vending_drink" }, "V": { "item_group": "vending_food" } },
++ "monster": {
++ ",": [
++ { "monster": "mon_zombie_prisoner", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_fat", "chance": 2 },
++ { "monster": "mon_zombie_prisoner_tough", "chance": 2 }
++ ],
++ ".": { "monster": "mon_zombie_cop", "chance": 1 },
++ "¢": { "monster": "mon_zombie_technician", "chance": 20 },
++ "^": { "monster": "mon_zombie_prisoner_brute", "chance": 1 },
++ "`": { "monster": "mon_zhark", "chance": 1 },
++ ":": { "monster": "mon_dog_gshepherd", "chance": 1 },
++ "U": { "monster": "mon_dog_gshepherd", "chance": 10 },
++ "'": [ { "monster": "mon_dog_zombie_cop", "chance": 1 }, { "monster": "mon_zombie_cop", "chance": 1 } ]
++ },
++ "place_monster": [
++ { "monster": "mon_zombie_brute_shocker", "x": 65, "y": 36, "name": "The Foreman" },
++ { "monster": "mon_zombie_master", "x": 40, "y": 63, "name": "The Warden" },
++ { "monster": "mon_zombie_kevlar_2", "x": 77, "y": 48, "name": "The Chief" },
++ { "monster": "mon_zombie_scientist", "x": 81, "y": 58, "name": "The Doctor" },
++ { "monster": "mon_zombie_necro", "x": 75, "y": 28, "name": "The Priest" },
++ { "monster": "mon_zombie_prisoner_brute", "x": 50, "y": 33, "name": "The Bully" }
++ ],
++ "place_npcs": [
++ { "class": "prisoner_generic", "x": 17, "y": 53 },
++ { "class": "prisoner_greeter", "x": 17, "y": 43 },
++ { "class": "prisoner_generic", "x": 15, "y": 41 },
++ { "class": "prisoner_generic", "x": 10, "y": 41 },
++ { "class": "prisoner_generic", "x": 8, "y": 41 },
++ { "class": "prisoner_generic", "x": 9, "y": 53 },
++ { "class": "prisoner_generic", "x": 17, "y": 47 }
++ ],
++ "place_zones": [
++ { "type": "NPC_INVESTIGATE_ONLY", "faction": "prisoners", "x": [ 5, 18 ], "y": [ 33, 47 ] },
++ { "type": "NPC_INVESTIGATE_ONLY", "faction": "prisoners", "x": [ 5, 18 ], "y": [ 48, 56 ] }
++ ],
++ "nested": {
++ "^": { "chunks": [ [ "corpse_blood_3x3", 5 ], [ "null", 95 ] ] },
++ ".": { "chunks": [ [ "corpse_blood_3x3", 5 ], [ "null", 95 ] ] },
++ ",": { "chunks": [ [ "corpse_blood_3x3", 5 ], [ "null", 95 ] ] },
++ "'": { "chunks": [ [ "corpse_blood_3x3", 5 ], [ "null", 95 ] ] },
++ "Б": { "chunks": [ [ "corpse_blood_3x3", 5 ], [ "null", 95 ] ] }
++ },
++ "place_vehicles": [ { "vehicle": "boat_motor_single", "x": 100, "y": 45, "chance": 100, "status": 0 } ]
++ }
++ },
++ {
++ "type": "mapgen",
++ "method": "json",
++ "om_terrain": [
++ [
++ "prison_island_1_2f_1",
++ "prison_island_1_2f_2",
++ "prison_island_1_2f_3",
++ "prison_island_1_2f_4",
++ "prison_island_1_2f_5"
++ ],
++ [
++ "prison_island_1_2f_6",
++ "prison_island_1_2f_7",
++ "prison_island_1_2f_8",
++ "prison_island_1_2f_9",
++ "prison_island_1_2f_10"
++ ],
++ [
++ "prison_island_1_2f_11",
++ "prison_island_1_2f_12",
++ "prison_island_1_2f_13",
++ "prison_island_1_2f_14",
++ "prison_island_1_2f_15"
++ ]
++ ],
++ "object": {
++ "rows": [
++ " ",
++ " №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№ ",
++ " №№ № ",
++ " №№ |----------| 14w41 № ",
++ " №№ |..........| wd,<1 № ",
++ " №№ |..........| wdh,1 № ",
++ " №№ |..........| 14w41 № ",
++ " №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№ |..........| № ",
++ " № |..........| № ",
++ " № 14w41 |-----Ю..........| № ",
++ " № 1<,dw |-----------------------------|................Ю--------------------------| № ",
++ " № 1,hdw |.........................................................................| № ",
++ " № 14w41 |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |.........................................................................| № ",
++ " № |-----------------------------|....................................|------| № ",
++ " № |-...................................| № ",
++ " № |...................................|--| № ",
++ " № |......................................| № ",
++ " № |......................................|-------| № ",
++ " № |..............................................| № ",
++ " № |..............................................Ю---| № ",
++ " № |..................................................| № ",
++ " № |---Ю------------------| |..................................................| №№ ",
++ " № |......................| |..................................................| №№ ",
++ " № |......................| |...........................|----------|...........| № ",
++ " № |......................| |...........................| |...........| № ",
++ " № |......................| |...........................| |...........| № ",
++ " № |......................| |...........................| |----|...........| № ",
++ " № |......................| |...........................| |................| № ",
++ " № |......................| |...........................| |................| №№ ",
++ " № |......................| -|-----------|...............| |................| №№ ",
++ " № |..............|-------| |--------| |...............| |................| № ",
++ " № |..............| |........| |...............| |................| № ",
++ " № |..............| |........| |...............| |................| № ",
++ " № |..............| |........| |...............| |..|-|...........| № ",
++ " № |..............| |........| |...............| |-|..| |...........| №..... ",
++ " № |..............| |........| |---| |...............| |....| |...........| №..... ",
++ " № |..............| |--------| |...| |---------------| |....| |...........| №..... ",
++ " № |..............| |...| |....| |...........| №..... ",
++ " № |..............| |...| |....| |...........| № ",
++ " № |-Ю............|---------| |----------|...| |....| |------|....| № ",
++ " № |......................| |..............| |....| |....| № ",
++ " № |......................| |..............| |-----| |....|------| |....| № ",
++ " № |......................| |..............| |.....| |...........| |----| № ",
++ " № |......................| |..............| |.....| |...........| № ",
++ " № |......................| |..............| |.....|--------------|........Ю--| № ",
++ " № |......................| |..............|----|..|--|.......................| № ",
++ " № |-|......................| |......................| |.......................| № ",
++ " № |........................| |......................| |.......................| |----------|№ ",
++ " № |........................| |......................| |......................-| |..........|№ ",
++ " № |........................| |......................| |......................| |..........|№ ",
++ " № |..........|---|.........| |......................| |..................Ю---| |..........|№ ",
++ " № |..........| |.........| |......................| |..................| |..........|№ ",
++ " № |----------| |---------| |......................| |------------------| |--Ю..........|№ ",
++ " № |......................| |.............|№ ",
++ " № 14w41 Ю----------------------| 14w41 |.............|№ ",
++ " № 1,hdw wdh,1 |.............|№ ",
++ " № 1<,dw wd,<1 |.............|№ ",
++ " № 14w41 44w41 |.............|№ ",
++ " № |-------------|№ ",
++ " №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№ ",
++ " "
++ ],
++ "palettes": [ "prison_palette" ],
++ "terrain": {
++ " ": [ "t_open_air" ],
++ ".": [ "t_flat_roof" ],
++ "№": "t_concrete_wall",
++ "1": "t_brick_wall",
++ "4": "t_brick_wall",
++ "|": [ "t_gutter_north" ],
++ "-": [ "t_gutter_west" ],
++ "w": [ "t_metal_grate_window_noglass" ],
++ "Ю": [ "t_gutter_drop" ]
++ },
++ "item": { ".": { "item": "feces_bird", "chance": 2 } }
++ }
++ },
++ {
++ "type": "mapgen",
++ "method": "json",
++ "om_terrain": [
++ [
++ "prison_island_1_ug_1",
++ "prison_island_1_ug_2",
++ "prison_island_1_ug_3",
++ "prison_island_1_ug_4",
++ "prison_island_1_ug_5"
++ ],
++ [
++ "prison_island_1_ug_6",
++ "prison_island_1_ug_7",
++ "prison_island_1_ug_8",
++ "prison_island_1_ug_9",
++ "prison_island_1_ug_10"
++ ],
++ [
++ "prison_island_1_ug_11",
++ "prison_island_1_ug_12",
++ "prison_island_1_ug_13",
++ "prison_island_1_ug_14",
++ "prison_island_1_ug_15"
++ ]
++ ],
++ "object": {
++ "faction_owner": [ { "id": "prisoners", "x": [ 8, 23 ], "y": [ 50, 57 ] } ],
++ "rows": [
++ " ",
++ " ",
++ " @ ",
++ " ` |----------| ",
++ " ```````` |~~~~~~~~~~| ",
++ " ` |---|~|----| ",
++ " ``````` |~| ",
++ " ` |---|~|----| ",
++ " ``` |~~~~~~~~~~| ",
++ " ` |---|~|----| ",
++ " ` |~| ",
++ " ` |~| ",
++ " `` |---------------------------------------|~|-------------------------------| ",
++ " `` |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@| ",
++ " ` |---------------------------------------|~|-------------------------------| ",
++ " `` |~| ",
++ " ` |~| ",
++ " ` |~| ",
++ " ` |~| ",
++ " ` |~| ",
++ " ` |---------------------------------------|~|-------------------------------| ",
++ " `` |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| ",
++ " ``` |--------------------------------|~|-------------------|~|----------------| ",
++ " `` |~| |~| ",
++ " ` ^^^^^^ |~| |~| ",
++ " `` ^ ^^^^' |~| |~| ",
++ " ` ^ ' |~| |~| ",
++ " ``` ^ ' |~| |~| ",
++ " `` ^^^^^^^^^ ' |~| |~| ",
++ " ` ^ ^ ' |~| |~| ",
++ " ` ^ ^ '' |~| |~| ",
++ " ` ^ ' |~| |~| ",
++ " ` ^^^^ '' |~| |~| ",
++ " `` ^^^^^^^ ' |~| |~| ",
++ " ` ^^^ ^^^^^^^^ '' |~| |~| ",
++ " ` ^^^ ^^ ^ ' |~| |~| ",
++ " `` ^^^ ^^ ^ ' |~| |~| ",
++ " ` ^^^ ^ ' |~| |~| ",
++ " ` ^^^ ^ ' |~| |~| ",
++ " ` ^^^ ^^ ' |~| |~| ",
++ " ` ^^^````` ^^ '' |~| |-| |~| ",
++ " ` ````` '' |~| |~| |~| ",
++ " ``````````` '' |~|-----------|~|-----|~| ",
++ " ' |~~~~~~~~~~~~~~~~~~~~~~~| ",
++ " '' |~|-----------|~|-----|~| ",
++ " '' |~| |~| |~| ",
++ " ' |~| |~| |~| ",
++ " ' |~| |-| |~| ",
++ " ' |~| |~| ",
++ " !!!!!!!!!!!!!!!!! '''' |~| |~| |----| ",
++ " !1.2!3.4!5.6!7.8! ' |------------|~|--------------------~|-------------------|____| ",
++ " !1:2!3:4!5:6!7:8! ' |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~д___| ",
++ " !!!!?!!!?!!!?!!!?!! '' |~|---|~|----|~|-------------------|~|-----------------|~|>___| ",
++ " !>.d..:.......:...! ''' |~| ||~|| |~| |~| |~|----| ",
++ " !>.h..:.......:...! ' |~| |~~~| |~| |~| |~| ",
++ " !!!!?!!!?!!!?!!!?!! |--/---~| |---| |~| |~| |~| ",
++ " !9:9!0:A!B:C!D:D! |~~~~~~~| |~| |~| |~| ",
++ " !9.9!0.A!B.C!D.D! |-------| |~| |~| |~| ",
++ " !!!!!!!!!!!!!!!!! |~| |~| |~| ",
++ " |~| |~| |~| ",
++ " |~| |~| |~| ",
++ " |~| |~| |~| ",
++ " |-------------------------------|~|-------------------|~|-----------------|~|---------| ",
++ " |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| ",
++ " |-----------------------------------------------------------------------------------|~| ",
++ " |~| ",
++ " |~| ",
++ " |~| ",
++ " |~| ",
++ " |~| ",
++ " |-| ",
++ " "
++ ],
++ "palettes": [ "prison_palette" ],
++ "terrain": {
++ " ": [ "t_rock" ],
++ "^": [ "t_rock_floor" ],
++ "_": [ "t_grate" ],
++ "~": [ "t_sewage" ],
++ "'": [ "t_water_sh_murky_underground" ],
++ "`": [ "t_swater_dp_underground" ],
++ "|": [ "t_brick_wall" ],
++ "-": [ "t_brick_wall" ],
++ "/": [ "t_brick_wall_halfway" ],
++ ">": [ "t_stairs_up" ],
++ "@": [ "t_slope_up" ],
++ ".": [ "t_thconc_floor" ],
++ ":": [ "t_thconc_floor_olight" ],
++ "!": [ "t_concrete_wall" ],
++ "?": [ "t_door_bar_locked" ],
++ "1": [ "t_thconc_floor" ],
++ "2": [ "t_thconc_floor" ],
++ "3": [ "t_thconc_floor" ],
++ "4": [ "t_thconc_floor" ],
++ "5": [ "t_thconc_floor" ],
++ "6": [ "t_thconc_floor" ],
++ "7": [ "t_thconc_floor" ],
++ "8": [ "t_thconc_floor" ],
++ "9": [ "t_thconc_floor" ],
++ "0": [ "t_thconc_floor" ],
++ "A": [ "t_thconc_floor" ],
++ "B": [ "t_thconc_floor" ],
++ "C": [ "t_thconc_floor" ],
++ "D": [ "t_thconc_floor" ],
++ "d": [ "t_thconc_floor" ],
++ "h": [ "t_thconc_floor" ],
++ "д": [ "t_sewage_pipe" ]
++ },
++ "furniture": {
++ "1": "f_crate_o",
++ "2": "f_crate_o",
++ "3": "f_crate_o",
++ "4": "f_crate_o",
++ "5": "f_crate_o",
++ "6": "f_crate_o",
++ "7": "f_crate_o",
++ "8": "f_crate_o",
++ "9": "f_utility_shelf",
++ "0": "f_utility_shelf",
++ "A": "f_utility_shelf",
++ "B": "f_utility_shelf",
++ "C": "f_utility_shelf",
++ "D": "f_fridge"
++ },
++ "item": {
++ "1": { "item": "carrot", "chance": 95, "repeat": [ 1, 20 ] },
++ "2": { "item": "potato", "chance": 95, "repeat": [ 1, 20 ] },
++ "3": { "item": "onion", "chance": 95, "repeat": [ 1, 20 ] },
++ "4": { "item": "cabbage", "chance": 95, "repeat": [ 1, 20 ] },
++ "5": { "item": "corn", "chance": 95, "repeat": [ 1, 20 ] },
++ "6": { "item": "garlic", "chance": 95, "repeat": [ 1, 10 ] },
++ "7": { "item": "apple", "chance": 95, "repeat": [ 1, 20 ] },
++ "8": { "item": "lemon", "chance": 95, "repeat": [ 1, 10 ] }
++ },
++ "items": {
++ "9": { "item": "SUS_pantry", "chance": 95 },
++ "0": { "item": "teashop_bulk_teas", "chance": 95, "repeat": [ 1, 20 ] },
++ "A": { "item": "groce_ingredient", "chance": 95, "repeat": [ 1, 20 ] },
++ "B": { "item": "groce_bread", "chance": 95, "repeat": [ 1, 20 ] },
++ "C": { "item": "groce_cereal", "chance": 95, "repeat": [ 1, 20 ] },
++ "D": { "item": "butcher_raw_meat", "chance": 95, "repeat": [ 1, 20 ] },
++ "d": { "item": "magazines", "chance": 50 }
++ },
++ "monster": { "~": { "monster": "mon_sewer_fish", "chance": 2 }, "'": { "monster": "mon_sewer_snake", "chance": 10 } },
++ "place_npcs": [
++ { "class": "prisoner_leader", "x": 9, "y": 54 },
++ { "class": "prisoner_generic", "x": 14, "y": 53 },
++ { "class": "prisoner_generic", "x": 18, "y": 54 },
++ { "class": "prisoner_generic", "x": 22, "y": 53 }
++ ]
++ }
++ },
++ {
++ "id": "table_destruction",
++ "type": "item_group",
++ "subtype": "collection",
++ "items": [
++ { "item": "2x4", "count": [ 2, 4 ] },
++ { "item": "wood_panel", "count": [ 0, 1 ] },
++ { "item": "nail", "charges": [ 4, 8 ] },
++ { "item": "splinter", "count": 1 }
++ ]
++ },
++ {
+ "id": "prison_canine_food",
+ "type": "item_group",
+ "items": [ { "item": "dogfood", "prob": 100, "container-item": "can_medium" } ]
+@@ -839,5 +1552,63 @@
+ [ "jerky", 40 ],
+ [ "rope_6", 15 ]
+ ]
++ },
++ {
++ "type": "item_group",
++ "id": "prison_workshop_safety",
++ "subtype": "collection",
++ "items": [
++ { "item": "mask_dust", "prob": 75, "damage": [ 1, 4 ] },
++ { "item": "gloves_work", "prob": 75, "damage": [ 1, 4 ] },
++ { "item": "glasses_safety", "prob": 75, "damage": [ 1, 4 ] }
++ ]
++ },
++ {
++ "id": "prison_jumpsuit",
++ "type": "item_group",
++ "items": [ { "item": "jumpsuit", "prob": 75, "damage": [ 1, 4 ] } ]
++ },
++ {
++ "type": "item_group",
++ "id": "prisoner_or_cop_clothes",
++ "subtype": "collection",
++ "entries": [
++ { "group": "male_underwear", "damage": [ 1, 4 ] },
++ {
++ "distribution": [
++ {
++ "collection": [
++ { "item": "striped_shirt", "damage": [ 1, 4 ] },
++ { "item": "striped_pants", "damage": [ 1, 4 ] },
++ { "group": "clothing_prisoner_shoes", "damage": [ 1, 4 ], "prob": 20 },
++ { "item": "bandana", "damage": [ 1, 4 ] }
++ ]
++ },
++ {
++ "collection": [
++ { "group": "cop_pants", "damage": [ 1, 4 ] },
++ { "group": "cop_shoes", "damage": [ 1, 4 ], "prob": 20 },
++ { "group": "cop_torso", "damage": [ 1, 4 ] },
++ { "group": "clothing_watch", "prob": 20 },
++ { "item": "police_belt", "damage": [ 1, 4 ], "prob": 20 }
++ ]
++ }
++ ],
++ "prob": 90
++ },
++ { "group": "socks_unisex", "damage": [ 1, 4 ] },
++ { "group": "clothing_glasses", "prob": 20 },
++ { "item": "corpse_generic_human", "damage": 4 }
++ ]
++ },
++ {
++ "type": "mapgen",
++ "method": "json",
++ "nested_mapgen_id": "corpse_blood_3x3",
++ "object": {
++ "mapgensize": [ 3, 3 ],
++ "place_items": [ { "item": "prisoner_or_cop_clothes", "x": 0, "y": 0, "chance": 30 } ],
++ "place_fields": [ { "field": "fd_blood", "x": [ 0, 2 ], "y": [ 0, 2 ], "intensity": 1, "age": 10 } ]
++ }
+ }
+ ]
+--- a/data/json/overmap/overmap_special/specials.json
++++ b/data/json/overmap/overmap_special/specials.json
+@@ -948,6 +982,67 @@
+ },
+ {
+ "type": "overmap_special",
++ "id": "Island prison",
++ "overmaps": [
++ { "point": [ -1, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 0, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 1, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 2, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 3, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 4, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 5, -1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 5, 0, 0 ], "overmap": "lake_surface" },
++ { "point": [ 5, 1, 0 ], "overmap": "lake_surface" },
++ { "point": [ 5, 2, 0 ], "overmap": "lake_surface" },
++ { "point": [ 5, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ 4, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ 3, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ 2, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ 1, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ 0, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ -1, 3, 0 ], "overmap": "lake_surface" },
++ { "point": [ -1, 2, 0 ], "overmap": "lake_surface" },
++ { "point": [ -1, 1, 0 ], "overmap": "lake_surface" },
++ { "point": [ -1, 0, 0 ], "overmap": "lake_surface" },
++ { "point": [ 0, 0, 0 ], "overmap": "prison_island_1_1_north" },
++ { "point": [ 1, 0, 0 ], "overmap": "prison_island_1_2_north" },
++ { "point": [ 2, 0, 0 ], "overmap": "prison_island_1_3_north" },
++ { "point": [ 3, 0, 0 ], "overmap": "prison_island_1_4_north" },
++ { "point": [ 4, 0, 0 ], "overmap": "prison_island_1_5_north" },
++ { "point": [ 0, 1, 0 ], "overmap": "prison_island_1_6_north" },
++ { "point": [ 1, 1, 0 ], "overmap": "prison_island_1_7_north" },
++ { "point": [ 2, 1, 0 ], "overmap": "prison_island_1_8_north" },
++ { "point": [ 3, 1, 0 ], "overmap": "prison_island_1_9_north" },
++ { "point": [ 4, 1, 0 ], "overmap": "prison_island_1_10_north" },
++ { "point": [ 0, 2, 0 ], "overmap": "prison_island_1_11_north" },
++ { "point": [ 1, 2, 0 ], "overmap": "prison_island_1_12_north" },
++ { "point": [ 2, 2, 0 ], "overmap": "prison_island_1_13_north" },
++ { "point": [ 3, 2, 0 ], "overmap": "prison_island_1_14_north" },
++ { "point": [ 4, 2, 0 ], "overmap": "prison_island_1_15_north" },
++ { "point": [ 0, 0, 1 ], "overmap": "prison_island_1_2f_1_north" },
++ { "point": [ 1, 0, 1 ], "overmap": "prison_island_1_2f_2_north" },
++ { "point": [ 2, 0, 1 ], "overmap": "prison_island_1_2f_3_north" },
++ { "point": [ 3, 0, 1 ], "overmap": "prison_island_1_2f_4_north" },
++ { "point": [ 4, 0, 1 ], "overmap": "prison_island_1_2f_5_north" },
++ { "point": [ 0, 1, 1 ], "overmap": "prison_island_1_2f_6_north" },
++ { "point": [ 1, 1, 1 ], "overmap": "prison_island_1_2f_7_north" },
++ { "point": [ 2, 1, 1 ], "overmap": "prison_island_1_2f_8_north" },
++ { "point": [ 3, 1, 1 ], "overmap": "prison_island_1_2f_9_north" },
++ { "point": [ 4, 1, 1 ], "overmap": "prison_island_1_2f_10_north" },
++ { "point": [ 0, 2, 1 ], "overmap": "prison_island_1_2f_11_north" },
++ { "point": [ 1, 2, 1 ], "overmap": "prison_island_1_2f_12_north" },
++ { "point": [ 2, 2, 1 ], "overmap": "prison_island_1_2f_13_north" },
++ { "point": [ 3, 2, 1 ], "overmap": "prison_island_1_2f_14_north" },
++ { "point": [ 4, 2, 1 ], "overmap": "prison_island_1_2f_15_north" }
++ ],
++ "locations": [ "lake_surface" ],
++ "city_distance": [ 3, -1 ],
++ "city_sizes": [ 4, 12 ],
++ "occurrences": [ 15, 100 ],
++ "flags": [ "CLASSIC", "LAKE", "UNIQUE" ]
++ },
++ {
++ "type": "overmap_special",
+ "id": "Prison Hidden Lab",
+ "overmaps": [
+ { "point": [ 0, -1, 0 ], "overmap": "road_end_north" },
+--- a/data/json/overmap/overmap_terrain/overmap_terrain_public_institutional.json
++++ b/data/json/overmap/overmap_terrain/overmap_terrain_public_institutional.json
+@@ -256,7 +285,52 @@
+ "prison_alcatraz_12_2f",
+ "prison_alcatraz_13_2f",
+ "prison_alcatraz_14_2f",
+- "prison_alcatraz_15_2f"
++ "prison_alcatraz_15_2f",
++ "prison_island_1_1",
++ "prison_island_1_2",
++ "prison_island_1_3",
++ "prison_island_1_4",
++ "prison_island_1_5",
++ "prison_island_1_6",
++ "prison_island_1_7",
++ "prison_island_1_8",
++ "prison_island_1_9",
++ "prison_island_1_10",
++ "prison_island_1_11",
++ "prison_island_1_12",
++ "prison_island_1_13",
++ "prison_island_1_14",
++ "prison_island_1_15",
++ "prison_island_1_2f_1",
++ "prison_island_1_2f_2",
++ "prison_island_1_2f_3",
++ "prison_island_1_2f_4",
++ "prison_island_1_2f_5",
++ "prison_island_1_2f_6",
++ "prison_island_1_2f_7",
++ "prison_island_1_2f_8",
++ "prison_island_1_2f_9",
++ "prison_island_1_2f_10",
++ "prison_island_1_2f_11",
++ "prison_island_1_2f_12",
++ "prison_island_1_2f_13",
++ "prison_island_1_2f_14",
++ "prison_island_1_2f_15",
++ "prison_island_1_ug_1",
++ "prison_island_1_ug_2",
++ "prison_island_1_ug_3",
++ "prison_island_1_ug_4",
++ "prison_island_1_ug_5",
++ "prison_island_1_ug_6",
++ "prison_island_1_ug_7",
++ "prison_island_1_ug_8",
++ "prison_island_1_ug_9",
++ "prison_island_1_ug_10",
++ "prison_island_1_ug_11",
++ "prison_island_1_ug_12",
++ "prison_island_1_ug_13",
++ "prison_island_1_ug_14",
++ "prison_island_1_ug_15"
+ ],
+ "name": "prison",
+ "sym": "p",
+--- a/data/json/start_locations.json
++++ b/data/json/start_locations.json
+@@ -303,11 +348,17 @@
+ {
+ "type": "start_location",
+ "id": "sloc_prison_alcatraz",
+- "name": "Island prison",
++ "name": "Island prison type A",
+ "terrain": [ "prison_alcatraz_3" ]
+ },
+ {
+ "type": "start_location",
++ "id": "sloc_prison_island",
++ "name": "Island prison type B",
++ "terrain": [ "prison_island_1_1" ]
++ },
++ {
++ "type": "start_location",
+ "id": "sloc_mi-go_camp",
+ "name": "Mi-go camp",
+ "terrain": [ "mi-go_camp1" ]