require "DAMN_Armor_Shared";

--***********************************************************
--**                   KI5 / bikinihorst                   **
--***********************************************************
--v2.0.0

DEL85 = DEL85 or {};

function DEL85.activeArmor(player, vehicle)
   
		--

			local protection = vehicle:getPartById("DAMNBumperFront")
			local inventoryItem = protection:getInventoryItem();
			local part = vehicle:getPartById("EngineDoor")
				if part and protection and part:getInventoryItem() and inventoryItem and part:getModData()
				then 
					if inventoryItem:getFullType() == "Base.85oldsmobileDelta88BumperFrontA" or inventoryItem:getFullType() == "Base.85gmBbodyBullbarFrontA" then
						local partCond = tonumber(part:getModData().saveCond)
						if protection:getCondition() > 0 and partCond
						then
							if part:getCondition() < partCond
							then
								DAMN.Armor:setPartCondition(part, partCond);
								local cond = protection:getCondition() - (ZombRandBetween(0,100) <= 50 and ZombRandBetween(0,4) or 0);
								DAMN.Armor:setPartCondition(protection, cond);
							end
						end
					elseif inventoryItem:getFullType() == "Base.85oldsmobileDelta88BumperFront0" then
						local partCond = tonumber(part:getModData().saveCond)
						if protection:getCondition() > 0 and partCond
                            then
                                if part:getCondition() < partCond
                                then
                                    DAMN.Armor:setPartCondition(part, partCond);
                                    local cond = protection:getCondition() - ZombRandBetween(1,12);
                                    DAMN.Armor:setPartCondition(protection, cond);
                                end
                            end
                        end
					else
						local part = vehicle:getPartById("Engine")
							if protection and inventoryItem and part and part:getModData()
							then
								if inventoryItem:getFullType() ~= "Base.85oldsmobileDelta88BumperFront0" then
									local partCond = tonumber(part:getModData().saveCond)
									if protection:getCondition() > 0 and partCond
									then
										if part:getCondition() < partCond
										then
											DAMN.Armor:setPartCondition(part, partCond);
											local cond = protection:getCondition() - ZombRandBetween(1,3);
											DAMN.Armor:setPartCondition(protection, cond);
										end
									end
								end
							end
				end

			--

			local protection = vehicle:getPartById("DAMNBumperRear")
            local inventoryItem = protection:getInventoryItem();
            local part = vehicle:getPartById("TrunkDoor")
                if part and protection and part:getInventoryItem() and inventoryItem and part:getModData()
                then 
                    if inventoryItem:getFullType() ~= "Base.85oldsmobileDelta88BumperRear0" then
                        local partCond = tonumber(part:getModData().saveCond)
                        if protection:getCondition() > 0 and partCond
                        then
                            if part:getCondition() < partCond
                            then
                                DAMN.Armor:setPartCondition(part, partCond);
                                local cond = protection:getCondition() - (ZombRandBetween(0,100) <= 50 and ZombRandBetween(0,3) or 0);
                                DAMN.Armor:setPartCondition(protection, cond);
                            end
                        end
                    elseif inventoryItem:getFullType() == "Base.85oldsmobileDelta88BumperRear0" then
                    local partCond = tonumber(part:getModData().saveCond)
                    if protection:getCondition() > 0 and partCond
                    then
                        if part:getCondition() < partCond
                        then
                            DAMN.Armor:setPartCondition(part, partCond);
                            local cond = protection:getCondition() - ZombRandBetween(0,15);
                            DAMN.Armor:setPartCondition(protection, cond);
                        end
                    end
                end
            end

		--

            for partId, armorPartId in pairs({
                ["WindowFrontLeft"] = "DAMNFrontLeftArmor",
                ["WindowFrontRight"] = "DAMNFrontRightArmor",
                ["WindowRearLeft"] = "DAMNRearLeftArmor",
                ["WindowRearRight"] = "DAMNRearRightArmor",
                ["WindowBackLeft"] = "DAMNBackLeftArmor",
                ["WindowBackRight"] = "DAMNBackRightArmor",
            }) do
                local part = vehicle:getPartById(partId)
                if part then
                    local protection = vehicle:getPartById(armorPartId)
                    if protection then
                        local inventoryItem = protection:getInventoryItem()
                        if inventoryItem and part:getModData() then
                            local partCond = tonumber(part:getModData().saveCond)
                            if protection:getCondition() > 0 and partCond and part:getCondition() < partCond then
                                DAMN.Armor:setPartCondition(part, partCond)
                                local cond = protection:getCondition() - ZombRandBetween(0, string.find(inventoryItem:getFullType(), "M$") and 2 or 4)
                                DAMN.Armor:setPartCondition(protection, cond)
                            end
                        end
                    end
                end
            end

		--

			for partId, armorPartId in pairs({
				["HeadlightLeft"] = "DAMNBumperFront",
				["HeadlightRight"] = "DAMNBumperFront",
				["HeadlightRearLeft"] = "DAMNBumperRear",
				["HeadlightRearRight"] = "DAMNBumperRear",
			}) do
				local part = vehicle:getPartById(partId);
				local protection = vehicle:getPartById(armorPartId);
				if protection and protection:getInventoryItem() and part and part:getModData()
				then
					local partCond = tonumber(part:getModData().saveCond);
					if protection:getCondition() > 0 and partCond and part:getCondition() < partCond
					then
						DAMN.Armor:setPartCondition(part, partCond);
					end
				end
			end

		--

        local protection = vehicle:getPartById("DAMNWindshieldArmor")
		local inventoryItem = protection:getInventoryItem();
		local part = vehicle:getPartById("Windshield")
			if part and protection and part:getInventoryItem() and inventoryItem and part:getModData()
			then 
				if inventoryItem:getFullType() ~= "Base.85gmBbodyWindshieldArmorW" then
					local partCond = tonumber(part:getModData().saveCond)
					if protection:getCondition() > 0 and partCond
					then
						if part:getCondition() < partCond
						then
							DAMN.Armor:setPartCondition(part, partCond);
							local cond = protection:getCondition() - (ZombRandBetween(0,100) <= 65 and ZombRandBetween(0,3) or 0)
							DAMN.Armor:setPartCondition(protection, cond);
						end
					end
				elseif inventoryItem:getFullType() == "Base.85gmBbodyWindshieldArmorW" then
				local partCond = tonumber(part:getModData().saveCond)
				if protection:getCondition() > 0 and partCond
				then
					if part:getCondition() < partCond
					then
						DAMN.Armor:setPartCondition(part, partCond);
						local cond = protection:getCondition() - ZombRandBetween(1,3);
						DAMN.Armor:setPartCondition(protection, cond);
					end
				end
			end
		end

		--

		for i, freezeState in ipairs ({"DAMNSpareTire", "DEL85Roofrack"})
				do
					if vehicle:getPartById(freezeState) then
						local part = vehicle:getPartById(freezeState)
						local freezeCond = tonumber(part:getModData().saveCond)
					    	if freezeCond and part:getCondition() < freezeCond then
					    		DAMN.Armor:setPartCondition(part, freezeCond)
							end
					end
			end

		--

        local protection = vehicle:getPartById("DAMNWindshieldRearArmor")
		local inventoryItem = protection:getInventoryItem();
		local part = vehicle:getPartById("WindshieldRear")
			if part and protection and part:getInventoryItem() and inventoryItem and part:getModData()
			then 
				if inventoryItem:getFullType() ~= "Base.85gmBbodyWindshieldRearArmorW" then
					local partCond = tonumber(part:getModData().saveCond)
					if protection:getCondition() > 0 and partCond
					then
						if part:getCondition() < partCond
						then
							DAMN.Armor:setPartCondition(part, partCond);
							local cond = protection:getCondition() - (ZombRandBetween(0,100) <= 65 and ZombRandBetween(0,3) or 0)
							DAMN.Armor:setPartCondition(protection, cond);
						end
					end
				elseif inventoryItem:getFullType() == "Base.85gmBbodyWindshieldRearArmorW" then
				local partCond = tonumber(part:getModData().saveCond)
				if protection:getCondition() > 0 and partCond
				then
					if part:getCondition() < partCond
					then
						DAMN.Armor:setPartCondition(part, partCond);
						local cond = protection:getCondition() - ZombRandBetween(1,3);
						DAMN.Armor:setPartCondition(protection, cond);
					end
				end
			end
		end

end

DAMN.Armor:add("Base.85oldsmobileDelta88Sedan", DEL85.activeArmor);
DAMN.Armor:add("Base.85oldsmobileDelta88Coupe", DEL85.activeArmor);
DAMN.Armor:add("Base.85oldsmobileDelta88Wagon", DEL85.activeArmor);
DAMN.Armor:add("Base.85oldsmobileDelta88Wagon2", DEL85.activeArmor);