Add Counterstrike mission Sarin Gas 2: Down Under
This commit is contained in:
committed by
Oliver Brakmann
parent
3b926d71b5
commit
99987db5d9
453
mods/ra/maps/sarin-gas-2-down-under/downunder.lua
Normal file
453
mods/ra/maps/sarin-gas-2-down-under/downunder.lua
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
--[[
|
||||||
|
Copyright 2007-2019 The OpenRA Developers (see AUTHORS)
|
||||||
|
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.
|
||||||
|
]]
|
||||||
|
TanyaFreed = false
|
||||||
|
TruckStolen = false
|
||||||
|
SovietImportantGuys = { Officer3, Officer2, Officer1, Scientist1, Scientist2 }
|
||||||
|
Camera1Towers = { FlameTower2, FlameTower3 }
|
||||||
|
TruckExit = { TruckDrive1, TruckDrive2 }
|
||||||
|
TruckEntry = { TruckDrive3.Location, TruckDrive4.Location, TruckDrive5.Location }
|
||||||
|
TruckType = { "truk" }
|
||||||
|
DogCrew = { DogCrew1, DogCrew2, DogCrew3 }
|
||||||
|
SarinVictims = { SarinVictim1, SarinVictim2, SarinVictim3, SarinVictim4, SarinVictim5, SarinVictim6, SarinVictim7, SarinVictim8, SarinVictim9, SarinVictim10, SarinVictim11, SarinVictim12, SarinVictim13 }
|
||||||
|
Camera2Team = { Camera2Rifle1, Camera2Rifle2, Camera2Rifle3, Camera2Gren1, Camera2Gren2 }
|
||||||
|
PrisonAlarm = { CPos.New(55,75), CPos.New(55,76), CPos.New(55,77), CPos.New(55,81), CPos.New(55,82), CPos.New(55,83), CPos.New(60,77), CPos.New(60,81), CPos.New(60,82), CPos.New(60,83) }
|
||||||
|
GuardDogs = { PrisonDog1, PrisonDog2, PrisonDog3, PrisonDog4 }
|
||||||
|
TanyaTowers = { FlameTowerTanya1, FlameTowerTanya2 }
|
||||||
|
ExecutionArea = { CPos.New(91, 70), CPos.New(92, 70), CPos.New(93, 70), CPos.New(94, 70) }
|
||||||
|
FiringSquad = { FiringSquad1, FiringSquad2, FiringSquad3, FiringSquad4, FiringSquad5, Officer2 }
|
||||||
|
DemoTeam = { DemoDog, DemoRifle1, DemoRifle2, DemoRifle3, DemoRifle4, DemoFlame }
|
||||||
|
DemoTruckPath = { DemoDrive1, DemoDrive2, DemoDrive3, DemoDrive4 }
|
||||||
|
WinTriggerArea = { CPos.New(111, 59), CPos.New(111, 60), CPos.New(111, 61), CPos.New(111, 62), CPos.New(111, 63), CPos.New(111, 64), CPos.New(111, 65) }
|
||||||
|
|
||||||
|
ObjectiveTriggers = function()
|
||||||
|
Trigger.OnEnteredFootprint(WinTriggerArea, function(a, id)
|
||||||
|
if not EscapeGoalTrigger and a.Owner == greece then
|
||||||
|
EscapeGoalTrigger = true
|
||||||
|
greece.MarkCompletedObjective(ExitBase)
|
||||||
|
if Map.LobbyOption("difficulty") == "hard" then
|
||||||
|
greece.MarkCompletedObjective(NoCasualties)
|
||||||
|
end
|
||||||
|
if not TanyaFreed then
|
||||||
|
greece.MarkFailedObjective(FreeTanya)
|
||||||
|
else
|
||||||
|
greece.MarkCompletedObjective(FreeTanya)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnKilled(Tanya, function()
|
||||||
|
greece.MarkFailedObjective(FreeTanya)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnAllKilled(TanyaTowers, function()
|
||||||
|
TanyaFreed = true
|
||||||
|
if not Tanya.IsDead then
|
||||||
|
Tanya.Owner = greece
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnAllKilled(SovietImportantGuys, function()
|
||||||
|
greece.MarkCompletedObjective(KillVIPs)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnInfiltrated(WarFactory2, function()
|
||||||
|
if not StealMammoth.IsDead or StealMammoth.Owner == ussr then
|
||||||
|
greece.MarkCompletedObjective(StealTank)
|
||||||
|
StealMammoth.Owner = greece
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ConsoleTriggers = function()
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal1.CenterPosition, WDist.FromCells(1), function(actor, trigger1)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger1)
|
||||||
|
if not FlameTower1.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTower1.Kill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal2.CenterPosition, WDist.FromCells(1), function(actor, trigger2)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger2)
|
||||||
|
if not FlameTower2.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTower2.Kill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal3.CenterPosition, WDist.FromCells(1), function(actor, trigger3)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger3)
|
||||||
|
if not FlameTower3.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTower3.Kill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal4.CenterPosition, WDist.FromCells(1), function(actor, trigger4)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger4)
|
||||||
|
Media.DisplayMessage("Sarin Nerve Gas dispensers activated", "Console")
|
||||||
|
local KillCamera = Actor.Create("camera", true, { Owner = greece, Location = Sarin2.Location })
|
||||||
|
local flare1 = Actor.Create("flare", true, { Owner = england, Location = Sarin1.Location })
|
||||||
|
local flare2 = Actor.Create("flare", true, { Owner = england, Location = Sarin2.Location })
|
||||||
|
local flare3 = Actor.Create("flare", true, { Owner = england, Location = Sarin3.Location })
|
||||||
|
local flare4 = Actor.Create("flare", true, { Owner = england, Location = Sarin4.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(4), function()
|
||||||
|
Utils.Do(SarinVictims, function(actor)
|
||||||
|
if not actor.IsDead then
|
||||||
|
actor.Kill()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(20), function()
|
||||||
|
flare1.Destroy()
|
||||||
|
flare2.Destroy()
|
||||||
|
flare3.Destroy()
|
||||||
|
flare4.Destroy()
|
||||||
|
KillCamera.Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal5.CenterPosition, WDist.FromCells(1), function(actor, trigger5)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger5)
|
||||||
|
if not BadCoil.IsDead then
|
||||||
|
Media.DisplayMessage("Tesla Coil deactivated", "Console")
|
||||||
|
BadCoil.Kill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal6.CenterPosition, WDist.FromCells(1), function(actor, trigger6)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger6)
|
||||||
|
Media.DisplayMessage("Initialising Tesla Coil defence", "Console")
|
||||||
|
local tesla1 = Actor.Create("tsla", true, { Owner = turkey, Location = TurkeyCoil1.Location })
|
||||||
|
local tesla2 = Actor.Create("tsla", true, { Owner = turkey, Location = TurkeyCoil2.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
if not tesla1.IsDead then
|
||||||
|
tesla1.Kill()
|
||||||
|
end
|
||||||
|
if not tesla2.IsDead then
|
||||||
|
tesla2.Kill()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal7.CenterPosition, WDist.FromCells(1), function(actor, trigger7)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger7)
|
||||||
|
if not FlameTowerTanya1.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTowerTanya1.Kill()
|
||||||
|
end
|
||||||
|
if not FlameTowerTanya2.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTowerTanya2.Kill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(Terminal8.CenterPosition, WDist.FromCells(1), function(actor, trigger8)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(trigger8)
|
||||||
|
if not FlameTowerExit1.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTowerExit1.Kill()
|
||||||
|
end
|
||||||
|
if not FlameTowerExit3.IsDead then
|
||||||
|
Media.DisplayMessage("Flame Turret deactivated", "Console")
|
||||||
|
FlameTowerExit3.Kill()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
CameraTriggers = function()
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(1), function()
|
||||||
|
local startCamera = Actor.Create("camera", true, { Owner = greece, Location = start.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
startCamera.Destroy()
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(CameraTrigger1.CenterPosition, WDist.FromCells(8), function(actor, triggercam1)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(triggercam1)
|
||||||
|
local camera1 = Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger1.Location })
|
||||||
|
Trigger.OnAllKilled(Camera1Towers, function()
|
||||||
|
camera1.Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(CameraTrigger2.CenterPosition, WDist.FromCells(8), function(actor, triggercam2)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(triggercam2)
|
||||||
|
local camera2 = Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger2.Location })
|
||||||
|
Utils.Do(Camera2Team, function(actor)
|
||||||
|
actor.AttackMove(CameraTrigger1.Location)
|
||||||
|
end)
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
camera2.Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(CameraTrigger3.CenterPosition, WDist.FromCells(8), function(actor, triggercam3)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(triggercam3)
|
||||||
|
local camera3 = Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger3.Location })
|
||||||
|
Actor.Create("apwr", true, { Owner = france, Location = PowerPlantSpawn1.Location })
|
||||||
|
Actor.Create("apwr", true, { Owner = germany, Location = PowerPlantSpawn2.Location })
|
||||||
|
if not Mammoth1.IsDead then
|
||||||
|
Mammoth1.AttackMove(MammothGo.Location)
|
||||||
|
end
|
||||||
|
Trigger.OnKilled(Mammoth1, function()
|
||||||
|
GoodCoil.Kill()
|
||||||
|
camera3.Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(CameraTrigger4.CenterPosition, WDist.FromCells(9), function(actor, triggercam4)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(triggercam4)
|
||||||
|
local camera4 = Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger4.Location })
|
||||||
|
Trigger.OnKilled(Mammoth2, function()
|
||||||
|
camera4.Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(CameraTrigger5.CenterPosition, WDist.FromCells(8), function(actor, triggercam5)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(triggercam5)
|
||||||
|
local camera5 = Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger5.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
camera5.Destroy()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredProximityTrigger(CameraTrigger6.CenterPosition, WDist.FromCells(11), function(actor, triggercam6)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveProximityTrigger(triggercam6)
|
||||||
|
Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger6.Location })
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredFootprint(ExecutionArea, function(actor, triggercam7)
|
||||||
|
if actor.Owner == greece then
|
||||||
|
Trigger.RemoveFootprintTrigger(triggercam7)
|
||||||
|
local camera7 = Actor.Create("camera", true, { Owner = greece, Location = CameraTrigger7.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(25), function()
|
||||||
|
camera7.Destroy()
|
||||||
|
end)
|
||||||
|
ScientistExecution()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
TruckSteal = function()
|
||||||
|
Trigger.OnInfiltrated(WarFactory1, function()
|
||||||
|
if not TruckStolen and not StealTruck.IsDead then
|
||||||
|
TruckStolen = true
|
||||||
|
local truckSteal1 = Actor.Create("camera", true, { Owner = greece, Location = TruckDrive1.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
truckSteal1.Destroy()
|
||||||
|
end)
|
||||||
|
Utils.Do(TruckExit, function(waypoint)
|
||||||
|
StealTruck.Move(waypoint.Location)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredFootprint({ TruckDrive2.Location }, function(actor, triggertruck1)
|
||||||
|
if actor.Type == "truk" then
|
||||||
|
Trigger.RemoveFootprintTrigger(triggertruck1)
|
||||||
|
actor.Destroy()
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
SpyTruckDrive()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
SpyTruckDrive = function()
|
||||||
|
StealTruck = Reinforcements.Reinforce(ussr, TruckType, TruckEntry)
|
||||||
|
local truckSteal2 = Actor.Create("camera", true, { Owner = greece, Location = TruckCamera.Location })
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
truckSteal2.Destroy()
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredFootprint({ TruckDrive5.Location }, function(actor, triggertruck2)
|
||||||
|
if actor.Type == "truk" then
|
||||||
|
local dogCrewCamera = Actor.Create("camera", true, { Owner = greece, Location = DoggyCam.Location })
|
||||||
|
Trigger.RemoveFootprintTrigger(triggertruck2)
|
||||||
|
Spy = Actor.Create("spy", true, { Owner = greece, Location = TruckDrive5.Location })
|
||||||
|
Spy.DisguiseAsType("e1", ussr)
|
||||||
|
Spy.Move(SpyMove.Location)
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
|
dogCrewCamera.Destroy()
|
||||||
|
end)
|
||||||
|
Utils.Do(DogCrew, function(actor)
|
||||||
|
if not actor.IsDead then
|
||||||
|
actor.AttackMove(DoggyMove.Location)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
IdleHunt = function(actor) if not actor.IsDead then Trigger.OnIdle(actor, actor.Hunt) end end
|
||||||
|
|
||||||
|
PrisonEscape = function()
|
||||||
|
Trigger.OnEnteredFootprint(PrisonAlarm, function(unit, id)
|
||||||
|
Trigger.RemoveFootprintTrigger(id)
|
||||||
|
Media.DisplayMessage("Warning, prisoners are attempting to escape!", "Intercom")
|
||||||
|
Media.PlaySoundNotification(greece, "AlertBuzzer")
|
||||||
|
Utils.Do(GuardDogs, function(actor)
|
||||||
|
if not actor.IsDead then
|
||||||
|
IdleHunt(actor)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ScientistExecution = function()
|
||||||
|
Media.PlaySoundNotification(greece, "AlertBleep")
|
||||||
|
Media.DisplayMessage("The base is compromised. We have to hurry the execution!", "Soviet Officer")
|
||||||
|
Utils.Do(DemoTeam, function(actor)
|
||||||
|
actor.AttackMove(DemoDrive2.Location)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnAllKilled(FiringSquad, function()
|
||||||
|
if not ScientistMan.IsDead then
|
||||||
|
ScientistRescued()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(7), function()
|
||||||
|
if not Officer2.IsDead then
|
||||||
|
Media.DisplayMessage("Prepare to Fire!", "Soviet Officer")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(15), function()
|
||||||
|
if not Officer2.IsDead then
|
||||||
|
Media.DisplayMessage("Fire!", "Soviet Officer")
|
||||||
|
end
|
||||||
|
|
||||||
|
Utils.Do(FiringSquad, function(actor)
|
||||||
|
if not actor.IsDead then
|
||||||
|
actor.Attack(ScientistMan, true, true)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ScientistRescued = function()
|
||||||
|
Media.DisplayMessage("Thanks for the rescue!", "Scientist")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||||
|
if not ScientistMan.IsDead and not DemoTruck.IsDead then
|
||||||
|
Media.DisplayMessage("The Soviets have an unstable nuclear device stored here. \n I need to move it out of the facility!", "Scientist")
|
||||||
|
DemoTruck.GrantCondition("mission")
|
||||||
|
ScientistMan.EnterTransport(DemoTruck)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnRemovedFromWorld(ScientistMan, DemoTruckExit)
|
||||||
|
end
|
||||||
|
|
||||||
|
DemoTruckExit = function()
|
||||||
|
if ScientistMan.IsDead then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
Media.DisplayMessage("I hope the exit is clear!", "Scientist")
|
||||||
|
Utils.Do(DemoTruckPath, function(waypoint)
|
||||||
|
DemoTruck.Move(waypoint.Location)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnEnteredFootprint({ DemoDrive4.Location }, function(actor, demotruckescape)
|
||||||
|
if actor.Type == "dtrk" then
|
||||||
|
Trigger.RemoveFootprintTrigger(demotruckescape)
|
||||||
|
actor.Destroy()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
AcceptableLosses = 0
|
||||||
|
Tick = function()
|
||||||
|
if greece.HasNoRequiredUnits() then
|
||||||
|
greece.MarkFailedObjective(ExitBase)
|
||||||
|
end
|
||||||
|
|
||||||
|
if Map.LobbyOption("difficulty") == "hard" and greece.UnitsLost > AcceptableLosses then
|
||||||
|
greece.MarkFailedObjective(NoCasualties)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
WorldLoaded = function()
|
||||||
|
greece = Player.GetPlayer("Greece")
|
||||||
|
england = Player.GetPlayer("England")
|
||||||
|
turkey = Player.GetPlayer("Turkey")
|
||||||
|
ussr = Player.GetPlayer("USSR")
|
||||||
|
france = Player.GetPlayer("France")
|
||||||
|
germany = Player.GetPlayer("Germany")
|
||||||
|
|
||||||
|
Trigger.OnObjectiveAdded(greece, function(p, id)
|
||||||
|
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
|
||||||
|
end)
|
||||||
|
|
||||||
|
ussrObj = ussr.AddPrimaryObjective("Defeat the Allies.")
|
||||||
|
ExitBase = greece.AddPrimaryObjective("Reach the eastern exit of the facility.")
|
||||||
|
FreeTanya = greece.AddPrimaryObjective("Free Tanya and keep her alive.")
|
||||||
|
KillVIPs = greece.AddSecondaryObjective("Kill all Soviet officers and scientists.")
|
||||||
|
StealTank = greece.AddSecondaryObjective("Steal a Soviet mammoth tank.")
|
||||||
|
if Map.LobbyOption("difficulty") == "hard" then
|
||||||
|
NoCasualties = greece.AddPrimaryObjective("Do not lose a single soldier or civilian\nunder your command.")
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.OnObjectiveCompleted(greece, function(p, id)
|
||||||
|
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
|
||||||
|
end)
|
||||||
|
Trigger.OnObjectiveFailed(greece, function(p, id)
|
||||||
|
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnPlayerLost(greece, function()
|
||||||
|
Media.PlaySpeechNotification(greece, "Lose")
|
||||||
|
end)
|
||||||
|
Trigger.OnPlayerWon(greece, function()
|
||||||
|
Media.PlaySpeechNotification(greece, "Win")
|
||||||
|
end)
|
||||||
|
|
||||||
|
StartSpy.DisguiseAsType("e1", ussr)
|
||||||
|
StartAttacker1.AttackMove(start.Location)
|
||||||
|
StartAttacker2.AttackMove(start.Location)
|
||||||
|
|
||||||
|
Camera.Position = start.CenterPosition
|
||||||
|
|
||||||
|
ObjectiveTriggers()
|
||||||
|
ConsoleTriggers()
|
||||||
|
CameraTriggers()
|
||||||
|
TruckSteal()
|
||||||
|
PrisonEscape()
|
||||||
|
end
|
||||||
BIN
mods/ra/maps/sarin-gas-2-down-under/map.bin
Normal file
BIN
mods/ra/maps/sarin-gas-2-down-under/map.bin
Normal file
Binary file not shown.
BIN
mods/ra/maps/sarin-gas-2-down-under/map.png
Normal file
BIN
mods/ra/maps/sarin-gas-2-down-under/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
1380
mods/ra/maps/sarin-gas-2-down-under/map.yaml
Normal file
1380
mods/ra/maps/sarin-gas-2-down-under/map.yaml
Normal file
File diff suppressed because it is too large
Load Diff
54
mods/ra/maps/sarin-gas-2-down-under/rules.yaml
Normal file
54
mods/ra/maps/sarin-gas-2-down-under/rules.yaml
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
World:
|
||||||
|
LuaScript:
|
||||||
|
Scripts: downunder.lua
|
||||||
|
MissionData:
|
||||||
|
Briefing: We've traced the convoy's route to this underground facility. We suspect that this is a hidden access to the Soviet's main Sarin plant.\n\nLead your troops through the tunnels and remove any opposition you may find. Be careful -- the Soviets are conducting all kinds of research in this facility, and we don't know what they may throw at you.\n\nUse spies to scout and infiltrate factories where they can steal vehicles.\n\nThe mission is complete when your forces reach the far exit of the facility.\n
|
||||||
|
WinVideo: spy.vqa
|
||||||
|
LossVideo: execute.vqa
|
||||||
|
ScriptLobbyDropdown@difficulty:
|
||||||
|
ID: difficulty
|
||||||
|
Label: Difficulty
|
||||||
|
Values:
|
||||||
|
normal: Normal
|
||||||
|
hard: Hard
|
||||||
|
Default: Normal
|
||||||
|
|
||||||
|
Player:
|
||||||
|
PlayerResources:
|
||||||
|
DefaultCash: 0
|
||||||
|
|
||||||
|
SPY:
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 7c0
|
||||||
|
|
||||||
|
4TNK:
|
||||||
|
AutoTarget:
|
||||||
|
InitialStanceAI: Defend
|
||||||
|
|
||||||
|
TSLA:
|
||||||
|
Health:
|
||||||
|
HP: 300000
|
||||||
|
|
||||||
|
GNRL:
|
||||||
|
Tooltip:
|
||||||
|
Name: Officer
|
||||||
|
|
||||||
|
C5:
|
||||||
|
-Wanders:
|
||||||
|
|
||||||
|
C6:
|
||||||
|
-Wanders:
|
||||||
|
|
||||||
|
CHAN:
|
||||||
|
-Wanders:
|
||||||
|
|
||||||
|
DTRK:
|
||||||
|
Cargo:
|
||||||
|
Types: Infantry
|
||||||
|
MaxWeight: 1
|
||||||
|
RevealsShroud:
|
||||||
|
Range: 4c0
|
||||||
|
ValidStances: Neutral
|
||||||
|
RequiresCondition: mission
|
||||||
|
ExternalCondition@mission:
|
||||||
|
Condition: mission
|
||||||
@@ -24,6 +24,7 @@ Soviet Campaign:
|
|||||||
soviet-08a
|
soviet-08a
|
||||||
Counterstrike:
|
Counterstrike:
|
||||||
sarin-gas-1-crackdown
|
sarin-gas-1-crackdown
|
||||||
|
sarin-gas-2-down-under
|
||||||
soviet-soldier-volkov-n-chitzkoi
|
soviet-soldier-volkov-n-chitzkoi
|
||||||
Aftermath:
|
Aftermath:
|
||||||
monster-tank-madness
|
monster-tank-madness
|
||||||
|
|||||||
Reference in New Issue
Block a user