anchor.diff:  procedure TItems.Drop(AX, AY: Byte; AIsBoss: Boolean);
   var
     V, I: Byte;
  -  F: Boolean;
  -begin
  -  V := Math.RandomRange(0, 10);
  -  if (V < 5) then
  -    Drop(AX, AY, iGold);
  -  if (V < 3) then
  -    Add(Map.Current, AX, AY);
  -  if (V < 2) then
  -    Add(Map.Current, AX, AY);
  -  if (V < 1) then
  -    Add(Map.Current, AX, AY);
  -  if AIsBoss then
  +begin
  +  V := Math.IfThen(AIsBoss, Ord(Map.Current) + 9, Ord(Map.Current) + 2);
  +  for I := 1 to V do
     begin
  -    F := False;
  -    for I := 1 to Ord(Map.Current) + 5 do
  -    begin
  -      case Math.RandomRange(0, 3) of
  -        0:
  -          begin
  -            Add(Map.Current, AX, AY);
  -            F := True;
  -          end;
  -        else
  -          Drop(AX, AY, iGold);
  -      end;
  -    end;
  -    if not F then
  -      Add(Map.Current, AX, AY);
  +    // Gold
  +    if (Math.RandomRange(0, 10) >= 5) then Drop(AX, AY, iGold);
  +    // Potion
  +    if ((Math.RandomRange(0, 10) >= 7) or AIsBoss) then Drop(AX, AY,
  +      TItemEnum(Math.RandomRange(Ord(iPotionOfHealth1), Ord(iPotionOfMana3) + 1)));
  +    // Item
  +    if (Math.RandomRange(0, 10) >= 9) then Add(Map.Current, AX, AY, -1, AIsBoss);
     end;
   end;
   
  
positive.code: end;
  
  procedure TItems.Add(ADeep: TMapEnum; AX: Integer = -1; AY: Integer = -1;
    AID: Integer = -1);
  var
    I: Byte;
    ID, FX, FY: Byte;
  
negative.code:     destructor Destroy; override;
      procedure Render(AX, AY: Byte);
      procedure Add(ADeep: TMapEnum; AX: Integer = -1; AY: Integer = -1;
        AID: Integer = -1; IsRare: Boolean = False);
      function GetName(AItemEnum: TItemEnum): string;
      function GetItemEnum(AItemID: Integer): TItemEnum;
      function GetItemInfo(AItem: Item; IsManyItems: Boolean = False;
  