anchor.diff:                  ok
           end,
       Props;
  -succeed(Props, {search, Source, Self) when Self == self() ->
  +succeed(Props, {look, Source, Self) when Self == self() ->
       describe(Source, Self, Props),
       Props;
   succeed(Props, Msg) ->
  
positive.code:                  <<".\n">>]),
              {succeed, false, Props}
      end;
  attempt(_Owner, Props, {search, _Source, Self}) ->
      {succeed, true, Props};
  attempt(Owner, Props, {search, _Source, Owner}) ->
      {succeed, true, Props};
  attempt(Owner, Props, {describe, _Source, Owner}) ->
      {succeed, true, Props};
  % I don't think I need this until the character can keep the room
  % from being searchable
  %attempt(Owner, Props, {search, _Source, Owner, Hierarchy}) ->
      %% TODO: check if character is searchable; e.g. unconcious, bound, dead, etc.
      %% In other words, an immobile character.
      %% Players that are alive and unbound (i.e. mobile) are not searchable.
  
negative.code:     erlmud_object:attempt(Attack, {attack, Attack, self(), Target}),
      [{attack, Attack} | Props].
  
  %% We'll need to frame a look response:
  %% > look sword
  %% > steel sword with a wire-bound handle     <-- no framing
  %% > look bob
  %% > Human male, four feet tall, pudgy
  %% > Bob is carrying a sword        <-- "Bob is carrying a" is the framing
  %%
  %% We could have a "You see a ..." framing for objects, but I don't think it's
  %% necessary.
  describe(Source, Context, Props) when Context == self() ->
      erlmud_object:attempt(Source, {send, description(Props)});
  desbribe(Source, Context, Props) ->
      %% Bob should be able to tell what the framing is from the
      %% source of the description (not to be confused with the "source"
      %% of the look command)
      erlmud_object:attempt(Context, {describe, Source, self(), description(Props)}).
  
  is_owner(MaybeOwner, Props) when is_pid(MaybeOwner) ->
      MaybeOwner == proplists:get_value(owner, Props);
  