-- Проверка на разряженность бустера
function Recipe.OnTestBusterBatteryCharging(sourceItem, result)
    
    if sourceItem:getType() == "BusterT15K" then
        return sourceItem:getUsedDelta() ~= 1; 
    end

    if sourceItem:getType() == "Battery" then
        return sourceItem:getUsedDelta() ~= 0; 
    end


    return true
end

-- Проверка на разряженность бустера
function Recipe.OnTest.CarBatteryBusterCharging(sourceItem, result)
    if sourceItem:getType() == "BusterT15K"  then
        return sourceItem:getUsedDelta() > 0; 
    end
    return true
end


-- Выдача электроники за разбор джампера в зависимости от уровня электроники
function Recipe.OnCreate.DismantleBusterT15K(items, result, player)
    local skillPlayer = player:getPerkLevel(Perks.Electricity)

    --т.к рандом не работает при набое 0,1 при значении скила 1 даём значение 2.
	if skillPlayer == 1 then 
		skillPlayer = 2
	end
	
	player:getInventory():AddItems("ElectronicsScrap", ZombRand(0, skillPlayer))
	player:getInventory():AddItems("Aluminum", ZombRand(0, skillPlayer))

    --ограничение рандома для выдачи болтов и проводки.	
	if skillPlayer > 5 then 
		skillPlayer = 5
	 end
	player:getInventory():AddItems("Radio.ElectricWire", ZombRand(0, skillPlayer))
	player:getInventory():AddItems("Screws", ZombRand(0, skillPlayer))
end



-- Зарядка Бустера володи Батарейками
function Recipe.OnCreate.TorchBatteryInsert(items, result, player)
    
    local itemBuster
    local itemBattery
    -- проверяем все предметы
    for i=0, items:size()-1 do
		local item = items:get(i)
       
        if item:getFullType() == "T15K_VehicleParts.BusterT15K" then
            itemBuster = item
        end

        if item:getFullType() == "Base.Battery" then
            itemBattery = item
        end
    end


    if itemBuster and itemBattery then

        local deltaBuster = itemBuster:getUsedDelta()
        local deltaBattery = itemBattery:getUsedDelta()/5 --Уменьшаем размер баттареи на 5, чтобы бустер можно было зарядить 5тью батареями

        local newDeltaBuster = deltaBuster + deltaBattery
        if newDeltaBuster > 1 then
            newDeltaBuster = 1
        end
        itemBuster:setUsedDelta(newDeltaBuster)
        player:getInventory():AddItem(itemBuster)

		local newDeltadeltaBattery = deltaBuster + deltaBattery - 1
		if newDeltadeltaBattery<0 then
			newDeltadeltaBattery = 0
		end

        if newDeltadeltaBattery > 0.01 then
            itemBattery:setUsedDelta(newDeltadeltaBattery*5)
            player:getInventory():AddItem(itemBattery)
        else
            player:getInventory():removeItemWithIDRecurse(itemBattery:getID())
        end
    else
        return
    end

end

--вероятность удара током при сборке смодельного бустера
function Recipe.OnCreate.MakeHomemadeBoosterForCarT15K(items, result, player)
    --шанс
    local chance = ZombRand(0, 100)
    if chance < 5 then
        local bodyPart = player:getBodyDamage():getBodyPart(BodyPartType.Hand_L)
        --local action = "burned"
        --ISHealthPanel.onCheatCurrentPlayer(bodyPart, action, player)
        bodyPart:setBurnTime(5)
        player:playSound("ChargingHomemadeBoosterElectricShockT15K")
    end
end



-- Выдача "Самодельной" батареи машины.
-- Меняется название батареи, добавляется "тултип".
-- Зависимость от навыка Электроника. Чем выше навык электроники, тем больше качество и остаток батареи.
function Recipe.OnCreate.GiveCarBatteryHomeMade_T15K(items, result, player)
	local skillPlayer = player:getPerkLevel(Perks.Electricity)

	result:setName(getText("IGUI_GiveHomeMadeCarBattery_T15K"))
	result:setTooltip(getText("Tooltip_GiveHomeMadeCarBattery_T15K"))
	result:setCondition(ZombRand((((skillPlayer/2)*10)-2) , 50))
	
	-- В случае если скилл игрока малый, то заряд батареи всё-ровно будет не меньше 20ед.
	local skillPlayerForDelta = ((skillPlayer / 2) / 10)
	
	if skillPlayerForDelta < 0.2 then
		skillPlayerForDelta = 0.2
	end
		
	-- Убираею 2 единицы чтобы разнообразить рандом при максимальном уровене электроники.
    result:setUsedDelta(ZombRandFloat(skillPlayerForDelta - 0.02, 0.5))
end


--Функция на начисление опыта Автомеханика
--1ед.
function Recipe.OnGiveXP.Mechanics(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Mechanics, 1);
end
--2ед
function Recipe.OnGiveXP.Mechanics2(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Mechanics, 2);
end
--5ед.
function Recipe.OnGiveXP.Mechanics5(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Mechanics, 5);
end
--10ед.
function Recipe.OnGiveXP.Mechanics10(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Mechanics, 10);
end

--Функция на начисление опыта Электрику
--1ед.
function Recipe.OnGiveXP.Electricity(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Electricity, 1);
end
--2ед
function Recipe.OnGiveXP.Electricity2(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Electricity, 2);
end
--5ед.
function Recipe.OnGiveXP.Electricity5(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Electricity, 5);
end
--10ед.
function Recipe.OnGiveXP.Electricity10(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Electricity, 10);
end

--Функция на начисление опыта сварщику
--1ед.
function Recipe.OnGiveXP.MetalWelding(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.MetalWelding, 1);
end
--2ед
function Recipe.OnGiveXP.MetalWelding2(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.MetalWelding, 2);
end
--5ед.
function Recipe.OnGiveXP.MetalWelding5(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.MetalWelding, 5);
end
--10ед.
function Recipe.OnGiveXP.MetalWelding10(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.MetalWelding, 10);
end

--Функция на начисление опыта строителю
--1ед.
function Recipe.OnGiveXP.WoodWork(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Woodwork, 1);
end
--2ед
function Recipe.OnGiveXP.WoodWork2(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Woodwork, 2);
end
--5ед.
function Recipe.OnGiveXP.WoodWorkg5(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Woodwork, 5);
end
--10ед.
function Recipe.OnGiveXP.WoodWork10(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Woodwork, 10);
end

--Функция на начисление опыта строителю
--1ед.
function Recipe.OnGiveXP.Tailoring(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Tailoring, 1);
end
--2ед
function Recipe.OnGiveXP.Tailoring2(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Tailoring, 2);
end
--5ед.
function Recipe.OnGiveXP.Tailoring5(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Tailoring, 5);
end
--10ед.
function Recipe.OnGiveXP.Tailoring10(recipe, ingredients, result, player)
    player:getXp():AddXP(Perks.Tailoring, 10);
end