'Called if the move is to be announced. This is
called while we are still standing in the old
location.
Args:
destination (Object): The place we are going to.
msg (str, optional): a replacement message.
mapping (dict, optional): additional mapping objects.
You can override this method and call its parent with a
message to simply change the default message.  In the string,
you can use the following as mappings (between braces):
object: the object which is moving.
exit: the exit from which the object is moving (if found).
origin: the location of the object before the move.
destination: the location of the object after moving.'

def announce_move_from(self, destination, msg=None, mapping=None):

    if (not self.location):
        return
    string = (msg or '{object}    is    leaving    {origin},    heading    for    {destination}.')
    location = self.location
    exits = [o for o in location.contents if ((o.location is location) and (o.destination is destination))]
    mapping = (mapping or {})
    mapping.update({'character': self})
    if exits:
        exits[0].callbacks.call('msg_leave', self, exits[0], location, destination, string, mapping)
        string = exits[0].callbacks.get_variable('message')
        mapping = exits[0].callbacks.get_variable('mapping')
    if (not string):
        return
    super(EventCharacter, self).announce_move_from(destination, msg=string, mapping=mapping)
