Add bombers, fixes to Production Disruption
This commit is contained in:
@@ -26,12 +26,14 @@ Players:
|
|||||||
Faction: england
|
Faction: england
|
||||||
PlayerReference@BadGuy:
|
PlayerReference@BadGuy:
|
||||||
Name: BadGuy
|
Name: BadGuy
|
||||||
|
Bot: campaign
|
||||||
Faction: soviet
|
Faction: soviet
|
||||||
Color: FF1400
|
Color: FF1400
|
||||||
Allies: USSR
|
Allies: USSR
|
||||||
Enemies: Greece
|
Enemies: Greece
|
||||||
PlayerReference@USSR:
|
PlayerReference@USSR:
|
||||||
Name: USSR
|
Name: USSR
|
||||||
|
Bot: campaign
|
||||||
Faction: soviet
|
Faction: soviet
|
||||||
Color: FF1400
|
Color: FF1400
|
||||||
Allies: BadGuy
|
Allies: BadGuy
|
||||||
@@ -410,7 +412,7 @@ Actors:
|
|||||||
Actor120: apwr
|
Actor120: apwr
|
||||||
Location: 71,41
|
Location: 71,41
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
Actor121: fcom
|
ForwardCommand: fcom
|
||||||
Location: 51,40
|
Location: 51,40
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
Actor122: apwr
|
Actor122: apwr
|
||||||
@@ -501,12 +503,12 @@ Actors:
|
|||||||
Location: 67,76
|
Location: 67,76
|
||||||
Owner: BadGuy
|
Owner: BadGuy
|
||||||
Facing: 380
|
Facing: 380
|
||||||
SubCell: 3
|
SubCell: 4
|
||||||
Actor148: e1
|
Actor148: e1
|
||||||
Location: 71,77
|
Location: 71,77
|
||||||
Owner: BadGuy
|
Owner: BadGuy
|
||||||
Facing: 124
|
Facing: 124
|
||||||
SubCell: 4
|
SubCell: 5
|
||||||
Actor149: e1
|
Actor149: e1
|
||||||
Location: 74,76
|
Location: 74,76
|
||||||
Owner: BadGuy
|
Owner: BadGuy
|
||||||
@@ -526,11 +528,11 @@ Actors:
|
|||||||
Location: 76,62
|
Location: 76,62
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
Facing: 380
|
Facing: 380
|
||||||
SubCell: 4
|
SubCell: 5
|
||||||
Actor153: e1
|
Actor153: e1
|
||||||
Location: 54,40
|
Location: 54,40
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 3
|
SubCell: 4
|
||||||
Actor154: e1
|
Actor154: e1
|
||||||
Location: 69,40
|
Location: 69,40
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
@@ -558,7 +560,7 @@ Actors:
|
|||||||
Actor160: e2
|
Actor160: e2
|
||||||
Location: 71,39
|
Location: 71,39
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 4
|
SubCell: 5
|
||||||
Rifle1: e1
|
Rifle1: e1
|
||||||
Location: 78,81
|
Location: 78,81
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
@@ -566,30 +568,30 @@ Actors:
|
|||||||
Rifle2: e1
|
Rifle2: e1
|
||||||
Location: 78,79
|
Location: 78,79
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 3
|
SubCell: 4
|
||||||
Rifle3: e1
|
Rifle3: e1
|
||||||
Location: 77,80
|
Location: 77,80
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 4
|
SubCell: 5
|
||||||
Rifle4: e1
|
Rifle4: e1
|
||||||
Location: 47,71
|
Location: 47,71
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 4
|
SubCell: 5
|
||||||
Rifle5: e1
|
Rifle5: e1
|
||||||
Location: 49,71
|
Location: 49,71
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 3
|
SubCell: 4
|
||||||
Rifle6: e1
|
Rifle6: e1
|
||||||
Location: 49,70
|
Location: 49,70
|
||||||
Owner: USSR
|
Owner: USSR
|
||||||
SubCell: 3
|
SubCell: 4
|
||||||
DefaultCameraPosition: waypoint
|
DefaultCameraPosition: waypoint
|
||||||
Location: 58,86
|
Location: 58,86
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
TeslaCam: waypoint
|
TeslaCam: waypoint
|
||||||
Location: 66,94
|
Location: 66,94
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
LZ: waypoint
|
SouthLZ: waypoint
|
||||||
Location: 54,85
|
Location: 54,85
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
Beach1: waypoint
|
Beach1: waypoint
|
||||||
@@ -644,8 +646,17 @@ Actors:
|
|||||||
Location: 77,39
|
Location: 77,39
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
V2: waypoint
|
V2: waypoint
|
||||||
Location: 66,43
|
Location: 63,44
|
||||||
Owner: Neutral
|
Owner: Neutral
|
||||||
|
NorthLZ: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 60,56
|
||||||
|
BomberTarget1: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 54,46
|
||||||
|
BomberTarget2: waypoint
|
||||||
|
Owner: Neutral
|
||||||
|
Location: 65,46
|
||||||
|
|
||||||
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
|
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
the License, or (at your option) any later version. For more
|
the License, or (at your option) any later version. For more
|
||||||
information, see COPYING.
|
information, see COPYING.
|
||||||
]]
|
]]
|
||||||
|
FlameWallRevealed = false
|
||||||
TimerTicks = DateTime.Minutes(12)
|
TimerTicks = DateTime.Minutes(12)
|
||||||
LSTType = "lst.reinforcement"
|
LSTType = "lst.reinforcement"
|
||||||
RifleSquad1 = { Rifle1, Rifle2, Rifle3 }
|
RifleSquad1 = { Rifle1, Rifle2, Rifle3 }
|
||||||
@@ -16,44 +17,45 @@ DemoEngiPath = { WaterEntry1.Location, Beach1.Location }
|
|||||||
DemoEngiTeam = { "dtrk", "dtrk", "e6", "e6", "e6" }
|
DemoEngiTeam = { "dtrk", "dtrk", "e6", "e6", "e6" }
|
||||||
SovietWaterEntry1 = { WaterEntry2.Location, Beach2.Location }
|
SovietWaterEntry1 = { WaterEntry2.Location, Beach2.Location }
|
||||||
SovietWaterEntry2 = { WaterEntry2.Location, Beach3.Location }
|
SovietWaterEntry2 = { WaterEntry2.Location, Beach3.Location }
|
||||||
SovietSquad = { "e1", "e1", "e1", "e4", "e4" }
|
SovietSquad = { "e1", "e1", "e2", "e4", "e4" }
|
||||||
V2Squad = { "v2rl", "v2rl" }
|
V2Squad = { "v2rl", "v2rl" }
|
||||||
SubEscapePath = { SubPath1, SubPath2, SubPath3 }
|
SubEscapePath = { SubPath1, SubPath2, SubPath3 }
|
||||||
|
|
||||||
MissionStart = function()
|
MissionStart = function()
|
||||||
LZCamera = Actor.Create("camera", true, { Owner = Greece, Location = LZ.Location })
|
|
||||||
Chalk1.TargetParatroopers(LZ.CenterPosition, Angle.New(740))
|
|
||||||
if Difficulty == "normal" then
|
if Difficulty == "normal" then
|
||||||
Actor.Create("tsla", true, { Owner = USSR, Location = EasyCamera.Location })
|
local northCoil = Actor.Create("tsla", true, { Owner = USSR, Location = EasyCamera.Location })
|
||||||
Actor.Create("4tnk", true, { Owner = USSR, Facing = Angle.South, Location = Mammoth.Location })
|
Actor.Create("4tnk", true, { Owner = USSR, Facing = Angle.South, Location = Mammoth.Location })
|
||||||
Actor.Create("4tnk", true, { Owner = USSR, Facing = Angle.South, Location = Mammoth.Location + CVec.New(1,0) })
|
Actor.Create("4tnk", true, { Owner = USSR, Facing = Angle.South, Location = Mammoth.Location + CVec.New(1,0) })
|
||||||
Actor.Create("v2rl", true, { Owner = USSR, Facing = Angle.South, Location = V2.Location })
|
Actor.Create("v2rl", true, { Owner = USSR, Facing = Angle.South, Location = V2.Location })
|
||||||
|
-- Avoid leaving infantry stranded on the island.
|
||||||
|
northCoil.GrantCondition("no-actors-on-sell")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SpawnTemporaryCamera(SouthLZ.Location, DateTime.Seconds(15))
|
||||||
|
Chalk1.TargetParatroopers(SouthLZ.CenterPosition, Angle.New(740))
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(1), function()
|
Trigger.AfterDelay(DateTime.Seconds(1), function()
|
||||||
Chalk2.TargetParatroopers(LZ.CenterPosition, Angle.New(780))
|
Chalk2.TargetParatroopers(SouthLZ.CenterPosition, Angle.New(780))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||||
UnitsArrived = true
|
UnitsArrived = true
|
||||||
TeslaCamera = Actor.Create("camera", true, { Owner = Greece, Location = TeslaCam.Location })
|
SpawnTemporaryCamera(TeslaCam.Location, DateTime.Seconds(10))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
||||||
LZCamera.Destroy()
|
|
||||||
Utils.Do(RifleSquad1, function(actor)
|
Utils.Do(RifleSquad1, function(actor)
|
||||||
if not actor.IsDead then
|
if not actor.IsDead then
|
||||||
actor.AttackMove(LZ.Location)
|
actor.AttackMove(SouthLZ.Location)
|
||||||
IdleHunt(actor)
|
IdleHunt(actor)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(15), function()
|
Trigger.AfterDelay(DateTime.Seconds(15), function()
|
||||||
TeslaCamera.Destroy()
|
|
||||||
Utils.Do(RifleSquad2, function(actor)
|
Utils.Do(RifleSquad2, function(actor)
|
||||||
if not actor.IsDead then
|
if not actor.IsDead then
|
||||||
actor.AttackMove(LZ.Location)
|
actor.AttackMove(SouthLZ.Location)
|
||||||
IdleHunt(actor)
|
IdleHunt(actor)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
@@ -61,34 +63,91 @@ MissionStart = function()
|
|||||||
end
|
end
|
||||||
|
|
||||||
SetupTriggers = function()
|
SetupTriggers = function()
|
||||||
Trigger.OnDamaged(SubPen, function()
|
SetupFlameWall()
|
||||||
Utils.Do(Heavys, function(actor)
|
SetupNorthBase()
|
||||||
if not actor.IsDead then
|
|
||||||
IdleHunt(actor)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end)
|
|
||||||
|
|
||||||
Trigger.OnKilled(Church, function()
|
Trigger.OnKilled(Church, function()
|
||||||
Actor.Create("healcrate", true, { Owner = Greece, Location = ChurchCrate.Location })
|
Actor.Create("healcrate", true, { Owner = Greece, Location = ChurchCrate.Location })
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.OnKilled(ObjectiveDome, function()
|
Trigger.OnKilled(ObjectiveDome, function()
|
||||||
if not DomeCaptured == true then
|
if not DomeCaptured then
|
||||||
Greece.MarkFailedObjective(CaptureDome)
|
Greece.MarkFailedObjective(CaptureDome)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.OnAllKilled(FlameTowerWall, function()
|
-- Avoid notifications unless part of the the northern base is captured.
|
||||||
DomeCam = Actor.Create("camera", true, { Owner = Greece, Location = RadarCam.Location })
|
Greece.PlayLowPowerNotification = false
|
||||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
local notifiers = Utils.Where(USSR.GetActors(), function(actor)
|
||||||
DomeCam.Destroy()
|
return actor.HasProperty("StartBuildingRepairs")
|
||||||
|
end)
|
||||||
|
|
||||||
|
Utils.Do(notifiers, function(n)
|
||||||
|
Trigger.OnCapture(n, function()
|
||||||
|
Greece.PlayLowPowerNotification = true
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
SetupFlameWall = function()
|
||||||
|
Trigger.OnAllKilled(FlameTowerWall, function()
|
||||||
|
SpawnTemporaryCamera(RadarCam.Location, DateTime.Seconds(5))
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Give some warning if they are not yet revealed by the power cut.
|
||||||
|
Trigger.OnEnteredProximityTrigger(FlameCam.CenterPosition, WDist.FromCells(8), function(actor, id)
|
||||||
|
if FlameWallRevealed then
|
||||||
|
Trigger.RemoveProximityTrigger(id)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if actor.Owner == Greece then
|
||||||
|
FlameWallRevealed = true
|
||||||
|
Trigger.RemoveProximityTrigger(id)
|
||||||
|
SpawnTemporaryCamera(FlameCam.Location, DateTime.Seconds(10))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
SetupNorthBase = function()
|
||||||
|
local bombsPrepared = false
|
||||||
|
local tanksAlerted = false
|
||||||
|
|
||||||
Trigger.OnKilledOrCaptured(SubPen, function()
|
Trigger.OnKilledOrCaptured(SubPen, function()
|
||||||
Greece.MarkCompletedObjective(StopProduction)
|
Greece.MarkCompletedObjective(StopProduction)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
Trigger.OnDamaged(SubPen, function(_, attacker)
|
||||||
|
if tanksAlerted or attacker.Type == "badr.bomber" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
tanksAlerted = true
|
||||||
|
Utils.Do(Heavys, IdleHunt)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnKilledOrCaptured(ForwardCommand, function()
|
||||||
|
StartFireSale()
|
||||||
|
-- The original mission used four waypoints (7-10) for drops.
|
||||||
|
-- For simplicity, a four-Badger team will target the middle.
|
||||||
|
Chalk3.TargetParatroopers(NorthLZ.CenterPosition, Angle.New(927))
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(2), function()
|
||||||
|
Media.PlaySpeechNotification(Greece, "ReinforcementsArrived")
|
||||||
|
end)
|
||||||
|
|
||||||
|
if not bombsPrepared then
|
||||||
|
bombsPrepared = true
|
||||||
|
BombNorthBase()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnAllKilledOrCaptured(USSR.GetActorsByType("sam"), function()
|
||||||
|
if not bombsPrepared then
|
||||||
|
bombsPrepared = true
|
||||||
|
BombNorthBase()
|
||||||
|
end
|
||||||
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
PowerDown = false
|
PowerDown = false
|
||||||
@@ -96,9 +155,13 @@ PowerDownTeslas = function()
|
|||||||
if not PowerDown then
|
if not PowerDown then
|
||||||
CaptureDome = AddSecondaryObjective(Greece, "capture-enemy-radar-dome")
|
CaptureDome = AddSecondaryObjective(Greece, "capture-enemy-radar-dome")
|
||||||
Greece.MarkCompletedObjective(PowerDownTeslaCoils)
|
Greece.MarkCompletedObjective(PowerDownTeslaCoils)
|
||||||
Media.PlaySpeechNotification(Greece, "ReinforcementsArrived")
|
Media.PlaySoundNotification(Greece, "RadarDown")
|
||||||
PowerDown = true
|
PowerDown = true
|
||||||
|
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(1), function()
|
||||||
|
Media.PlaySpeechNotification(Greece, "ReinforcementsArrived")
|
||||||
|
end)
|
||||||
|
|
||||||
local bridge = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" end)[1]
|
local bridge = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" end)[1]
|
||||||
if not bridge.IsDead then
|
if not bridge.IsDead then
|
||||||
bridge.Kill()
|
bridge.Kill()
|
||||||
@@ -117,34 +180,56 @@ PowerDownTeslas = function()
|
|||||||
Trigger.OnCapture(ObjectiveDome, function()
|
Trigger.OnCapture(ObjectiveDome, function()
|
||||||
DomeCaptured = true
|
DomeCaptured = true
|
||||||
Greece.MarkCompletedObjective(CaptureDome)
|
Greece.MarkCompletedObjective(CaptureDome)
|
||||||
SendChronos()
|
|
||||||
end)
|
|
||||||
|
|
||||||
FlameTowersCam = Actor.Create("camera", true, { Owner = Greece, Location = FlameCam.Location })
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
Trigger.AfterDelay(DateTime.Seconds(10), function()
|
SendChronos()
|
||||||
FlameTowersCam.Destroy()
|
SendWaterSquads()
|
||||||
end)
|
Actor.Create("camera", true, { Owner = Greece, Location = EasyCamera.Location })
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
SendChronos = function()
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
|
||||||
local sovietWaterSquad1 = Reinforcements.ReinforceWithTransport(USSR, "lst", SovietSquad, { WaterEntry2.Location, Beach2.Location }, { WaterEntry2.Location })[2]
|
|
||||||
Utils.Do(sovietWaterSquad1, function(a)
|
|
||||||
Trigger.OnAddedToWorld(a, function()
|
|
||||||
IdleHunt(a)
|
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Actor.Create("ctnk", true, { Owner = Greece, Location = ChronoSpawn1.Location })
|
if not FlameWallRevealed then
|
||||||
Actor.Create("ctnk", true, { Owner = Greece, Location = ChronoSpawn2.Location })
|
FlameWallRevealed = true
|
||||||
Actor.Create("ctnk", true, { Owner = Greece, Location = ChronoSpawn3.Location })
|
SpawnTemporaryCamera(FlameCam.Location, DateTime.Seconds(10))
|
||||||
Actor.Create("camera", true, { Owner = Greece, Location = EasyCamera.Location })
|
end
|
||||||
Media.PlaySound("chrono2.aud")
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
BombNorthBase = function()
|
||||||
|
local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = Greece })
|
||||||
|
proxy.TargetAirstrike(BomberTarget1.CenterPosition, Angle.New(970))
|
||||||
|
proxy.TargetAirstrike(BomberTarget2.CenterPosition, Angle.New(932))
|
||||||
|
proxy.Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
SendChronos = function()
|
||||||
|
local payload = { }
|
||||||
|
local proxy = Actor.Create("powerproxy.chronoshift", false, { Owner = Greece })
|
||||||
|
local spawns =
|
||||||
|
{
|
||||||
|
{ cell = ChronoSpawn2.Location, facing = Angle.NorthWest },
|
||||||
|
{ cell = ChronoSpawn1.Location, facing = Angle.NorthEast },
|
||||||
|
{ cell = ChronoSpawn3.Location, facing = Angle.South }
|
||||||
|
}
|
||||||
|
|
||||||
|
Utils.Do(spawns, function(spawn)
|
||||||
|
local tank = Actor.Create("ctnk", true, { Owner = Greece, Facing = spawn.facing })
|
||||||
|
payload[tank] = spawn.cell
|
||||||
|
end)
|
||||||
|
|
||||||
|
Media.PlaySound("chrono2.aud")
|
||||||
|
proxy.Chronoshift(payload)
|
||||||
|
proxy.Destroy()
|
||||||
|
end
|
||||||
|
|
||||||
|
SendWaterSquads = function()
|
||||||
|
local sovietWaterSquad1 = Reinforcements.ReinforceWithTransport(USSR, LSTType, SovietSquad, { WaterEntry2.Location, Beach2.Location }, { WaterEntry2.Location })[2]
|
||||||
|
Utils.Do(sovietWaterSquad1, function(a)
|
||||||
|
Trigger.OnAddedToWorld(a, IdleHunt)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
Trigger.AfterDelay(DateTime.Seconds(5), function()
|
||||||
local sovietWaterSquad2 = Reinforcements.ReinforceWithTransport(USSR, "lst", SovietSquad, { WaterEntry2.Location, Beach3.Location }, { WaterEntry2.Location })[2]
|
local sovietWaterSquad2 = Reinforcements.ReinforceWithTransport(USSR, LSTType, SovietSquad, { WaterEntry2.Location, Beach3.Location }, { WaterEntry2.Location })[2]
|
||||||
Utils.Do(sovietWaterSquad2, function(a)
|
Utils.Do(sovietWaterSquad2, function(a)
|
||||||
Trigger.OnAddedToWorld(a, function()
|
Trigger.OnAddedToWorld(a, function()
|
||||||
a.AttackMove(FlameCam.Location)
|
a.AttackMove(FlameCam.Location)
|
||||||
@@ -154,7 +239,7 @@ SendChronos = function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(13), function()
|
Trigger.AfterDelay(DateTime.Seconds(13), function()
|
||||||
local sovietWaterSquad2 = Reinforcements.ReinforceWithTransport(USSR, "lst", V2Squad, { WaterEntry2.Location, Beach2.Location }, { WaterEntry2.Location })[2]
|
local sovietWaterSquad2 = Reinforcements.ReinforceWithTransport(USSR, LSTType, V2Squad, { WaterEntry2.Location, Beach2.Location }, { WaterEntry2.Location })[2]
|
||||||
Utils.Do(sovietWaterSquad2, function(a)
|
Utils.Do(sovietWaterSquad2, function(a)
|
||||||
Trigger.OnAddedToWorld(a, function()
|
Trigger.OnAddedToWorld(a, function()
|
||||||
a.AttackMove(FlameCam.Location)
|
a.AttackMove(FlameCam.Location)
|
||||||
@@ -185,15 +270,47 @@ MissileSubEscape = function()
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
SubmarineEscapes = UserInterface.Translate("submarine-escapes")
|
StartFireSale = function()
|
||||||
|
local structures = Utils.Where(USSR.GetActors(), function(actor)
|
||||||
|
return actor.HasProperty("StartBuildingRepairs")
|
||||||
|
end)
|
||||||
|
|
||||||
|
if #structures == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
SpawnTemporaryCamera(BomberTarget1.Location, DateTime.Seconds(5))
|
||||||
|
SpawnTemporaryCamera(BomberTarget2.Location, DateTime.Seconds(5))
|
||||||
|
|
||||||
|
Utils.Do(structures, function(building)
|
||||||
|
building.Sell()
|
||||||
|
end)
|
||||||
|
|
||||||
|
Trigger.OnAllRemovedFromWorld(structures, function()
|
||||||
|
Utils.Do(USSR.GetGroundAttackers(), IdleHunt)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
SpawnTemporaryCamera = function(location, duration)
|
||||||
|
local camera = Actor.Create("camera", true, { Owner = Greece, Location = location })
|
||||||
|
|
||||||
|
Trigger.AfterDelay(duration, function()
|
||||||
|
if camera.IsInWorld then
|
||||||
|
camera.Destroy()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
FinishTimer = function()
|
FinishTimer = function()
|
||||||
|
local submarineEscapes = UserInterface.Translate("submarine-escapes")
|
||||||
|
|
||||||
for i = 0, 5 do
|
for i = 0, 5 do
|
||||||
local c = TimerColor
|
local c = TimerColor
|
||||||
if i % 2 == 0 then
|
if i % 2 == 0 then
|
||||||
c = HSLColor.White
|
c = HSLColor.White
|
||||||
end
|
end
|
||||||
|
|
||||||
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(SubmarineEscapes, c) end)
|
Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText(submarineEscapes, c) end)
|
||||||
end
|
end
|
||||||
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
|
Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
|
||||||
end
|
end
|
||||||
@@ -217,6 +334,7 @@ Tick = function()
|
|||||||
end
|
end
|
||||||
Ticked = Ticked - 1
|
Ticked = Ticked - 1
|
||||||
elseif Ticked == 0 and not TimerFinished then
|
elseif Ticked == 0 and not TimerFinished then
|
||||||
|
FinishTimer()
|
||||||
MissileSubEscape()
|
MissileSubEscape()
|
||||||
TimerFinished = true
|
TimerFinished = true
|
||||||
end
|
end
|
||||||
@@ -250,6 +368,7 @@ WorldLoaded = function()
|
|||||||
TimerColor = USSR.Color
|
TimerColor = USSR.Color
|
||||||
Chalk1 = Actor.Create("chalk1", false, { Owner = Greece })
|
Chalk1 = Actor.Create("chalk1", false, { Owner = Greece })
|
||||||
Chalk2 = Actor.Create("chalk2", false, { Owner = Greece })
|
Chalk2 = Actor.Create("chalk2", false, { Owner = Greece })
|
||||||
|
Chalk3 = Actor.Create("chalk3", false, { Owner = Greece })
|
||||||
MissionStart()
|
MissionStart()
|
||||||
SetupTriggers()
|
SetupTriggers()
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ World:
|
|||||||
WinVideo: battle.vqa
|
WinVideo: battle.vqa
|
||||||
LossVideo: slntsrvc.vqa
|
LossVideo: slntsrvc.vqa
|
||||||
Briefing: The Soviets are beginning construction of a new class of submarine capable of launching sea-to-ground missiles. We don't have to tell you the amount of devestation these could cause.\n\nTake a small squad of troops and infiltrate their power grid. When it is down, additional reinforcements will be sent in. When ready, head north and destroy their Sub pen, preventing further construction of these subs.\n\nIf any are built, they must not be allowed to escape!
|
Briefing: The Soviets are beginning construction of a new class of submarine capable of launching sea-to-ground missiles. We don't have to tell you the amount of devestation these could cause.\n\nTake a small squad of troops and infiltrate their power grid. When it is down, additional reinforcements will be sent in. When ready, head north and destroy their Sub pen, preventing further construction of these subs.\n\nIf any are built, they must not be allowed to escape!
|
||||||
|
StartGameNotification:
|
||||||
|
Notification: MissionTimerInitialised
|
||||||
ScriptLobbyDropdown@difficulty:
|
ScriptLobbyDropdown@difficulty:
|
||||||
ID: difficulty
|
ID: difficulty
|
||||||
Label: dropdown-difficulty.label
|
Label: dropdown-difficulty.label
|
||||||
@@ -15,6 +17,16 @@ World:
|
|||||||
hard: options-difficulty.hard
|
hard: options-difficulty.hard
|
||||||
Default: normal
|
Default: normal
|
||||||
|
|
||||||
|
powerproxy.chronoshift:
|
||||||
|
AlwaysVisible:
|
||||||
|
ChronoshiftPower:
|
||||||
|
Dimensions: 1, 1
|
||||||
|
Footprint: x
|
||||||
|
|
||||||
|
powerproxy.parabombs:
|
||||||
|
AirstrikePower:
|
||||||
|
DisplayBeacon: False
|
||||||
|
|
||||||
CHALK1:
|
CHALK1:
|
||||||
ParatroopersPower:
|
ParatroopersPower:
|
||||||
DisplayBeacon: False
|
DisplayBeacon: False
|
||||||
@@ -27,6 +39,17 @@ CHALK2:
|
|||||||
DropItems: E3, E3, E3, E3, MEDI
|
DropItems: E3, E3, E3, E3, MEDI
|
||||||
AlwaysVisible:
|
AlwaysVisible:
|
||||||
|
|
||||||
|
CHALK3:
|
||||||
|
ParatroopersPower:
|
||||||
|
DisplayBeacon: False
|
||||||
|
DropItems: E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1, E1
|
||||||
|
SquadSize: 4
|
||||||
|
AlwaysVisible:
|
||||||
|
|
||||||
|
CTNK:
|
||||||
|
Chronoshiftable:
|
||||||
|
ChronoshiftSound:
|
||||||
|
|
||||||
LST.Reinforcement:
|
LST.Reinforcement:
|
||||||
Inherits: LST
|
Inherits: LST
|
||||||
RejectsOrders:
|
RejectsOrders:
|
||||||
@@ -42,3 +65,9 @@ MSUB:
|
|||||||
-Targetable@UNDERWATER:
|
-Targetable@UNDERWATER:
|
||||||
Targetable:
|
Targetable:
|
||||||
-RequiresCondition:
|
-RequiresCondition:
|
||||||
|
|
||||||
|
TSLA:
|
||||||
|
ExternalCondition@NOACTORSONSELL:
|
||||||
|
Condition: no-actors-on-sell
|
||||||
|
SpawnActorsOnSell:
|
||||||
|
RequiresCondition: !no-actors-on-sell
|
||||||
|
|||||||
Reference in New Issue
Block a user