'This hook is responsible for handling the actual traversal,
normally by calling
`traversing_object.move_to(target_location)`. It is normally
only implemented by Exit objects. If it returns False (usually
because `move_to` returned False), `at_after_traverse` below
should not be called and instead `at_failed_traverse` should be
called.
Args:
traversing_object (Object): Object traversing us.
target_location (Object): Where target is going.'

def at_traverse(self, traversing_object, target_location):

    is_character = inherits_from(traversing_object, DefaultCharacter)
    if is_character:
        allow = self.callbacks.call('can_traverse', traversing_object, self, self.location)
        if (not allow):
            return
    super(EventExit, self).at_traverse(traversing_object, target_location)
    if is_character:
        self.callbacks.call('traverse', traversing_object, self, self.location, self.destination)
