# "Fate Breaker" by Mason Richardson. Project started on TI-83 calculator on a Monday night, April 8th 2019 # Due to the limitations of that system I decided to learn Python by making this game. # Youtube is an incredible thing, although I am in college I am not a Computer Science major, and so this was built # entirely by independent study and a looooot of stack overflow and youtube tutorials import cmd import textwrap import sys import os import time import random from tkinter import PhotoImage from tkinter import Tk from tkinter import messagebox #root.attributes('-fullscreen', True) # Image path provided as first command line arg. PNG format #root.iconphoto(jkl, PhotoImage(file=sys.argv[1])) screen_width = 118 destination = 0 ########################## CLASSES ARE STORED HERE ## Player class and player list (only one player) class player: def __init__(self): self.name = '' self.vouchers = 0 self.location = 'fd' self.status_effects = [] self.game_over = False self.can_pass = True self.destination = '' class voucher: def __init__(self, locations, name, names): self.locations = locations self.name = name self.names = names Vouchers = voucher(['ib', 'fe'], 'Voucher', ['voucher', 'vouchers']) roomvouchers = [] myPlayer = player() ## Item class and item and instances are here, also lists to keep track of them with functions. class worlditem: def __init__(self, location, in_inventory, names, locked, name, worldkey, value, merchantid): self.location = location self.in_inventory = in_inventory self.locked = locked self.names = names self.name = name self.worldkey = worldkey self.value = value self.merchantid = merchantid # just so you know, each merchant has a merchant id associated with them, and items have those too, so you can change which merchant "has" that item. Monolith_Data_Disk = worlditem('fc', False, ['monolith data disk', 'data disk', 'disk', 'monolith data', 'data' ], False, 'Monolith Data Disk', '', 1, 0) Map = worlditem('0', True, ['Map'], False, 'map', '', 0, 0) Fortis_Equipment = worlditem('ed', False, ['fortis equipment', 'fortis', 'equipment', 'fe', ], False, 'Fortis Equipment', 'ic', 0, 0) Metallicum_Ingot = worlditem('0', False, ['metallicum ingot', 'metallicum', 'ingot', 'metal'], False, 'Metallicum Ingot', '', 1, 1) Red_Hot_Metallicum_Ingot = worlditem('0', False, ['red hot metallicum ingot', 'red ingot', 'red hot ingot', 'hot ingot', 'hot metallicum ingot'], False, 'Red Hot Metallicum Ingot', '', 0, 0) Ekhalan_Fungus = worlditem('0', False, ['ekhalan fungus', 'fungus', 'ekhalan'], False, 'Ekhalan Fungus', '', 2, 1) worlditemlist = [Monolith_Data_Disk, Map, Fortis_Equipment, Metallicum_Ingot, Red_Hot_Metallicum_Ingot, Ekhalan_Fungus] roomitems = [] ## Same idea as with the items, but this time with lockable doors. Most places just don't have a door. class door: def __init__(self, location, key_item, name, locked, locked_message, unlocked_message): self.location = location self.key_item = key_item self.name = name self.locked = locked self.locked_message = locked_message self.unlocked_message = unlocked_message Relequit = door('ic', Fortis_Equipment, 'Relequit', True, '\nSome rubble blocks my way...\nIt looks quite heavy...', '\nWith the strength of the Fortis Equipment you are wearing,\nYou easily move the rubble from your path.') worlddoorlist = [Relequit] ## From here down it's different types of NPCs. the one just called NPC will be all NPCs other than merchants. ## Friendlies and enemies are basically the same as far as the coding is concerned. class npc: def __init__(self, location, name): self.location = location self.name = name solff = npc('fd', 'Solff') worldnpclist = [solff] roomnpcs = [] ##Same as idea as previous groups, except the merchants have their own dicitionaries assigned to them to hold their inventories. class merchant: def __init__(self, location, name, bag): self.location = location self.name = name self.bag = bag Value = 0 In_bag = True merchantbag = [] bowman = merchant('ie', 'Bowman', 1) worldmerchantlist = [bowman] roommerchants = [] # Title Screen def title_screen_selections(): option = input(">") if option.lower() == ("play"): setup_game() #placeholder until written elif option.lower() == ("help"): help_menu() elif option.lower() == ("quit"): sys.exit() while option.lower() not in ['play', 'help', 'quit']: print("Please enter a valid command.") option = input(">") if option.lower() == ("play"): room_refresh() setup_game() #placeholder until written elif option.lower() == ("help"): help_menu() elif option.lower() == ("quit"): sys.exit() while option.lower() not in ['play', 'help', 'quit']: print("Please enter a valid command.") def title_screen(): print(" _____ _____ _____ _____ ") time.sleep(.1) print(" /\\ \\ /\\ \\ /\\ \\ /\\ \\ ") time.sleep(.1) print(" /::\\ \\ /::\\ \\ /::\\ \\ /::\\ \\ ") time.sleep(.1) print(" /::::\\ \\ /::::\\ \\ \\:::\\ \\ /::::\\ \\ ") time.sleep(.1) print(" /::::::\\ \\ /::::::\\ \\ \\:::\\ \\ /::::::\\ \\ ") time.sleep(.1) print(" /:::/\\:::\\ \\ /:::/\\:::\\ \\ \\:::\\ \\ /:::/\\:::\\ \\ ") time.sleep(.1) print(" /:::/__\\:::\\ \\ /:::/__\\:::\\ \\ \\:::\\ \\ /:::/__\\:::\\ \\ ") time.sleep(.1) print(" /::::\\ \\:::\\ \\ /::::\\ \\:::\\ \\ /::::\\ \\ /::::\\ \\:::\\ \\ ") time.sleep(.1) print(" /::::::\\ \\:::\\ \\ /::::::\\ \\:::\\ \\ /::::::\\ \\ /::::::\\ \\:::\\ \\ ") time.sleep(.1) print(" /:::/\\:::\\ \\:::\\ \\ /:::/\\:::\\ \\:::\\ \\ /:::/\\:::\\ \\ /:::/\\:::\\ \\:::\\ \\ ") time.sleep(.1) print("/:::/ \\:::\\ \\:::\\____\\/:::/ \\:::\\ \\:::\\____\\ /:::/ \\:::\\____\\/:::/__\\:::\\ \\:::\\____\\") time.sleep(.1) print("\\::/ \\:::\\ \\::/ /\\::/ \\:::\\ /:::/ / /:::/ \\::/ /\\:::\\ \\:::\\ \\::/ /") time.sleep(.1) print(" \\/____/ \\:::\\ \\/____/ \\/____/ \\:::\\/:::/ / /:::/ / \\/____/ \\:::\\ \\:::\\ \\/____/ ") time.sleep(.1) print(" \\:::\\ \\ \\::::::/ / /:::/ / \\:::\\ \\:::\\ \\ ") time.sleep(.1) print(" \\:::\\____\\ \\::::/ / /:::/ / \\:::\\ \\:::\\____\\ ") time.sleep(.1) print(" \\::/ / /:::/ / \\::/ / \\:::\\ \\::/ / ") time.sleep(.1) print(" \\/____/ /:::/ / \\/____/ \\:::\\ \\/____/ ") time.sleep(.1) print(" /:::/ / \\:::\\ \\ ") time.sleep(.1) print(" /:::/ / \\:::\\____\\ ") time.sleep(.1) print(" \\::/ / \\::/ / ") time.sleep(.1) print(" \\/____/ \\/____/ ") time.sleep(.1) print(" ,---,. ,-. ") time.sleep(.1) print(" ,\' .\' \\ ,--/ /| ") time.sleep(.1) print(" ,---.\' .\' | __ ,-. ,--. :/ | __ ,-. ") time.sleep(.1) print(" | | |: |,\' ,\'/ /| : : \' / ,\' ,\'/ /| ") time.sleep(.1) print(" : : : /\' | |\' | ,---. ,--.--. | \' / ,---. \' | |\' | ") time.sleep(.1) print(" : | ; | | ,\'/ \\ / \\ \' | : / \\ | | ,\' ") time.sleep(.1) print(" | : \\\' : / / / | .--. .-. | | | \\ / / |\' : / ") time.sleep(.1) print(" | | . || | \' . \' / | \\__\\/: . . \' : |. \\ . \' / || | \' ") time.sleep(.1) print(" \' : \'; |; : | \' ; /| ,\" \\.--.;| | | \' \\ \\\' ; /|; : | ") time.sleep(.1) print(" | | | ; | , ; \' | / | / / ,. | \' : |--\' \' | / || , ; ") time.sleep(.1) print(" | : / ---\' | : |; : .\' \\; |,\' | : | ---\' ") time.sleep(.1) print(" | | ,\' \\ \\ / | , .-./\'--\' \\ \\ / ") time.sleep(.1) print(" `----\' `----\' `--`---\' `----\' ") time.sleep(.1) print("\n") time.sleep(.1) print(' ~Play~' ) print(' ~Help~' ) print(' ~Quit~' ) print("\n") print(" Copyright 2019 Mason Richardson") print("======================================================================================================================") title_screen_selections() def help_menu(): print(' ###############################') print(' ## Welcome to Fate Breaker! ##') print(' ###############################') print() print("Type Commands to do things. For example, type 'look'" ) print("or 'go' or 'take'. There are multiple commands you " ) print("could type that might do the same thing, for example,") print("'go' and 'move' or maybe 'take' and 'get'. Be creative!") print("Some actions will have a follow up question. If you try") print("to look at something, or take something, you will need") print("to specify what to look at. There are a lot of actions") print("you can take, and some will not be obvious to you .") print("Plenty of mysteries are hidden in this place!!!!!!!") print() title_screen_selections() ################# Game Interactivity def print_location(): print('\n' + '=========================================================') print('\n' + (' ' + '#' * (4 + len(zonemap[myPlayer.location][ZONENAME])))) print(' ' + '##' + zonemap[myPlayer.location][ZONENAME] + '##') print((' ' + '#' * (4 + len(zonemap[myPlayer.location][ZONENAME]))) + '\n') print(zonemap[myPlayer.location][DESCRIPTION]) if zonemap[myPlayer.location][UP] != '0': cangoup = '?' else: cangoup = '' if zonemap[myPlayer.location][RIGHT] != '0': cangoright = '?' else: cangoright = '' if zonemap[myPlayer.location][DOWN] != '0': cangodown = '?' else: cangodown = '' if zonemap[myPlayer.location][LEFT] != '0': cangoleft = '?' else: cangoleft = '' print('\n ' + cangoup + ' ' + cangoright + ' ' + cangodown + ' ' + cangoleft + ' ') def prompt(): print("\n") print("Next action?...") action = input(">") acceptable_actions = ['move', 'go', 'travel', 'walk', 'quit', 'examine', 'inspect', 'look', 'i', 'take', 'get', 'grab', 'pick up', 'inventory', 'items', 'view inventory', 'gear', 'equipment', 'talk', 'speak', 'hey'] while action.lower() not in acceptable_actions: print("Try something else?...") action = input(">") if action.lower() == 'quit': sys.exit() elif action.lower() in ['move', 'go', 'travel', 'walk']: player_move(action.lower()) elif action.lower() in ['examine', 'inspect', 'interact', 'look', 'check']: player_examine(action.lower()) elif action.lower() in ['take', 'get', 'grab', 'pick up']: player_take(action.lower()) elif action.lower() in ['inventory', 'items', 'view inventory', 'i', 'gear', 'equipment']: print_inventory(action.lower()) elif action.lower() in ['talk', 'speak', 'hey']: player_talk(action.lower()) def player_move(action): ask = "Which way?\n>" dest = input(ask) generic_delay() if dest.lower() in ['up', 'north']: if zonemap[myPlayer.location][UP] is '0': print("I can't go that way...") prompt() else: myPlayer.destination = zonemap[myPlayer.location][UP] movement_handler(destination) elif dest.lower() in ['left', 'west']: if zonemap[myPlayer.location][LEFT] is '0': print("I can't go that way...") prompt() else: myPlayer.destination = zonemap[myPlayer.location][LEFT] movement_handler(destination) elif dest.lower() in ['right', 'east']: if zonemap[myPlayer.location][RIGHT] is '0': print("I can't go that way...") prompt() else: myPlayer.destination = zonemap[myPlayer.location][RIGHT] movement_handler(destination) elif dest.lower() in ['south', 'down']: if zonemap[myPlayer.location][DOWN] is '0': print("I can't go that way...") prompt() else: myPlayer.destination = zonemap[myPlayer.location][DOWN] movement_handler(destination) else: print("Hmm, maybe I should try another way...") prompt() def movement_handler(destination): door_check() if myPlayer.can_pass == True: print("\n" + "You move to the " + zonemap[myPlayer.destination][ZONENAME] + ".") del roomitems[:] myPlayer.location = myPlayer.destination room_refresh() print_location() else: print('I won\'t be able to pass...') myPlayer.can_pass = True def player_examine(action): ask = 'Look at what? \n' examinetarget = input(ask) if examinetarget in ['room', 'area', 'surroundings', 'zone', 'place', 'here', 'around', 'near', 'near me', 'around me', 'close by', 'nearby' ]: room_check_script() print(zonemap[myPlayer.location][EXAMINATION]) if zonemap[myPlayer.location][SOLVED]: print("You don't see anything new...") else: print("Something about this place is unfamiliar...") elif examinetarget in ['items', 'objects', 'stuff', 'loot', 'item', 'weapons', 'food', 'tools']: lookingforitems = True if lookingforitems == True: room_check(roomitems) else: print('I\'m not sure where to look...') prompt() elif examinetarget in ['up', 'north', 'down', 'south', 'right', 'east', 'left', 'west']: room_check_script() if examinetarget.lower() in ['left', 'west']: lookdirection = zonemap[myPlayer.location][LEFT] if zonemap[myPlayer.location][LEFT] == '0': print('....a wall...') else: print(zonemap[lookdirection][ZONENAME]) print(zonemap[lookdirection][DESCRIPTION]) prompt() elif examinetarget.lower() in ['down', 'south']: lookdirection = zonemap[myPlayer.location][DOWN] if zonemap[myPlayer.location][DOWN] == '0': print('....a wall...') else: print(zonemap[lookdirection][ZONENAME]) print(zonemap[lookdirection][DESCRIPTION]) prompt() elif examinetarget.lower() in ['right', 'east']: lookdirection = zonemap[myPlayer.location][RIGHT] if zonemap[myPlayer.location][RIGHT] == '0': print('....a wall...') else: print(zonemap[lookdirection][ZONENAME]) print(zonemap[lookdirection][DESCRIPTION]) prompt() elif examinetarget.lower() in ['up', 'north']: lookdirection = zonemap[myPlayer.location][UP] if zonemap[myPlayer.location][UP] == '0': print('....a wall...') else: print(zonemap[lookdirection][ZONENAME]) print(zonemap[lookdirection][DESCRIPTION]) prompt() else: print('I can\'t see that way...') elif examinetarget.lower() in ['people', 'npc', 'npcs', 'characters', ]: room_check_script() sawnpc = False sawmerchant = False for x in roomnpcs: print('----> ' + x.name + '\n') sawnpc = True for x in roommerchants: print('----> ' + x.name + '\n') sawmerchant = True if sawnpc == False: if sawmerchant == False: print('....no one....') elif examinetarget.lower() in ['directions', 'paths', 'exits', 'tunnels', 'hallways', 'doors']: if zonemap[myPlayer.location][UP] != '0': cangoup = '?' else: cangoup = '' if zonemap[myPlayer.location][RIGHT] != '0': cangoright = '?' else: cangoright = '' if zonemap[myPlayer.location][DOWN] != '0': cangodown = '?' else: cangodown = '' if zonemap[myPlayer.location][LEFT] != '0': cangoleft = '?' else: cangoleft = '' print('\n ' + cangoup + ' ' + cangoright + ' ' + cangodown + ' ' + cangoleft + ' ') def room_check(roomitems): room_check_script() sawvoucher = False for item in roomvouchers: print('->' + item.name) sawvoucher = True for item in roomitems: if item.in_inventory == False: print('->' + item.name) prompt() if sawvoucher == False: print('nothing...') def player_take(action): ask = "Take what?\n>" taketarget = input(ask) if taketarget in Vouchers.names: print("I picked up a voucher.") myPlayer.vouchers = myPlayer.vouchers + 1 Vouchers.locations.remove(myPlayer.location) room_refresh() prompt() else: for item in roomitems: if taketarget.lower() in item.names: if item.in_inventory == True: print('I already have that item.') else: print("I added " + item.name + " to your Inventory.") item.location = 0 item.in_inventory = True room_refresh() prompt() else: print('It isn\'t here') def print_inventory(myItems): print('\n') print("INVENTORY") print('==========================================================') print('Vouchers: ' + str(myPlayer.vouchers)) for item in worlditemlist: if item.in_inventory == True: x = item print("--> " + x.name) print('\n') def player_talk(action): ask = 'Talk to who?\n' talk_target = input(ask) for npc in roomnpcs: if talk_target.title() == npc.name: dialog() for merchant in roommerchants: if talk_target.title() == merchant.name: shop() else: print('I don\'t see them here...') def shop(): merchant_bag_refresh() for x in roommerchants: if x == bowman: shopspeech = "\'Good to see you, " + myPlayer.name + ".\nWhat can I get you today?\'\n" for character in shopspeech: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.03) for item in merchantbag: print("---> " + item.name + ' Value: ' + str(item.value) + ' voucher(s)') shop_target = input(">") if shop_target in ['nothing', 'quit', 'leave', 'stop', 'done', 'exit', 'back', 'return', 'escape']: print('Be safe, I hope you have what you need..') prompt() else: engageditem = False for item in merchantbag: if engageditem == False: if shop_target.lower() in item.names: if item.in_inventory == False: if myPlayer.vouchers >= item.value: item.in_inventory = True item.merchantid = 0 myPlayer.vouchers = myPlayer.vouchers - item.value engageditem = True print('Be careful with that! I don\'t know when we\'ll find another one like it!') merchant_bag_refresh() else: print('\'I don\'t have enough vouchers to take that...\'') engageditem = True else: print('I already have that.') engageditem = True else: print('\'I don\'t think we have one of those in store.\'') engageditem = True def dialog(): pass #################### Game Functionality def main_game_loop(): while myPlayer.game_over is False: prompt() # here's where def setup_game(): #name collection question1 = "The name plate on your chest glistens under the dim light above...\nYou can barely make it out anymore, what does it say?\n" for character in question1: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.03) player_name = input(">") myPlayer.name = player_name ########Introduction speech11 = "A familiar voice calls out, it's your colleague Solff.\n" for character in speech11: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech10 = "\'Oh, " + player_name + ", you're back from the surface!\'\n" for character in speech10: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech0 = '\'I really think we\'re close to cracking it.\'' '\n\'If we are successful, we may finally be able to understand our origin.\'\n' for character in speech0: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech1 = "\'You know, it will soon be the 500th revolution around the dim red star of this system..\'\n" for character in speech1: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech2 = "\'Since we woke up on this planet I mean...\'\n" for character in speech2: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech3 = "\'Sometimes I think things were simpler in stasis on the ship, no ancient Monolith mysteries to solve..\'\n" for character in speech3: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech4 = "\'Oh well, if we hadn't landed on Ekhala, we never would have found the Anima either...\'\n" for character in speech4: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech5 = "\'The Symph must be fools, living their lives on the surface, ignoring the treasures down here...\'\n" for character in speech5: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech6 = "\'At least they don't seem to mind us, at least for now............\'\n" for character in speech6: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech7 = "\'You know, if this works, it's gonna make a lot of noise down here...\'\n" for character in speech7: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech8 = "\'Well, " + player_name + ", you better get going...\'\n" for character in speech8: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) speech9 = "\'A lot of work to do. Still plenty of mysteries down here to be solved...\'\n" for character in speech9: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.02) print('\n\n\n\n\n') print('000000000000000000000000000000000000000000000000000000000000000000000000000000000') print('0 * / 0') print('0 @@@@@@@@, X====O 0') time.sleep(.1) print('0 * &@@@@@@@@@@@@@@@@@ || * 0') time.sleep(.1) print('0 *@@@@@@@@@@@@@@@@@@@@@@@ || 0') time.sleep(.1) print('0 * #@@@@@@@@@@@@@@@@@@@@@@@@@@@ || 0') time.sleep(.1) print('0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ || 0') time.sleep(.1) print('0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|| * 0') time.sleep(.1) print('0 * @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| 0') time.sleep(.1) print('0 &@##################################@@@ 0') time.sleep(.1) print('0 .#####| / ##@@ 0') time.sleep(.1) print('0 * ####| / / / #@@ * 0') time.sleep(.1) print('0 ####| / / / / #@, 0') time.sleep(.1) print('0 * ####| / / / / #@@@ 0') time.sleep(.1) print('0* ###| / / #@@@, 0') time.sleep(.1) print('0 *####| ____ #@@, 0') time.sleep(.1) print('0 ####________________/####\\_____________##@@@, * /0') time.sleep(.1) print('0 * #@##################@@@@##############@@@@@ / 0') time.sleep(.1) print('0 / ,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */ 0') time.sleep(.1) print('0 / @@@@@@@@@@@@@@000000000000@@@@@@@@@@@@@@@ / 0') time.sleep(.1) print('0 / %@@@@@@@@@@@@@000000000000@@@@@@@@@@@@@@ * / 0') time.sleep(.1) print('0 * / &&&@@@@@@@@@000000000000@@@@@@@&&&&& / 0') time.sleep(.1) print('0 / &&&@@@@@@@@@000000000000@@@@@@@&&&&& / 0') time.sleep(.1) print('0 / &&@@@@@@@@@000000000000@@@@@@@&&&& / * 0') time.sleep(.1) print('0 / * &@@@@@@@@@000000000000@@@@@@@&&&@ * / 0') time.sleep(.1) print('0 * / @@@@@@@@@@@00000000@@@@@@@@@& &@ / 0') time.sleep(.1) print('0 / @**@@@@@@@@@@@@@@@@@@@@***@@@@@@@@ / 0') time.sleep(.1) print('0 / @@@@@@@@@@@****@@@@@@@@@@@*****@@@@@@@@@@@@@@@/ 0') time.sleep(.1) print('0 / @@@@@@@@@@@@@@@@@@@***************@@@@@@@@@@@@@@@@@@@@@@@ * 0') time.sleep(.1) print('0 / @@@@@@@@@@@@@@@@@@@@@@@@@@@@**********@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 0') time.sleep(.1) print('0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*****@@@@@@@@@@@@`.~..~.~@@@@@@@@@@@@@ 0') print('000000000000000000000000000000000000000000000000000000000000000000000000000000000') print('\n\n\n') print(' ######################') print(' ## Opus Sacramentum ##') print(' ######################') room_refresh() main_game_loop() def getroomitems(): for x in worlditemlist: if x.location == myPlayer.location: roomitems.append(x) else: pass def getroomvouchers(): del roomvouchers[:] roomvouchers.append(Vouchers) if myPlayer.location not in Vouchers.locations: roomvouchers.remove(Vouchers) def getroomnpcs(): del roomnpcs[:] for x in worldnpclist: if x.location == myPlayer.location: roomnpcs.append(x) def getroommerchants(): del roommerchants[:] for x in worldmerchantlist: if x.location == myPlayer.location: roommerchants.append(x) else: pass def room_refresh(): getroomitems() getroomvouchers() getroomnpcs() getroommerchants() def merchant_bag_refresh(): del merchantbag[:] for item in worlditemlist: for merchant in roommerchants: if item.merchantid == merchant.bag: merchantbag.append(item) ########### These functions will handle the slow typing for the words that print within commands. def room_check_script(): checking = "I can see...\n" for character in checking: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.2) def generic_delay(): delay = '.....' for character in delay: sys.stdout.write(character) sys.stdout.flush() time.sleep(0.2) def door_check(): for door in worlddoorlist: if door.location == myPlayer.destination: if door.locked == True: print(door.locked_message) myPlayer.can_pass = False for item in worlditemlist: if door.key_item == item: if item.in_inventory == True: door.locked = False print(door.unlocked_message) myPlayer.can_pass = True else: pass else: next else: pass else: next # This is the map btw # coordinates are given with row column format # Player starts at fd # a b c d e f g h i j k l m n o p # a|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # b|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # c|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # d|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # e|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # f|_|_|_|x|_|_|_|_|_|_|_|_|_|_|_|_| x marks the spot where the player starts the game # g|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # h|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # i|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # j|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # k|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # l|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # m|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # n|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # o|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| # p|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| ZONENAME = '0' DESCRIPTION = 'description' EXAMINATION = 'examine' SOLVED = False UP = 'up', 'north' DOWN = 'down', 'south' LEFT = 'left', 'west' RIGHT = 'right', 'east' #Some dictionaries for the locations in the map (get ready to McFuckin' Scroll Bitch) solved_places = {'aa':False, 'ab':False, 'ac':False, 'ad':False, 'ae':False, 'af':False, 'ag':False, 'ah':False, 'ai':False, 'aj':False, 'ak':False, 'al':False, 'am':False, 'an':False, 'ao':False, 'ap':False, 'ba':False, 'bb':False, 'bc':False, 'bd':False, 'be':False, 'bf':False, 'bg':False, 'bh':False, 'bi':False, 'bj':False, 'bk':False, 'bl':False, 'bm':False, 'bn':False, 'bo':False, 'bp':False, 'ca':False, 'cb':False, 'cc':False, 'cd':False, 'ce':False, 'cf':False, 'cg':False, 'ch':False, 'ci':False, 'cj':False, 'ck':False, 'cl':False, 'cm':False, 'cn':False, 'co':False, 'cp':False, 'da':False, 'db':False, 'dc':False, 'dd':False, 'de':False, 'df':False, 'dg':False, 'dh':False, 'di':False, 'dj':False, 'dk':False, 'dl':False, 'dm':False, 'dn':False, 'do':False, 'dp':False, 'ea':False, 'eb':False, 'ec':False, 'ed':False, 'ee':False, 'ef':False, 'eg':False, 'eh':False, 'ei':False, 'ej':False, 'ek':False, 'el':False, 'em':False, 'en':False, 'eo':False, 'ep':False, 'fa':False, 'fb':False, 'fc':False, 'fd':False, 'fe':False, 'ff':False, 'fg':False, 'fh':False, 'fi':False, 'fj':False, 'fk':False, 'fl':False, 'fm':False, 'fn':False, 'fo':False, 'fp':False, 'ga':False, 'gb':False, 'gc':False, 'gd':False, 'ge':False, 'gf':False, 'gg':False, 'gh':False, 'gi':False, 'gj':False, 'gk':False, 'gl':False, 'gm':False, 'gn':False, 'go':False, 'gp':False, 'ha':False, 'hb':False, 'hc':False, 'hd':False, 'he':False, 'hf':False, 'hg':False, 'hh':False, 'hi':False, 'hj':False, 'hk':False, 'hl':False, 'hm':False, 'hn':False, 'ho':False, 'hp':False, 'ia':False, 'ib':False, 'ic':False, 'id':False, 'ie':False, 'if':False, 'ig':False, 'ih':False, 'ii':False, 'ij':False, 'ik':False, 'il':False, 'im':False, 'in':False, 'io':False, 'ip':False, 'ja':False, 'jb':False, 'jc':False, 'jd':False, 'je':False, 'jf':False, 'jg':False, 'jh':False, 'ji':False, 'jj':False, 'jk':False, 'jl':False, 'jm':False, 'jn':False, 'jo':False, 'jp':False, 'ka':False, 'kb':False, 'kc':False, 'kd':False, 'ke':False, 'kf':False, 'kg':False, 'kh':False, 'ki':False, 'kj':False, 'kk':False, 'kl':False, 'km':False, 'kn':False, 'ko':False, 'kp':False, 'la':False, 'lb':False, 'lc':False, 'ld':False, 'le':False, 'lf':False, 'lg':False, 'lh':False, 'li':False, 'lj':False, 'lk':False, 'll':False, 'lm':False, 'ln':False, 'lo':False, 'lp':False, 'ma':False, 'mb':False, 'mc':False, 'md':False, 'me':False, 'mf':False, 'mg':False, 'mh':False, 'mi':False, 'mj':False, 'mk':False, 'ml':False, 'mm':False, 'mn':False, 'mo':False, 'mp':False, 'na':False, 'nb':False, 'nc':False, 'nd':False, 'ne':False, 'nf':False, 'ng':False, 'nh':False, 'ni':False, 'nj':False, 'nk':False, 'nl':False, 'nm':False, 'nn':False, 'no':False, 'np':False, 'oa':False, 'ob':False, 'oc':False, 'od':False, 'oe':False, 'of':False, 'og':False, 'oh':False, 'oi':False, 'oj':False, 'ok':False, 'ol':False, 'om':False, 'on':False, 'oo':False, 'op':False, 'pa':False, 'pb':False, 'pc':False, 'pd':False, 'pe':False, 'pf':False, 'pg':False, 'ph':False, 'pi':False, 'pj':False, 'pk':False, 'pl':False, 'pm':False, 'pn':False, 'po':False, 'pp':False, } zonemap = { 'aa':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'ba', LEFT: '0', RIGHT: 'ab', }, 'ab':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'bb', LEFT: 'aa', RIGHT: 'ac' }, 'ac':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'bc', LEFT: 'ab', RIGHT: 'ad' }, 'ad':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'bd', LEFT: 'ac', RIGHT: 'ae' }, 'ae':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'be', LEFT: 'ad', RIGHT: 'af' }, 'af':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'bf', LEFT: 'ae', RIGHT: 'ag' }, 'ag':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ah':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ai':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'aj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ak':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'al':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'am':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'an':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ao':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ai':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ap':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ba':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bd':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'be':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'bp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ca':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cd':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ce':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ch':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ci':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ck':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'co':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'cp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'da':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'db':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dd':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: 'fd', LEFT: 'dc', RIGHT: 'de' }, 'de':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'df':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'di':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'do':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'dp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ea':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'eb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ec':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ed':{ ZONENAME: " The Fabrica ", DESCRIPTION: 'This is where your fellow Automata build and repair their technology.', EXAMINATION: 'Large machine equipment grinds and churns around you.\nAutomata wearing fortis equipment are handling glowing ingots of Metallicum.', SOLVED: False, UP: '0', DOWN: 'fd', LEFT: '0', RIGHT: '0' }, 'ee':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ef':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'eg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'eh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ei':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ej':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ek':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'el':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'em':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'en':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'eo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ep':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fa':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fc':{ ZONENAME: " The Bibliotheca ", DESCRIPTION: 'All of the Automata\'s collected research about the Monolith and Symph are collected here.', EXAMINATION: 'Stacks of data disks tower over you. The smell of carbon and magnetic film fills the air.\nAs much time as you have spent in here, there are still hundreds of volumes you\'ve never touched.', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: 'fd', }, 'fd':{ ZONENAME: " The Opus Sacramentum ", DESCRIPTION: 'This is the bottom of the main shaft used to travel from the surface of Ekhala to the Sacramentum below.', EXAMINATION: 'A dim light twinkles above you, you are surrounded on all four sides by openings and tunnels.\nSome are small and some are large. Every surface seems to be constructed from a material that is neither metal nor glass,\nbut has the superficial properties of both. A fine powdery dust coats the floor.', SOLVED: False, UP: 'ed', DOWN: 'gd', LEFT: 'fc', RIGHT: 'fe' }, 'fe':{ ZONENAME: " The Laboratorium ", DESCRIPTION: 'This is where you and the other more scientific Automata preform tests to learn more about the Monolith Technology.', EXAMINATION: 'An Animus stone shines inside a glass suspension chamber. All around you are dissambled Monolith Relics, and Automata technology.\nYou even spot a few pieces of Symph technology recovered from trips to the surface. Many research projects seem to be in progress.', SOLVED: False, UP: '0', DOWN: '0', LEFT: 'fd', RIGHT: '0' }, 'ff':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: 'df', DOWN: 'gf', LEFT: 'fe', RIGHT: 'fg' }, 'fg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'fp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ga':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gd':{ ZONENAME: " The Praetorium ", DESCRIPTION: 'The common area used by all Automata when visiting the Praesidium ', EXAMINATION: 'Several Automata of different specializations can be seen talking and communing with one another.\nSome are discussing future expeditions, or debriefing after returning from one.', SOLVED: False, UP: 'fd', DOWN: 'hd', LEFT: '0', RIGHT: '0' }, 'ge':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'go':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'gp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ha':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hd':{ ZONENAME: " A Corpora Hub ", DESCRIPTION: 'This is where the Automata store extra Corpora.', EXAMINATION: 'Rows of pods store the shining bodies all Automata inhabit.\nThe corpora use these spare bodies in the event one\'s body is destroyed, or to transmit themselves long distances into another vacant body.', SOLVED: False, UP: 'gd', DOWN: 'id', LEFT: '0', RIGHT: '0' }, 'he':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ho':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'hp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ia':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ib':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ic':{ ZONENAME: " The Relequit ", DESCRIPTION: 'A short tunnel that leads to the westernmost part of the Sacramentum.', EXAMINATION: 'High walls are dimly lit by the glowing panels. \nThere are thousands of Automaton footprints which have long since erased any left by the Monolith.', SOLVED: False, UP: '0', DOWN: '0', LEFT: 'ib', RIGHT: 'id' }, 'id':{ ZONENAME: " The Porta ", DESCRIPTION: 'The gate of the Praesidium.', EXAMINATION: 'A large carbonized gate reaches from the floor to the ceiling.\nThis door existed before the Automata ever found the Sacramentum, but it\'s original purpose is lost to time.\nIt opens up to two tunnels, one to the west, and one to the south.', SOLVED: False, UP: 'hd', DOWN: 'jd', LEFT: 'ic', RIGHT: 'ie' }, 'ie':{ ZONENAME: " The Tabernam ", DESCRIPTION: 'Special rationed supplies are stored here.', EXAMINATION: 'An Automaton stands behind a counter. In front of him is a registration console.\nYou see containers large and small of rare and precious products.', SOLVED: False, UP: '0', DOWN: '0', LEFT: 'id', RIGHT: '0' }, 'if':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ig':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ih':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ii':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ij':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ik':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'il':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'im':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'in':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'io':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ip':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ja':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jd':{ ZONENAME: " The Descendit ", DESCRIPTION: 'The tunnel that leads to the southern part of the Sacramentum.', EXAMINATION: 'The tunnel leads far ahead of you. There is a strange air about this place.\nMany stories about the southern regions have led to a healthy respect of the dangers it holds.', SOLVED: False, UP: 'id', DOWN: 'kd', LEFT: '0', RIGHT: '0' }, 'je':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ji':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'jp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ka':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kd':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ke':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ki':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'km':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ko':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'kp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'la':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ld':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'le':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'li':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'll':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ln':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'lp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ma':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'md':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'me':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ml':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'mp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'na':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nd':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ne':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ng':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ni':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'nm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'no':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'np':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oa':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ob':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'od':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oe':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'of':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'og':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oh':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ok':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ol':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'om':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'on':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'oo':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'op':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pa':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pb':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pc':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pd':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pe':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pf':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pg':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'ph':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pi':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pj':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pk':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pl':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pm':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pn':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'po':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' }, 'pp':{ ZONENAME: "", DESCRIPTION: 'description', EXAMINATION: 'examine', SOLVED: False, UP: '0', DOWN: '0', LEFT: '0', RIGHT: '0' } } title_screen()