if DateTime.IsHalloween then UnitTypes = { "ant", "ant", "ant" } BeachUnitTypes = { "ant", "ant" } ProxyType = "powerproxy.parazombies" ProducedUnitTypes = { { AlliedBarracks1, { "e1", "e3" } }, { AlliedBarracks2, { "e1", "e3" } }, { SovietBarracks1, { "ant" } }, { SovietBarracks2, { "ant" } }, { SovietBarracks3, { "ant" } }, { AlliedWarFactory1, { "jeep", "1tnk", "2tnk", "arty", "ctnk" } }, { SovietWarFactory1, { "3tnk", "4tnk", "v2rl", "ttnk", "apc" } } } else UnitTypes = { "3tnk", "ftrk", "ttnk", "apc" } BeachUnitTypes = { "e1", "e2", "e3", "e4", "e1", "e2", "e3", "e4", "e1", "e2", "e3", "e4", "e1", "e2", "e3", "e4" } ProxyType = "powerproxy.paratroopers" ProducedUnitTypes = { { AlliedBarracks1, { "e1", "e3" } }, { AlliedBarracks2, { "e1", "e3" } }, { SovietBarracks1, { "dog", "e1", "e2", "e3", "e4", "shok" } }, { SovietBarracks2, { "dog", "e1", "e2", "e3", "e4", "shok" } }, { SovietBarracks3, { "dog", "e1", "e2", "e3", "e4", "shok" } }, { AlliedWarFactory1, { "jeep", "1tnk", "2tnk", "arty", "ctnk" } }, { SovietWarFactory1, { "3tnk", "4tnk", "v2rl", "ttnk", "apc" } } } end ShipUnitTypes = { "1tnk", "1tnk", "jeep", "2tnk", "2tnk" } HelicopterUnitTypes = { "e1", "e1", "e1", "e1", "e3", "e3" }; ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4, Paradrop5, Paradrop6, Paradrop7, Paradrop8 } BindActorTriggers = function(a) if a.HasProperty("Hunt") then if a.Owner == allies then Trigger.OnIdle(a, a.Hunt) else Trigger.OnIdle(a, function(a) a.AttackMove(AlliedTechnologyCenter.Location) end) end end if a.HasProperty("HasPassengers") then Trigger.OnDamaged(a, function() if a.HasPassengers then a.Stop() a.UnloadPassengers() end end) end end SendSovietUnits = function(entryCell, unitTypes, interval) local units = Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, interval) Utils.Do(units, function(unit) BindActorTriggers(unit) end) Trigger.OnAllKilled(units, function() SendSovietUnits(entryCell, unitTypes, interval) end) end ShipAlliedUnits = function() local units = Reinforcements.ReinforceWithTransport(allies, "lst", ShipUnitTypes, { LstEntry.Location, LstUnload.Location }, { LstEntry.Location })[2] Utils.Do(units, function(unit) BindActorTriggers(unit) end) Trigger.AfterDelay(DateTime.Seconds(60), ShipAlliedUnits) end InsertAlliedChinookReinforcements = function(entry, hpad) local units = Reinforcements.ReinforceWithTransport(allies, "tran", HelicopterUnitTypes, { entry.Location, hpad.Location + CVec.New(1, 2) }, { entry.Location })[2] Utils.Do(units, function(unit) BindActorTriggers(unit) end) Trigger.AfterDelay(DateTime.Seconds(60), function() InsertAlliedChinookReinforcements(entry, hpad) end) end ParadropSovietUnits = function() local lz = Utils.Random(ParadropWaypoints) local units = powerproxy.SendParatroopers(lz.CenterPosition) Utils.Do(units, function(a) BindActorTriggers(a) end) Trigger.AfterDelay(DateTime.Seconds(35), ParadropSovietUnits) end ProduceUnits = function(t) local factory = t[1] if not factory.IsDead then local unitType = t[2][Utils.RandomInteger(1, #t[2] + 1)] factory.Wait(Actor.BuildTime(unitType)) factory.Produce(unitType) factory.CallFunc(function() ProduceUnits(t) end) end end SetupAlliedUnits = function() Utils.Do(Map.NamedActors, function(a) if a.Owner == allies and a.HasProperty("AcceptsUpgrade") and a.AcceptsUpgrade("unkillable") then a.GrantUpgrade("unkillable") a.Stance = "Defend" end end) end SetupFactories = function() Utils.Do(ProducedUnitTypes, function(pair) Trigger.OnProduction(pair[1], function(_, a) BindActorTriggers(a) end) end) end ChronoshiftAlliedUnits = function() local cells = Utils.ExpandFootprint({ ChronoshiftLocation.Location }, false) local units = { } for i = 1, #cells do local unit = Actor.Create("2tnk", true, { Owner = allies, Facing = 0 }) BindActorTriggers(unit) units[unit] = cells[i] end Chronosphere.Chronoshift(units) Trigger.AfterDelay(DateTime.Seconds(60), ChronoshiftAlliedUnits) end ticks = 0 speed = 5 Tick = function() ticks = ticks + 1 local t = (ticks + 45) % (360 * speed) * (math.pi / 180) / speed; Camera.Position = viewportOrigin + WVec.New(19200 * math.sin(t), 20480 * math.cos(t), 0) end WorldLoaded = function() allies = Player.GetPlayer("Allies") soviets = Player.GetPlayer("Soviets") viewportOrigin = Camera.Position SetupAlliedUnits() SetupFactories() ShipAlliedUnits() InsertAlliedChinookReinforcements(Chinook1Entry, HeliPad1) InsertAlliedChinookReinforcements(Chinook2Entry, HeliPad2) powerproxy = Actor.Create(ProxyType, false, { Owner = soviets }) ParadropSovietUnits() Trigger.AfterDelay(DateTime.Seconds(5), ChronoshiftAlliedUnits) Utils.Do(ProducedUnitTypes, ProduceUnits) SendSovietUnits(Entry1.Location, UnitTypes, 50) SendSovietUnits(Entry2.Location, UnitTypes, 50) SendSovietUnits(Entry3.Location, UnitTypes, 50) SendSovietUnits(Entry4.Location, UnitTypes, 50) SendSovietUnits(Entry5.Location, UnitTypes, 50) SendSovietUnits(Entry6.Location, UnitTypes, 50) SendSovietUnits(Entry7.Location, BeachUnitTypes, 15) end