Initial commit: OpenRA game engine
Fork from OpenRA/OpenRA with one-click launch script (start-ra.cmd) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
518
mods/ra/maps/fall-of-greece-1-personal-war/personal-war.lua
Normal file
518
mods/ra/maps/fall-of-greece-1-personal-war/personal-war.lua
Normal file
@@ -0,0 +1,518 @@
|
||||
--[[
|
||||
Copyright (c) The OpenRA Developers and Contributors
|
||||
This file is part of OpenRA, which is free software. It is made
|
||||
available to you under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of
|
||||
the License, or (at your option) any later version. For more
|
||||
information, see COPYING.
|
||||
]]
|
||||
FootprintTrigger1 = { CPos.New(77, 85), CPos.New(77, 86), CPos.New(77, 87), CPos.New(77, 88) }
|
||||
Trigger1Rifles = { Rifle1, Rifle2, Rifle3, Rifle4 }
|
||||
DoomedHeliPath = { DoomedHeliEntry.Location, DoomedHeli.Location }
|
||||
FootprintTrigger2 = { CPos.New(90, 82), CPos.New(91, 82), CPos.New(93, 82), CPos.New(94, 82), CPos.New(95, 82), CPos.New(96, 82), CPos.New(97, 82), CPos.New(98, 82), CPos.New(99, 82), CPos.New(102, 82) }
|
||||
Grenadiers = { "e2", "e2", "e2", "e2", "e2" }
|
||||
FootprintTrigger3 = { CPos.New(88, 77), CPos.New(88, 76), CPos.New(91, 75), CPos.New(92, 75), CPos.New(93, 75), CPos.New(94, 75), CPos.New(95, 75), CPos.New(96, 75), CPos.New(97, 75), CPos.New(98, 75), CPos.New(99, 75), CPos.New(100, 75) }
|
||||
Trigger3Team = { Gren1, Gren2, Gren3, Gren4, Gren5, VillageMammoth }
|
||||
FootprintTrigger4 = { CPos.New(94, 60), CPos.New(95, 60), CPos.New(96, 60), CPos.New(97, 60), CPos.New(98, 60), CPos.New(99, 60), CPos.New(100, 60), CPos.New(101, 60), CPos.New(102, 60), CPos.New(103, 60), CPos.New(104, 60) }
|
||||
CivilianSquad1 = { "c1", "c2", "c3", "c4", "c5" }
|
||||
CivilianSquad2 = { "c6", "c7", "c8", "c9", "c10" }
|
||||
FootprintTrigger5 = { CPos.New(99, 53), CPos.New(100, 53), CPos.New(101, 53), CPos.New(102, 53), CPos.New(103, 53), CPos.New(104, 53) }
|
||||
Trigger5Team = { TeamFive1, TeamFive2, TeamFive3, TeamFive4, TeamFive5, TeamFive6, TeamFive7 }
|
||||
TentTeam = { "e1", "e1", "e1", "e1", "e3", "e3" }
|
||||
Doggos = { "dog", "dog", "dog" }
|
||||
SovietAttackers = { "3tnk", "e2", "e2", "e2", "v2rl" }
|
||||
MigEntryPath = { BaseAttackersSpawn, GuideSpawn }
|
||||
FootprintTrigger6 = { CPos.New(81, 57), CPos.New(81, 58), CPos.New(81, 59), CPos.New(81, 60), CPos.New(81, 61) }
|
||||
FootprintTrigger7 = { CPos.New(73, 58), CPos.New(73, 59), CPos.New(73, 60), CPos.New(73, 61) }
|
||||
FootprintTrigger8 = { CPos.New(51, 83), CPos.New(51, 84), CPos.New(51, 85), CPos.New(51, 86), CPos.New(51, 87), CPos.New(51, 88) }
|
||||
FootprintTrigger9 = { CPos.New(28, 77), CPos.New(29, 77), CPos.New(30, 77), CPos.New(31, 77), CPos.New(32, 77), CPos.New(33, 77), CPos.New(34, 77), CPos.New(35, 77), CPos.New(36, 77), CPos.New(37, 77), CPos.New(38, 77) }
|
||||
BridgeMammoths = { BridgeMammoth1, BridgeMammoth2 }
|
||||
FootprintTrigger10 = { CPos.New(24, 83), CPos.New(24, 84), CPos.New(24, 85) }
|
||||
FootprintTrigger11 = { CPos.New(20, 65), CPos.New(21, 65), CPos.New(22, 65) }
|
||||
SovBase = { SovFact, SovPower1, SovPower2, SovRax, SovWarFactory, SovFlame1, SovFlame2, SovTesla }
|
||||
SovBaseTeam = { SovBaseTeam1, SovBaseTeam2, SovBaseTeam3, SovBaseTeam4, SovBaseTeam5, SovBaseTeam6 }
|
||||
RaxTeam = { "e1", "e2", "e2", "e4", "e4", "shok" }
|
||||
FootprintTrigger12 = { CPos.New(35, 39), CPos.New(35, 40), CPos.New(35, 41), CPos.New(35, 42) }
|
||||
ExtractionHelicopterType = "tran"
|
||||
ExtractionPath = { ChinookEntry.Location, ExtractionPoint.Location }
|
||||
|
||||
LstReinforcements =
|
||||
{
|
||||
first =
|
||||
{
|
||||
actors = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk" },
|
||||
entryPath = { BoatSpawn.Location, BoatUnload1.Location },
|
||||
exitPath = { BoatSpawn.Location }
|
||||
},
|
||||
second =
|
||||
{
|
||||
actors = { "1tnk", "1tnk", "2tnk", "2tnk", "2tnk" },
|
||||
entryPath = { BoatSpawn.Location, BoatUnload2.Location },
|
||||
exitPath = { BoatSpawn.Location }
|
||||
}
|
||||
}
|
||||
|
||||
VIPs = { }
|
||||
MissionStart = function()
|
||||
FlareBoy.Move(LightFlare.Location)
|
||||
|
||||
Trigger.OnEnteredFootprint({ LightFlare.Location }, function(actor, id)
|
||||
if actor.Owner == England then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
local insertionFlare = Actor.Create("flare", true, { Owner = Allies, Location = LightFlare.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(2), function()
|
||||
FlareBoy.AttackMove(FlareBoyAttack.Location)
|
||||
if Difficulty == "normal" then
|
||||
local normalDrop = InsertionDrop.TargetParatroopers(InsertionPoint.CenterPosition, Angle.New(892))
|
||||
Utils.Do(normalDrop, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t,p)
|
||||
VIPs[#VIPs + 1] = p
|
||||
FailTrigger()
|
||||
end)
|
||||
end)
|
||||
else
|
||||
local hardDrop = InsertionDropHard.TargetParatroopers(InsertionPoint.CenterPosition, Angle.New(892))
|
||||
Utils.Do(hardDrop, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t,p)
|
||||
VIPs[#VIPs + 1] = p
|
||||
FailTrigger()
|
||||
end)
|
||||
end)
|
||||
Trigger.AfterDelay(DateTime.Seconds(6), function()
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("civilians-manual-targeting"), UserInterface.GetFluentMessage("tanya"))
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(20), function()
|
||||
insertionFlare.Destroy()
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
FailTrigger = function()
|
||||
Trigger.OnAnyKilled(VIPs, function()
|
||||
Allies.MarkFailedObjective(ProtectVIPs)
|
||||
end)
|
||||
end
|
||||
|
||||
FootprintTriggers = function()
|
||||
local foot1Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger1, function(actor, id)
|
||||
if actor.Owner == Allies and not foot1Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot1Triggered = true
|
||||
|
||||
local trig1cam = Actor.Create("camera", true, { Owner = Allies, Location = Trigger1Cam.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||
trig1cam.Destroy()
|
||||
end)
|
||||
|
||||
Utils.Do(Trigger1Rifles, function(actor)
|
||||
if not actor.IsDead then
|
||||
actor.AttackMove(Trigger1Move.Location)
|
||||
end
|
||||
end)
|
||||
|
||||
DoomedHeli = Reinforcements.ReinforceWithTransport(England, ExtractionHelicopterType, nil, DoomedHeliPath)[1]
|
||||
end
|
||||
end)
|
||||
|
||||
local foot2Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger2, function(actor, id)
|
||||
if actor.Owner == Allies and not foot2Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot2Triggered = true
|
||||
|
||||
local drop1 = RifleDropS.TargetParatroopers(VillageParadrop.CenterPosition, Angle.SouthWest)
|
||||
Utils.Do(drop1, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t, p)
|
||||
IdleHunt(p)
|
||||
end)
|
||||
end)
|
||||
|
||||
local grens = Reinforcements.Reinforce(USSR, Grenadiers, { GrenEntry.Location }, 0)
|
||||
Utils.Do(grens, IdleHunt)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot3Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger3, function(actor, id)
|
||||
if actor.Owner == Allies and not foot3Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot3Triggered = true
|
||||
|
||||
Trig3House.Owner = Civilians
|
||||
local camera3 = Actor.Create("camera", true, { Owner = Allies, Location = Trigger3Cam.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||
camera3.Destroy()
|
||||
end)
|
||||
|
||||
if not GuideHut.IsDead then
|
||||
local guide = Actor.Create("c6", true, { Owner = England, Location = GuideSpawn.Location })
|
||||
guide.Move(SafePath1.Location)
|
||||
guide.Move(SafePath2.Location)
|
||||
guide.Move(CivilianRally.Location)
|
||||
end
|
||||
|
||||
Utils.Do(Trigger3Team, function(actor)
|
||||
if not actor.IsDead then
|
||||
actor.AttackMove(GuideSpawn.Location)
|
||||
IdleHunt(actor)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot4Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger4, function(actor, id)
|
||||
if actor.Owner == Allies and not foot4Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot4Triggered = true
|
||||
|
||||
Trig4House.Owner = Civilians
|
||||
Reinforcements.Reinforce(England, CivilianSquad1, { CivFlee1.Location, CivilianRally.Location }, 0)
|
||||
Reinforcements.Reinforce(England, CivilianSquad2, { CivFlee2.Location, CivilianRally.Location }, 0)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot5Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger5, function(actor, id)
|
||||
if actor.Owner == Allies and not foot5Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot5Triggered = true
|
||||
|
||||
Media.PlaySoundNotification(Allies, "AlertBleep")
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("soviet-aircraft-armor-moving-in"), UserInterface.GetFluentMessage("headquarters"))
|
||||
Utils.Do(Trigger5Team, function(actor)
|
||||
if not actor.IsDead then
|
||||
actor.AttackMove(TacticalNuke1.Location)
|
||||
end
|
||||
end)
|
||||
|
||||
SendMig(MigEntryPath)
|
||||
local barrelcam1 = Actor.Create("camera", true, { Owner = USSR, Location = TacticalNuke1.Location })
|
||||
local barrelcam2 = Actor.Create("camera", true, { Owner = USSR, Location = TacticalNuke2.Location })
|
||||
local wave1 = Reinforcements.Reinforce(USSR, SovietAttackers, { BaseAttackersSpawn.Location, SovietAttack.Location })
|
||||
Utils.Do(wave1, IdleHunt)
|
||||
local drop2 = RifleDropS.TargetParatroopers(SovietAttack.CenterPosition, Angle.East)
|
||||
Utils.Do(drop2, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t, p)
|
||||
IdleHunt(p)
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(20), function()
|
||||
Media.PlaySoundNotification(Allies, "AlertBuzzer")
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("extraction-point-compromised-evacuate-base"), UserInterface.GetFluentMessage("headquarters"))
|
||||
local defenders = Reinforcements.Reinforce(England, TentTeam, { Tent.Location, TentMove.Location }, 0)
|
||||
Utils.Do(defenders, IdleHunt)
|
||||
if Difficulty == "hard" then
|
||||
Trigger.AfterDelay(DateTime.Seconds(30), function()
|
||||
local wave2 = Reinforcements.Reinforce(USSR, SovietAttackers, { BaseAttackersSpawn.Location, SovietAttack.Location })
|
||||
Utils.Do(wave2, IdleHunt)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(35), function()
|
||||
local dogs = Reinforcements.Reinforce(USSR, Doggos, { GrenEntry.Location }, 0)
|
||||
Utils.Do(dogs, IdleHunt)
|
||||
Media.PlaySpeechNotification(Allies, "AbombLaunchDetected")
|
||||
local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = USSR })
|
||||
proxy.TargetAirstrike(TacticalNuke1.CenterPosition, Angle.NorthWest)
|
||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||
Media.PlaySpeechNotification(Allies, "AbombLaunchDetected")
|
||||
proxy.TargetAirstrike(TacticalNuke2.CenterPosition, Angle.NorthWest)
|
||||
end)
|
||||
proxy.Destroy()
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(50), function()
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("new-extraction-point-northwest"), UserInterface.GetFluentMessage("headquarters"))
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot6Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger6, function(actor, id)
|
||||
if actor.Owner == Allies and not foot6Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot6Triggered = true
|
||||
|
||||
local reinforcement = LstReinforcements.first
|
||||
Media.PlaySpeechNotification(Allies, "ReinforcementsArrived")
|
||||
Reinforcements.ReinforceWithTransport(Allies, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot7Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger7, function(actor, id)
|
||||
if actor.Owner == Allies and not foot7Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot7Triggered = true
|
||||
|
||||
local drop3 = RifleDropS.TargetParatroopers(TacticalNuke3.CenterPosition, Angle.West)
|
||||
Utils.Do(drop3, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t, p)
|
||||
IdleHunt(p)
|
||||
end)
|
||||
end)
|
||||
|
||||
local trig7camera1 = Actor.Create("camera", true, { Owner = Allies, Location = MammothCam.Location })
|
||||
local trig7camera2 = Actor.Create("camera", true, { Owner = Allies, Location = TacticalNuke3.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(30), function()
|
||||
trig7camera1.Destroy()
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(20), function()
|
||||
Media.PlaySpeechNotification(Allies, "AbombLaunchDetected")
|
||||
local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = USSR })
|
||||
proxy.TargetAirstrike(TacticalNuke3.CenterPosition, Angle.SouthWest)
|
||||
proxy.Destroy()
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(26), function()
|
||||
Reinforcements.Reinforce(England, CivilianSquad1, { House1.Location, TacticalNuke3.Location }, 0)
|
||||
Reinforcements.Reinforce(England, CivilianSquad2, { House2.Location, TacticalNuke3.Location }, 0)
|
||||
Reinforcements.Reinforce(England, CivilianSquad1, { House3.Location, TacticalNuke3.Location }, 0)
|
||||
Reinforcements.Reinforce(England, CivilianSquad2, { House4.Location, TacticalNuke3.Location }, 0)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(15), function()
|
||||
trig7camera2.Destroy()
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot8Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger8, function(actor, id)
|
||||
if actor.Owner == Allies and not foot8Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot8Triggered = true
|
||||
|
||||
local trig8camera = Actor.Create("camera", true, { Owner = Allies, Location = TeslaCam.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||
trig8camera.Destroy()
|
||||
end)
|
||||
|
||||
Media.PlaySpeechNotification(Allies, "ReinforcementsArrived")
|
||||
RifleDropA.TargetParatroopers(TeslaDrop.CenterPosition, Angle.New(124))
|
||||
end
|
||||
end)
|
||||
|
||||
local foot9Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger9, function(actor, id)
|
||||
if actor.Owner == Allies and not foot9Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot9Triggered = true
|
||||
|
||||
local trig9camera = Actor.Create("camera", true, { Owner = Allies, Location = BridgeCam.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||
trig9camera.Destroy()
|
||||
end)
|
||||
|
||||
Utils.Do(BridgeMammoths, function(mammoth)
|
||||
if mammoth.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
mammoth.AttackMove(MammysGo.Location)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot10Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger10, function(actor, id)
|
||||
if actor.Owner == Allies and not foot10Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot10Triggered = true
|
||||
|
||||
local trig10camera = Actor.Create("camera", true, { Owner = Allies, Location = TruckCam.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||
trig10camera.Destroy()
|
||||
end)
|
||||
|
||||
Media.PlaySpeechNotification(Allies, "SignalFlareNorth")
|
||||
Actor.Create("camera", true, { Owner = Allies, Location = ExtractionPoint.Location })
|
||||
SendExtractionHelicopter()
|
||||
|
||||
if HealCrateTruck.IsDead then
|
||||
return
|
||||
end
|
||||
|
||||
HealCrateTruck.Move(TruckGo.Location)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot11Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger11, function(actor, id)
|
||||
if actor.Owner == Allies and not foot11Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot11Triggered = true
|
||||
|
||||
local trig11camera = Actor.Create("camera", true, { Owner = Allies, Location = SovBaseCam.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||
trig11camera.Destroy()
|
||||
end)
|
||||
|
||||
local reinforcement = LstReinforcements.second
|
||||
Media.PlaySpeechNotification(Allies, "ReinforcementsArrived")
|
||||
Reinforcements.ReinforceWithTransport(Allies, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath)
|
||||
end
|
||||
end)
|
||||
|
||||
local foot12Triggered
|
||||
Trigger.OnEnteredFootprint(FootprintTrigger12, function(actor, id)
|
||||
if (actor.Type == "gnrl" or actor.Type == "gnrl.noautotarget") and not foot12Triggered then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
foot12Triggered = true
|
||||
|
||||
Media.PlaySoundNotification(Allies, "AlertBleep")
|
||||
Media.DisplayMessage(UserInterface.GetFluentMessage("stalin-will-pay"), UserInterface.GetFluentMessage("stavros"))
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
SetupTriggers = function()
|
||||
Utils.Do(USSR.GetGroundAttackers(), function(unit)
|
||||
Trigger.OnDamaged(unit, function() IdleHunt(unit) end)
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(BridgeBarrel1, function()
|
||||
local bridge = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge2" end)[1]
|
||||
if not bridge.IsDead then
|
||||
bridge.Kill()
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(BridgeBarrel2, function()
|
||||
local bridgepart1 = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "br2" end)[1]
|
||||
local bridgepart2 = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "br3" end)[1]
|
||||
if not bridgepart1.IsDead then
|
||||
bridgepart1.Kill()
|
||||
end
|
||||
if not bridgepart2.IsDead then
|
||||
bridgepart2.Kill()
|
||||
end
|
||||
end)
|
||||
|
||||
local trukEscaped
|
||||
Trigger.OnEnteredFootprint({ TruckGo.Location }, function(actor, id)
|
||||
if actor.Type == "truk" and not trukEscaped then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
trukEscaped = true
|
||||
actor.Destroy()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
ChurchAttack = function()
|
||||
if not ChurchDamaged then
|
||||
local churchPanicTeam = Reinforcements.Reinforce(England, CivilianSquad1, { ChurchSpawn.Location }, 0)
|
||||
Utils.Do(churchPanicTeam, function(a)
|
||||
a.Move(a.Location + CVec.New(-1,-1))
|
||||
a.Panic()
|
||||
end)
|
||||
end
|
||||
ChurchDamaged = true
|
||||
end
|
||||
|
||||
SendMig = function(waypoints)
|
||||
local MigEntryPath = { waypoints[1].Location, waypoints[2].Location }
|
||||
local Mig1 = Reinforcements.Reinforce(USSR, { "mig" }, MigEntryPath)
|
||||
if not BridgeBarrel1.IsDead then
|
||||
Utils.Do(Mig1, function(mig)
|
||||
mig.Attack(BridgeBarrel1)
|
||||
end)
|
||||
end
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||
local Mig2 = Reinforcements.Reinforce(USSR, { "mig" }, MigEntryPath)
|
||||
local Mig3 = Reinforcements.Reinforce(USSR, { "mig" }, MigEntryPath)
|
||||
if not CivBarrel.IsDead then
|
||||
Utils.Do(Mig2, function(mig)
|
||||
mig.Attack(CivBarrel)
|
||||
end)
|
||||
end
|
||||
if not DoomedHeli.IsDead then
|
||||
Utils.Do(Mig3, function(mig)
|
||||
mig.Attack(DoomedHeli)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
SovBaseAttack = function()
|
||||
if not BaseDamaged then
|
||||
local drop4 = RifleDropS.TargetParatroopers(SovBaseDrop.CenterPosition, Angle.East)
|
||||
Utils.Do(drop4, function(a)
|
||||
Trigger.OnPassengerExited(a, function(t, p)
|
||||
IdleHunt(p)
|
||||
end)
|
||||
end)
|
||||
|
||||
Utils.Do(SovBaseTeam, function(actor)
|
||||
if not actor.IsDead then
|
||||
IdleHunt(actor)
|
||||
end
|
||||
end)
|
||||
|
||||
if Difficulty == "hard" then
|
||||
local barracksTeam = Reinforcements.Reinforce(USSR, RaxTeam, { SovRaxSpawn.Location, SovBaseCam.Location }, 0)
|
||||
Utils.Do(barracksTeam, IdleHunt)
|
||||
end
|
||||
end
|
||||
BaseDamaged = true
|
||||
end
|
||||
|
||||
ExtractUnits = function(extractionUnit, pos, after)
|
||||
if extractionUnit.IsDead or not extractionUnit.HasPassengers then
|
||||
return
|
||||
end
|
||||
|
||||
extractionUnit.Move(pos)
|
||||
extractionUnit.Destroy()
|
||||
|
||||
Trigger.OnRemovedFromWorld(extractionUnit, after)
|
||||
end
|
||||
|
||||
SendExtractionHelicopter = function()
|
||||
ExtractionHeli = Reinforcements.ReinforceWithTransport(Allies, ExtractionHelicopterType, nil, ExtractionPath)[1]
|
||||
local exitPos = CPos.New(ExtractionPath[1].X, ExtractionPath[2].Y)
|
||||
|
||||
Trigger.OnKilled(ExtractionHeli, function() USSR.MarkCompletedObjective(SovietObj) end)
|
||||
Trigger.OnAllRemovedFromWorld(VIPs, function()
|
||||
ExtractUnits(ExtractionHeli, exitPos, function()
|
||||
Allies.MarkCompletedObjective(ProtectVIPs)
|
||||
Allies.MarkCompletedObjective(ExtractStavros)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
WorldLoaded = function()
|
||||
Allies = Player.GetPlayer("Allies")
|
||||
USSR = Player.GetPlayer("USSR")
|
||||
BadGuy = Player.GetPlayer("BadGuy")
|
||||
England = Player.GetPlayer("England")
|
||||
Civilians = Player.GetPlayer("GreekCivilians")
|
||||
|
||||
InitObjectives(Allies)
|
||||
|
||||
SovietObj = AddPrimaryObjective(USSR, "")
|
||||
ProtectVIPs = AddPrimaryObjective(Allies, "keep-stavros-tanya-alive")
|
||||
ExtractStavros = AddPrimaryObjective(Allies, "get-tanya-stavros-helicopter")
|
||||
|
||||
InsertionDrop = Actor.Create("insertiondrop", false, { Owner = Allies })
|
||||
InsertionDropHard = Actor.Create("insertiondrophard", false, { Owner = Allies })
|
||||
RifleDropA = Actor.Create("rifledrop", false, { Owner = Allies })
|
||||
RifleDropS = Actor.Create("rifledrop", false, { Owner = USSR })
|
||||
Camera.Position = LightFlare.CenterPosition
|
||||
|
||||
MissionStart()
|
||||
FootprintTriggers()
|
||||
SetupTriggers()
|
||||
Trigger.OnDamaged(Church, ChurchAttack)
|
||||
OnAnyDamaged(SovBase, SovBaseAttack)
|
||||
end
|
||||
Reference in New Issue
Block a user