def init_quest(map_, quest_no):
    """Initializes a new quest."""

    # Loads a specified quest.
    quest = game_utils.load_game_quest(map_, quest_no)

    # Assigns the current quest to a global variable.
    globals_.current_quest[0] = quest
    globals_.current_quest[1] = quest_no

    # Executes Python code from the quest.
    try:
        exec(globals_.current_quest[0])
    except Exception as err:
        # Displays an error on the screen.
        windows.show_error(err, traceback.extract_stack()[-1])
def update_quest(zone, interior=0):
    """Updates the current quest.

    Used when a zone is changed or when player enters a building.
    """

    # Clears all in-game objects.
    globals_.clear_in_game_globals()

    # Loads a quest for the current zone.
    if not zone == 0:
        quest = game_utils.load_game_quest(globals_.current_map.name.capitalize(),
                                           globals_.current_quest[1],
                                           zone=zone, interior=interior)

        # Assigns the current quest to a global variable.
        globals_.current_quest[0] = quest

        # Executes Python code from the quest.
        try:
            exec(globals_.current_quest[0])
        except Exception as err:
            # Displays an error on the screen.
            windows.show_error(err, traceback.extract_stack()[-1])