anchor.diff:      else
         FY := Math.RandomRange(1, High(Byte) - 1);
       Inc(I);
  -    if (I >= High(Byte)) then Break;
  +    if (I >= High(Byte)) then
  +    begin
  +      ID := Ord(iGold);
  +      Break;
  +    end;
     until (Map.GetTileEnum(FX, FY, ADeep) in SpawnTiles) and
       (ADeep in ItemBase[TItemEnum(ID)].Deep);
     if ((AID < 0) and (TItemEnum(ID) in NotDropItems)) then
  
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: procedure TItems.Drop(AX, AY: Byte; AIsBoss: Boolean);
  var
    V, I: Byte;
  begin
    V := Math.IfThen(AIsBoss, Ord(Map.Current) + 9, Ord(Map.Current) + 2);
    for I := 1 to V do
    begin
      // 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;
  
  