Add Soviet 11a

This commit is contained in:
Smittytron
2021-02-15 22:20:48 -06:00
committed by reaperrr
parent e161d9daa7
commit ca2f966c3b
7 changed files with 1309 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,912 @@
MapFormat: 11
RequiresMod: ra
Title: 11a: Sunk Costs
Author: Westwood Studios
Tileset: SNOW
MapSize: 128,128
Bounds: 16,28,94,80
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: england
PlayerReference@Greece:
Name: Greece
Faction: allies
Color: E2E6F6
Enemies: USSR
PlayerReference@USSR:
Name: USSR
AllowBots: False
Playable: True
Required: True
LockFaction: True
Faction: soviet
LockColor: True
Color: FE1100
LockSpawn: True
LockTeam: True
Enemies: Greece
Actors:
Actor0: cycl
Location: 78,41
Owner: Greece
Actor1: cycl
Location: 79,41
Owner: Greece
Actor2: cycl
Location: 80,41
Owner: Greece
Actor3: cycl
Location: 81,41
Owner: Greece
Actor4: cycl
Location: 82,41
Owner: Greece
Actor5: cycl
Location: 83,41
Owner: Greece
Actor6: cycl
Location: 84,41
Owner: Greece
Actor7: cycl
Location: 78,42
Owner: Greece
Actor8: cycl
Location: 84,42
Owner: Greece
Actor9: cycl
Location: 78,43
Owner: Greece
Actor10: cycl
Location: 78,44
Owner: Greece
Actor11: cycl
Location: 78,49
Owner: Greece
Actor12: cycl
Location: 78,50
Owner: Greece
Actor13: cycl
Location: 78,51
Owner: Greece
Actor14: cycl
Location: 84,51
Owner: Greece
Actor15: cycl
Location: 78,52
Owner: Greece
Actor16: cycl
Location: 79,52
Owner: Greece
Actor17: cycl
Location: 80,52
Owner: Greece
Actor18: cycl
Location: 81,52
Owner: Greece
Actor19: cycl
Location: 82,52
Owner: Greece
Actor20: cycl
Location: 83,52
Owner: Greece
Actor21: cycl
Location: 84,52
Owner: Greece
Actor22: tc05
Location: 47,45
Owner: Neutral
Actor23: tc03
Location: 32,43
Owner: Neutral
Actor24: tc02
Location: 51,64
Owner: Neutral
Actor25: tc01
Location: 53,54
Owner: Neutral
Actor26: t15
Location: 51,61
Owner: Neutral
Actor27: t12
Location: 74,50
Owner: Neutral
Actor28: tc04
Location: 40,74
Owner: Neutral
Actor29: tc03
Location: 27,74
Owner: Neutral
Actor30: tc02
Location: 28,80
Owner: Neutral
Actor31: t01
Location: 33,75
Owner: Neutral
Actor32: t02
Location: 33,70
Owner: Neutral
Actor33: t05
Location: 32,81
Owner: Neutral
Actor34: tc04
Location: 70,84
Owner: Neutral
Actor35: t17
Location: 73,87
Owner: Neutral
Actor36: t01
Location: 40,95
Owner: Neutral
Actor37: t02
Location: 38,96
Owner: Neutral
Actor38: t05
Location: 48,99
Owner: Neutral
Actor39: t07
Location: 41,99
Owner: Neutral
Actor40: t11
Location: 29,71
Owner: Neutral
Actor41: t12
Location: 74,72
Owner: Neutral
Actor42: t14
Location: 80,67
Owner: Neutral
Actor43: tc01
Location: 84,66
Owner: Neutral
Actor44: tc04
Location: 86,66
Owner: Neutral
Actor45: tc05
Location: 97,68
Owner: Neutral
Actor46: tc05
Location: 104,84
Owner: Neutral
Actor47: tc04
Location: 36,51
Owner: Neutral
Actor48: t12
Location: 31,44
Owner: Neutral
Actor49: tc04
Location: 25,35
Owner: Neutral
Actor50: tc01
Location: 27,40
Owner: Neutral
Actor51: tc02
Location: 29,34
Owner: Neutral
Actor52: t01
Location: 43,37
Owner: Neutral
Actor53: t06
Location: 43,42
Owner: Neutral
Actor54: t01
Location: 98,56
Owner: Neutral
Actor55: t03
Location: 96,59
Owner: Neutral
Actor56: t11
Location: 93,65
Owner: Neutral
Actor57: t10
Location: 97,86
Owner: Neutral
Actor58: t08
Location: 96,86
Owner: Neutral
Actor59: t01
Location: 86,100
Owner: Neutral
Actor60: tc02
Location: 89,100
Owner: Neutral
Actor61: tc05
Location: 95,96
Owner: Neutral
Actor62: ice05
Location: 92,92
Owner: Neutral
Actor63: ice03
Location: 91,93
Owner: Neutral
Actor64: ice02
Location: 99,92
Owner: Neutral
Actor65: ice04
Location: 98,93
Owner: Neutral
Actor66: ice05
Location: 100,91
Owner: Neutral
Actor67: ice01
Location: 93,90
Owner: Neutral
Actor68: ice04
Location: 95,90
Owner: Neutral
Actor69: ice04
Location: 93,92
Owner: Neutral
Actor70: ice04
Location: 100,92
Owner: Neutral
Actor71: ice03
Location: 99,94
Owner: Neutral
Actor72: ice03
Location: 82,86
Owner: Neutral
Actor73: ice04
Location: 82,87
Owner: Neutral
Actor74: ice02
Location: 81,85
Owner: Neutral
Actor75: ice01
Location: 82,84
Owner: Neutral
Actor76: ice04
Location: 84,85
Owner: Neutral
Actor77: ice04
Location: 83,83
Owner: Neutral
Actor78: ice04
Location: 75,85
Owner: Neutral
Actor79: ice05
Location: 83,77
Owner: Neutral
Actor80: ice03
Location: 88,78
Owner: Neutral
Actor81: ice04
Location: 89,77
Owner: Neutral
Actor82: ice04
Location: 87,79
Owner: Neutral
Actor83: ice04
Location: 82,78
Owner: Neutral
Actor84: ice01
Location: 74,83
Owner: Neutral
Actor85: mine
Location: 43,98
Owner: Neutral
Actor86: mine
Location: 81,91
Owner: Neutral
Actor87: mine
Location: 93,100
Owner: Neutral
Actor88: mine
Location: 100,84
Owner: Neutral
Actor89: mine
Location: 83,71
Owner: Neutral
Actor90: mine
Location: 32,76
Owner: Neutral
NavalYard2: syrd
Location: 83,46
Owner: Greece
NavalYard3: syrd
Owner: Greece
Location: 45,32
Actor92: v19
Location: 82,44
Owner: Greece
Actor93: v19
Location: 80,44
Owner: Greece
Actor94: v19
Location: 83,43
Owner: Greece
Actor95: v19
Location: 79,43
Owner: Greece
Actor96: barl
Location: 81,43
Owner: Greece
Actor97: brl3
Location: 80,42
Owner: Greece
Actor98: barl
Location: 79,42
Owner: Greece
Actor99: barl
Location: 81,42
Owner: Greece
Actor100: brl3
Location: 82,43
Owner: Greece
Actor101: brl3
Location: 82,42
Owner: Greece
Actor102: brl3
Location: 83,42
Owner: Greece
Actor103: v19
Location: 79,49
Owner: Greece
Actor104: v19
Location: 83,51
Owner: Greece
Actor105: brl3
Location: 80,51
Owner: Greece
Actor106: barl
Location: 81,51
Owner: Greece
Actor107: barl
Location: 79,50
Owner: Greece
Actor108: minv
Location: 62,56
Owner: Greece
Actor109: minv
Location: 59,57
Owner: Greece
Actor110: minv
Location: 62,58
Owner: Greece
Actor111: minv
Location: 60,58
Owner: Greece
Actor112: minv
Location: 61,57
Owner: Greece
Actor113: minv
Location: 61,59
Owner: Greece
Actor114: minv
Location: 60,60
Owner: Greece
Actor115: minv
Location: 61,61
Owner: Greece
Actor116: minv
Location: 62,60
Owner: Greece
Actor117: minv
Location: 59,59
Owner: Greece
Actor118: gun
Location: 75,44
Owner: Greece
Facing: 63
Actor119: agun
Location: 77,50
Owner: Greece
Facing: 31
Actor120: weap
Location: 51,36
Owner: Greece
Actor121: dome
Location: 62,38
Owner: Greece
Actor122: gun
Location: 65,54
Owner: Greece
Facing: 95
Actor123: gun
Location: 75,49
Owner: Greece
Facing: 63
Actor124: gun
Location: 47,43
Owner: Greece
Facing: 95
Actor125: gun
Location: 61,51
Owner: Greece
Facing: 127
Actor126: gun
Location: 57,53
Owner: Greece
Facing: 127
Actor127: gun
Location: 64,44
Owner: Greece
Facing: 31
Actor128: fact
Location: 69,41
Owner: Greece
Helipad4: hpad
Location: 61,42
Owner: Greece
Helipad3: hpad
Location: 57,42
Owner: Greece
Actor131: apwr
Location: 55,31
Owner: Greece
Actor132: apwr
Location: 52,32
Owner: Greece
Actor133: apwr
Location: 58,31
Owner: Greece
Actor134: tent
Location: 59,36
Owner: Greece
Actor135: hbox
Location: 31,44
Owner: Greece
Actor136: hbox
Location: 48,45
Owner: Greece
Actor137: hbox
Location: 53,54
Owner: Greece
Actor138: hbox
Location: 36,51
Owner: Greece
Actor139: hbox
Location: 43,42
Owner: Greece
Actor140: hbox
Location: 74,50
Owner: Greece
Actor141: agun
Location: 82,53
Owner: Greece
Facing: 127
Actor142: agun
Location: 85,42
Owner: Greece
Helipad1: hpad
Location: 43,39
Owner: Greece
Actor144: brl3
Location: 55,46
Owner: Greece
BridgeBarrel: brl3
Location: 57,46
Owner: Greece
Actor146: barl
Location: 56,46
Owner: Greece
Actor147: barl
Location: 61,47
Owner: Greece
Actor148: brl3
Location: 62,47
Owner: Greece
Actor149: barl
Location: 62,48
Owner: Greece
Helipad2: hpad
Location: 48,40
Owner: Greece
Actor151: minv
Location: 47,51
Owner: Greece
Actor152: minv
Location: 44,52
Owner: Greece
Actor153: minv
Location: 43,51
Owner: Greece
Actor154: minv
Location: 42,52
Owner: Greece
Actor155: minv
Location: 41,53
Owner: Greece
Actor156: minv
Location: 41,51
Owner: Greece
Actor157: minv
Location: 40,52
Owner: Greece
Actor158: minv
Location: 46,52
Owner: Greece
Actor159: minv
Location: 49,51
Owner: Greece
Actor160: minv
Location: 48,52
Owner: Greece
Actor161: minv
Location: 45,51
Owner: Greece
Actor162: minv
Location: 45,53
Owner: Greece
Actor163: minv
Location: 43,53
Owner: Greece
Actor164: minv
Location: 50,52
Owner: Greece
Actor165: minv
Location: 60,56
Owner: Greece
Actor166: minv
Location: 59,61
Owner: Greece
Actor167: hbox
Location: 76,48
Owner: Greece
Actor168: hbox
Location: 76,45
Owner: Greece
Actor169: hbox
Location: 68,41
Owner: Greece
Actor170: hbox
Location: 72,43
Owner: Greece
Actor171: agun
Location: 67,41
Owner: Greece
Actor172: agun
Location: 73,41
Owner: Greece
Actor173: agun
Location: 67,43
Owner: Greece
Actor174: agun
Location: 73,43
Owner: Greece
Actor175: agun
Location: 44,38
Owner: Greece
Actor176: agun
Location: 51,41
Owner: Greece
Actor177: apwr
Location: 55,34
Owner: Greece
Actor178: gap
Location: 77,44
Owner: Greece
NavalYard1: syrd
Location: 89,53
Owner: Greece
Actor180: brl3
Location: 82,51
Owner: Greece
Actor181: apwr
Location: 74,41
Owner: Greece
Actor182: 2tnk
Location: 40,45
Owner: Greece
Facing: 261
Actor183: 2tnk
Location: 61,56
Owner: Greece
Facing: 507
Actor184: 2tnk
Location: 61,55
Owner: Greece
Facing: 499
Actor185: 2tnk
Location: 40,47
Owner: Greece
Facing: 253
Actor186: 2tnk
Location: 60,55
Owner: Greece
Facing: 531
Actor187: 2tnk
Location: 62,55
Owner: Greece
Facing: 491
Actor188: 2tnk
Location: 49,44
Owner: Greece
Facing: 325
Actor189: 2tnk
Location: 61,35
Owner: Greece
Facing: 380
BridgeTank: 2tnk
Location: 56,44
Owner: Greece
Facing: 127
Actor191: 2tnk
Location: 49,36
Owner: Greece
Facing: 396
Actor192: arty
Location: 42,45
Owner: Greece
Facing: 253
Actor193: arty
Location: 64,61
Owner: Greece
Facing: 293
Actor194: arty
Location: 65,55
Owner: Greece
Facing: 245
Actor195: arty
Location: 42,47
Owner: Greece
Facing: 261
Actor196: arty
Location: 65,58
Owner: Greece
Facing: 261
Actor197: 1tnk
Location: 79,45
Owner: Greece
Facing: 245
Actor198: 1tnk
Location: 79,47
Owner: Greece
Facing: 253
Actor199: 1tnk
Location: 79,46
Owner: Greece
Facing: 261
Actor200: 1tnk
Location: 79,48
Owner: Greece
Facing: 253
Actor201: e3
Location: 51,33
Owner: Greece
SubCell: 0
Actor202: e3
Location: 51,34
Owner: Greece
SubCell: 0
Rocket1: e3
Location: 58,34
Owner: Greece
SubCell: 2
Rocket2: e3
Location: 59,34
Owner: Greece
SubCell: 1
Rocket3: e3
Location: 61,34
Owner: Greece
SubCell: 0
Rocket4: e3
Location: 62,34
Owner: Greece
SubCell: 0
Actor207: e3
Location: 41,46
Owner: Greece
SubCell: 2
Actor208: e3
Location: 41,46
Owner: Greece
SubCell: 4
Actor209: e3
Location: 65,60
Owner: Greece
SubCell: 4
Rocket6: e3
Location: 66,60
Owner: Greece
SubCell: 1
Rocket5: e3
Location: 66,60
Owner: Greece
SubCell: 4
Actor212: ss
Location: 62,102
Owner: USSR
Actor213: ss
Location: 67,101
Owner: USSR
Actor214: ss
Location: 72,102
Owner: USSR
Actor215: dd
Location: 67,97
Owner: Greece
Facing: 277
Health: 26
Actor216: ca
Location: 35,39
Owner: Greece
Facing: 159
Actor217: dd
Location: 34,37
Owner: Greece
Facing: 191
Actor218: dd
Location: 78,59
Owner: Greece
Facing: 380
Actor219: dd
Location: 39,40
Owner: Greece
Facing: 127
Actor220: dd
Location: 38,37
Owner: Greece
Facing: 159
Actor221: dd
Location: 31,39
Owner: Greece
Facing: 127
Cruiser1: ca
Location: 19,31
Owner: Greece
Facing: 515
Gunboat1: pt
Location: 17,29
Owner: Greece
Facing: 531
Gunboat2: pt
Location: 21,29
Owner: Greece
Facing: 507
Actor225: pt
Location: 32,28
Owner: Greece
Facing: 285
Actor226: pt
Location: 32,29
Owner: Greece
Facing: 237
Actor227: pt
Location: 32,30
Owner: Greece
Facing: 261
Actor228: pt
Location: 61,98
Owner: Greece
Facing: 364
Actor229: ca
Location: 81,60
Owner: Greece
Facing: 364
Actor230: dd
Location: 84,58
Owner: Greece
Facing: 412
Actor231: dd
Location: 78,62
Owner: Greece
Facing: 404
Actor232: dd
Location: 83,62
Owner: Greece
Facing: 388
Actor233: pt
Location: 71,64
Owner: Greece
Facing: 396
Actor234: pt
Location: 75,66
Owner: Greece
Facing: 364
Actor237: ca
Location: 101,79
Owner: Greece
Facing: 285
AlliedCamera: camera
Location: 56,88
Owner: Greece
Actor283: apwr
Location: 55,37
Owner: Greece
Actor284: powr
Location: 47,37
Owner: Greece
DefaultCameraPosition: waypoint
Location: 67,101
Owner: Neutral
TransportEntry: waypoint
Owner: Neutral
Location: 67,107
TransportStop: waypoint
Location: 67,103
Owner: Neutral
AmbushTrigger: waypoint
Location: 94,70
Owner: Neutral
SurpriseTransportEntry: waypoint
Location: 109,40
Owner: Neutral
SurpriseTransportDrop: waypoint
Location: 101,62
Owner: Neutral
ShipEntry: waypoint
Location: 19,28
Owner: Neutral
ShipWaypoint1: waypoint
Location: 19,38
Owner: Neutral
ShipWaypoint2: waypoint
Location: 21,65
Owner: Neutral
ShipWaypoint3: waypoint
Location: 25,102
Owner: Neutral
ShipWaypoint4: waypoint
Location: 42,105
Owner: Neutral
ShipWaypoint5: waypoint
Owner: Neutral
Location: 64,101
ShipWaypoint6: waypoint
Location: 57,73
Owner: Neutral
AlliedTransportDrop1: waypoint
Location: 97,100
Owner: Neutral
AlliedTransportDrop2: waypoint
Location: 36,98
Owner: Neutral
AlliedTransportDrop3: waypoint
Location: 38,69
Owner: Neutral
AlliedTransportEntry1: waypoint
Location: 109,99
Owner: Neutral
AlliedTransportEntry2: waypoint
Location: 25,107
Owner: Neutral
AlliedTransportEntry3: waypoint
Owner: Neutral
Location: 16,62
PlayerBase: waypoint
Owner: Neutral
Location: 57,88
CruiserEntry: waypoint
Location: 109,106
Owner: Neutral
RocketPath1: waypoint
Location: 60,46
Owner: Neutral
RocketPath2: waypoint
Location: 74,46
Owner: Neutral
RocketPath3: waypoint
Location: 46,39
Owner: Neutral
RocketPath4: waypoint
Location: 60,39
Owner: Neutral
RocketPath5: waypoint
Location: 66,62
Owner: Neutral
RocketPath6: waypoint
Location: 67,55
Owner: Neutral
BaseBridge: waypoint
Location: 57,48
Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml

View File

@@ -0,0 +1,91 @@
World:
LuaScript:
Scripts: campaign-global.lua, soviet11a.lua, soviet11a-AI.lua
MissionData:
BriefingVideo: soviet11.vqa
WinVideo: sitduck.vqa
LossVideo: dpthchrg.vqa
StartVideo: periscop.vqa
Briefing: Intelligence indicates that a large portion of the Allied Naval Fleet will stop for refueling at a base in this area. Destroy the fleet and the base. Beware the long range of their cruisers.
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: Difficulty
Values:
easy: Easy
normal: Normal
hard: Hard
Default: normal
Player:
PlayerResources:
DefaultCash: 10000
AFLD:
AirstrikePower@parabombs:
Prerequisites: aircraft.soviet
ParatroopersPower@paratroopers:
DropItems: E1,E1,E1,E2,E2
ATEK:
Buildable:
Prerequisites: ~disabled
IRON:
Buildable:
Prerequisites: ~disabled
MSLO:
Buildable:
Prerequisites: ~disabled
TRUK:
Buildable:
Prerequisites: ~disabled
FTRK:
Buildable:
Prerequisites: ~disabled
QTNK:
Buildable:
Prerequisites: ~disabled
MSUB:
Buildable:
Prerequisites: ~disabled
THF:
Buildable:
Prerequisites: ~disabled
PDOX:
Buildable:
Prerequisites: ~disabled
E7:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
MECH:
Buildable:
Prerequisites: ~disabled
MH60:
Buildable:
Prerequisites: ~disabled
E3:
Buildable:
Prerequisites: ~tent
CA:
Buildable:
Prerequisites: ~syrd, dome
HELI:
Buildable:
Prerequisites: ~hpad

View File

@@ -0,0 +1,242 @@
--[[
Copyright 2007-2021 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.
]]
FirstPatrolActors = { Cruiser1, Gunboat1, Gunboat2 }
PatrolA = { Rocket1, Rocket2 }
PatrolB = { Rocket3, Rocket4 }
PatrolC = { Rocket5, Rocket6 }
PatrolPathA = { RocketPath1.Location, RocketPath2.Location }
PatrolPathB = { RocketPath3.Location, RocketPath4.Location }
PatrolPathC = { RocketPath5.Location, RocketPath6.Location }
Helipads = { Helipad1, Helipad2, Helipad3, Helipad4 }
HeliType = { "heli" }
DestroyerSquad = { "dd", "dd" }
DestroyerDelays =
{
easy = 4,
normal = 3,
hard = 2
}
TransportDelays =
{
easy = 6,
normal = 5,
hard = 4
}
AlliedShips =
{
easy = { "pt", "pt", "dd" },
normal = { "pt", "dd", "dd" },
hard = { "dd", "dd" , "dd" }
}
Helis = { }
PatrolWay = { ShipWaypoint1.Location, ShipWaypoint2.Location, ShipWaypoint3.Location, ShipWaypoint4.Location, ShipWaypoint5.Location }
TransportWays =
{
{ AlliedTransportEntry1.Location, AlliedTransportDrop1.Location },
{ AlliedTransportEntry2.Location, AlliedTransportDrop2.Location },
{ AlliedTransportEntry3.Location, AlliedTransportDrop3.Location }
}
SurpriseTransportWay = { SurpriseTransportEntry.Location, SurpriseTransportDrop.Location }
TransportUnits =
{
easy = { { "1tnk", "1tnk", "2tnk" }, { "arty", "jeep", "1tnk" } },
normal = { { "1tnk", "2tnk", "2tnk" }, { "arty", "arty", "1tnk" } },
hard = { { "2tnk", "2tnk", "2tnk" }, { "arty", "arty", "2tnk" } }
}
SurpriseTransportUnits =
{
easy = { "jeep", "jeep", "1tnk" },
normal = { "jeep", "jeep", "1tnk" },
hard = { "jeep", "1tnk", "2tnk" }
}
ProductionDelays =
{
easy = 3,
normal = 2,
hard = 1
}
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
SendCruiser = function()
if NavalYard2.IsDead or NavalYard2.Owner ~= Greece then
return
end
local boat = Reinforcements.Reinforce(Greece, { "ca" }, { CruiserEntry.Location })
Utils.Do(boat, function(ca)
ca.Move(DefaultCameraPosition.Location)
Trigger.OnKilled(ca, function()
Trigger.AfterDelay(DateTime.Minutes(3), SendCruiser)
end)
end)
end
WesternBoatAttacks = function()
if NavalYard3.IsDead or NavalYard3.Owner ~= Greece then
return
end
local boats = Reinforcements.Reinforce(Greece, DestroyerSquad, { ShipEntry.Location })
Utils.Do(boats, function(dd)
dd.Patrol(PatrolWay, false, 1)
IdleHunt(dd)
end)
Trigger.OnAllKilled(boats, function()
Trigger.AfterDelay(DateTime.Minutes(DestroyerDelays), WesternBoatAttacks)
end)
end
AlliedTransportReinforcements = function()
local way = Utils.Random(TransportWays)
local group = Utils.Random(TransportUnits)
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2]
Utils.Do(units, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(PlayerBase.Location)
IdleHunt(a)
end)
end)
Trigger.AfterDelay(DateTime.Minutes(TransportDelays), AlliedTransportReinforcements)
end
BuildingsHealing = function()
local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == Greece and self.HasProperty("StartBuildingRepairs") end)
Utils.Do(buildings, function(actor)
Trigger.OnDamaged(actor, function(building)
if building.Owner == Greece and building.Health < building.MaxHealth * 3/4 then
building.StartBuildingRepairs()
end
end)
end)
end
StartPatrols = function()
Utils.Do(FirstPatrolActors, function(a)
if not a.IsDead then
a.Patrol(PatrolWay, false, 1)
IdleHunt(a)
end
end)
Utils.Do(PatrolA, function(a)
a.Patrol(PatrolPathA, true, 20)
end)
Utils.Do(PatrolB, function(b)
b.Patrol(PatrolPathB, true, 20)
end)
Utils.Do(PatrolC, function(c)
c.Patrol(PatrolPathC, true, 20)
end)
end
ProduceShips = function()
if NavalYard1.IsDead or NavalYard1.Owner ~= Greece then
return
end
Greece.Build(AlliedShips, function(ships)
Utils.Do(ships, function(a)
a.AttackMove(ShipWaypoint5.Location)
IdleHunt(a)
end)
end)
Trigger.AfterDelay(DateTime.Minutes(ProductionDelays), ProduceShips)
end
ProduceHelicopters = function()
if Utils.All(Helipads, function(a) return a.IsDead or a.Owner ~= Greece end) then
return
end
Greece.Build(HeliType, function(helis)
local heli = helis[1]
Helis[#Helis+1] = heli
Trigger.OnKilled(heli, ProduceHelicopters)
local alive = Utils.Where(Helis, function(y) return not y.IsDead end)
if #alive < 2 then
Trigger.AfterDelay(DateTime.Minutes(ProductionDelays), ProduceHelicopters)
end
InitializeAttackAircraft(heli, USSR)
end)
end
AlliedTransportAmbush = function()
Trigger.OnEnteredProximityTrigger(AmbushTrigger.CenterPosition, WDist.New(1024 * 7), function(a, id)
if a.Owner == USSR then
Trigger.RemoveProximityTrigger(id)
local way = SurpriseTransportWay
local group = SurpriseTransportUnits
local units = Reinforcements.ReinforceWithTransport(Greece, "lst", group, way, { way[2], way[1] } )[2]
Utils.Do(units, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(PlayerBase.Location)
IdleHunt(a)
end)
end)
end
end)
end
BridgeTrigger = function()
TheBridge = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" end)[1]
Trigger.OnKilled(BridgeBarrel, function()
if not TheBridge.IsDead then
TheBridge.Kill()
end
end)
Trigger.OnEnteredProximityTrigger(BaseBridge.CenterPosition, WDist.FromCells(3), function(actor, id)
if actor.Owner == USSR and actor.Type ~= "badr" and actor.Type ~= "u2" and actor.Type ~= "camera.spyplane" then
Trigger.RemoveProximityTrigger(id)
if not BridgeTank.IsDead and not BridgeBarrel.IsDead and not TheBridge.IsDead then
BridgeTank.Attack(BridgeBarrel, true, true)
end
end
end)
end
ActivateAI = function()
local difficulty = Map.LobbyOption("difficulty")
TransportDelays = TransportDelays[difficulty]
DestroyerDelays = DestroyerDelays[difficulty]
TransportUnits = TransportUnits[difficulty]
ProductionDelays = ProductionDelays[difficulty]
AlliedShips = AlliedShips[difficulty]
SurpriseTransportUnits = SurpriseTransportUnits[difficulty]
BuildingsHealing()
AlliedTransportAmbush()
BridgeTrigger()
NavalYard1.IsPrimaryBuilding = true
Trigger.AfterDelay(DateTime.Minutes(1), StartPatrols)
Trigger.AfterDelay(DateTime.Minutes(3), AlliedTransportReinforcements)
Trigger.AfterDelay(DateTime.Minutes(4), WesternBoatAttacks)
Trigger.AfterDelay(DateTime.Minutes(5), ProduceShips)
Trigger.AfterDelay(DateTime.Minutes(6), ProduceHelicopters)
Trigger.AfterDelay(DateTime.Minutes(7), SendCruiser)
end

View File

@@ -0,0 +1,63 @@
--[[
Copyright 2007-2021 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.
]]
StartingUnits = { "mcv", "e4", "e4", "e2", "e2" }
SovietTransportWay = { TransportEntry.Location, TransportStop.Location }
InitialSovietReinforcements = function()
Trigger.AfterDelay(DateTime.Seconds(2), function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
Reinforcements.ReinforceWithTransport(USSR, "lst", StartingUnits, SovietTransportWay)
end)
end
Tick = function()
Greece.Cash = 10000
if Greece.HasNoRequiredUnits() then
USSR.MarkCompletedObjective(DestroyNavalBase)
end
if USSR.HasNoRequiredUnits() and DateTime.GameTime > DateTime.Seconds(5) then
Greece.MarkCompletedObjective(BeatSoviets)
end
end
WorldLoaded = function()
USSR = Player.GetPlayer("USSR")
Greece = Player.GetPlayer("Greece")
Trigger.OnObjectiveAdded(USSR, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
DestroyNavalBase = USSR.AddPrimaryObjective("Destroy all Allied units and structures.")
BeatSoviets = Greece.AddPrimaryObjective("Destroy all Soviet troops.")
Trigger.OnObjectiveCompleted(USSR, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
end)
Trigger.OnObjectiveFailed(USSR, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
end)
Trigger.OnPlayerLost(USSR, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(USSR, "MissionFailed")
end)
end)
Trigger.OnPlayerWon(USSR, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(USSR, "MissionAccomplished")
end)
end)
Camera.Position = DefaultCameraPosition.CenterPosition
InitialSovietReinforcements()
Trigger.AfterDelay(DateTime.Seconds(5), ActivateAI)
end

View File

@@ -27,6 +27,7 @@ Soviet Campaign:
soviet-08a
soviet-08b
soviet-09
soviet-11a
Counterstrike:
sarin-gas-1-crackdown
sarin-gas-2-down-under