Module ImportFrom alias ImportFrom alias alias ImportFrom alias alias alias ImportFrom alias ImportFrom alias Import alias Import alias Import alias Assign NameStore ListLoad Str Str Str Str Str ClassDef bases NameLoad body Expr Str FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr Str Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Dict decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareGt Call NameLoad AttributeLoad AttributeLoad NameLoad attr attr Num body Assign NameStore Call AttributeLoad Call AttributeLoad Call AttributeLoad SubscriptLoad AttributeLoad AttributeLoad NameLoad attr attr Index Num attr attr Str Str attr Str Str Delete SubscriptDel AttributeLoad AttributeLoad NameLoad attr attr Index Num Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Expr Str If CompareEq AttributeLoad AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr attr Str body If CompareLt SubscriptLoad AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Index Num Num body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str NameLoad orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr Assign NameStore ListLoad Str Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str Assign NameStore NameLoad If NameLoad body If CompareEq Call AttributeLoad NameLoad attr Str body Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str orelse Assign AttributeStore NameLoad attr NameLoad Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str ListLoad AttributeLoad NameLoad attr If NameLoad body Assign AttributeStore NameLoad attr SubscriptLoad SubscriptLoad NameLoad Index Num Index Str Assign AttributeStore NameLoad attr SubscriptLoad SubscriptLoad NameLoad Index Num Index Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad BinOpMod Str AttributeLoad NameLoad attr Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareEq NameLoad Str body Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return Assign NameStore Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr If CompareEq NameLoad AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str ListLoad AttributeLoad NameLoad attr Index Num Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad BinOpAdd NameLoad Str BinOpAdd Str Str Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Assign NameStore SubscriptLoad SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str ListLoad AttributeLoad NameLoad attr Index Num Index Str If UnaryOpNot NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd BinOpAdd NameLoad Str Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return TryExcept body If UnaryOpNot NameLoad body Raise Call NameLoad BinOpMod Str TupleLoad NameLoad AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Num Num Assign NameStore BinOpMod Str NameLoad Assign NameStore BinOpMod Str AttributeLoad NameLoad attr AugAssignAdd NameStore Str AugAssignAdd NameStore BinOpMod Str TupleLoad AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad ListLoad NameLoad NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad BinOpMod Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Return handlers ExceptHandler type NameLoad name NameStore body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad BinOpMod Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str Call NameLoad NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If BoolOpAnd Call AttributeLoad NameLoad attr CompareEq Call NameLoad NameLoad AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr SubscriptLoad Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str ListLoad AttributeLoad NameLoad attr Index Num Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd BinOpAdd NameLoad Str NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str decorator_list FunctionDef arguments args NameParam defaults body Expr Str Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str BinOpMod Str NameLoad Str If AttributeLoad NameLoad attr body Assign NameStore BinOpAdd BinOpAdd Str BinOpMult Str Num Str Assign NameStore ListLoad Call AttributeLoad Str attr Num Str NameLoad Call AttributeLoad Str attr Num Str NameLoad BinOpMult Str Num Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr BinOpMod Str AttributeLoad AttributeLoad NameLoad attr attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpMod Str Call AttributeLoad AttributeLoad NameLoad attr attr If AttributeLoad AttributeLoad NameLoad attr attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Call AttributeLoad AttributeLoad NameLoad attr attr Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr BinOpMod Str TupleLoad Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr decorator_list FunctionDef arguments args NameParam defaults body Expr Str If UnaryOpNot AttributeLoad AttributeLoad NameLoad attr attr body Assign AttributeStore AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore AttributeLoad NameLoad attr attr ListLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If Call AttributeLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr attr Str body If Call AttributeLoad AttributeLoad NameLoad attr attr body Assign SubscriptStore AttributeLoad NameLoad attr Index Str Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad Str Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If Call AttributeLoad NameLoad attr body Assign NameStore Call AttributeLoad AttributeLoad AttributeLoad NameLoad attr attr attr Str ListLoad Call AttributeLoad NameLoad attr If NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str orelse Assign SubscriptStore AttributeLoad NameLoad attr Index Str Call AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr NameLoad Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str Str NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If UnaryOpNot AttributeLoad NameLoad attr body If CompareIn NameLoad NameLoad body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd BinOpAdd NameLoad Str NameLoad orelse Assign AttributeStore NameLoad attr Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd BinOpAdd NameLoad Str NameLoad orelse If CompareEq AttributeLoad NameLoad attr Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr body Assign SubscriptStore AttributeLoad NameLoad attr Index Str AttributeLoad NameLoad attr If UnaryOpNot AttributeLoad NameLoad attr body Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd BinOpAdd NameLoad Str Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd NameLoad Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr BinOpAdd Str NameLoad Assign AttributeStore NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If CompareIn Call AttributeLoad SubscriptLoad NameLoad Index Num attr Str body Assign NameStore Dict Str Str Str Str Str Str Assign SubscriptStore AttributeLoad NameLoad attr Index Str Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index Num Expr Call AttributeLoad AttributeLoad NameLoad attr attr ListLoad BinOpAdd BinOpAdd Str Str Str Str Str Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Str If BoolOpOr CompareEq Call AttributeLoad NameLoad attr Str CompareEq Call AttributeLoad NameLoad attr Str body Assign SubscriptStore AttributeLoad NameLoad attr Index Str Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str orelse If CompareEq Call AttributeLoad AttributeLoad NameLoad attr attr Str Str body Assign SubscriptStore AttributeLoad NameLoad attr Index Str NameLoad Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse If BoolOpOr CompareEq Call AttributeLoad NameLoad attr Str CompareEq Call AttributeLoad NameLoad attr Str body Expr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Expr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr AttributeLoad NameLoad attr orelse Expr Call AttributeLoad AttributeLoad NameLoad attr attr Str decorator_list decorator_list
N/A shinymud.commands.commands * shinymud.data.config GAME_NAME EMAIL_ENABLED shinymud.lib.ansi_codes CONCEAL CLEAR COLOR_FG_RED shinymud.lib.world World shinymud.lib.shinymail * N/A random N/A hashlib N/A re N/A BAD_PASSWORDS N/A cancel @cancel password passwd forgot InitMode N/A object N/A N/A InitMode is a giant state machine that handles the self.world.log-in and character
    create process.
    Each function in the InitMode class is meant to be (more or less) a single
    state in the self.world.log-in or character creation process. Each state-function
    takes care of designating which state-function gets executed next by
    setting the self.state or self.next_state functions (depending on whether
    the next state-function requires player input or not).
    -
    The difference between self.state and self.next_state:
    self.state is what gets executed by the World every turn. It cannot be
    None, or the player will no longer recieve their turn from the world.
    -
    self.next_state gets executed by self.get_input, so that self.get_input
    can guard for player input, clean it, and deliver it to whichever state
    function is stored in self.next_state.
    -
    If your state function needs player input, then self.state should point to
    self.get_input (to guard for player input each turn of the world) and 
    self.next_state should point to your state_function.
     __init__ N/A N/A self player N/A N/A N/A 
        player - a Player object that has yet to be playerized (player-initialized)
        newbie - a new player, which is designated by creating a new player name
         N/A N/A self player player N/A N/A self newbie False N/A N/A self state N/A self intro N/A N/A self active True N/A N/A self name InitMode N/A N/A self world N/A N/A World get_world N/A N/A self log N/A N/A self world log N/A N/A self save N/A N/A get_input N/A N/A self N/A N/A N/A Get input from the player and pass it to the appropriate function.
        
        This function waits until there is player input (we are not guaranteed to
        get player-input on each world turn), then cleans up any newlines or
        whitespace and sends it to the next state-function stored in
        self.next_state.
         N/A N/A N/A len N/A N/A self player inq 0 N/A N/A arg N/A N/A N/A N/A N/A N/A N/A N/A N/A self player inq N/A 0 strip replace replace N/A N/A N/A N/A self player inq N/A 0 N/A N/A N/A self next_state arg N/A intro N/A N/A self N/A N/A N/A Output the intro Message.
        
        PREV STATE: None (this should be the first state function in InitMode)
        NEXT STATE: self.verify_playername
         N/A N/A N/A N/A N/A N/A self player conn __class__ __name__ TelnetConnection N/A N/A N/A N/A N/A N/A N/A self player conn win_size N/A 0 80 N/A N/A N/A N/A N/A self player update_output N/A Welcome to %s! GAME_NAME N/A N/A N/A N/A N/A self player update_output N/A N/A self world login_greeting N/A N/A N/A N/A N/A self player update_output N/A N/A self world login_greeting N/A intro_message N/A Type "new" if you're a new player. Otherwise, enter your name. Name:  N/A N/A N/A N/A self player update_output intro_message N/A N/A self state N/A self get_input N/A N/A self next_state N/A self verify_playername N/A verify_playername N/A N/A self arg N/A N/A N/A Get the name of the player self.world.logging in. If the player exists, grab their
        data and verify their password. Otherwise, start the character creation
        process.
        
        PREV STATE: self.intro
        NEXT STATE: self.verify_password, if the player self.world.logging in exists, OR
                    self.verify_new_character if the player self.world.logging in is new
         N/A playername arg N/A playername N/A N/A N/A N/A N/A playername lower new N/A N/A N/A self next_state N/A self new_playername N/A N/A N/A N/A self player update_output N/A Please choose a name. It should be a single word, using only letters. Name:  N/A N/A N/A self playername playername N/A row N/A N/A N/A N/A self world db select password,dbid FROM player WHERE name=? N/A N/A self playername N/A row N/A N/A N/A self password N/A N/A row N/A 0 N/A password N/A N/A self dbid N/A N/A row N/A 0 N/A dbid N/A N/A N/A N/A self player update_output N/A Enter password:  CONCEAL N/A N/A self next_state N/A self verify_password N/A N/A N/A N/A N/A self player update_output N/A N/A That player doesn't exist. Would you like to create a new character by the name of %s? N/A self playername (Yes/No):  N/A N/A self next_state N/A self verify_new_character N/A verify_password N/A N/A self arg N/A N/A N/A Verify that the password provided by the player and the password from
        their database profile are correct, or reset the password if it was forgotton.
        
        PREV STATE: self.verify_playername
        NEXT STATE: self.character_cleanup, if the correct password was provided
                    self.verify_playername, if an incorrect password was provided
                    self.reset_password, if they forgot their password
         N/A N/A arg forgot N/A N/A N/A self state N/A self reset_password N/A N/A password N/A N/A N/A N/A hashlib sha1 arg hexdigest N/A N/A password N/A self password N/A N/A N/A N/A N/A self player playerize N/A N/A N/A N/A N/A self world db select * FROM player WHERE dbid=? N/A N/A self dbid N/A 0 N/A N/A N/A N/A self player update_output CLEAR N/A N/A self state N/A self character_cleanup N/A N/A N/A self next_state N/A self verify_playername N/A N/A N/A N/A self player update_output N/A N/A CLEAR Bad playername or password.  N/A If you have forgotton your password, enter 'forgot' for your password,  and we will e-mail you a code to reset it. Enter playername:  N/A reset_password N/A N/A self N/A N/A N/A At this stage we're trying to get our players back. If they decided 
        to add an e-mail to their character, we will send them a code and they
        can reset it, and they will go to a state to confirm their code. If not,
        they are out of luck, but they can still log on as another character.

        PREV STATE: self.verify_password
        NEXT STATE: self.verify_playername
         N/A N/A self state N/A self get_input N/A player_email N/A N/A N/A N/A N/A N/A self world db select email,name FROM player WHERE dbid=? N/A N/A self dbid N/A 0 N/A email N/A N/A player_email N/A N/A N/A N/A N/A self player update_output N/A N/A CLEAR You do not have an e-mail associated with this character.  You will need to contact someone with super admin privileges to reset your password. N/A N/A N/A N/A self player update_output N/A Until then you can log on with another character if you like:  N/A N/A self next_state N/A self verify_playername N/A N/A N/A N/A N/A EMAIL_ENABLED N/A N/A N/A Exception N/A %s email is not configured! %s could not reset their password! N/A GAME_NAME N/A N/A self player name N/A N/A self conf_code N/A N/A random randint 99999 1000000 N/A subject N/A %s Password Reset GAME_NAME N/A message N/A Hello %s, 

You have recently requested a password reset.  N/A self playername N/A message Please enter the code below into your game prompt to reset your password.
  N/A message N/A Code: %s

Thanks, 



%s N/A N/A self conf_code GAME_NAME N/A mail N/A ShinyMail N/A player_email subject message N/A N/A N/A mail send N/A N/A N/A N/A self player update_output N/A CLEAR N/A An e-mail has been sent to %s with a six digit number inside. player_email N/A N/A N/A N/A self player update_output Copy the code here to continue:  N/A N/A self next_state N/A self confirm_code N/A N/A N/A N/A Exception N/A e N/A N/A N/A N/A N/A self player update_output N/A CLEAR N/A We were unable to send an e-mail to %s.  player_email N/A N/A N/A N/A self player update_output N/A This could be a problem with our internal e-mail sender. Please contact the administrator of the game. We're sorry for the inconvenience. N/A N/A N/A N/A self player update_output N/A You can log in with another player if you like:  N/A N/A N/A N/A self log error N/A Password email reset Fail:  N/A str e N/A N/A self next_state N/A self verify_playername N/A confirm_code N/A N/A self arg N/A N/A N/A Confirm the user is who they say they are. If they have
        the magic code (e-mailed to them), then we will give them 
        their account back.
        
        PREV STATE: self.reset_password
        NEXT STATE: self.create_password
         N/A N/A N/A N/A arg isdigit N/A N/A int arg N/A self conf_code N/A N/A N/A N/A N/A self player playerize N/A N/A N/A N/A N/A self world db select * FROM player WHERE dbid=? N/A N/A self dbid N/A 0 N/A N/A N/A N/A self player update_output N/A N/A CLEAR Type in your new password:  CONCEAL N/A N/A self password None N/A N/A self next_state N/A self create_password N/A N/A N/A N/A N/A self player update_output N/A CLEAR The code you entered was incorrect. N/A N/A N/A N/A self player update_output Copy the code here to continue:  N/A join_world N/A N/A self N/A N/A N/A The final stop in our InitMode state machine! 
        We set the state of InitMode to inactive and tell the player they have 
        entered the world!
         N/A N/A self active False N/A N/A N/A N/A self player update_output N/A N/A You have entered the world of %s. GAME_NAME N/A N/A self newbie N/A N/A nl N/A N/A * N/A 67 * N/A newb N/A N/A N/A  Welcome, new player!  center 69 * nl N/A N/A * If you would like some help playing the game, type "help newbie". * center 69 nl N/A * 69 N/A N/A N/A N/A self player update_output newb N/A N/A N/A N/A self world tell_players N/A %s, a new player, has entered the world. N/A N/A N/A self player fancy_name N/A N/A N/A N/A N/A self world play_log info N/A New player "%s" created. N/A N/A self player name N/A N/A N/A N/A N/A self world tell_players N/A %s has entered the world. N/A N/A N/A self player fancy_name N/A N/A N/A self player location N/A N/A N/A N/A N/A self player update_output N/A N/A N/A self player look_at_room N/A N/A N/A N/A N/A self player location add_char N/A self player N/A N/A N/A N/A N/A self world play_log info N/A Player "%s" logging in from: %s. N/A N/A N/A N/A self player fancy_name N/A str N/A N/A N/A self player conn addr N/A character_cleanup N/A N/A self N/A N/A N/A This is the final stage before the player enters the world, where any
        cleanup should happen so that the player can be handed off to the main
        parse-command mode.
        
        PREV STATE: self.verify_password OR self.add_email
        NEXT STATE: self.join_world
         N/A N/A N/A N/A self player location N/A N/A N/A N/A self player location N/A N/A self world default_location N/A N/A N/A self player inq N/A N/A N/A N/A N/A self world player_add N/A self player N/A N/A N/A N/A self world player_remove N/A N/A self player conn N/A N/A self state N/A self join_world N/A verify_new_character N/A N/A self arg N/A N/A N/A A player entered a playername that doesn't exist; ask if they want to
        create a new player by that name.
        
        PREV STATE: self.verify_playername
        NEXT STATE: self.create_password, if the player wants to create a new character, OR
                    self.verify_playername, if the player does not want to create a new character OR
                    self.new_playername if the player entered an invalid playername the first time
         N/A N/A N/A N/A N/A N/A N/A arg strip lower startswith y N/A N/A N/A N/A N/A self playername isalpha N/A N/A N/A N/A self save N/A name N/A N/A N/A self playername lower N/A N/A self newbie True N/A N/A N/A N/A self player update_output N/A Please choose a password:  CONCEAL N/A N/A self password None N/A N/A self next_state N/A self create_password N/A N/A N/A N/A N/A self player update_output N/A Invalid name. Names should be a single word, using only letters. Choose a name:  N/A N/A self next_state N/A self new_playername N/A N/A N/A N/A N/A self player update_output Type "new" if you're a new player. Otherwise, enter your playername:  N/A N/A self next_state N/A self verify_playername N/A new_playername N/A N/A self arg N/A N/A N/A The player is choosing a name for their new character.
        
        PREV STATE: self.verify_playername
        NEXT STATE: self.create_password
         N/A N/A N/A arg isalpha N/A N/A row N/A N/A N/A N/A self world db select dbid from player where name=? N/A N/A N/A arg lower N/A row N/A N/A N/A N/A N/A self player update_output That playername is already taken. N/A N/A N/A N/A self player update_output Please choose a playername. It should be a single word, using only letters. N/A N/A N/A N/A self save N/A name N/A N/A arg lower N/A N/A N/A N/A self player update_output N/A Please choose a password:  CONCEAL N/A N/A self password None N/A N/A self newbie True N/A N/A self next_state N/A self create_password N/A N/A N/A N/A N/A self player update_output N/A Invalid name. Names should be a single word, using only letters.
 Choose a name:  False N/A create_password N/A N/A self arg N/A N/A N/A The player is choosing a password for their new character.
        
        PREV STATE: self.new_playername OR self.verify_new_character
        NEXT STATE: This state will repeat until a password has been chosen and
                    confirmed, then will change to self.choose_gender
         N/A N/A N/A self password N/A N/A N/A arg BAD_PASSWORDS N/A N/A N/A N/A N/A self player update_output N/A N/A CLEAR 
That's a reserved word. Pick a different password:  CONCEAL N/A N/A N/A self password N/A N/A N/A N/A hashlib sha1 arg hexdigest N/A N/A N/A N/A self player update_output N/A N/A CLEAR Re-enter your password to confirm:  CONCEAL N/A N/A N/A N/A self password N/A N/A N/A N/A hashlib sha1 arg hexdigest N/A N/A N/A N/A self save N/A password N/A self password N/A N/A N/A self newbie N/A N/A N/A N/A N/A self player update_output N/A CLEAR Your new password has been saved. N/A N/A self state N/A self character_cleanup N/A N/A N/A self next_state N/A self choose_gender N/A N/A N/A N/A self player update_output N/A N/A CLEAR What gender shall your character be?  Choose from: neutral, female, or male. N/A N/A N/A N/A self player update_output Gender:  N/A N/A N/A N/A N/A self player update_output N/A CLEAR Passwords did not match. N/A N/A N/A N/A self player update_output N/A Please choose a password:  CONCEAL N/A N/A self password None N/A choose_gender N/A N/A self arg N/A N/A N/A The player is choosing a gender for their new character.
        
        PREV STATE: self.create_password
        NEXT STATE: This state will repeat until a gender is chosen, then change
                    to self.add_email
         N/A N/A N/A N/A N/A arg N/A 0 lower mfn N/A N/A genders N/A m f n male female neutral N/A N/A N/A self save N/A gender N/A N/A genders get N/A arg N/A 0 N/A N/A N/A N/A self player update_output N/A N/A N/A If you add an e-mail to this account, we can help you reset  your password if you forget it (otherwise, you're out of luck  if you forget!). Would you like to add an e-mail address to this character? (Y/N):  N/A N/A self next_state N/A self add_email N/A N/A N/A N/A N/A self player update_output Please choose from male, female, or neutral:  N/A add_email N/A N/A self arg N/A N/A N/A The player is adding (or not adding!) an email address to their new
        character.
        
        PREV STATE: self.choose_gender
        NEXT_STATE: self.character_cleanup
                    self.add_email - if user answers 'yes', or gives bad input
         N/A N/A N/A N/A N/A arg lower y N/A N/A N/A arg lower yes N/A N/A N/A N/A self save N/A email yes_email N/A N/A N/A N/A self player update_output We promise not to use your e-mail for evil! N/A N/A N/A N/A self player update_output Please enter your e-mail address:  N/A N/A N/A N/A N/A N/A self save get email yes_email N/A N/A N/A N/A self save N/A email arg N/A N/A N/A N/A self player playerize N/A self save N/A N/A N/A N/A self player save N/A N/A self state N/A self character_cleanup N/A N/A N/A N/A N/A N/A arg lower n N/A N/A N/A arg lower no N/A N/A N/A N/A N/A self player playerize N/A self save N/A N/A N/A N/A self player save N/A N/A self state N/A self character_cleanup N/A N/A N/A N/A N/A self player update_output Please enter yes or no:  N/A N/A