anchor.diff:  end;
   
   function TItems.GetInventory: string;
  -begin
  -
  +var
  +  SL: TStringList;
  +  I, FCount: Integer;
  +  FItem: Item;
  +begin
  +  Result := '';
  +  SL := TStringList.Create;
  +  try
  +    FCount := Clamp(Items_Inventory_GetCount(), 0, 26);
  +    for I := 0 to FCount - 1 do
  +    begin
  +      FItem := Items_Inventory_GetItem(I);
  +      SL.Append(Items.RenderInvItem(5, 2, I, FItem, False, False));
  +    end;
  +    Result := SL.Text;
  +  finally
  +    SL.Free;
  +  end;
   end;
   
   function TItems.GetItemEnum(AItemID: Integer): TItemEnum;
  
positive.code:   end;
  end;
  
  procedure TItems.RenderInvItem(X, Y, I: Integer; AItem: Item; IsAdvInfo: Boolean = False);
  var
    Info, S: string;
  begin
    Terminal.ForegroundColor(clRed);
    Terminal.Print(X - 4, Y + I, TScene.KeyStr(Chr(I + Ord('A'))));
    Terminal.ForegroundColor(ItemBase[TItemEnum(AItem.ItemID)].Color);
    Terminal.Print(X, Y + I, ItemBase[TItemEnum(AItem.ItemID)].Symbol);
    S := Items.GetItemInfo(AItem);
    Terminal.ForegroundColor(clGray);
    if IsAdvInfo then
    begin
      Info := '';
      if (AItem.Equipment > 0) then
      begin
        case ItemBase[TItemEnum(AItem.ItemID)].SlotType of
          stMainHand: Info := Format(' - %s', [_('in main hand')]);
        end;
      end;
    end;
    Terminal.Print(X + 2, Y + I, S + Info);
  end;
  
  procedure TItems.AddItemToInv(Index: Integer);
  
negative.code:     function GetItemInfo(AItem: Item): string;
      function GetMapItemInfo(AItem: Item; IsManyItems: Boolean;
        ACount: Byte): string;
      function RenderInvItem(X, Y, I: Integer; AItem: Item; IsAdvInfo: Boolean = False; IsRender: Boolean = True): string;
      procedure AddItemToInv(Index: Integer); overload;
      procedure AddItemToInv(AItemEnum: TItemEnum; AAmount: Word = 1; EqFlag: Boolean = False); overload;
      function GetInventory: string;
  