The Introversion video blog says a warning will be issued if "...you have 20 deaths occur..." but they don't say how many escapes will trigger it.
You then get a number of hours to rectify the situation, if you have more deaths/escapes in that warning time then you are fired and put in your own prison.
Triggering the failure condition is going to be harder than it sounds. If your guards have tasers then tend to stop escapes quite quickly, if you try just leaving the front door open. An alternative would be to have your Yard next to an outer wall and then, during yard time, have a workman install a normal door in the outside wall. Lock open the
door and see how many make a break for it. At least by using a door you can then lock it shut again.
Another suggestion would be to start a riot and then let armed guards go "weapons free", that should cause the body count to rise.
As of now (Alpha-29) this is currently not possible with a mod, because the game does not recognize when you try to override "names_in_the_game.txt". If it annoys you enough you can modify main.dat directly though.
I've created a mod on steam that provides the files, and same instructions, as this answer: http://steamcommunity.com/sharedfiles/filedetails/?id=402505971.
IMPORTANT: This answer modifies gamefiles directly. The answer is provided as-is, and could very well break the game completely. You are strongly recommended to back up your game files and your save files before trying this out. You'll likely need to repeat the steps after the game auto-updates.
First we need WinRar. You can download a free trial version from the official website if you don't have it already.
Go to your game files. By default they are located in C:\Program Files (x86)\Steam\steamapps\common\Prison Architect
. Open "main.dat" in WinRAR. You might need to rename the file to "main.rar" to get this to work. Extract all the files to a place you can find, such as your desktop.
There should be a Data folder in the files you just extracted. Replace "names_in_the_game.txt" with a version you like better. An empty file will remove all the custom prisoners from the game. I personally prefer to run a script on the original file to normalize some of the crazy stuff. I'll include the sourcecode of a python script I wrote in the bottom.
Once you are done, replace the file "names_in_the_game.txt" in the Data folder. Right-click on the Data folder and "add it to archive". This should open WinRar. Set the outputfile to be main.dat
. The output format should be "rar". You have to turn on the option "make compact archive" or something along those lines in the archive options. Click "Ok" and it will start recreating main.dat. Last, move "main.dat" back into your game folder.
import re, random
sourcebiographies = "biographies.txt"
sourcefile = "names_in_the_game_original.txt"
outputfile = "names_in_the_game.txt"
forenames = []
surnames = []
validpresurname = ['mc', 'von', 'van', 'de', 'da', 'di', 'du', 'la', 'le', 'der', 'the', 'af', 'of', 'el', 'vi', 'v/d', 'den', 'al', 'del', 'se']
i = open( sourcebiographies, "r" )
for line in i:
x = re.split( "[\t ]+", line.strip(), 1 )
if x[0] == "Forename":
forenames.append( x[1] )
elif x[0] == "Surname":
surnames.append( x[1] )
i.close()
i = open( sourcefile, "r" )
o = open( outputfile, "w" )
for line in i:
x = re.split( "[\t ]+", line.strip(), 1 )
if len(x) > 1:
val = x[1][1:-1]
if x[0] == "Bio":
#Blank out every bio. Most of them are crap
o.write( " Bio \t\t\"\"\n" )
elif x[0] == "LastName" and len(val.strip().split( " " )) > 1 and val.strip().split( " " )[0].lower() not in validpresurname:
#Some people abused the LastName field. If our educated guess of finding out
#if the name is valid, we replace it with a random name
o.write( " LastName \t\t\"%s\"\n" % random.choice( surnames ) )
elif x[0] == "LastName" and len( val ) <= 1:
#If the last name is 1 or 0 characters long, we replace it with a random one
o.write( " LastName \t\t\"%s\"\n" % random.choice( surnames ) )
elif x[0] == "FirstName" and len( val ) <= 1:
#Similary if the first name is 1 or 0 characters long, replace it with a
#normal name
o.write( " FirstName \t\t\"%s\"\n" % random.choice( forenames ) )
elif x[0] == "NickName" and (len(val.split( ' ' )) > 2 or len(val) > 15):
#Some people write entire stories in their nickname; if there are more
#than 2 words in the nickname, or the nickname is very long (15+ characters)
#we just ignore it
pass
elif x[0] == "FirstName" and re.match( "^(?P<rep>.+)(?P=rep)(?P=rep).+$", val.lower() ):
#If the first name is a repetition of some kind, let's replace it
o.write( " FirstName \t\t\"%s\"\n" % random.choice( forenames ) )
elif x[0] == "LastName" and re.match( "^(?P<rep>.+)(?P=rep)(?P=rep).+$", val.lower() ):
#Same for the surname
o.write( " LastName \t\t\"%s\"\n" % random.choice( surnames ) )
elif x[0] == "NickName" and not re.match( "^[a-z ]+$", val.lower() ):
#Some people have weird characters in their nickname; we don't want that
pass
elif x[0] == "FirstName" or x[0] == "LastName" or x[0] == "NickName":
#Some people don't know how to capitalize a name. On the off-chance
#that we misspell 1 or 2 names we just title-case the first and last name!
o.write( " %s \t\t\"%s\"\n" % (x[0], val.title()) )
else:
#Everything else we just write back unchanged
o.write( line )
i.close()
o.close()
Best Answer
Although this isn't answering your direct question about how much mail per person arrives, I think that even 35 mail delivery people can be way too few if your "Work/Free Time" is scarce for a prison of that size. Mailroom workers take a long time to deliver a single piece of mail, and if the path is long enough, might not even get through a single satchel of mail in a single work hour. I'd either increase the number of workers in the mail room(s) or create more Work time in the daily regimen.
Mail (along with phone access and visitation) is very important in keeping the Family need in check. Screwing with prisoners' mail is a good way to get them all riled up.