Add Soviet-08b

This commit is contained in:
Smittytron
2020-04-22 21:46:03 -05:00
committed by abcdefg30
parent e1523e939d
commit 2eba8b6c37
7 changed files with 1362 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,892 @@
MapFormat: 11
RequiresMod: ra
Title: 08b: Investigate Elba Island
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 128,128
Bounds: 28,27,87,79
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: england
PlayerReference@USSR:
Name: USSR
AllowBots: False
Playable: True
Required: True
LockFaction: True
Faction: soviet
LockColor: True
Color: FE1100
LockSpawn: True
LockTeam: True
Enemies: Germany, Greece
PlayerReference@Germany:
Name: Germany
Bot: campaign
Faction: allies
Color: 505050
Allies: Greece
Enemies: USSR
PlayerReference@Greece:
Name: Greece
Bot: campaign
Faction: allies
Color: E2E6F6
Allies: Germany
Enemies: USSR
Actors:
Actor0: sbag
Location: 61,56
Owner: Germany
Actor1: sbag
Location: 62,56
Owner: Germany
Actor2: sbag
Location: 62,57
Owner: Germany
Actor3: wood
Location: 74,57
Owner: Neutral
Actor4: wood
Location: 76,57
Owner: Neutral
Actor5: wood
Location: 77,57
Owner: Neutral
Actor6: sbag
Location: 62,58
Owner: Germany
Actor7: wood
Location: 80,59
Owner: Neutral
Actor8: wood
Location: 82,59
Owner: Neutral
Actor9: sbag
Location: 53,62
Owner: Germany
Actor10: sbag
Location: 53,63
Owner: Germany
Actor11: sbag
Location: 54,63
Owner: Germany
Actor12: sbag
Location: 55,63
Owner: Germany
Actor13: sbag
Location: 56,63
Owner: Germany
Actor14: sbag
Location: 57,63
Owner: Germany
Actor15: sbag
Location: 58,63
Owner: Germany
Actor16: wood
Location: 68,65
Owner: Neutral
Actor17: v13
Location: 71,65
Owner: Neutral
Actor18: sbag
Location: 83,66
Owner: Germany
Actor19: sbag
Location: 84,66
Owner: Germany
Actor20: sbag
Location: 86,66
Owner: Germany
Actor21: sbag
Location: 87,66
Owner: Germany
Actor22: v14
Location: 68,67
Owner: Neutral
Actor23: v14
Location: 69,67
Owner: Neutral
Actor24: v14
Location: 70,67
Owner: Neutral
Actor25: sbag
Location: 84,67
Owner: Germany
Actor26: sbag
Location: 86,67
Owner: Germany
Actor27: sbag
Location: 65,68
Owner: Germany
Actor28: sbag
Location: 65,69
Owner: Germany
Actor29: sbag
Location: 65,72
Owner: Germany
Actor30: sbag
Location: 65,73
Owner: Germany
Actor31: sbag
Location: 47,81
Owner: Germany
Actor32: sbag
Location: 48,81
Owner: Germany
Actor33: sbag
Location: 49,81
Owner: Germany
Actor34: sbag
Location: 47,85
Owner: Germany
Actor35: sbag
Location: 48,85
Owner: Germany
Actor36: sbag
Location: 49,85
Owner: Germany
Actor37: t11
Location: 54,100
Owner: Neutral
Actor38: t15
Location: 56,100
Owner: Neutral
Actor39: tc05
Location: 89,64
Owner: Neutral
Actor40: tc04
Location: 92,64
Owner: Neutral
Actor41: tc02
Location: 92,63
Owner: Neutral
Actor42: tc01
Location: 93,60
Owner: Neutral
Actor43: tc02
Location: 98,73
Owner: Neutral
Actor44: tc02
Location: 46,89
Owner: Neutral
Actor45: tc05
Location: 35,87
Owner: Neutral
Actor46: tc05
Location: 50,66
Owner: Neutral
Actor47: t15
Location: 37,53
Owner: Neutral
Actor48: t08
Location: 37,55
Owner: Neutral
Actor49: tc05
Location: 74,69
Owner: Neutral
Actor50: t11
Location: 78,69
Owner: Neutral
Actor51: t08
Location: 70,69
Owner: Neutral
Actor52: t08
Location: 90,73
Owner: Neutral
Actor53: t10
Location: 85,95
Owner: Neutral
Actor54: t07
Location: 83,97
Owner: Neutral
Actor55: t08
Location: 85,97
Owner: Neutral
Actor56: tc04
Location: 92,91
Owner: Neutral
Actor57: tc03
Location: 97,88
Owner: Neutral
Actor58: tc02
Location: 68,89
Owner: Neutral
Actor59: tc04
Location: 54,54
Owner: Neutral
Actor60: tc02
Location: 52,56
Owner: Neutral
Actor61: tc01
Location: 57,54
Owner: Neutral
Actor62: t01
Location: 68,67
Owner: Neutral
Actor63: t11
Location: 66,62
Owner: Neutral
Actor64: tc03
Location: 72,57
Owner: Neutral
Actor65: tc05
Location: 77,57
Owner: Neutral
Actor66: tc02
Location: 78,66
Owner: Neutral
Actor67: t02
Location: 81,37
Owner: Neutral
Actor68: t02
Location: 78,39
Owner: Neutral
Actor69: tc03
Location: 80,40
Owner: Neutral
Actor70: tc04
Location: 92,39
Owner: Neutral
Actor71: tc05
Location: 89,40
Owner: Neutral
Actor72: tc02
Location: 95,36
Owner: Neutral
Actor73: tc01
Location: 86,42
Owner: Neutral
Actor74: tc04
Location: 77,52
Owner: Neutral
Actor75: tc02
Location: 72,49
Owner: Neutral
Actor76: t15
Location: 83,35
Owner: Neutral
Actor77: t14
Location: 80,36
Owner: Neutral
Actor78: t14
Location: 104,44
Owner: Neutral
Actor79: tc04
Location: 55,64
Owner: Neutral
Actor80: tc02
Location: 63,66
Owner: Neutral
Actor81: tc01
Location: 54,70
Owner: Neutral
Actor82: t17
Location: 49,71
Owner: Neutral
Actor83: t16
Location: 59,75
Owner: Neutral
Actor84: tc02
Location: 67,53
Owner: Neutral
Actor85: tc02
Location: 75,53
Owner: Neutral
Actor86: tc05
Location: 71,46
Owner: Neutral
Actor87: mine
Location: 89,93
Owner: Neutral
Actor88: mine
Location: 91,96
Owner: Neutral
Actor89: mine
Location: 38,87
Owner: Neutral
Actor90: mine
Location: 46,81
Owner: Neutral
Actor91: mine
Location: 91,69
Owner: Neutral
Actor92: mine
Location: 84,55
Owner: Neutral
Actor93: fact
Location: 79,83
Owner: USSR
Actor94: powr
Location: 76,85
Owner: USSR
Actor95: fact
Location: 50,38
Owner: Greece
Actor96: spen
Location: 77,92
Owner: USSR
Actor97: tent
Location: 57,59
Owner: Germany
Actor98: weaf
Location: 58,56
Owner: Germany
Actor99: facf
Location: 52,58
Owner: Germany
Actor100: powr
Location: 55,56
Owner: Germany
Actor101: hbox
Location: 56,62
Owner: Germany
Actor102: gun
Location: 61,60
Owner: Germany
Facing: 159
Church: v01
Location: 75,57
Owner: Germany
Civ1: v02
Location: 80,60
Owner: Germany
Health: 89
Civ2: v03
Location: 76,62
Owner: Germany
Civ3: v04
Location: 71,60
Owner: Germany
Health: 41
Civ4: v05
Location: 66,60
Owner: Germany
Health: 37
Civ5: v06
Location: 69,65
Owner: Germany
Civ6: v07
Location: 71,66
Owner: Germany
Health: 31
Civ7: v09
Location: 68,62
Owner: Germany
Civ8: v11
Location: 69,58
Owner: Germany
Jeep1: jeep
Location: 79,80
Owner: Germany
Facing: 159
Jeep2: jeep
Location: 76,82
Owner: Germany
Facing: 159
Actor114: 1tnk
Location: 64,56
Owner: Germany
Facing: 159
Actor115: jeep
Location: 85,65
Owner: Germany
Facing: 127
Actor116: jeep
Location: 61,70
Owner: Germany
Facing: 191
Actor117: 2tnk
Location: 72,51
Owner: Greece
Facing: 127
Actor118: 2tnk
Location: 74,51
Owner: Greece
Facing: 95
Actor119: 2tnk
Location: 75,53
Owner: Greece
Facing: 63
Actor120: 1tnk
Location: 40,84
Owner: Germany
Facing: 191
Actor121: 2tnk
Location: 44,52
Owner: Greece
Facing: 127
Actor122: 2tnk
Location: 45,53
Owner: Greece
Facing: 127
Actor123: 2tnk
Location: 46,52
Owner: Greece
Facing: 127
Actor124: arty
Location: 44,51
Owner: Greece
Facing: 127
Actor125: arty
Location: 46,51
Owner: Greece
Facing: 127
Actor126: 2tnk
Location: 69,42
Owner: Greece
Facing: 191
Actor127: 2tnk
Location: 69,44
Owner: Greece
Facing: 191
Actor128: 2tnk
Location: 70,33
Owner: Greece
Facing: 191
Actor129: 2tnk
Location: 70,35
Owner: Greece
Facing: 223
Actor130: jeep
Location: 67,34
Owner: Greece
Facing: 159
Actor131: jeep
Location: 63,38
Owner: Greece
Facing: 63
Actor132: jeep
Location: 70,43
Owner: Greece
Facing: 191
Actor133: arty
Location: 69,34
Owner: Greece
Facing: 191
Actor134: arty
Location: 68,43
Owner: Greece
Facing: 191
Actor135: 2tnk
Location: 74,52
Owner: Greece
Facing: 95
Actor136: e1
Location: 78,82
Owner: USSR
SubCell: 4
Actor137: e1
Location: 79,82
Owner: USSR
SubCell: 1
Actor138: e1
Location: 79,81
Owner: USSR
SubCell: 4
Rifle1: e1
Location: 76,81
Owner: Germany
Facing: 159
SubCell: 4
Rifle2: e1
Location: 77,81
Owner: Germany
Facing: 159
SubCell: 2
Rifle3: e1
Location: 78,80
Owner: Germany
Facing: 127
SubCell: 3
Rifle4: e1
Location: 80,79
Owner: Germany
Facing: 159
SubCell: 3
Actor143: e1
Location: 48,82
Owner: Germany
Facing: 159
SubCell: 0
Actor144: e3
Location: 48,84
Owner: Germany
Facing: 223
SubCell: 4
Actor145: e1
Location: 64,68
Owner: Germany
Facing: 159
SubCell: 4
Actor146: e1
Location: 64,72
Owner: Germany
Facing: 191
SubCell: 4
Actor147: e3
Location: 83,65
Owner: Germany
Facing: 159
SubCell: 4
Actor148: e3
Location: 87,65
Owner: Germany
Facing: 95
SubCell: 4
Actor149: e3
Location: 93,74
Owner: Germany
Facing: 127
SubCell: 2
Actor150: e3
Location: 95,73
Owner: Germany
Facing: 127
SubCell: 0
Actor151: e3
Location: 97,74
Owner: Germany
Facing: 127
SubCell: 3
Actor152: e1
Location: 61,57
Owner: Germany
SubCell: 4
Actor153: e1
Location: 63,58
Owner: Germany
SubCell: 1
Actor154: e3
Location: 58,62
Owner: Germany
Facing: 191
SubCell: 0
Actor155: e3
Location: 73,51
Owner: Greece
Facing: 127
SubCell: 2
Actor156: e3
Location: 75,52
Owner: Greece
Facing: 63
SubCell: 2
Actor157: e3
Location: 75,50
Owner: Greece
Facing: 95
SubCell: 3
Actor158: e3
Location: 41,85
Owner: Germany
Facing: 223
SubCell: 0
Actor159: c8
Location: 68,64
Owner: Germany
SubCell: 2
Actor160: c8
Location: 67,57
Owner: Germany
SubCell: 1
Actor161: c8
Location: 81,59
Owner: Germany
SubCell: 0
Actor162: c6
Location: 80,62
Owner: Germany
SubCell: 3
Actor163: c5
Location: 78,61
Owner: Germany
SubCell: 1
Actor164: c4
Location: 74,58
Owner: Germany
SubCell: 2
Actor165: c4
Location: 74,60
Owner: Germany
SubCell: 4
Actor166: c3
Location: 70,63
Owner: Germany
SubCell: 4
Actor167: c2
Location: 66,62
Owner: Germany
SubCell: 1
Actor168: c2
Location: 77,60
Owner: Germany
SubCell: 1
Actor169: c2
Location: 74,66
Owner: Germany
SubCell: 4
Actor170: c1
Location: 73,59
Owner: Germany
SubCell: 2
Actor171: c1
Location: 73,65
Owner: Germany
SubCell: 0
Actor172: e1
Location: 76,64
Owner: Germany
Facing: 191
SubCell: 1
Actor173: e1
Location: 68,59
Owner: Germany
Facing: 159
SubCell: 1
Actor174: ss
Location: 74,92
Owner: USSR
Facing: 95
Actor175: ss
Location: 76,96
Owner: USSR
Facing: 95
Actor176: ss
Location: 74,94
Owner: USSR
Facing: 95
Actor177: ss
Location: 79,96
Owner: USSR
Facing: 127
Gunboat1: pt
Location: 112,36
Owner: Greece
Gunboat2: pt
Location: 29,31
Owner: Greece
Gunboat3: pt
Location: 30,50
Owner: Greece
Gunboat4: pt
Location: 41,104
Owner: Greece
Gunboat5: pt
Location: 112,54
Owner: Greece
Gunboat6: pt
Location: 88,29
Owner: Greece
GreeceWarFactory: weap
Owner: Greece
Location: 49,43
Actor253: agun
Owner: Greece
Location: 51,36
TurretFacing: 92
Actor255: hbox
Owner: Greece
Location: 46,36
TurretFacing: 92
Actor256: apwr
Owner: Greece
Location: 43,35
Actor257: apwr
Owner: Greece
Location: 47,33
Actor258: apwr
Owner: Greece
Location: 44,32
Actor259: dome
Owner: Greece
Location: 44,38
Actor260: agun
Owner: Greece
Location: 47,40
TurretFacing: 92
GreeceTent1: tent
Owner: Greece
Location: 45,41
Actor262: hbox
Owner: Greece
Location: 47,44
TurretFacing: 92
GreeceNavalYard: syrd
Owner: Greece
Location: 56,30
Actor264: fix
Owner: Greece
Location: 54,36
Actor265: agun
Owner: Greece
Location: 55,40
TurretFacing: 92
Actor266: hbox
Owner: Greece
Location: 57,40
TurretFacing: 92
Actor267: proc
Owner: Greece
Location: 56,41
Actor268: silo
Owner: Greece
Location: 56,41
Actor269: silo
Owner: Greece
Location: 58,41
Actor270: proc
Owner: Greece
Location: 58,36
Actor271: silo
Owner: Greece
Location: 58,36
Actor272: silo
Owner: Greece
Location: 60,36
GreeceTent2: tent
Owner: Greece
Location: 61,40
Actor274: gun
Owner: Greece
Location: 64,40
TurretFacing: 92
Actor275: gun
Owner: Greece
Location: 64,43
TurretFacing: 92
Actor276: gun
Owner: Greece
Location: 64,46
TurretFacing: 92
Actor277: gun
Owner: Greece
Location: 63,34
TurretFacing: 92
Actor278: gun
Owner: Greece
Location: 63,36
TurretFacing: 92
Actor279: gun
Owner: Greece
Location: 44,46
TurretFacing: 92
Actor280: gun
Owner: Greece
Location: 48,48
TurretFacing: 92
Actor242: apwr
Owner: Greece
Location: 47,36
ScoutRetreat: waypoint
Location: 61,72
Owner: Neutral
SouthEntry: waypoint
Location: 74,105
Owner: Neutral
Unload1: waypoint
Location: 72,90
Owner: Neutral
Unload2: waypoint
Location: 76,90
Owner: Neutral
ScriptedParadrop: waypoint
Location: 74,76
Owner: Neutral
ChurchAmbush: waypoint
Location: 75,58
Owner: Neutral
AmbushMove: waypoint
Location: 75,64
Owner: Neutral
DDEntry: waypoint
Location: 39,27
Owner: Neutral
DDEntryStop: waypoint
Location: 39,29
Owner: Neutral
DDPatrol1Point1: waypoint
Location: 31,43
Owner: Neutral
DDPatrol1Point2: waypoint
Location: 30,89
Owner: Neutral
DDPatrol1Point3: waypoint
Location: 41,99
Owner: Neutral
DDPatrol1Point4: waypoint
Location: 53,88
Owner: Neutral
DDPatrol2Point1: waypoint
Location: 62,29
Owner: Neutral
DDPatrol2Point2: waypoint
Location: 111,29
Owner: Neutral
DDPatrol2Point3: waypoint
Location: 109,71
Owner: Neutral
DDPatrol2Point4: waypoint
Location: 99,82
Owner: Neutral
WaterUnloadEntry1: waypoint
Location: 28,32
Owner: Neutral
WaterUnload1: waypoint
Location: 37,48
Owner: Neutral
WaterUnloadEntry2: waypoint
Location: 28,50
Owner: Neutral
WaterUnload2: waypoint
Location: 41,63
Owner: Neutral
WaterUnloadEntry3: waypoint
Location: 28,72
Owner: Neutral
WaterUnload3: waypoint
Location: 36,80
Owner: Neutral
WaterUnloadEntry4: waypoint
Location: 39,105
Owner: Neutral
WaterUnload4: waypoint
Location: 41,92
Owner: Neutral
WaterUnloadEntry5: waypoint
Location: 114,42
Owner: Neutral
WaterUnload5: waypoint
Location: 99,58
Owner: Neutral
WaterUnloadEntry6: waypoint
Location: 114,37
Owner: Neutral
WaterUnload6: waypoint
Location: 102,38
Owner: Neutral
SovietBase: waypoint
Location: 77,82
Owner: Neutral
BoatRally: waypoint
Location: 78,91
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,139 @@
World:
LuaScript:
Scripts: soviet08b.lua, soviet08b-AI.lua
MissionData:
Briefing: We have detected Allied activity on Elba island. The Allies plan to use this island to stage an attack on the Soviet Empire.\n\nYou must ensure that the island ceases to be under Allied control. Destroy all Allied units on and around the island.\n\nThe local population has been aiding the Allies as well. There is only one punishment for helping the enemy - Death.
BriefingVideo: soviet8.vqa
StartVideo: slntsrvc.vqa
WinVideo: bombrun.vqa
LossVideo: allymorf.vqa
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: Difficulty
Values:
easy: Easy
normal: Normal
hard: Hard
Default: easy
Player:
PlayerResources:
DefaultCash: 5000
CAMERA:
RevealsShroud:
Range: 6c0
LST.Reinforcement:
Inherits: LST
RejectsOrders:
-Buildable:
-Selectable:
RenderSprites:
Image: lst
Interactable:
V01:
-SpawnActorOnDeath@1:
-SpawnActorOnDeath@2:
-SpawnActorOnDeath@3:
SCRIPTEDDROP:
ParatroopersPower:
DisplayBeacon: False
DropItems: E1,E1,E4,E4,E4
AlwaysVisible:
AFLD:
AirstrikePower@parabombs:
Prerequisites: aircraft.soviet
ParatroopersPower@paratroopers:
DropItems: E1,E1,E1,E2,E2
MONEYCRATE:
GiveCashCrateAction:
Amount: 2000
STEK:
Buildable:
Prerequisites: ~disabled
ATEK:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
IRON:
Buildable:
Prerequisites: ~disabled
MSLO:
Buildable:
Prerequisites: ~disabled
TRUK:
Buildable:
Prerequisites: ~disabled
FTRK:
Buildable:
Prerequisites: ~disabled
4TNK:
Buildable:
Prerequisites: ~disabled
QTNK:
Buildable:
Prerequisites: ~disabled
MRJ:
Buildable:
Prerequisites: ~disabled
MIG:
Buildable:
Prerequisites: ~disabled
HELI:
Buildable:
Prerequisites: ~disabled
MSUB:
Buildable:
Prerequisites: ~disabled
CA:
Buildable:
Prerequisites: ~disabled
THF:
Buildable:
Prerequisites: ~disabled
GAP:
Buildable:
Prerequisites: ~disabled
PDOX:
Buildable:
Prerequisites: ~disabled
E7:
Buildable:
Prerequisites: ~disabled
MECH:
Buildable:
Prerequisites: ~disabled
E3:
Buildable:
Prerequisites: ~tent

View File

@@ -0,0 +1,156 @@
--[[
Copyright 2007-2020 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.
]]
IdlingUnits = { }
DDPatrol = { "dd", "dd" }
DDPatrol1Path = { DDPatrol1Point1.Location, DDPatrol1Point2.Location, DDPatrol1Point3.Location, DDPatrol1Point4.Location }
DDPatrol2Path = { DDPatrol2Point1.Location, DDPatrol2Point2.Location, DDPatrol2Point3.Location, DDPatrol2Point4.Location }
ShipArrivePath = { DDEntry.Location, DDEntryStop.Location }
WTransWays =
{
{ WaterUnloadEntry1.Location, WaterUnload1.Location },
{ WaterUnloadEntry2.Location, WaterUnload2.Location },
{ WaterUnloadEntry3.Location, WaterUnload3.Location },
{ WaterUnloadEntry4.Location, WaterUnload4.Location },
{ WaterUnloadEntry5.Location, WaterUnload5.Location },
{ WaterUnloadEntry6.Location, WaterUnload6.Location }
}
WTransUnits =
{
hard = { { "2tnk", "1tnk", "e1", "e3", "e3" }, { "2tnk", "2tnk", "2tnk" } },
normal = { { "1tnk", "1tnk", "e3", "e3", "jeep" }, { "2tnk", "e3", "e3", "jeep" } },
easy = { { "1tnk", "e1", "e1", "e3", "e3" }, { "e3", "e3", "jeep", "jeep" } }
}
WTransDelays =
{
easy = DateTime.Minutes(4),
normal = DateTime.Minutes(2),
hard = DateTime.Minutes(1)
}
AttackGroup = { }
AttackGroupSize = 10
ProductionInterval =
{
easy = DateTime.Seconds(30),
normal = DateTime.Seconds(20),
hard = DateTime.Seconds(10)
}
AlliedInfantry = { "e1", "e3" }
AlliedVehiclesUpgradeDelay = DateTime.Minutes(15)
AlliedVehicleType = "Normal"
AlliedVehicles =
{
Normal = { "jeep", "1tnk", "1tnk" },
Upgraded = { "2tnk", "arty" }
}
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
WTransWaves = function()
local way = Utils.Random(WTransWays)
local units = Utils.Random(WTransUnits)
local attackUnits = Reinforcements.ReinforceWithTransport(Greece, "lst", units , way, { way[2], way[1] })[2]
Utils.Do(attackUnits, function(a)
Trigger.OnAddedToWorld(a, function()
a.AttackMove(SovietBase.Location)
IdleHunt(a)
end)
end)
Trigger.AfterDelay(WTransDelays, WTransWaves)
end
SendAttackGroup = function()
if #AttackGroup < AttackGroupSize then
return
end
Utils.Do(AttackGroup, function(unit)
if not unit.IsDead then
Trigger.OnIdle(unit, unit.Hunt)
end
end)
AttackGroup = { }
end
ProduceInfantry = function()
if (GreeceTent1.IsDead or GreeceTent1.Owner ~= Greece) and (GreeceTent2.IsDead or GreeceTent2.Owner ~= Greece) then
return
end
Greece.Build({ Utils.Random(AlliedInfantry) }, function(units)
table.insert(AttackGroup, units[1])
SendAttackGroup()
Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceInfantry)
end)
end
ProduceVehicles = function()
if GreeceWarFactory.IsDead or GreeceWarFactory.Owner ~= Greece then
return
end
Greece.Build({ Utils.Random(AlliedVehicles[AlliedVehicleType]) }, function(units)
table.insert(AttackGroup, units[1])
SendAttackGroup()
Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceVehicles)
end)
end
BringDDPatrol = function(patrolPath)
local units = Reinforcements.Reinforce(Greece, DDPatrol, ShipArrivePath)
Utils.Do(units, function(unit)
Trigger.OnIdle(unit, function(patrols)
patrols.Patrol(patrolPath, true, 200)
end)
end)
Trigger.OnAllKilled(units, function()
if GreeceNavalYard.IsDead then
return
else
if Map.LobbyOption("difficulty") == "easy" then
Trigger.AfterDelay(DateTime.Minutes(7), function() BringDDPatrol(patrolPath) end)
else
Trigger.AfterDelay(DateTime.Minutes(4), function() BringDDPatrol(patrolPath) end)
end
end
end)
end
ActivateAI = function()
local difficulty = Map.LobbyOption("difficulty")
WTransUnits = WTransUnits[difficulty]
WTransDelays = WTransDelays[difficulty]
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)
Trigger.AfterDelay(DateTime.Minutes(3), WTransWaves)
Trigger.AfterDelay(AlliedVehiclesUpgradeDelay, function() AlliedVehicleType = "Upgraded" end)
ProduceInfantry()
ProduceVehicles()
BringDDPatrol(DDPatrol1Path)
Trigger.AfterDelay(DateTime.Minutes(1), function() BringDDPatrol(DDPatrol2Path) end)
end

View File

@@ -0,0 +1,174 @@
--[[
Copyright 2007-2020 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.
]]
AlliedScouts = { Jeep1, Jeep2, Rifle1, Rifle2, Rifle3, Rifle4 }
SovReinforcements =
{
one =
{
actors = { "e1", "e1", "e1", "e1", "e1" },
entryPath = { SouthEntry.Location, Unload1.Location + CVec.New(1, 0) },
exitPath = { SouthEntry.Location },
},
two =
{
actors = { "e4", "e4", "e1", "e1", "e1" },
entryPath = { SouthEntry.Location, Unload2.Location + CVec.New(0, 1) },
exitPath = { SouthEntry.Location }
},
mammoth =
{
actors = { "4tnk" },
entryPath = { SouthEntry.Location, Unload1.Location + CVec.New(0, 1) },
exitPath = { SouthEntry.Location }
}
}
Village = { Church, Civ1, Civ2, Civ3, Civ4, Civ5, Civ6, Civ7, Civ8 }
ActivateAIDelay = DateTime.Seconds(45)
FirstReinforcementTrigger = function()
Trigger.AfterDelay(DateTime.Seconds(30), function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
local reinforcement = SovReinforcements.one
Reinforcements.ReinforceWithTransport(USSR, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath)
end)
end
SecondReinforcementTrigger = function()
Trigger.AfterDelay(DateTime.Seconds(60), function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
local reinforcement = SovReinforcements.two
Reinforcements.ReinforceWithTransport(USSR, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath)
end)
end
AddParadropReinforcementTrigger = function()
Trigger.AfterDelay(DateTime.Seconds(90), function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
ScriptedDrop.TargetParatroopers(ScriptedParadrop.CenterPosition, Angle.New(0))
end)
end
ChurchAmbushTrigger = function()
if not AmbushSwitch then
local hiding = Reinforcements.Reinforce(Germany, { 'e1', 'e1', 'e1', 'e1', 'e1', 'e1', 'e1', 'e3', 'e3', 'e3' }, { ChurchAmbush.Location, AmbushMove.Location }, 0)
Utils.Do(hiding, IdleHunt)
end
AmbushSwitch = true
end
Trigger.OnKilled(Church, function()
Actor.Create("moneycrate", true, { Owner = USSR, Location = ChurchAmbush.Location })
end)
DestroyVillage = function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
USSR.MarkCompletedObjective(DestroyVillageObjective)
local reinforcement = SovReinforcements.mammoth
Reinforcements.ReinforceWithTransport(USSR, "lst.reinforcement", reinforcement.actors, reinforcement.entryPath, reinforcement.exitPath)
end
AddRetreatTrigger = function()
Trigger.OnEnteredProximityTrigger(Jeep2.CenterPosition, WDist.FromCells(12), function(actor, id)
if actor.Owner == USSR and actor.Type == "barr" then
AlliedScouts = Utils.Where(AlliedScouts, function(scout) return not scout.IsDead end)
local removed
Utils.Do(AlliedScouts, function(scout)
if scout.Type == "e1" and not removed then
removed = true
else
scout.Stop()
scout.Move(ScoutRetreat.Location, 1)
end
end)
Trigger.RemoveProximityTrigger(id)
end
end)
end
BoatAttack = function(boat)
if boat.IsDead then
return
else
boat.AttackMove(BoatRally.Location)
end
end
Tick = function()
Greece.Cash = 1000
if Greece.HasNoRequiredUnits() and Germany.HasNoRequiredUnits() then
USSR.MarkCompletedObjective(KillAll)
end
if USSR.HasNoRequiredUnits() then
Greece.MarkCompletedObjective(BeatUSSR)
end
end
WorldLoaded = function()
USSR = Player.GetPlayer("USSR")
Germany = Player.GetPlayer("Germany")
Greece = Player.GetPlayer("Greece")
Trigger.OnObjectiveAdded(USSR, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
KillAll = USSR.AddObjective("Destroy all Allied units and structures.")
DestroyVillageObjective = USSR.AddObjective("Destroy the village of Allied sympathizers.", "Secondary", false)
BeatUSSR = Greece.AddObjective("Defeat the Soviet forces.")
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)
FirstReinforcementTrigger()
SecondReinforcementTrigger()
AddParadropReinforcementTrigger()
AddRetreatTrigger()
ScriptedDrop = Actor.Create("scripteddrop", false, { Owner = USSR })
OnAnyDamaged(Village, ChurchAmbushTrigger)
Trigger.OnAllRemovedFromWorld(Village, DestroyVillage)
Camera.Position = SovietBase.CenterPosition
Trigger.AfterDelay(ActivateAIDelay, ActivateAI)
Trigger.AfterDelay(DateTime.Minutes(2), function() BoatAttack(Gunboat1) end)
Trigger.AfterDelay(DateTime.Minutes(5), function() BoatAttack(Gunboat2) end)
Trigger.AfterDelay(DateTime.Minutes(7), function() BoatAttack(Gunboat3) end)
Trigger.AfterDelay(DateTime.Minutes(10), function() BoatAttack(Gunboat4) end)
Trigger.AfterDelay(DateTime.Minutes(12), function() BoatAttack(Gunboat5) end)
Trigger.AfterDelay(DateTime.Minutes(14), function() BoatAttack(Gunboat6) end)
end
OnAnyDamaged = function(actors, func)
Utils.Do(actors, function(actor)
Trigger.OnDamaged(actor, func)
end)
end