----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StartingCrate0 = function()
	local StartingCrateWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = StartingPoint0 + CVec.New(Utils.RandomInteger(-6, -4), Utils.RandomInteger(-2, 4)) })
	local StartingCrateEnterWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = Map.ClosestEdgeCell(StartingPoint0 + CVec.New(Utils.RandomInteger(-5, -5), Utils.RandomInteger(-5, 5))) })
	Reinforcements.ReinforceWithTransport(Utils.Random({ multi0, neutral, neutral1, neutral2, neutral3, gdi, un }), "carryall.reinforce", { Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) }) }, { StartingCrateEnterWaypoint.Location, StartingCrateWaypoint.Location }, { nil })
	Trigger.AfterDelay(11, function()
		local PlayerStartCrateCarryall = Map.ActorsInCircle(Map.CenterOfCell(StartingCrateEnterWaypoint.Location), WDist.FromCells(3), function(carryall) return carryall.Type == "carryall.reinforce" and (carryall.Owner == multi0 or carryall.Owner == neutral or carryall.Owner == neutral0 or carryall.Owner == neutral1 or carryall.Owner == neutral2 or carryall.Owner == neutral3 or carryall.Owner == gdi or carryall.Owner == un) end)
		Utils.Do(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
			Trigger.AfterDelay(0.000001, function() 
				local PlayerStartCrateCarryallCamera = Actor.Create("camera.follow", true, { Owner = multi0, Location = StartCrateCarryall0.Location }) 
			end)
			StartCrateCarryall0 = { PlayerStartCrateCarryall }
			PlayerStartCrateCarryall.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix" }), Utils.RandomInteger(666, 999))
			PlayerStartCrateCarryall.GrantUpgrade(Utils.Random({ "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }) }))
			PlayerStartCrateCarryall.GrantUpgrade("nocontrol")
			PlayerStartCrateCarryall.Owner = multi0
			PlayerStartCrateCarryall.Stop()
			Trigger.OnIdle(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
				if not PlayerStartCrateCarryall.IsDead and PlayerStartCrateCarryall.IsInWorld then
					PlayerStartCrateCarryall.Move(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Paradrop(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Wait(Utils.RandomInteger(44, 88))
					PlayerStartCrateCarryall.Move(Map.RandomEdgeCell())
					PlayerStartCrateCarryall.Destroy()
				end
			end)
		end)
	end)
end
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StartingCrate1 = function()
	local StartingCrateWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = StartingPoint1 + CVec.New(Utils.RandomInteger(-6, -4), Utils.RandomInteger(-2, 4)) })
	local StartingCrateEnterWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = Map.ClosestEdgeCell(StartingPoint1 + CVec.New(Utils.RandomInteger(-5, -5), Utils.RandomInteger(-5, 5))) })
	Reinforcements.ReinforceWithTransport(Utils.Random({ multi1, neutral, neutral1, neutral2, neutral3, gdi, un }), "carryall.reinforce", { Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) }) }, { StartingCrateEnterWaypoint.Location, StartingCrateWaypoint.Location }, { nil })
	Trigger.AfterDelay(11, function()
		local PlayerStartCrateCarryall = Map.ActorsInCircle(Map.CenterOfCell(StartingCrateEnterWaypoint.Location), WDist.FromCells(3), function(carryall) return carryall.Type == "carryall.reinforce" and (carryall.Owner == multi1 or carryall.Owner == neutral or carryall.Owner == neutral0 or carryall.Owner == neutral1 or carryall.Owner == neutral2 or carryall.Owner == neutral3 or carryall.Owner == gdi or carryall.Owner == un) end)
		Utils.Do(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
			Trigger.AfterDelay(0.000001, function() 
				local PlayerStartCrateCarryallCamera = Actor.Create("camera.follow", true, { Owner = multi0, Location = StartCrateCarryall1.Location }) 
			end)
			StartCrateCarryall1 = { PlayerStartCrateCarryall }
			PlayerStartCrateCarryall.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix" }), Utils.RandomInteger(666, 999))
			PlayerStartCrateCarryall.GrantUpgrade(Utils.Random({ "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }) }))
			PlayerStartCrateCarryall.GrantUpgrade("nocontrol")
			PlayerStartCrateCarryall.Owner = multi1
			PlayerStartCrateCarryall.Stop()
			Trigger.OnIdle(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
				if not PlayerStartCrateCarryall.IsDead and PlayerStartCrateCarryall.IsInWorld then
					PlayerStartCrateCarryall.Move(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Paradrop(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Wait(Utils.RandomInteger(44, 88))
					PlayerStartCrateCarryall.Move(Map.RandomEdgeCell())
					PlayerStartCrateCarryall.Destroy()
				end
			end)
		end)
	end)
end
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StartingCrate2 = function()
	local StartingCrateWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = StartingPoint2 + CVec.New(Utils.RandomInteger(-6, -4), Utils.RandomInteger(-2, 4)) })
	local StartingCrateEnterWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = Map.ClosestEdgeCell(StartingPoint2 + CVec.New(Utils.RandomInteger(-5, -5), Utils.RandomInteger(-5, 5))) })
	Reinforcements.ReinforceWithTransport(Utils.Random({ multi2, neutral, neutral1, neutral2, neutral3, gdi, un }), "carryall.reinforce", { Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) }) }, { StartingCrateEnterWaypoint.Location, StartingCrateWaypoint.Location }, { nil })
	Trigger.AfterDelay(11, function()
		local PlayerStartCrateCarryall = Map.ActorsInCircle(Map.CenterOfCell(StartingCrateEnterWaypoint.Location), WDist.FromCells(3), function(carryall) return carryall.Type == "carryall.reinforce" and (carryall.Owner == multi2 or carryall.Owner == neutral or carryall.Owner == neutral0 or carryall.Owner == neutral1 or carryall.Owner == neutral2 or carryall.Owner == neutral3 or carryall.Owner == gdi or carryall.Owner == un) end)
		Utils.Do(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
			Trigger.AfterDelay(0.000001, function() 
				local PlayerStartCrateCarryallCamera = Actor.Create("camera.follow", true, { Owner = multi0, Location = StartCrateCarryall2.Location }) 
			end)
			StartCrateCarryall2 = { PlayerStartCrateCarryall }
			PlayerStartCrateCarryall.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix" }), Utils.RandomInteger(666, 999))
			PlayerStartCrateCarryall.GrantUpgrade(Utils.Random({ "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }) }))
			PlayerStartCrateCarryall.GrantUpgrade("nocontrol")
			PlayerStartCrateCarryall.Owner = multi2
			PlayerStartCrateCarryall.Stop()
			Trigger.OnIdle(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
				if not PlayerStartCrateCarryall.IsDead and PlayerStartCrateCarryall.IsInWorld then
					PlayerStartCrateCarryall.Move(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Paradrop(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Wait(Utils.RandomInteger(44, 88))
					PlayerStartCrateCarryall.Move(Map.RandomEdgeCell())
					PlayerStartCrateCarryall.Destroy()
				end
			end)
		end)
	end)
end
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
StartingCrate3 = function()
	local StartingCrateWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = StartingPoint3 + CVec.New(Utils.RandomInteger(-6, -4), Utils.RandomInteger(-2, 4)) })
	local StartingCrateEnterWaypoint = Actor.Create("waypoint", true, { Owner = clearpoint, Location = Map.ClosestEdgeCell(StartingPoint3 + CVec.New(Utils.RandomInteger(-5, -5), Utils.RandomInteger(-5, 5))) })
	Reinforcements.ReinforceWithTransport(Utils.Random({ multi3, neutral, neutral1, neutral2, neutral3, gdi, un }), "carryall.reinforce", { Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) }) }, { StartingCrateEnterWaypoint.Location, StartingCrateWaypoint.Location }, { nil })
	Trigger.AfterDelay(11, function()
		local PlayerStartCrateCarryall = Map.ActorsInCircle(Map.CenterOfCell(StartingCrateEnterWaypoint.Location), WDist.FromCells(3), function(carryall) return carryall.Type == "carryall.reinforce" and (carryall.Owner == multi3 or carryall.Owner == neutral or carryall.Owner == neutral0 or carryall.Owner == neutral1 or carryall.Owner == neutral2 or carryall.Owner == neutral3 or carryall.Owner == gdi or carryall.Owner == un) end)
		Utils.Do(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
			Trigger.AfterDelay(0.000001, function() 
				local PlayerStartCrateCarryallCamera = Actor.Create("camera.follow", true, { Owner = multi0, Location = StartCrateCarryall3.Location }) 
			end)
			StartCrateCarryall3 = { PlayerStartCrateCarryall }
			PlayerStartCrateCarryall.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix" }), Utils.RandomInteger(666, 999))
			PlayerStartCrateCarryall.GrantUpgrade(Utils.Random({ "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }) }))
			PlayerStartCrateCarryall.GrantUpgrade("nocontrol")
			PlayerStartCrateCarryall.Owner = multi3
			PlayerStartCrateCarryall.Stop()
			Trigger.OnIdle(PlayerStartCrateCarryall, function(PlayerStartCrateCarryall)
				if not PlayerStartCrateCarryall.IsDead and PlayerStartCrateCarryall.IsInWorld then
					PlayerStartCrateCarryall.Move(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Paradrop(StartingCrateWaypoint.Location)
					PlayerStartCrateCarryall.Wait(Utils.RandomInteger(44, 88))
					PlayerStartCrateCarryall.Move(Map.RandomEdgeCell())
					PlayerStartCrateCarryall.Destroy()
				end
			end)
		end)
	end)
end
GetStartMCV = function()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	StartingCrate0()
	StartingCrate1()
	StartingCrate2()
	StartingCrate3()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	TestCrate0 = Actor.Create("armorcrate0", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(0 + 4, 0), Facing = Utils.RandomInteger(0, 255) })
	TestCrate1 = Actor.Create("woodcrate0", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(0 + 4, 1), Facing = Utils.RandomInteger(0, 255) })
	TestCrate2 = Actor.Create("woodcrate1", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(1 + 4, 0), Facing = Utils.RandomInteger(0, 255) })
	TestCrate3 = Actor.Create("healcrate2", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(1 + 4, 1), Facing = Utils.RandomInteger(0, 255) })
	TestCrate4 = Actor.Create("ammocrate0", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(0 + 4, -1), Facing = Utils.RandomInteger(0, 255) })
	TestCrate5 = Actor.Create("ammocrate1", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(-1 + 4, -1), Facing = Utils.RandomInteger(0, 255) })
	TestCrate6 = Actor.Create("computercrate0", true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(-1 + 4, 0), Facing = Utils.RandomInteger(0, 255) })
	TestCrate7 = Actor.Create("computercrate" .. Utils.RandomInteger(1, 2), true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(-1 + 4, 1), Facing = Utils.RandomInteger(0, 255) })
	TestCrate8 = Actor.Create("computercrate" .. Utils.RandomInteger(3, 4), true, { Owner = neutral, Location = MidleWaypoint.Location + CVec.New(1 + 4, -1), Facing = Utils.RandomInteger(0, 255) })
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	StartMCV0 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint0.Location), WDist.FromCells(8), function(mcv) return (mcv.Type == "mcv" or mcv.Type == "commandercarrier") end)
	StartMCV1 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint1.Location), WDist.FromCells(8), function(mcv) return (mcv.Type == "mcv" or mcv.Type == "commandercarrier") end)
	StartMCV2 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint2.Location), WDist.FromCells(8), function(mcv) return (mcv.Type == "mcv" or mcv.Type == "commandercarrier") end)
	StartMCV3 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint3.Location), WDist.FromCells(8), function(mcv) return (mcv.Type == "mcv" or mcv.Type == "commandercarrier") end)
	-----------------------------------------------------------------------------------------------------------------------------------------------
	StartMCVDeployWayPoint0 = Actor.Create("waypoint", true, { Owner = clearpoint, Location = MultiWayPoint0.Location + CVec.New(Utils.RandomInteger(-5, -6), Utils.RandomInteger(-2, 3)) })
	StartMCVDeployWayPoint1 = Actor.Create("waypoint", true, { Owner = clearpoint, Location = MultiWayPoint1.Location + CVec.New(Utils.RandomInteger(6, 8), Utils.RandomInteger(-2, 3)) })
	StartMCVDeployWayPoint2 = Actor.Create("waypoint", true, { Owner = clearpoint, Location = MultiWayPoint2.Location + CVec.New(Utils.RandomInteger(-5, -6), Utils.RandomInteger(-2, 3)) })
	StartMCVDeployWayPoint3 = Actor.Create("waypoint", true, { Owner = clearpoint, Location = MultiWayPoint3.Location + CVec.New(Utils.RandomInteger(6, 8), Utils.RandomInteger(-2, 3)) })
	-----------------------------------------------------------------------------------------------------------------------------------------------
	Utils.Do(StartMCV0, function(mcv)
		mcv.GrantUpgrade("nocontrol")
		Trigger.OnIdle(mcv, function(mcv)
			if not mcv.IsDead and mcv.IsInWorld then
				mcv.Scatter()
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Move(StartMCVDeployWayPoint0.Location)
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Deploy()
			end
		end)
	end)
	Utils.Do(StartMCV1, function(mcv)
		mcv.GrantUpgrade("nocontrol")
		Trigger.OnIdle(mcv, function(mcv)
			if not mcv.IsDead and mcv.IsInWorld then
				mcv.Scatter()
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Move(StartMCVDeployWayPoint1.Location)
				mcv.Wait(Utils.RandomInteger(11, 33))
				mcv.Deploy()
			end
		end)
	end)
	Utils.Do(StartMCV2, function(mcv)
		mcv.GrantUpgrade("nocontrol")
		Trigger.OnIdle(mcv, function(mcv)
			if not mcv.IsDead and mcv.IsInWorld then
				mcv.Scatter()
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Move(StartMCVDeployWayPoint2.Location)
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Deploy()
			end
		end)
	end)
	Utils.Do(StartMCV3, function(mcv)
		mcv.GrantUpgrade("nocontrol")
		Trigger.OnIdle(mcv, function(mcv)
			if not mcv.IsDead and mcv.IsInWorld then
				mcv.Scatter()
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Move(StartMCVDeployWayPoint3.Location)
				mcv.Wait(Utils.RandomInteger(11, 22))
				mcv.Deploy()
			end
		end)
	end)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	StartMGNST0 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint0.Location), WDist.FromCells(6), function(smg) return smg.Type == "mgnstinfantry" end)
	StartMGNST1 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint1.Location), WDist.FromCells(6), function(smg) return smg.Type == "mgnstinfantry" end)
	StartMGNST2 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint2.Location), WDist.FromCells(6), function(smg) return smg.Type == "mgnstinfantry" end)
	StartMGNST3 = Map.ActorsInCircle(Map.CenterOfCell(MultiWayPoint3.Location), WDist.FromCells(6), function(smg) return smg.Type == "mgnstinfantry" end)
	Utils.Do(StartMGNST0, function(mgnst0)
		mgnst0.Scatter()
		mgnst0.Scatter()
		mgnst0.Scatter()
		mgnst0.Deploy()
	end)
	Utils.Do(StartMGNST1, function(mgnst1)
		mgnst1.Scatter()
		mgnst1.Scatter()
		mgnst1.Scatter()
		mgnst1.Deploy()
	end)
	Utils.Do(StartMGNST2, function(mgnst2)
		mgnst2.Scatter()
		mgnst2.Scatter()
		mgnst2.Scatter()
		mgnst2.Deploy()
	end)
	Utils.Do(StartMGNST3, function(mgnst3)
		mgnst3.Scatter()
		mgnst3.Scatter()
		mgnst3.Scatter()
		mgnst3.Deploy()
	end)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(22222.2222, 44444.4444)), function() local powerproxyMonsterMaster0 = Actor.Create(Utils.Random({ "powerproxy.kingkong", "powerproxy.godzilla" }), true, { Owner = multi0 }) end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(22222.2222, 44444.4444)), function() local powerproxyMonsterMaster1 = Actor.Create(Utils.Random({ "powerproxy.kingkong", "powerproxy.godzilla" }), true, { Owner = multi1 }) end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(22222.2222, 44444.4444)), function() local powerproxyMonsterMaster2 = Actor.Create(Utils.Random({ "powerproxy.kingkong", "powerproxy.godzilla" }), true, { Owner = multi2 }) end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(22222.2222, 44444.4444)), function() local powerproxyMonsterMaster3 = Actor.Create(Utils.Random({ "powerproxy.kingkong", "powerproxy.godzilla" }), true, { Owner = multi3 }) end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(33.66, 66.33)), function()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
		local VehicleDeliveryType0 = Utils.Random({ "powerproxy.delivery.jeep", "powerproxy.delivery.reconjeep", "powerproxy.delivery.apctower", "powerproxy.delivery.1tnk", "powerproxy.delivery.2tnk", "powerproxy.delivery.3tnk", "powerproxy.delivery.4tnk" })
		local powerproxyVehicleDelivery0 = Actor.Create(VehicleDeliveryType0, true, { Owner = multi0 })
		local VehicleDeliveryType1 = Utils.Random({ "powerproxy.delivery.jeep", "powerproxy.delivery.reconjeep", "powerproxy.delivery.apctower", "powerproxy.delivery.1tnk", "powerproxy.delivery.2tnk", "powerproxy.delivery.3tnk", "powerproxy.delivery.4tnk" })
		local powerproxyVehicleDelivery1 = Actor.Create(VehicleDeliveryType1, true, { Owner = multi1 })
		local VehicleDeliveryType2 = Utils.Random({ "powerproxy.delivery.jeep", "powerproxy.delivery.reconjeep", "powerproxy.delivery.apctower", "powerproxy.delivery.1tnk", "powerproxy.delivery.2tnk", "powerproxy.delivery.3tnk", "powerproxy.delivery.4tnk" })
		local powerproxyVehicleDelivery2 = Actor.Create(VehicleDeliveryType2, true, { Owner = multi2 })
		local VehicleDeliveryType3 = Utils.Random({ "powerproxy.delivery.jeep", "powerproxy.delivery.reconjeep", "powerproxy.delivery.apctower", "powerproxy.delivery.1tnk", "powerproxy.delivery.2tnk", "powerproxy.delivery.3tnk", "powerproxy.delivery.4tnk" })
		local powerproxyVehicleDelivery3 = Actor.Create(VehicleDeliveryType3, true, { Owner = multi3 })
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(666.999, 999.666)), function()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
		Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
		Trigger.AfterDelay(0.000001, function() 
			AutomaticCaryall0Camera = Actor.Create("camera.follow", true, { Owner = multi0, Location = AutomaticCaryall0Hero.Location }) 
			AutomaticCaryall1Camera = Actor.Create("camera.follow", true, { Owner = multi1, Location = AutomaticCaryall1Hero.Location }) 
			AutomaticCaryall2Camera = Actor.Create("camera.follow", true, { Owner = multi2, Location = AutomaticCaryall2Hero.Location }) 
			AutomaticCaryall3Camera = Actor.Create("camera.follow", true, { Owner = multi3, Location = AutomaticCaryall3Hero.Location }) 
		end)
		AutomaticCaryall0Hero = { AutomaticCaryall0 }
		AutomaticCaryall1Hero = { AutomaticCaryall1 }
		AutomaticCaryall2Hero = { AutomaticCaryall2 }
		AutomaticCaryall3Hero = { AutomaticCaryall3 }
		AutomaticCaryall0 = Actor.Create("carryall", true, { Owner = multi0, Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
		AutomaticCaryall1 = Actor.Create("carryall", true, { Owner = multi1, Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
		AutomaticCaryall2 = Actor.Create("carryall", true, { Owner = multi2, Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
		AutomaticCaryall3 = Actor.Create("carryall", true, { Owner = multi3, Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
		AutomaticCaryall0.Move(Map.RandomCell())
		AutomaticCaryall1.Move(Map.RandomCell())
		AutomaticCaryall2.Move(Map.RandomCell())
		AutomaticCaryall3.Move(Map.RandomCell())
		AutomaticCaryall0.Wait(Utils.RandomInteger(88, 222))
		AutomaticCaryall1.Wait(Utils.RandomInteger(88, 222))
		AutomaticCaryall2.Wait(Utils.RandomInteger(88, 222))
		AutomaticCaryall3.Wait(Utils.RandomInteger(88, 222))
		AutomaticCaryall0.Move(StartingWaypoint0.Location)
		AutomaticCaryall1.Move(StartingWaypoint1.Location)
		AutomaticCaryall2.Move(StartingWaypoint2.Location)
		AutomaticCaryall3.Move(StartingWaypoint3.Location)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	end)
end
InsertSuperman = function()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	Trigger.AfterDelay(0.000001, function() 
		SuperManCamera = Actor.Create("camera.follow", true, { Owner = neutral, Location = SupermanHero.Location })
	end)
	SuperMan = Actor.Create("superman", true, { Owner = Utils.Random({ multi0, multi1, multi2, multi3 }), Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
	SupermanHero = { SuperMan }
	SuperMan.Owner = Utils.Random({ neutral, neutral0, neutral1, neutral2, neutral3 })
	SuperMan.Stance = "AttackAnything"
	SuperMan.GrantUpgrade("nocontrol")
	SuperMan.GrantUpgrade("autocontrol")
	SuperMan.GrantUpgrade("wandering")
	SuperMan.Teleport(Map.RandomCell())
	Utils.Do(SupermanHero, function(SuperMan)
		Trigger.OnIdle(SuperMan, function(SMan) 
			if not SMan.IsDead and SMan.IsInWorld then
				SMan.Patrol({Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell()}, true, DateTime.Seconds(Utils.RandomInteger(8.6, 16.12)))
			end 
		end)
	end)
	Trigger.OnKilled(SuperMan, function() 
		FollowSuperMan = false
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(111.222, 222.111)), function()
			if multi0.IsBot and multi1.IsBot and multi2.IsBot and multi3.IsBot then
			else
				Media.PlayMovieInRadar("SupermanFly.vqa", nil)
			end
			InsertSuperman()
		end)
	end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(6.6, 6.6 * 3.3)), SupermanSpeach)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end
SupermanSpeach = function()
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	if SuperMan.IsInWorld and not SuperMan.IsDead then
		SuperMan.GrantTimedUpgrade("mouth.prefix", Utils.RandomInteger(44, 66))
		Media.FloatingText(Utils.Random({ "I'am SUPERMAN!", "My name is Clark Kent, but pssst! don't tell everyone!!", "I'am only afraid from the kriptonit!", "Where is the Monsters!?!", "I help the citizens, that is the Hero life.", "At last night, i flyed up to the mooooon!", "The Star Gate in the middle of the town, that is to bad\nI need figure out how i can close.", "Lex Luthor YOU WILL DIE!!!" }), SuperMan.CenterPosition, Utils.RandomInteger(88, 166), Utils.Random({ HSLColor.DarkRed, HSLColor.DarkOrange, HSLColor.Red, HSLColor.Orange }))
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(6.6, 6.6 * 3.3)), SupermanSpeach)
	end
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end
InsertAircraftCarrier = function(carriernation)
	if carriernation == allies then
		carrierflag = Utils.Random({ "flag.usa", "flag.allies" })
		carrierheli = Utils.Random({ "heli", "heli" })
		carrieradvmig = Utils.Random({ "f117", "f117" })
	elseif carriernation == england then
		carrierflag = Utils.Random({ "flag.england", "flag.england" })
		carrierheli = Utils.Random({ "heli", "heli" })
		carrieradvmig = Utils.Random({ "advmig", "f117" })
	elseif carriernation == france then
		carrierflag = Utils.Random({ "flag.france", "flag.france" })
		carrierheli = Utils.Random({ "heli", "heli" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	elseif carriernation == germany then
		carrierflag = Utils.Random({ "flag.germany", "flag.germany" })
		carrierheli = Utils.Random({ "heli", "heli" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	elseif carriernation == ussr then
		carrierflag = Utils.Random({ "flag.soviet", "flag.soviet" })
		carrierheli = Utils.Random({ "hind", "hind" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	elseif carriernation == russia then
		carrierflag = Utils.Random({ "flag.russia", "flag.russia" })
		carrierheli = Utils.Random({ "hind", "hind" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	elseif carriernation == ukraine then
		carrierflag = Utils.Random({ "flag.ukraine", "flag.ukraine" })
		carrierheli = Utils.Random({ "hind", "hind" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	elseif carriernation == china then
		carrierflag = Utils.Random({ "flag.china", "flag.china" })
		carrierheli = Utils.Random({ "hind", "hind" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	elseif carriernation == gdi then
		carrierflag = Utils.Random({ "prefix.gdi", "prefix.gdi" })
		carrierheli = Utils.Random({ "orca", "orca" })
		carrieradvmig = Utils.Random({ "advmig", "f117" })
	elseif carriernation == un then
		carrierflag = Utils.Random({ "flag.un", "flag.un" })
		carrierheli = Utils.Random({ "heli", "hind", "orca" })
		carrieradvmig = Utils.Random({ "f117", "advmig" })
	elseif carriernation == nod then
		carrierflag = Utils.Random({ "prefix.nod", "prefix.nod" })
		carrierheli = Utils.Random({ "heli", "hind" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	else
		carrierflag = Utils.Random({ "flag.india", "flag.northkorea" })
		carrierheli = Utils.Random({ "heli", "hind" })
		carrieradvmig = Utils.Random({ "advmig", "advmig" })
	end
	Trigger.AfterDelay(1, function() 
		AircraftCarrier = Actor.Create("aircraftcarrier", true, { Owner = carriernation, Location = Utils.Random({ RandomEdgeWaterWaypoint0, RandomEdgeWaterWaypoint1, RandomEdgeWaterWaypoint2, RandomEdgeWaterWaypoint3, RandomEdgeWaterWaypoint4 }).Location, Facing = Utils.RandomInteger(0, 255) })
		AircraftCarrier.GrantUpgrade(carrierflag)
		AircraftCarrier.Stance = "HoldFire"
		CarrierPlane0 = Utils.Random({ carrieradvmig, "mig", "lightjet", "yak", carrierheli })
		CarrierPlane1 = Utils.Random({ carrieradvmig, "mig", "lightjet", "yak", carrierheli })
		CarrierPlane2 = Utils.Random({ carrieradvmig, "mig", "lightjet", "yak", carrierheli })
		CarrierPlane3 = Utils.Random({ carrieradvmig, "mig", "lightjet", "yak", carrierheli })
		CarrierPlane4 = Utils.Random({ carrieradvmig, "mig", "lightjet", "yak", carrierheli })
		CarrierPlane5 = Utils.Random({ carrieradvmig, "mig", "lightjet", "yak", carrierheli })
		CarrierPlaneCargo0 = CarrierPlane0
		CarrierPlaneCargo1 = CarrierPlane1
		CarrierPlaneCargo2 = CarrierPlane2
		CarrierPlaneCargo3 = CarrierPlane3
		CarrierPlaneCargo4 = CarrierPlane4
		CarrierPlaneCargo5 = CarrierPlane5
		LoadTransport(AircraftCarrier, CarrierPlaneCargo0)
		LoadTransport(AircraftCarrier, CarrierPlaneCargo1)
		LoadTransport(AircraftCarrier, CarrierPlaneCargo2)
		LoadTransport(AircraftCarrier, CarrierPlaneCargo3)
		LoadTransport(AircraftCarrier, CarrierPlaneCargo4)
		LoadTransport(AircraftCarrier, CarrierPlaneCargo5)
		Trigger.OnIdle(AircraftCarrier, function(Carrier) 
			Carrier.Move(Utils.Random({ CruiserPoint0, CruiserPoint1, CruiserPoint2, CruiserPoint3, CruiserPoint4 }).Location)
			Carrier.Wait(Utils.RandomInteger(222, 444))
			Carrier.Move(Utils.Random({ CruiserPoint5, CruiserPoint6, CruiserPoint7, CruiserPoint8, CruiserPoint9 }).Location)
			Carrier.Wait(Utils.RandomInteger(222, 444))
			Carrier.Move(Utils.Random({ CruiserPoint0, CruiserPoint1, CruiserPoint2, CruiserPoint3, CruiserPoint4 }).Location)
			Carrier.Wait(Utils.RandomInteger(222, 444))
			Carrier.Move(Utils.Random({ CruiserPoint5, CruiserPoint6, CruiserPoint7, CruiserPoint8, CruiserPoint9 }).Location)
			Carrier.Wait(Utils.RandomInteger(222, 444))
			Carrier.Move(Utils.Random({ RandomEdgeWaterWaypoint5, RandomEdgeWaterWaypoint6, RandomEdgeWaterWaypoint7, RandomEdgeWaterWaypoint8 }).Location)
			Carrier.Destroy()
		end)
		Trigger.OnRemovedFromWorld(AircraftCarrier, function()
			Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(222, 444)), function()
				InsertAircraftCarrier()
			end)
		end)
		Trigger.AfterDelay(Utils.RandomInteger(6.9, 9.6), function() 
			local GuardHelos = Reinforcements.Reinforce(carriernation, Utils.Random({ { carrierheli, carrierheli }, { carrierheli, carrierheli, carrierheli } }), { Map.ClosestEdgeCell(AircraftCarrier.Location), nil }, DateTime.Seconds(Utils.RandomInteger(4.4, 6.6)), function(helo)
				Trigger.OnIdle(helo, function()
					helo.Stance = "AttackAnything"
					helo.GrantUpgrade("autocontrol")
					helo.GrantUpgrade("wandering")
					if not AircraftCarrier.IsDead and AircraftCarrier.IsInWorld then 
						helo.Guard(AircraftCarrier)
					else
						helo.AttackMove(Utils.Random({ RandomEdgeWaterWaypoint0, RandomEdgeWaterWaypoint1, RandomEdgeWaterWaypoint2, RandomEdgeWaterWaypoint3, RandomEdgeWaterWaypoint4 }).Location, 0)
						helo.Destroy()
					end
				end)
			end)
			local GuardShips = Reinforcements.Reinforce(carriernation, { Utils.Random({ "pt", "dd", "dd", "battleship", "ss" }), Utils.Random({ "pt", "dd", "dd", "dd", "ss" }), Utils.Random({ "pt", "dd", "dd", "dd", "ss" }), Utils.Random({ "pt", "dd", "dd", "dd", "ss" }) }, { AircraftCarrier.Location, nil }, DateTime.Seconds(Utils.RandomInteger(2.2, 3.3)), function(ship)
				Trigger.OnIdle(ship, function()
					ship.Stance = "AttackAnything"
					ship.GrantUpgrade("nocontrol")
					ship.GrantUpgrade("autocontrol")
					ship.GrantUpgrade("wandering")
					if not AircraftCarrier.IsDead and AircraftCarrier.IsInWorld then
						ship.Guard(AircraftCarrier)
					else
						ship.AttackMove(Utils.Random({ RandomEdgeWaterWaypoint0, RandomEdgeWaterWaypoint1, RandomEdgeWaterWaypoint2, RandomEdgeWaterWaypoint3, RandomEdgeWaterWaypoint4 }).Location, 0)
						ship.Destroy()
					end
				end)
			end)
		end)
	end)
end
----------------------------------------------------------------------------------------------------------
SendMoneyCratePlaneDrop = function()
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	local MoneyCrateLZ = Utils.Random({ TechBuildingWaypoint11A, TechBuildingWaypoint11B })
	local MoneyCrateFlare = Actor.Create("flare", true, { Owner = nod, Location = MoneyCrateLZ.Location })
	Trigger.AfterDelay(DateTime.Seconds(99), function()
	end)
	Reinforcements.ReinforceWithTransport(nod, "badr", { nil }, { Map.ClosestEdgeCell(MoneyCrateFlare.Location + CVec.New(Utils.RandomInteger(-3, 3), Utils.RandomInteger(-3, 3))), MoneyCrateFlare.Location + CVec.New(Utils.RandomInteger(-2, 3), Utils.RandomInteger(-2, 3)) }, nil,
	function(MoneyCratePlane, MoneyCratePlaneCargo)
		MoneyCratePlane.Paradrop(MoneyCrateFlare.Location + CVec.New(Utils.RandomInteger(-1, 2), Utils.RandomInteger(-1, 2)))
		MoneyCratePlane.Move(Map.RandomEdgeCell())
		MoneyCratePlane.Destroy()
		Utils.Do(MoneyCratePlaneCargo, function(MoneyCrate)
		end)
		Trigger.OnAllRemovedFromWorld(MoneyCratePlaneCargo, function()
			MoneyCrateFlare.Destroy()
			Trigger.AfterDelay(DateTime.Seconds(99), function()
				SendMoneyCratePlaneDrop()
			end)
		end)
		Trigger.OnRemovedFromWorld(MoneyCratePlane, function()
		end)
		local MoneyCrateType0 = "woodcrate" .. Utils.RandomInteger(0, 1)
		local MoneyCrateType1 = "woodcrate" .. Utils.RandomInteger(0, 1)
		local MoneyCrateType2 = "woodcrate" .. Utils.RandomInteger(0, 1)
		local MoneyCrateCargo0 = MoneyCrateType0
		local MoneyCrateCargo1 = MoneyCrateType1
		local MoneyCrateCargo2 = MoneyCrateType2
		LoadTransport(MoneyCratePlane, MoneyCrateCargo0)
		LoadTransport(MoneyCratePlane, MoneyCrateCargo1)
		LoadTransport(MoneyCratePlane, MoneyCrateCargo2)
	end)
end
----------------------------------------------------------------------------------------------------------
SendParabombs = function(parabombsnation, parabombslocation)
	if parabombsnation == allies then
		parabombsflag = Utils.Random({ "flag.usa", "flag.allies" })
	elseif parabombsnation == england then
		parabombsflag = Utils.Random({ "flag.england", "flag.england" })
	elseif parabombsnation == france then
		parabombsflag = Utils.Random({ "flag.france", "flag.france" })
	elseif parabombsnation == germany then
		parabombsflag = Utils.Random({ "flag.germany", "flag.germany" })
	elseif parabombsnation == ussr then
		parabombsflag = Utils.Random({ "flag.soviet", "flag.soviet" })
	elseif parabombsnation == russia then
		parabombsflag = Utils.Random({ "flag.russia", "flag.russia" })
	elseif parabombsnation == ukraine then
		parabombsflag = Utils.Random({ "flag.ukraine", "flag.ukraine" })
	elseif parabombsnation == china then
		parabombsflag = Utils.Random({ "flag.china", "flag.china" })
	elseif parabombsnation == gdi then
		parabombsflag = Utils.Random({ "prefix.gdi", "prefix.gdi" })
	elseif parabombsnation == un then
		parabombsflag = Utils.Random({ "flag.un", "flag.un" })
	elseif parabombsnation == nod then
		parabombsflag = Utils.Random({ "prefix.nod", "prefix.nod" })
	else
		parabombsflag = Utils.Random({ "flag.india", "flag.northkorea" })
	end
	if parabombsnation.Faction == allies or parabombsnation.Faction == england or parabombsnation.Faction == france or parabombsnation.Faction == germany or parabombsnation.Faction == greece or parabombsnation.Faction == spain then
		parabombstype = "powerproxy.parabombs"
	elseif parabombsnation.Faction == soviet or parabombsnation.Faction == russia or parabombsnation.Faction == ukraine or parabombsnation.Faction == turkey then
		parabombstype = "powerproxy.parabombs2"
	end
	proxy = Actor.Create(parabombstype, true, { Owner = parabombsnation })
	proxy.SendAirstrike(Map.CenterOfCell(parabombslocation.Location + CVec.New(Utils.RandomInteger(-3, 3), Utils.RandomInteger(3, 3))) + WVec.New(Utils.RandomInteger(-6, 6), Utils.RandomInteger(-6, 6), Utils.RandomInteger(0, 3)), false, Utils.Random({ Facing.NorthEast, Facing.NorthWest, Facing.SouthEast, Facing.SouthWest }) + Utils.RandomInteger(-6, 6))
	proxy.Destroy()
	Trigger.AfterDelay(1, function()
		AirstrikePlanes = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return self.Type == "badr.bomber" and self.Owner == parabombsnation end)
		Utils.Do(AirstrikePlanes, function(plane)
			plane.GrantUpgrade(parabombsflag)
		end)
	end)
end
----------------------------------------------------------------------------------------------------------
InsertJetFighters = function(Nation, JetFightersTypes, EntryPoint, DestinationPointA, DestinationPointB)
	if Nation.Faction == allies or Nation.Faction == england or Nation.Faction == france or Nation.Faction == germany or Nation.Faction == greece or Nation.Faction == spain then
		RandomJetSounds = NATOJetSoundTypes[Utils.RandomInteger(1, 7)]
	elseif Nation.Faction == soviet or Nation.Faction == russia or Nation.Faction == ukraine or Nation.Faction == turkey then
		RandomJetSounds = SovietMigSoundTypes[Utils.RandomInteger(1, 5)]
	end
	Media.PlaySound(RandomJetSounds)
	local i = 1
	Utils.Do(JetFightersTypes, function(planeType)
		i = i + 1
		local start = EntryPoint.CenterPosition + WVec.New(0, (i - 1) * 1536, Actor.CruiseAltitude(planeType))
		local dest = DestinationPointA.Location + CVec.New(0, 2 * i)
		local dest2 = DestinationPointB.Location + CVec.New(0, 2 * i)
		local Jet = Actor.Create(planeType, true, { CenterPosition = start, Owner = Nation, Facing = (Map.CenterOfCell(dest) - start).Facing })
		Jet.AttackMove(dest)
		Jet.AttackMove(dest2)
		Jet.Move(Map.RandomEdgeCell())
		Jet.Destroy()
	end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(333, 666)), function() 
		InsertJetFighters(Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china, gdi, un, nod }), JetFighterSquadType, Utils.Random({ RandomEdgeWaypoint0, RandomEdgeWaypoint1, RandomEdgeWaypoint2, RandomEdgeWaypoint3, RandomEdgeWaypoint4, RandomEdgeWaypoint5, RandomEdgeWaypoint6, RandomEdgeWaypoint7, RandomEdgeWaypoint8 }), Utils.Random({ MultiSpawnTypePoint0, MultiSpawnTypePoint1, MultiSpawnTypePoint2, MultiSpawnTypePoint3, RandomLandWaypoint00, RandomLandWaypoint01, RandomLandWaypoint02, RandomLandWaypoint03, RandomLandWaypoint04, RandomLandWaypoint05, RandomLandWaypoint06, RandomLandWaypoint07, RandomLandWaypoint08, RandomLandWaypoint09, RandomLandWaypoint10, RandomLandWaypoint11, CruiserPoint0, CruiserPoint1, CruiserPoint2, CruiserPoint3 }), Utils.Random({ RandomWaypoint0, RandomWaypoint1, RandomWaypoint2, RandomWaypoint3, RandomWaypoint4, RandomWaypoint5, RandomWaypoint6, RandomWaypoint7, RandomWaypoint8 }))
	end)
end
----------------------------------------------------------------------------------------------------------
InsertBlackHawkGDI = function()
	BlackHawkGDIDamagedState = false
	Trigger.AfterDelay(0.000001, function() 
		BlackHawkGDICamera = Actor.Create("camera.follow", true, { Owner = neutral, Location = BlackHawkGDIHero.Location })
	end)
	BlackHawkGDI = Actor.Create(Utils.Random({ "", "", "small", "" }) .. "tran" .. Utils.Random({ ".arm", ".arm" }), true, { Owner = Utils.Random({ allies, england, france, germany }), Location = Map.RandomCell(), Facing = Utils.RandomInteger(0, 255) })
	BlackHawkGDIHero = { BlackHawkGDI }
	BlackHawkGDI.Owner = gdi
	BlackHawkGDI.GrantUpgrade(Utils.Random({ "prefix.gdi", "flag.un" }))
	BlackHawkGDI.Stance = "AttackAnything"
	BlackHawkGDI.GrantUpgrade("nocontrol")
	BlackHawkGDI.GrantUpgrade("autocontrol")
	BlackHawkGDI.Teleport(Map.RandomCell())
	Trigger.OnIdle(BlackHawkGDI, function(Hawk)
		if not Hawk.IsDead and Hawk.IsInWorld then
			Hawk.Patrol({Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell(), Map.RandomCell()}, true, DateTime.Seconds(Utils.RandomInteger(18.8, 36.6)))
		end 
	end)
	Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(6.6, 6.6 * 3.3)), BlackHawkGDISpeach)
	Trigger.OnKilled(BlackHawkGDI, function()
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(88, 166)), function()
			InsertBlackHawkGDI()
		end)
	end)
end
----------------------------------------------------------------------------------------------------------
BlackHawkGDISpeach = function()
	if BlackHawkGDI.IsInWorld and not BlackHawkGDI.IsDead then
		BlackHawkGDI.GrantTimedUpgrade("mouth.prefix", Utils.RandomInteger(44, 66))
		Media.FloatingText(Utils.Random({ "The NOD terrosits infiltrated everywhere...\nCivilian city or a Military base, doesnt matter...", "This sky patrol route very important.", "This AH BlackHawk my favourite helos..", "Oh, I thought I saw something...\n\n hmm or not?!?!?...", "Have you heard of the mysterious messiah  terrosist Kane?", "I've heard a few rumors about the Monster who swallow ships in the oceans" }), BlackHawkGDI.CenterPosition, Utils.RandomInteger(122, 188), Utils.Random({ HSLColor.DarkRed, HSLColor.DarkOrange, HSLColor.Red, HSLColor.Orange }))
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(6.6, 6.6 * 3.3)), BlackHawkGDISpeach)
	end
end
----------------------------------------------------------------------------------------------------------
InsertTerroristCarryall = function()
	Trigger.AfterDelay(0.000001, function()
		TerroristCarryallCamera = Actor.Create("camera.follow", true, { Owner = neutral, Location = TerroristCarryallHero.Location }) 
	end)
	TerroristCarryall = Actor.Create("carryall", true, { Owner = Utils.Random({ nod, isis }), Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
	TerroristCarryallHero = { TerroristCarryall }
	TerroristCarryall.Move(Map.RandomCell())
	TerroristCarryall.Wait(Utils.RandomInteger(66, 99))
	TerroristCarryall.Move(Map.RandomCell())
end
----------------------------------------------------------------------------------------------------------
InsertNeutralCarryall = function()
	Trigger.AfterDelay(0.000001, function()
		NeutralCarryallCamera = Actor.Create("camera.follow", true, { Owner = neutral, Location = NeutralCarryallHero.Location }) 
	end)
	NeutralCarryall = Actor.Create("carryall", true, { Owner = Utils.Random({ neutral0, neutral1, neutral2, neutral3 }), Location = Map.RandomEdgeCell(), Facing = Utils.RandomInteger(0, 255) })
	NeutralCarryallHero = { NeutralCarryall }
	NeutralCarryall.Move(Map.RandomCell())
	NeutralCarryall.Wait(Utils.RandomInteger(66, 99))
	NeutralCarryall.Move(Map.RandomCell())
end
----------------------------------------------------------------------------------------------------------
SendCarryalls = function()
	local units = Reinforcements.ReinforceWithTransport(Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china }), "carryall.reinforce", { Utils.Random({ "1tnk", "2tnk", "3tnk", "4tnk", "apc.tower", "ftrk", "aatrk", "jeep", "jeep.recon", "raytnk", "stnk", "vettnk", "ctnk", "latnk", "mechw", "behe" }) }, CarryallPaths[1], { CarryallPaths[1][1] })[2]
	Utils.Do(units, IdleHunt)

	Reinforcements.ReinforceWithTransport(Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china }), "carryall.reinforce", { Utils.Random({ "1tnk", "2tnk", "3tnk", "4tnk", "apc.tower", "ftrk", "aatrk", "jeep", "jeep.recon", "raytnk", "stnk", "vettnk", "ctnk", "latnk", "mechw", "behe" }) }, { Map.RandomEdgeCell(), Utils.Random({ RandomWaypoint0, RandomWaypoint1, RandomWaypoint2, RandomWaypoint3, RandomWaypoint4, RandomWaypoint5, RandomWaypoint6, RandomWaypoint7, RandomWaypoint8, RandomWaypoint9, RandomWaypoint10, RandomWaypoint11 }).Location + CVec.New(Utils.RandomInteger(-1, 1), Utils.RandomInteger(-1, 1)) }, { Map.RandomEdgeCell() })
end
----------------------------------------------------------------------------------------------------------
AutoCrateCarryallRandomCrate = function()
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	local RandomCitizens = Utils.Random({ neutral0, neutral1, neutral2, neutral3 })
	local AutoCrateCaryall = Actor.Create("carryall.reinforce", true, { Owner = RandomCitizens, Location = Utils.Random({ RandomEdgeWaypoint0, RandomEdgeWaypoint1, RandomEdgeWaypoint2, RandomEdgeWaypoint3, RandomEdgeWaypoint4, RandomEdgeWaypoint5, RandomEdgeWaypoint6, RandomEdgeWaypoint7, RandomEdgeWaypoint8 }).Location, Facing = Utils.RandomInteger(0, 255) })
	local AutoCaryallCargoType = Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) })
	Trigger.AfterDelay(0.000001, function()
		local AutoCaryallCargo = AutoCaryallCargoType
		local CrateCarryallAuto = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == "carryall.reinforce" and carryall.Owner == RandomCitizens end)
		Utils.Do(CrateCarryallAuto, function(CrateCarryallAuto)
			LoadTransport(CrateCarryallAuto, AutoCaryallCargo)
			CrateCarryallAuto.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
			CrateCarryallAuto.GrantUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "normal.objective", "attack.objective", "destroy.objective" }))
			CrateCarryallAuto.Owner = Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china })
		end)
	end)
	Trigger.OnIdle(AutoCrateCaryall, function(AutoCrateCaryall)
		if not AutoCrateCaryall.IsDead and AutoCrateCaryall.IsInWorld then
			AutoCrateCaryall.Move(Utils.Random({ RandomWaypoint0, RandomWaypoint1, RandomWaypoint2, RandomWaypoint3, RandomWaypoint4, RandomWaypoint5, RandomWaypoint6, RandomWaypoint7, RandomWaypoint8, RandomWaypoint9, RandomWaypoint10, RandomWaypoint11 }).Location + CVec.New(Utils.RandomInteger(-1, 1), Utils.RandomInteger(-1, 1)))
			AutoCrateCaryall.Paradrop(Utils.Random({ RandomWaypoint0, RandomWaypoint1, RandomWaypoint2, RandomWaypoint3, RandomWaypoint4, RandomWaypoint5, RandomWaypoint6, RandomWaypoint7, RandomWaypoint8, RandomWaypoint9, RandomWaypoint10, RandomWaypoint11 }).Location + CVec.New(Utils.RandomInteger(-1, 1), Utils.RandomInteger(-1, 1)))
			AutoCrateCaryall.Wait(Utils.RandomInteger(44, 88))
			AutoCrateCaryall.Move(Utils.Random({ RandomEdgeWaypoint0, RandomEdgeWaypoint1, RandomEdgeWaypoint2, RandomEdgeWaypoint3, RandomEdgeWaypoint4, RandomEdgeWaypoint5, RandomEdgeWaypoint6, RandomEdgeWaypoint7, RandomEdgeWaypoint8 }).Location)
			AutoCrateCaryall.Destroy()
		end
	end)
	Trigger.AfterDelay(DateTime.Seconds(333), function() AutoCrateCarryallRandomCrate() end)
end
----------------------------------------------------------------------------------------------------------
CrateCarryallReinforcement = function()
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	local RandomCitizens = Utils.Random({ neutral0, neutral1, neutral2, neutral3 })
	local AutoCrateCarryallCargoType = Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) })
	Trigger.AfterDelay(0.000001, function()
		local AutoCrateCarryallCargo = AutoCrateCarryallCargoType
		local CarryallReinf = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carry) return carry.Type == "carryall.reinforce" and carry.Owner == RandomCitizens end)
		Utils.Do(CarryallReinf, function(CarryallReinf)
			LoadTransport(CarryallReinf, AutoCrateCarryallCargo)
			CarryallReinf.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(1234, 2100))
			CarryallReinf.GrantUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "normal.objective", "attack.objective", "destroy.objective" }))
			CarryallReinf.Owner = Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china })
		end)
	end)
	Reinforcements.ReinforceWithTransport(RandomCitizens, "carryall.reinforce", { nil }, { Utils.Random({ RandomEdgeWaypoint0, RandomEdgeWaypoint1, RandomEdgeWaypoint2, RandomEdgeWaypoint3, RandomEdgeWaypoint4, RandomEdgeWaypoint5, RandomEdgeWaypoint6, RandomEdgeWaypoint7, RandomEdgeWaypoint8 }).Location, nil }, nil,
	function(CrateCarryall, CrateCarryallCargo)
		Trigger.OnIdle(CrateCarryall, function(CrateCarryall)
			if not CrateCarryall.IsDead and CrateCarryall.IsInWorld then
				CrateCarryall.Wait(22)
				CrateCarryall.Move(Utils.Random({ RandomWaypoint0, RandomWaypoint1, RandomWaypoint2, RandomWaypoint3, RandomWaypoint4, RandomWaypoint5, RandomWaypoint6, RandomWaypoint7, RandomWaypoint8, RandomWaypoint9, RandomWaypoint10, RandomWaypoint11 }).Location + CVec.New(Utils.RandomInteger(-1, 1), Utils.RandomInteger(-1, 1)))
				CrateCarryall.Paradrop(Utils.Random({ RandomWaypoint0, RandomWaypoint1, RandomWaypoint2, RandomWaypoint3, RandomWaypoint4, RandomWaypoint5, RandomWaypoint6, RandomWaypoint7, RandomWaypoint8, RandomWaypoint9, RandomWaypoint10, RandomWaypoint11 }).Location + CVec.New(Utils.RandomInteger(-1, 1), Utils.RandomInteger(-1, 1)))
				CrateCarryall.Wait(Utils.RandomInteger(44, 88))
				CrateCarryall.Move(Utils.Random({ RandomEdgeWaypoint0, RandomEdgeWaypoint1, RandomEdgeWaypoint2, RandomEdgeWaypoint3, RandomEdgeWaypoint4, RandomEdgeWaypoint5, RandomEdgeWaypoint6, RandomEdgeWaypoint7, RandomEdgeWaypoint8 }).Location)
				CrateCarryall.Destroy()
			end
		end)
		Utils.Do(CrateCarryallCargo, function(CrateCarryallCargoActor) 
			CrateCarryallCargoActor.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(2222, 4444))
			Trigger.OnRemovedFromWorld(CrateCarryallCargo, function()
				Trigger.AfterDelay(DateTime.Seconds(33), function() CrateCarryallReinforcement() end)
			end)
		end)
	end)
end
----------------------------------------------------------------------------------------------------------
InsertCarryallVehicleReinforcement = function(entry, land)
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	local RandomCountry = Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china })
	if (RandomCountry == allies or RandomCountry == england or RandomCountry == france or RandomCountry == germany) then
		local CarryedVehicleReinforcementType = Utils.Random({ "1tnk", "2tnk", "3tnk", "4tnk", "apc.tower", "ftrk", "aatrk", "jeep", "jeep.recon", "raytnk", "stnk", "vettnk", "ctnk", "latnk", "mechw", "behe" })
		if (CarryedVehicleReinforcementType == "4tnk" or CarryedVehicleReinforcementType == "vettnk" or CarryedVehicleReinforcementType == "latnk" or CarryedVehicleReinforcementType == "mechw" or CarryedVehicleReinforcementType == "behe") then
			local CarryallType = "heavycarryall"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType,
				{ CarryedVehicleReinforcementType }, { entry.Location, land.Location }, { entry.Location })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local ReinforcementCarryallVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(ReinforcementCarryallVehicle, function(ReinforcementCarryallVehicle)
					ReinforcementCarryallVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					ReinforcementCarryallVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
				end)
			end)
		else
			local CarryallType = "carryall"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType,
				{ CarryedVehicleReinforcementType }, { entry.Location, land.Location }, { entry.Location })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local ReinforcementCarryallVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(ReinforcementCarryallVehicle, function(ReinforcementCarryallVehicle)
					ReinforcementCarryallVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(1234, 2100))
					ReinforcementCarryallVehicle.GrantUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix" }))
				end)
			end)
		end
	elseif (RandomCountry == ussr or RandomCountry == russia or RandomCountry == ukraine or RandomCountry == china) then
		local CarryedVehicleReinforcementType = Utils.Random({ "1tnk", "2tnk", "3tnk", "4tnk", "apc.tower", "ftrk", "aatrk", "jeep", "jeep.recon", "ftnk", "totnk", "ttnk", "ntnk", "mechw", "behe" })
		if (CarryedVehicleReinforcementType == "4tnk" or CarryedVehicleReinforcementType == "ntnk" or CarryedVehicleReinforcementType == "mechw" or CarryedVehicleReinforcementType == "behe") then
			local CarryallType = "heavycarryall"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType,
				{ CarryedVehicleReinforcementType }, { entry.Location, land.Location }, { entry.Location })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local ReinforcementCarryallVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(ReinforcementCarryallVehicle, function(ReinforcementCarryallVehicle)
					ReinforcementCarryallVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					ReinforcementCarryallVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
				end)
			end)
		else
			local CarryallType = "carryall"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType,
				{ CarryedVehicleReinforcementType }, { entry.Location, land.Location }, { entry.Location })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local ReinforcementCarryallVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(ReinforcementCarryallVehicle, function(ReinforcementCarryallVehicle)
					ReinforcementCarryallVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					ReinforcementCarryallVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
				end)
			end)
		end
	end
	Trigger.AfterDelay(DateTime.Seconds(444), function()
		InsertCarryallVehicleReinforcement(entry, land)
	end)
end
-------------------------------------------------------------------
InsertCarryallRandomPartisanVehicle = function()
--------------------------------------------------------------------------------------------------------
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	local Path = { Utils.Random({ RandomLandWaypoint00, RandomLandWaypoint01, RandomLandWaypoint02, RandomLandWaypoint03, RandomLandWaypoint04, RandomLandWaypoint05, RandomLandWaypoint06, RandomLandWaypoint07, RandomLandWaypoint08, RandomLandWaypoint09, RandomLandWaypoint10, RandomLandWaypoint11 }).Location, Utils.Random({ RandomEdgeWaypoint0, RandomEdgeWaypoint1, RandomEdgeWaypoint2, RandomEdgeWaypoint3, RandomEdgeWaypoint4, RandomEdgeWaypoint5, RandomEdgeWaypoint6, RandomEdgeWaypoint7, RandomEdgeWaypoint8 }).Location }
	local RandomCountry = Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china })
	if (RandomCountry == allies or RandomCountry == england or RandomCountry == france or RandomCountry == germany) then
		local CarryedVehicleType = Utils.Random({ "1tnk", "2tnk", "3tnk", "4tnk", "apc.tower", "ftrk", "aatrk", "jeep", "jeep.recon", "raytnk", "stnk", "vettnk", "ctnk", "latnk", "mechw", "behe" })
		if (CarryedVehicleType == "4tnk" or CarryedVehicleType == "vettnk" or CarryedVehicleType == "latnk" or CarryedVehicleType == "mechw" or CarryedVehicleType == "behe") then
			local CarryallType = "heavycarryall.reinforce"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType, { CarryedVehicleType }, Path, { Path[1] })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local CarryallPartisanVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(CarryallPartisanVehicle, function(CarryallPartisanVehicle)
					CarryallPartisanVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					CarryallPartisanVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
					Trigger.OnRemovedFromWorld(CarryallPartisanVehicle, function()
						Trigger.AfterDelay(DateTime.Seconds(33), function() InsertCarryallRandomPartisanVehicle() end)
					end)
				end)
			end)
		else
			local CarryallType = "carryall.reinforce"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType, { CarryedVehicleType }, Path, { Path[1] })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local CarryallPartisanVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(CarryallPartisanVehicle, function(CarryallPartisanVehicle)
					CarryallPartisanVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					CarryallPartisanVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
					Trigger.OnRemovedFromWorld(CarryallPartisanVehicle, function()
						Trigger.AfterDelay(DateTime.Seconds(33), function() InsertCarryallRandomPartisanVehicle() end)
					end)
				end)
			end)
		end
	elseif (RandomCountry == ussr or RandomCountry == russia or RandomCountry == ukraine or RandomCountry == china) then
		local CarryedVehicleType = Utils.Random({ "1tnk", "2tnk", "3tnk", "4tnk", "apc.tower", "ftrk", "aatrk", "jeep", "jeep.recon", "ftnk", "totnk", "ttnk", "ntnk", "mechw", "behe" })
		if (CarryedVehicleType == "4tnk" or CarryedVehicleType == "ntnk" or CarryedVehicleType == "mechw" or CarryedVehicleType == "behe") then
			local CarryallType = "heavycarryall.reinforce"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType, { CarryedVehicleType }, Path, { Path[1] })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local CarryallPartisanVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(CarryallPartisanVehicle, function(CarryallPartisanVehicle)
					CarryallPartisanVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					CarryallPartisanVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
					Trigger.OnRemovedFromWorld(CarryallPartisanVehicle, function()
						Trigger.AfterDelay(DateTime.Seconds(33), function() InsertCarryallRandomPartisanVehicle() end)
					end)
				end)
			end)
		else
			local CarryallType = "carryall.reinforce"
			local unit = Reinforcements.ReinforceWithTransport(RandomCountry, CarryallType, { CarryedVehicleType }, Path, { Path[1] })[2]
			Utils.Do(unit, IdleHunt)
			Trigger.AfterDelay(0.000001, function()
				local CarryallPartisanVehicle = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(carryall) return carryall.Type == CarryallType and carryall.Owner == RandomCountry end)
				Utils.Do(CarryallPartisanVehicle, function(CarryallPartisanVehicle)
					CarryallPartisanVehicle.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(666, 999))
					CarryallPartisanVehicle.GrantUpgrade(Utils.Random({ "normal.objective", "attack.objective", "destroy.objective" }))
					Trigger.OnRemovedFromWorld(CarryallPartisanVehicle, function()
						Trigger.AfterDelay(DateTime.Seconds(33), function() InsertCarryallRandomPartisanVehicle() end)
					end)
				end)
			end)
		end
	end
end
----------------------------------------------------------------------------------------------------------
InsertRandomParatroopersReinforcement = function()
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	local RandomCountry = Utils.Random({ allies, england, france, germany, ussr, russia, ukraine, china })
	local powerproxy = Actor.Create(Utils.Random({ "powerproxy.m16weapondrop", "powerproxy.mp5weapondrop", "powerproxy.ak47weapondrop", "powerproxy.smawweapondrop", "powerproxy.rpg7weapondrop" }), false, { Owner = RandomCountry })
	local ParaWeaponCrates = powerproxy.SendParatroopers(Utils.Random({ RandomLandWaypoint00.CenterPosition, RandomLandWaypoint01.CenterPosition, RandomLandWaypoint02.CenterPosition, RandomLandWaypoint03.CenterPosition, RandomLandWaypoint04.CenterPosition, RandomLandWaypoint05.CenterPosition, RandomLandWaypoint06.CenterPosition, RandomLandWaypoint07.CenterPosition, RandomLandWaypoint08.CenterPosition, RandomLandWaypoint09.CenterPosition, RandomLandWaypoint10.CenterPosition, RandomLandWaypoint11.CenterPosition }))
	Utils.Do(ParaWeaponCrates, function(WeaponCrates)
		WeaponCrates.GrantTimedUpgrade(Utils.Random({ "supply.prefix", "supply1.prefix", "worker.prefix", "communicate.prefix", "tactics.prefix", "chip.prefix", "missionmarker." .. Utils.Random({ "disabled", "empty", "enabled" }), "nightvision.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "mask.prefix", "gps.prefix", "fpower.prefix", "empulse.prefix", "earth.prefix", "speed.prefix", "supply.prefix", "supply1.prefix", "worker.prefix", "newspaper", "ai.prefix" }), Utils.RandomInteger(2222, 4444))
		Trigger.OnRemovedFromWorld(WeaponCrates, function()
		end)
	end)
	Trigger.OnAllRemovedFromWorld(ParaWeaponCrates, function()
		Trigger.AfterDelay(DateTime.Seconds(111.111), function()
			InsertRandomParatroopersReinforcement()
		end)
	end)
	powerproxy.Destroy()
end
----------------------------------------------------------------------------------------------------------
SendTrucks = function()
----------------------------------------------------------------------------------------------------------------------------------------
	ConvoyTruckOnSite = false
	ConvoyTruckUnharmed = false
----------------------------------------------------------------------------------------------------------------------------------------
	Truckcount = 0
	TruckBasecount = 0
	TruckMaxcount = 0
	TruckBaseMaxcount = 0
----------------------------------------------------------------------------------------------------------------------------------------
	RandomTrucksRoadEdgeWaypoints = Utils.Random({ RandomEdgeRoadWaypoint.Location, RandomEdgeRoadWaypoint01.Location, RandomEdgeRoadWaypoint02.Location, RandomEdgeRoadWaypoint03.Location, RandomEdgeRoadWaypoint04.Location, RandomEdgeRoadWaypoint05.Location, RandomEdgeRoadWaypoint06.Location, RandomEdgeRoadWaypoint07.Location })
----------------------------------------------------------------------------------------------------------------------------------------
	I_ct = Utils.RandomInteger(0, 3)
----------------------------------------------------------------------------------------------------------------------------------------
	I_st = Utils.Random({ "hosp", "tnksprt", "trafo", "civcoalplant", "windplant", "gaspump1", "bank", "bank1", "radiotower", "radiotower2", "civilfactory1", "civil_factory" })
----------------------------------------------------------------------------------------------------------------------------------------
	Trigger.AfterDelay(0.000001, function()
----------------------------------------------------------------------------------------------------------------------------------------
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(2.99, 3.11)), function()
			Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
			Camera.Position = Map.CenterOfCell(RandomTrucksRoadEdgeWaypoints)
		end)
----------------------------------------------------------------------------------------------------------------------------------------
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(14.44, 16.66)), function()
			Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
		end)
----------------------------------------------------------------------------------------------------------------------------------------
		Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(9.99, 11.1)), function()
			if multi0.IsBot and multi1.IsBot and multi2.IsBot and multi3.IsBot then
				if FieldGeneral0.IsInWorld and FieldGeneral1.IsInWorld and FieldGeneral2.IsInWorld and FieldGeneral3.IsInWorld then
					Utils.Do(FieldGeneral0 or FieldGeneral1 or FieldGeneral2 or FieldGeneral3, function(a) Camera.Position = a.CenterPosition end)
				end
			elseif not multi0.IsBot and multi1.IsBot and multi2.IsBot and multi3.IsBot then
				if FieldGeneralLiveState0 then
					Utils.Do(FieldGeneral0, function(a) Camera.Position = a.CenterPosition end) 
				end
			elseif multi0.IsBot and not multi1.IsBot and multi2.IsBot and multi3.IsBot then
				if FieldGeneralLiveState1 then
					Utils.Do(FieldGeneral1, function(a) Camera.Position = a.CenterPosition end) 
				end
			elseif multi0.IsBot and multi1.IsBot and not multi2.IsBot and multi3.IsBot then
				if FieldGeneralLiveState2 then
					Utils.Do(FieldGeneral2, function(a) Camera.Position = a.CenterPosition end)
				end
			elseif multi0.IsBot and multi1.IsBot and multi2.IsBot and not multi3.IsBot then
				if FieldGeneralLiveState3 then 
					Utils.Do(FieldGeneral3, function(a) Camera.Position = a.CenterPosition end)
				end
			else
			end
		end)
----------------------------------------------------------------------------------------------------------------------------------------
		if I_ct == 0 then
			I_ctA = multi0
			I_ctB = multi1
			I_ctC = multi2
			I_ctD = multi3
			BaseSupplyDropLocation = StartingWaypoint0.Location
		elseif I_ct == 1 then
			I_ctA = multi1
			I_ctB = multi0
			I_ctC = multi2
			I_ctD = multi3
			BaseSupplyDropLocation = StartingWaypoint1.Location
		elseif I_ct == 2 then
			I_ctA = multi2
			I_ctB = multi1
			I_ctC = multi0
			I_ctD = multi3
			BaseSupplyDropLocation = StartingWaypoint2.Location
		elseif I_ct == 3 then
			I_ctA = multi3
			I_ctB = multi1
			I_ctC = multi2
			I_ctD = multi0
			BaseSupplyDropLocation = StartingWaypoint3.Location
		end
--		TruckStations = Map.ActorsInBox(Map.TopLeft, Map.BottomRight, function(self) return (self.Type == I_st) end)
		TruckStations = Utils.Take(1, (neutral or neutral0 or neutral1 or neutral2 or neutral3 or gdi or un).GetActorsByType(I_st))
		Trigger.AfterDelay(0.000001, function()
			if I_st == "hosp" or I_st == "hosp.fix" then
				TruckTypes = "ambulance" .. tostring(Utils.RandomInteger(0, 1))
				StationTypes = "Hospital"
				TruckCargoTypes = Utils.Random({ "healcrate" .. Utils.RandomInteger(0, 2), "medi", "computercrate" .. Utils.RandomInteger(0, 4) })
			elseif I_st == "tnksprt" or I_st == "tnksprt.fix" then
				TruckTypes = "truk_supply" .. tostring(Utils.Random({ "", ".lightred", ".red", ".darkred", ".lightgreen", ".green", ".blue", ".brown", ".teal", ".darkyellow", ".yellow" }))
				StationTypes = "Depo"
				TruckCargoTypes = Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) })
			elseif I_st == "civcoalplant" or I_st == "windplant" or I_st == "trafo" or I_st == "civcoalplant.fix" or I_st == "windplant.fix" or I_st == "trafo.fix" then
				TruckTypes = "truck" .. tostring(Utils.Random({ "a", "b", "c" }))
				StationTypes = "Power Plant"
				TruckCargoTypes = Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) })
			elseif I_st == "radiotower" or I_st == "radiotower2" or I_st == "radiotower.fix" or I_st == "radiotower2.fix" then
				TruckTypes = "van" .. tostring(Utils.Random({ "", ".lightred", ".red", ".darkred", ".lightgreen", ".green", ".blue", ".brown", ".teal", ".darkyellow", ".yellow" }))
				StationTypes = "Radio Tower"
				TruckCargoTypes = Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4) })
			elseif I_st == "bank" or I_st == "bank1" or I_st == "bank.fix" or I_st == "bank1.fix" then
				TruckTypes = "copcar" .. tostring(Utils.RandomInteger(0, 1))
				StationTypes = "Bank"
				TruckCargoTypes = Utils.Random({ "policeman", "fireman", "pilot" })
			elseif I_st == "gaspump1" or I_st == "gaspump1.fix" then
				TruckTypes = "pick" .. tostring(Utils.Random({ "", ".lightred", ".red", ".darkred", ".lightgreen", ".green", ".blue", ".brown", ".teal", ".darkyellow", ".yellow" }))
				StationTypes = "Gas Station"
				TruckCargoTypes = Utils.Random({ "fuelcrate", "ffuelcrate" })
			elseif I_st == "civilfactory1" or I_st == "civil_factory" or I_st == "civilfactory1.fix" or I_st == "civil_factory.fix" then
				TruckTypes = "mkam" .. tostring(Utils.Random({ "", ".lightred", ".red", ".darkred", ".lightgreen", ".green", ".blue", ".brown", ".teal", ".darkyellow", ".yellow" }))
				StationTypes = "Factory"
				TruckCargoTypes = Utils.Random({ "armorcrate0", "woodcrate" .. Utils.RandomInteger(0, 1), "healcrate2", "ammocrate" .. Utils.RandomInteger(0, 1), "computercrate" .. Utils.RandomInteger(0, 4), "jeep", "jeep.recon", "apc", "apc.tower", "commandercarrier", "1tnk", "2tnk", "3tnk", "4tnk", "arty", "v2rl", "ftrk", "aatrk", "raytnk", "stnk", "ctnk", "latnk", "ftnk", "totnk", "ttnk", "ntnk", "dtrk", "mrj", "mgg" })
			elseif I_st == "civheliport" or I_st == "citypad1" or I_st == "civheliport.fix" or I_st == "citypad1.fix" then
				TruckTypes = "mkam" .. tostring(Utils.Random({ "", ".lightred", ".red", ".darkred", ".lightgreen", ".green", ".blue", ".brown", ".teal", ".darkyellow", ".yellow" }))
				StationTypes = "Heli Port"
				TruckCargoTypes = Utils.Random({ "smalltran", "tran", "heli", "hind", "yak", "mig", "lightjet", "advmig", "f117", "orca", "dtrk", "mrj", "mgg" })
                
			end
			Trigger.AfterDelay(0.000001, function()
				TruckOwnerA = I_ctA
				TruckOwnerB = I_ctB
				TruckOwnerC = I_ctC
				TruckOwnerD = I_ctD
				TruckType = TruckTypes
				TruckCargoType = TruckCargoTypes
				StationType = StationTypes
				Trigger.AfterDelay(0.000001, function()
					TruckCargo = TruckCargoType
					Utils.Do(TruckStations, function(station)
--					Utils.Do(Utils.Take(1, TruckStations), function(station)
						CameraTruckStation = Actor.Create("camera.small", true, { Owner = tv, Location = station.Location + CVec.New(1, 1) })
						station.GrantUpgrade("normal.objective")
						station.GrantUpgrade(Utils.Random({ "destroy", "attack" }) .. ".objective")
						if not ConvoyTruckOnSite then
							ConvoyTruckOnSite = true
							Truckticked = 0
							ConvoyObjective = TruckOwnerA.AddSecondaryObjective("Guard the traderoutes-[" .. tostring(StationType) .. "], and defend the Convoy!")
							CounterConvoy_Objective1 = TruckOwnerB.AddSecondaryObjective("Clear the traderoutes-[" .. tostring(StationType) .. "], and destroy the Convoy!")
							CounterConvoy_Objective2 = TruckOwnerC.AddSecondaryObjective("Clear the traderoutes-[" .. tostring(StationType) .. "], and destroy the Convoy!")
							CounterConvoy_Objective3 = TruckOwnerD.AddSecondaryObjective("Clear the traderoutes-[" .. tostring(StationType) .. "], and destroy the Convoy!")
							Media.PlaySpeechNotification((TruckOwnerA or TruckOwnerB or TruckOwnerC or TruckOwnerD), "ConvoyApproaching")
							Trigger.AfterDelay(DateTime.Seconds(3), function()
								ConvoyTruckUnharmed = true
								SupplyTrucks = Reinforcements.Reinforce(TruckOwnerA, { TruckType, TruckType, TruckType }, { RandomTrucksRoadEdgeWaypoints, RandomTrucksRoadEdgeWaypoints }, DateTime.Seconds(Utils.RandomInteger(4.468, 6.631)),
									function(truck)
										Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
										Trigger.AfterDelay(0.000001, function()
											CameraTrucks = Actor.Create("camera.follow", true, { Owner = tv, Location = camtruck.Location })
											Trigger.AfterDelay(0.000001, function() RotateCameraTrucks() end)
											RotateCameraTrucks = function()
												if CameraTrucks.IsInWorld and truck.IsInWorld then CameraTrucks.Teleport(truck.Location) end
												Trigger.AfterDelay(0.000001, function() RotateCameraTrucks() end)
											end
										end)
										camtruck = { truck }
										truck.Stance = "HoldFire"
										truck.GrantUpgrade("nocontrol")
										truck.GrantUpgrade("normal.objective")
										truck.GrantUpgrade(Utils.Random({ "destroy", "attack" }) .. ".objective")
										Trigger.OnIdle(truck, function()
											truck.Move(station.Location + CVec.New(0, 0))
										end)
										Trigger.OnAddedToWorld(truck, function()
											TruckMaxcount = TruckMaxcount + 1
										end)
										LoadTransport(truck, TruckCargo)
									end)
								Truckcount = 0
								Trigger.OnAnyKilled(SupplyTrucks, ConvoyCasualites)
								Trigger.OnAllKilled(SupplyTrucks, ConvoyAllLost)
								Trigger.OnEnteredFootprint( { station.Location + CVec.New(0, 0) }, function(a, id)
									if a.Owner == TruckOwnerA and a.Type == TruckType then
										Truckcount = Truckcount + 1
										a.Destroy()
										if Truckcount == TruckMaxcount then
											Trigger.AfterDelay(DateTime.Seconds(2.222), function()
												TruckOwnerA.MarkCompletedObjective(ConvoyObjective)
												TruckOwnerB.MarkFailedObjective(CounterConvoy_Objective1)
												TruckOwnerC.MarkFailedObjective(CounterConvoy_Objective2)
												TruckOwnerD.MarkFailedObjective(CounterConvoy_Objective3)
											end)
											Trigger.AfterDelay(DateTime.Seconds(4.444), function()
												Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
												if CameraTruckStation.IsInWorld then CameraTruckStation.Destroy() end
											end)
											Trigger.RemoveFootprintTrigger(id)
											Trigger.AfterDelay(DateTime.Seconds(2), function()
												BaseSupplyTrucks = Reinforcements.Reinforce(TruckOwnerA, { TruckType, TruckType, TruckType }, { station.Location + CVec.New(-1, -2), station.Location + CVec.New(1, -4) }, DateTime.Seconds(Utils.RandomInteger(4.468, 6.631)), function(basetruk)
													Trigger.AfterDelay(0.000001, function() 
														CameraTruck = Actor.Create("camera.follow", true, { Owner = tv, Location = cambasetruk.Location })
														Trigger.AfterDelay(0.000001, function() RotateCameraTruck() end)
														RotateCameraTruck = function()
															if CameraTruck.IsInWorld and basetruk.IsInWorld and not basetruk.IsDead then CameraTruck.Teleport(basetruk.Location) end
															Trigger.AfterDelay(0.000001, function() if not TruckBasecount == TruckBaseMaxcount then RotateCameraTruck() end end)
														end
													end)
													cambasetruk = { basetruk }
													basetruk.Stance = "HoldFire"
													basetruk.GrantUpgrade("nocontrol")
													basetruk.GrantUpgrade("normal.objective")
													basetruk.GrantUpgrade(Utils.Random({ "destroy", "attack" }) .. ".objective")
													Trigger.OnIdle(basetruk, function()
														basetruk.Move(BaseSupplyDropLocation + CVec.New(3, 3))
													end)
													Trigger.OnAddedToWorld(basetruk, function()
														TruckBaseMaxcount = TruckBaseMaxcount + 1
													end)
													LoadTransport(basetruk, TruckCargo)
												end)
												Trigger.OnEnteredFootprint( { BaseSupplyDropLocation + CVec.New(3, 3) }, function(a, id)
													if a.Owner == TruckOwnerA and a.Type == TruckType then
														TruckBasecount = TruckBasecount + 1
														a.Destroy()
														if TruckBasecount == TruckBaseMaxcount then
															Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
															Trigger.AfterDelay(DateTime.Seconds(Utils.RandomInteger(188.88, 366.66)), function()
																SendTrucks()
															end)
															Trigger.RemoveFootprintTrigger(id)
														end
													end
												end)
												Trigger.OnAnyKilled(BaseSupplyTrucks, ConvoyBaseCasualites)
											end)
										end
									end
								end)
							end)
						end
					end)
				end)
			end)
		end)
	end)
end
ConvoyCasualites = function()
	Media.PlaySpeechNotification(TruckOwnerA, "ConvoyUnitLost")
	Media.PlaySpeechNotification((TruckOwnerB or TruckOwnerC or TruckOwnerD), "Objective" .. Utils.Random({ "Reached", "Met" }))
	TruckMaxcount = TruckMaxcount - 1
end
ConvoyBaseCasualites = function()
	Media.PlaySpeechNotification(TruckOwnerA, "ConvoyUnitLost")
	Media.PlaySpeechNotification((TruckOwnerB or TruckOwnerC or TruckOwnerD), "Objective" .. Utils.Random({ "Reached", "Met" }))
	TruckBaseMaxcount = TruckBaseMaxcount - 1
end
ConvoyAllLost = function()
	Media.PlaySpeechNotification(multi0 or multi1 or multi2 or multi3, "SupplySpeech" .. Utils.RandomInteger(0, 9) .. Utils.RandomInteger(0, 9) )
	if ConvoyTruckUnharmed then
		Media.PlaySpeechNotification(I_ctA "AlliedForcesFallen")
		Media.PlaySpeechNotification((I_ctB or I_ctC or I_ctD), "Objective" .. Utils.Random({ "Reached", "Met" }))
		ConvoyTruckUnharmed = false
		Trigger.AfterDelay(DateTime.Seconds(3.3333), function()
			I_ctA.MarkFailedObjective(ConvoyObjective)
			I_ctB.MarkCompletedObjective(CounterConvoy_Objective1)
			I_ctC.MarkCompletedObjective(CounterConvoy_Objective2)
			I_ctD.MarkCompletedObjective(CounterConvoy_Objective3)
		end)
	end
end

