We've added this to the ValhallaPlayerClass as an enhancement of @move
on $player. It allows things like

@MOVE ME TO ANDRI

to join the player Andri (be moved to the same room),

@MOVE DOODAD TO FRED

to move the DOODAD that I own to the player FRED, assuming FRED accepts
it. It doesn't matter where DOODAD is, as long as I own it.

@MOVE ME TO THE FIELDS OF VALHALLA

to move me to the location with the name "THE FIELDS OF VALHALLA". Some
of us find it easier to remember long and complicated names than short,
simple object IDs :*)

@prop #118."room_calls" {} rc
@prop #118."room_calls_max" 10 rc

@verb #118:"@move" any to any rxd
@program #118:@move
if ((!valid(dobj)) && valid(Target = $string_utils:match(dobjstr, player.owned_objects, "name")))
  dobjstr = tostr(Target);
endif
if ((!valid(iobj)) && valid(Destination = $string_utils:match(iobjstr, player.owned_objects, "name")))
  iobjstr = tostr(Destination);
endif
if (((dobj == player) && (dobjstr == "me")) && (!valid(this:my_match_object(iobjstr))))
  if (valid(Destination = $string_utils:match_player(iobjstr)))
    if (valid(Destination.location))
      iobjstr = tostr(Destination.location);
    endif
  endif
endif
if (valid(this:my_match_object(dobjstr)) && (!valid(this:my_match_object(iobjstr))))
  if (valid(Destination_Room = this:my_match_room(iobjstr)))
    iobjstr = tostr(Destination_Room);
  endif
endif
pass(@args);
.

@verb #118:"my_match_room" this none this
@program #118:my_match_room
"Use the syntax this:my_match_room(room_name)";
Room_to_Find = args[1];
if (valid(Room = $string_utils:match(Room_to_Find, player.room_calls, "name")))
  Found_Room = Room;
else
  Found_Room = this:find_room(Room_to_Find, $room);
endif
if (valid(Found_Room))
  if (Room_Calls_Loc = (Found_Room in player.room_calls))
    if (Room_Calls_Loc > 1)
      Swap_Down = player.room_calls[Room_Calls_Loc - 1];
      player.room_calls[Room_Calls_Loc - 1] = Found_Room;
      player.room_calls[Room_Calls_Loc] = Swap_Down;
    endif
  elseif (length(player.room_calls) == player.room_calls_max)
    player.room_calls = {Found_Room, @listdelete(player.room_calls, player.room_calls_max)};
  elseif (length(player.room_calls) > player.room_calls_max)
    player.room_calls = {Found_Room, @player.room_calls[1..length(player.room_calls) - 2]};
  else
    player.room_calls = {Found_Room, @player.room_calls};
  endif
endif
return Found_Room;
.

@verb #118:"find_room" this none this
@program #118:find_room
Room_to_Find = args[1];
Parent_Room = args[2];
if (length(Room_List = children(Parent_Room)))
  if (valid(Room = $string_utils:match(Room_to_Find, Room_List, "name")))
    return Room;
  else
    for Child_Room in (Room_List)
      suspend(0);
      if (valid(Found_Room = this:find_room(Room_to_Find, Child_Room)))
        return Found_Room;
      endif
    endfor
  endif
endif
return $failed_match;
.