
function LevelTime(time)                         			--time - это время на уровень из файла PlLevels.xml
	MAX = 6				                         	--количество значений в массивах Ts и Tf ниже (они одинаковые по длине)
	Nkruga = PermanentStorage.GetLocalIntOrDef("Lap Number", 0) 	--номер круга
	if Nkruga == 0 then                          			--если круг еще не начался
		return time                              		--ничего не меняем
	elseif Nkruga > MAX then
		Nkruga = MAX                             		--если у нас уже таких значений нет, то как в последнем круге
	end
									--коррелируют с констами из функции ниже
	Ts = {0.91, 0.87, 0.84, 0.81, 0.79, 0.77}           		--коэффициент уменьшения времени первого уровня цикла
	Tf = {0.96, 0.92, 0.89, 0.86, 0.85, 0.84}          		--коэффициент уменьшения времени последнего уровня цикла
	S = 33                                       			--стартовый уровень цикла
	F = 81                                       			--последний уровень цикла
	n = PermanentStorage.GetLocalInt("LevelFileOrder") 		--номер уровня из файла
									--коэффициент постепенно перетекает из первого в последний
	Kt = ( Ts[Nkruga] * ( F - n) ) / ( F - S) + (Tf[Nkruga] * (n - S) ) / ( F - S ) 
	TN = time * Kt
	return TN
end

function TimeBonusK(TN)                           			--TN - это значение вычисленное предыдущей функцией
	globalN = PermanentStorage.GetLocalIntOrDef("LevelNumber", 1) 	-- номер уровня вААще
	n = PermanentStorage.GetLocalInt("LevelFileOrder")      	-- номер уровня из файла
	time = PermanentStorage.GetLocalInt("LevelFileTime")    	-- время на уровень из файла PlLevels.xml
	if n == 1 then 							-- константы для уровеней на первом круге
		return 0.23	* 4					-- показывают сколько процентов времени должно оставаться 
	elseif n == 2 then 						-- у игрока чтобы получить базовый бонус 
		Pn = 90							-- (проценты по результатам тестов)
	elseif n == 3 then 						-- при увеличении процента бонус уменьшается
		Pn = 85							-- В комментах проценты для среднего игрока, 
	elseif n >= 4 and n <= 6 then 					-- полный бонус даем игроку покруче
		Pn = 80
	elseif n >= 7 and n <= 8 then 
		Pn = 75
	elseif n >= 9 and n <= 10 then 
		Pn = 70
	elseif n == 11 then 
		Pn = 65
	elseif n >= 12 and n <= 13 then 
		Pn = 60
	elseif n >= 14 and n <= 15 then 
		Pn = 55
	elseif n >= 16 and n <=17 then 
		Pn = 50
	elseif n >= 18 and n <=25 then 
		Pn = 40
	elseif n >= 26 and n <=35 then 
		Pn = 37.5
	elseif n >= 36 and n <=45 then 
		Pn = 35
	elseif n >= 46 and n <=55 then 
		Pn = 32.5
	elseif n >= 56 and n <=65 then 
		Pn = 30
	elseif n >= 66 and n <=75 then 
		Pn = 27.5
	elseif n >= 76 and n <=81 then 
		Pn = 25
	end
									--коррелируют с констами из функции выше
	--Ps = {25, 20, 15, 11, 8, 6}           			--константа на круге для первого уровня
	  Ps = {31, 25, 19, 14, 10, 7}           			--константа на круге для первого уровня
	--Pf = {20, 15, 11, 8, 6, 5}          				--константа на круге для последнего уровня
	  Pf = {22, 17, 13, 9, 7, 6}          				--константа на круге для последнего уровня
	S = 33                                       			--стартовый уровень цикла
	F = 81                                       			--последний уровень цикла
	MAX = 6				                         	--количество значений в массивах Ps и Pf ниже (они одинаковые по длине)

	B0 = 7.5                                                	--базовый бонус на первом уровне
	b = 0.75                                                	--прирост базы тайм-бонуса на каждый уровень
	BN = B0 + b * (globalN - 1)                             	--база тайм бонуса на кокретный уровень
									--игрок получит эту сумму если после прохождения уровня 
									--у него останется процент времени указанный сверху

	Nkruga = PermanentStorage.GetLocalIntOrDef("Lap Number", 0) 	--номер круга
	if Nkruga > MAX then 						--если у нас уже таких значений нет, то как в последнем круге
		Nkruga = MAX 
	end
	if Nkruga == 0 then                          			--если круг еще не начался
	 	PNglobal = Pn
	else
									--процент постепенно перетекает из первого в последний
		PNglobal = ( Ps[Nkruga] * ( F - n) ) / ( F - S) + (Pf[Nkruga] * (n - S) ) / ( F - S ) 
	end
	KN = BN / PNglobal
	return KN * 4
end

function ScoreBonusK()
	globalN = PermanentStorage.GetLocalIntOrDef("LevelNumber", 1) 	--номер уровня вААще
	Nkruga = PermanentStorage.GetLocalIntOrDef("Lap Number", 0) 	--номер круга
	KBase = 0.0021 							--базовый коэффициент для скоре бонуса
	KRost = 150							--рост бонуса, чем больше тем медленней растет бонус
	SKN = KBase*(1+globalN/KRost+Nkruga)				
	return SKN * 4
end