Add Aftermath mission Shock Therapy

This commit is contained in:
Smittytron
2020-12-19 22:31:34 -06:00
committed by reaperrr
parent 3e7665146a
commit 514652bb6a
6 changed files with 1376 additions and 0 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,998 @@
MapFormat: 11
RequiresMod: ra
Title: Shock Therapy
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 128,128
Bounds: 26,32,73,67
Visibility: MissionSelector
Categories: Mission
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: england
PlayerReference@Spain:
Name: Spain
Faction: allies
Color: F6D679
Allies: Greece, GoodGuy
Enemies: USSR
PlayerReference@Greece:
Name: Greece
Faction: allies
Color: E2E6F6
Allies: Spain, GoodGuy
Enemies: USSR
PlayerReference@GoodGuy:
Name: GoodGuy
Faction: allies
Color: E2E6F6
Allies: Spain, Greece
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, GoodGuy, Spain
Actors:
Actor0: sbag
Location: 26,39
Owner: Greece
Actor1: sbag
Location: 27,39
Owner: Greece
Actor2: sbag
Location: 28,39
Owner: Greece
Actor3: sbag
Location: 29,39
Owner: Greece
Actor4: sbag
Location: 30,39
Owner: Greece
Actor5: sbag
Location: 26,40
Owner: Greece
Actor6: sbag
Location: 30,40
Owner: Greece
Actor7: sbag
Location: 31,40
Owner: Greece
Actor8: sbag
Location: 26,41
Owner: Greece
Actor9: sbag
Location: 31,41
Owner: Greece
Actor10: sbag
Location: 32,41
Owner: Greece
Actor11: sbag
Location: 26,42
Owner: Greece
Actor12: sbag
Location: 32,42
Owner: Greece
Actor13: sbag
Location: 33,42
Owner: Greece
Actor14: sbag
Location: 34,42
Owner: Greece
Actor15: sbag
Location: 35,42
Owner: Greece
Actor16: sbag
Location: 26,43
Owner: Greece
Actor17: sbag
Location: 35,43
Owner: Greece
Actor18: sbag
Location: 36,43
Owner: Greece
Actor19: sbag
Location: 37,43
Owner: Greece
Actor20: sbag
Location: 26,44
Owner: Greece
Actor21: sbag
Location: 36,44
Owner: Greece
Actor22: sbag
Location: 37,44
Owner: Greece
Actor23: sbag
Location: 26,45
Owner: Greece
Actor24: sbag
Location: 36,45
Owner: Greece
Actor25: sbag
Location: 37,45
Owner: Greece
Actor26: sbag
Location: 26,46
Owner: Greece
Actor27: sbag
Location: 26,47
Owner: Greece
Actor28: sbag
Location: 26,48
Owner: Greece
Actor29: sbag
Location: 26,49
Owner: Greece
Actor30: sbag
Location: 36,49
Owner: Greece
Actor31: sbag
Location: 37,49
Owner: Greece
Actor32: sbag
Location: 26,50
Owner: Greece
Actor33: sbag
Location: 36,50
Owner: Greece
Actor34: sbag
Location: 37,50
Owner: Greece
Actor35: sbag
Location: 26,51
Owner: Greece
Actor36: sbag
Location: 36,51
Owner: Greece
Actor37: sbag
Location: 37,51
Owner: Greece
Actor38: sbag
Location: 26,52
Owner: Greece
Actor39: sbag
Location: 37,52
Owner: Greece
Actor40: sbag
Location: 26,53
Owner: Greece
Actor41: sbag
Location: 36,53
Owner: Greece
Actor42: sbag
Location: 37,53
Owner: Greece
Actor43: sbag
Location: 26,54
Owner: Greece
Actor44: sbag
Location: 36,54
Owner: Greece
Actor45: sbag
Location: 26,55
Owner: Greece
Actor46: sbag
Location: 36,55
Owner: Greece
Actor47: sbag
Location: 26,56
Owner: Greece
Actor48: sbag
Location: 36,56
Owner: Greece
Actor49: sbag
Location: 26,57
Owner: Greece
Actor50: sbag
Location: 27,57
Owner: Greece
Actor51: sbag
Location: 28,57
Owner: Greece
Actor52: sbag
Location: 29,57
Owner: Greece
Actor53: sbag
Location: 30,57
Owner: Greece
Actor54: sbag
Location: 31,57
Owner: Greece
Actor55: sbag
Location: 32,57
Owner: Greece
Actor56: sbag
Location: 33,57
Owner: Greece
Health: 100
Actor57: sbag
Location: 34,57
Owner: Greece
Actor58: sbag
Location: 35,57
Owner: Greece
Actor59: sbag
Location: 36,57
Owner: Greece
Actor60: healcrate
Location: 70,61
Owner: Greece
Actor61: sbag
Location: 72,85
Owner: Greece
Actor62: sbag
Location: 73,85
Owner: Greece
Actor63: sbag
Location: 74,85
Owner: Greece
Actor64: sbag
Location: 75,85
Owner: Greece
Actor65: sbag
Location: 76,85
Owner: Greece
Actor66: sbag
Location: 77,85
Owner: Greece
Actor67: sbag
Location: 78,85
Owner: Greece
Actor68: sbag
Location: 79,85
Owner: Greece
Actor69: sbag
Location: 80,85
Owner: Greece
Actor70: sbag
Location: 81,85
Owner: Greece
Actor71: sbag
Location: 87,85
Owner: Greece
Actor72: sbag
Location: 88,85
Owner: Greece
Actor73: sbag
Location: 89,85
Owner: Greece
Actor74: sbag
Location: 71,86
Owner: Greece
Actor75: sbag
Location: 72,86
Owner: Greece
Actor76: sbag
Location: 79,86
Owner: Greece
Actor77: sbag
Location: 80,86
Owner: Greece
Actor78: sbag
Location: 81,86
Owner: Greece
Actor79: sbag
Location: 87,86
Owner: Greece
Actor80: sbag
Location: 88,86
Owner: Greece
Actor81: sbag
Location: 89,86
Owner: Greece
Actor82: sbag
Location: 71,87
Owner: Greece
Actor83: sbag
Location: 89,87
Owner: Greece
Actor84: sbag
Location: 71,88
Owner: Greece
Actor85: sbag
Location: 89,88
Owner: Greece
Actor86: sbag
Location: 71,89
Owner: Greece
Actor87: sbag
Location: 72,89
Owner: Greece
Actor88: sbag
Location: 89,89
Owner: Greece
Actor89: sbag
Location: 71,90
Owner: Greece
Actor90: sbag
Location: 72,90
Owner: Greece
Actor91: sbag
Location: 89,90
Owner: Greece
Actor92: healcrate
Location: 57,91
Owner: Greece
Actor93: sbag
Location: 71,91
Owner: Greece
Actor94: sbag
Location: 72,91
Owner: Greece
Actor95: sbag
Location: 89,91
Owner: Greece
Actor96: sbag
Location: 89,92
Owner: Greece
Actor97: sbag
Location: 89,93
Owner: Greece
Actor98: sbag
Location: 71,94
Owner: Greece
Actor99: sbag
Location: 72,94
Owner: Greece
Actor100: sbag
Location: 89,94
Owner: Greece
Actor101: sbag
Location: 71,95
Owner: Greece
Actor102: sbag
Location: 72,95
Owner: Greece
Actor103: sbag
Location: 89,95
Owner: Greece
Actor104: sbag
Location: 71,96
Owner: Greece
Actor105: sbag
Location: 72,96
Owner: Greece
Actor106: sbag
Location: 89,96
Owner: Greece
Actor107: sbag
Location: 71,97
Owner: Greece
Actor108: sbag
Location: 89,97
Owner: Greece
Actor109: sbag
Location: 71,98
Owner: Greece
Actor110: sbag
Location: 72,98
Owner: Greece
Actor111: sbag
Location: 73,98
Owner: Greece
Actor112: sbag
Location: 74,98
Owner: Greece
Actor113: sbag
Location: 75,98
Owner: Greece
Actor114: sbag
Location: 76,98
Owner: Greece
Actor115: sbag
Location: 77,98
Owner: Greece
Actor116: sbag
Location: 78,98
Owner: Greece
Actor117: sbag
Location: 79,98
Owner: Greece
Actor118: sbag
Location: 80,98
Owner: Greece
Actor119: sbag
Location: 81,98
Owner: Greece
Actor120: sbag
Location: 82,98
Owner: Greece
Actor121: sbag
Location: 83,98
Owner: Greece
Actor122: sbag
Location: 84,98
Owner: Greece
Actor123: sbag
Location: 85,98
Owner: Greece
Actor124: sbag
Location: 86,98
Owner: Greece
Actor125: sbag
Location: 87,98
Owner: Greece
Actor126: sbag
Location: 88,98
Owner: Greece
Actor127: sbag
Location: 89,98
Owner: Greece
Actor128: t03
Location: 57,79
Owner: Neutral
Actor129: t05
Location: 55,92
Owner: Neutral
Actor130: t02
Location: 83,58
Owner: Neutral
Actor131: t10
Location: 60,47
Owner: Neutral
Actor132: t16
Location: 63,75
Owner: Neutral
Actor133: tc04
Location: 58,97
Owner: Neutral
Actor134: tc05
Location: 48,44
Owner: Neutral
Actor135: tc05
Location: 30,75
Owner: Neutral
Actor136: tc04
Location: 65,36
Owner: Neutral
Actor137: tc04
Location: 46,73
Owner: Neutral
Actor138: tc03
Location: 37,71
Owner: Neutral
Actor139: tc03
Location: 76,74
Owner: Neutral
Actor140: tc03
Location: 51,43
Owner: Neutral
Actor141: tc02
Location: 78,74
Owner: Neutral
Actor142: tc02
Location: 83,57
Owner: Neutral
Actor143: tc01
Location: 56,97
Owner: Neutral
Actor144: tc01
Location: 38,79
Owner: Neutral
Actor145: tc01
Location: 45,53
Owner: Neutral
Actor146: t17
Location: 45,90
Owner: Neutral
Actor147: t17
Location: 65,49
Owner: Neutral
Actor148: t16
Location: 56,91
Owner: Neutral
Actor149: t16
Location: 69,85
Owner: Neutral
Actor150: t15
Location: 51,47
Owner: Neutral
Actor151: t15
Location: 53,77
Owner: Neutral
Actor152: t14
Location: 85,76
Owner: Neutral
Actor153: t14
Location: 50,85
Owner: Neutral
Actor154: t14
Location: 59,76
Owner: Neutral
Actor155: t13
Location: 78,80
Owner: Neutral
Actor156: t12
Location: 30,76
Owner: Neutral
Actor157: t11
Location: 28,37
Owner: Neutral
Actor158: t10
Location: 50,66
Owner: Neutral
Actor159: t08
Location: 38,70
Owner: Neutral
Actor160: t07
Location: 60,83
Owner: Neutral
Actor161: t06
Location: 36,70
Owner: Neutral
Actor162: t05
Location: 46,75
Owner: Neutral
Actor163: t03
Location: 54,65
Owner: Neutral
Actor164: t02
Location: 27,64
Owner: Neutral
Actor165: t01
Location: 49,61
Owner: Neutral
Actor166: tc05
Location: 73,57
Owner: Neutral
Actor167: tc04
Location: 72,59
Owner: Neutral
Actor168: t17
Location: 73,60
Owner: Neutral
Actor169: t16
Location: 59,56
Owner: Neutral
Actor170: tc02
Location: 86,51
Owner: Neutral
Actor171: tc02
Location: 76,35
Owner: Neutral
Actor172: tc02
Location: 85,78
Owner: Neutral
Actor173: mine
Location: 64,92
Owner: Neutral
Actor174: mine
Location: 68,96
Owner: Neutral
Actor175: tc05
Location: 79,66
Owner: Neutral
Actor176: tc04
Location: 75,72
Owner: Neutral
Actor177: tc03
Location: 40,80
Owner: Neutral
Actor178: tc04
Location: 58,54
Owner: Neutral
Actor179: tc05
Location: 54,93
Owner: Neutral
Actor180: tc03
Location: 26,37
Owner: Neutral
Actor181: t10
Location: 27,79
Owner: Neutral
Actor182: t08
Location: 29,80
Owner: Neutral
Actor183: tc04
Location: 26,83
Owner: Neutral
Actor184: tc03
Location: 39,82
Owner: Neutral
Actor185: tc04
Location: 44,89
Owner: Neutral
Actor186: tc01
Location: 49,84
Owner: Neutral
Actor187: t16
Location: 46,97
Owner: Neutral
Actor188: t15
Location: 51,88
Owner: Neutral
Actor189: t14
Location: 28,72
Owner: Neutral
Actor190: t12
Location: 53,54
Owner: Neutral
Actor191: t11
Location: 34,65
Owner: Neutral
Actor192: t12
Location: 28,64
Owner: Neutral
Actor193: t12
Location: 35,66
Owner: Neutral
SWVillage7: v04
Location: 30,96
Owner: Spain
SWVillage4: v03
Location: 33,91
Owner: Spain
SWVillage2: v02
Location: 34,87
Owner: Spain
SWVillage3: v01
Location: 29,92
Owner: Spain
SWVillage6: v07
Location: 33,94
Owner: Spain
SWVillage5: v08
Location: 38,91
Owner: Spain
SWVillage1: v10
Location: 30,88
Owner: Spain
SouthCabin: v11
Location: 57,91
Owner: Spain
NEVillage7: v10
Location: 78,44
Owner: Spain
NEVillage8: v11
Location: 81,50
Owner: Spain
NorthCabin: v08
Location: 70,61
Owner: Spain
NEVillage3: v07
Location: 79,41
Owner: Spain
NEVillage4: v06
Location: 85,46
Owner: Spain
NEVillage2: v05
Location: 84,42
Owner: Spain
NEVillage5: v04
Location: 76,41
Owner: Spain
NEVillage9: v03
Location: 85,49
Owner: Spain
NEVillage6: v02
Location: 81,46
Owner: Spain
NEVillage1: v01
Location: 80,44
Owner: Spain
Health: 53
SETent1: tent
Location: 80,95
Owner: Greece
NWTent2: tent
Location: 33,54
Owner: GoodGuy
Actor214: hosp
Location: 86,87
Owner: Greece
NWAdvPower: apwr
Location: 28,50
Owner: GoodGuy
Actor216: apwr
Location: 79,87
Owner: Greece
NWTent1: tent
Location: 30,54
Owner: GoodGuy
SETent2: tent
Location: 77,95
Owner: Greece
NWHospital: hosp
Location: 28,45
Owner: GoodGuy
Actor220: v19
Location: 42,96
Owner: Greece
Actor221: v19
Location: 44,94
Owner: Greece
Actor222: v19
Location: 63,49
Owner: Neutral
Actor223: v19
Location: 67,50
Owner: Neutral
Actor224: brl3
Location: 62,48
Owner: Spain
Actor225: barl
Location: 65,49
Owner: Spain
Actor226: barl
Location: 68,49
Owner: Spain
Actor227: brl3
Location: 44,95
Owner: Greece
Actor228: barl
Location: 63,48
Owner: Spain
Actor229: brl3
Location: 67,49
Owner: Spain
Actor230: brl3
Location: 41,98
Owner: Greece
Actor231: brl3
Location: 43,97
Owner: Greece
Actor232: brl3
Location: 66,50
Owner: Spain
Actor233: brl3
Location: 64,48
Owner: Spain
Actor234: barl
Location: 46,92
Owner: Greece
Actor235: barl
Location: 69,49
Owner: Spain
Actor236: barl
Location: 64,49
Owner: Spain
Actor237: barl
Location: 66,49
Owner: Spain
Actor238: barl
Location: 68,48
Owner: Spain
Actor239: barl
Location: 44,96
Owner: Greece
Actor240: barl
Location: 45,93
Owner: Greece
Actor241: barl
Location: 42,97
Owner: Greece
Actor242: barl
Location: 43,96
Owner: Greece
Actor243: barl
Location: 45,94
Owner: Greece
Actor244: barl
Location: 42,98
Owner: Greece
Actor245: barl
Location: 41,97
Owner: Greece
RadarDome: dome
Location: 28,40
Owner: GoodGuy
Actor247: proc
Location: 73,88
Owner: Greece
Actor248: silo
Location: 77,86
Owner: Greece
Actor249: silo
Location: 77,87
Owner: Greece
Actor250: silo
Location: 76,86
Owner: Greece
Actor251: silo
Location: 76,87
Owner: Greece
Actor252: silo
Location: 75,86
Owner: Greece
Actor253: silo
Location: 75,87
Owner: Greece
Actor254: apwr
Location: 86,95
Owner: Greece
WarFactory: weap
Location: 73,95
Owner: Greece
SouthPill1: pbox
Location: 79,81
Owner: Greece
SouthPill2: pbox
Location: 85,78
Owner: Greece
NorthPill1: pbox
Location: 46,53
Owner: GoodGuy
NorthPill2: pbox
Location: 51,47
Owner: GoodGuy
Actor260: powr
Location: 83,95
Owner: Greece
Actor262: arty
Location: 79,68
Owner: Greece
Facing: 63
Actor263: arty
Location: 79,76
Owner: Greece
Facing: 63
Ltnk1: 1tnk
Location: 87,90
Owner: Greece
Facing: 31
Ltnk2: 1tnk
Location: 87,91
Owner: Greece
Facing: 31
Ltnk3: 1tnk
Location: 87,92
Owner: Greece
Facing: 31
Jeep3: jeep
Location: 88,92
Owner: Greece
Facing: 31
Jeep2: jeep
Location: 88,91
Owner: Greece
Facing: 31
Jeep1: jeep
Location: 88,90
Owner: Greece
Facing: 31
Actor270: e1
Location: 38,45
Owner: Greece
Health: 89
Facing: 191
SubCell: 1
Actor271: e1
Location: 87,84
Owner: Greece
SubCell: 4
Actor272: e1
Location: 81,84
Owner: Greece
SubCell: 3
Actor273: e1
Location: 38,49
Owner: Greece
Facing: 191
SubCell: 1
LZ: waypoint
Location: 51,72
Owner: Neutral
WaterEntryNW: waypoint
Location: 42,32
Owner: Neutral
WaterLandingNW: waypoint
Location: 42,42
Owner: Neutral
WaterEntryNE: waypoint
Location: 70,32
Owner: Neutral
WaterLandingNE: waypoint
Location: 73,41
Owner: Neutral
WaterEntrySE: waypoint
Location: 98,78
Owner: Neutral
WaterLandingSE: waypoint
Location: 91,78
Owner: Neutral
SouthwestLZ: waypoint
Location: 39,97
Owner: Neutral
CivRallySE: waypoint
Location: 81,92
Owner: Neutral
CivRallyNW: waypoint
Location: 31,47
Owner: Neutral
NWSpawn1: waypoint
Location: 30,55
Owner: Neutral
NWSpawn2: waypoint
Location: 33,55
Owner: Neutral
NEHermitSpawn: waypoint
Location: 70,61
Owner: Neutral
SouthHermitSpawn: waypoint
Location: 57,91
Owner: Neutral
NECivSpawn1: waypoint
Location: 80,45
Owner: Neutral
NECivSpawn2: waypoint
Location: 84,42
Owner: Neutral
NECivSpawn3: waypoint
Location: 80,41
Owner: Neutral
NECivSpawn4: waypoint
Location: 86,46
Owner: Neutral
NECivSpawn5: waypoint
Location: 76,42
Owner: Neutral
NECivSpawn6: waypoint
Location: 82,47
Owner: Neutral
NECivSpawn9: waypoint
Location: 85,50
Owner: Neutral
NECivSpawn8: waypoint
Location: 81,50
Owner: Neutral
NECivSpawn7: waypoint
Location: 78,44
Owner: Neutral
SWCivSpawn3: waypoint
Location: 29,93
Owner: Neutral
SWCivSpawn4: waypoint
Location: 33,92
Owner: Neutral
SWCivSpawn6: waypoint
Location: 33,94
Owner: Neutral
SWCivSpawn2: waypoint
Location: 35,88
Owner: Neutral
SWCivSpawn5: waypoint
Location: 38,91
Owner: Neutral
SWCivSpawn1: waypoint
Location: 30,88
Owner: Neutral
SWCivSpawn7: waypoint
Location: 30,97
Owner: Neutral
SEBaseBombingRun: waypoint
Location: 78,87
Owner: Neutral
MSubEntry: waypoint
Location: 98,57
Owner: Neutral
MSubStop: waypoint
Location: 94,73
Owner: Neutral
SEShockDrop: waypoint
Location: 83,79
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,30 @@
World:
LuaScript:
Scripts: shock-therapy.lua
MissionData:
WinVideo: sovtstar.vqa
LossVideo: sovcemet.vqa
Briefing: A small border town has been voicing support for the Allied cause. These people are no longer soviets, but enemies to our great empire. As enemies, they must be destroyed.\n\nTake Stalin's elite shock troopers and show them the iron might of the Soviet army. No doubt, the rabble will seek help from the minute allied influence in the area.\n\nWhatever pathetic support they can muster, it will not be enough. Crush them all -- let nothing stop you.
SHOCKDROP:
ParatroopersPower:
DisplayBeacon: False
DropItems: SHOK, SHOK, SHOK, SHOK, SHOK
AlwaysVisible:
LST.Reinforcement:
Inherits: LST
RejectsOrders:
-Buildable:
-Selectable:
RenderSprites:
Image: lst
Interactable:
powerproxy.parabombs:
AirstrikePower:
DisplayBeacon: False
HEALCRATE:
Crate:
Lifetime: 0

View File

@@ -0,0 +1,347 @@
--[[
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.
]]
Cabins = { NorthCabin, SouthCabin }
NWFootprintTrigger = { CPos.New(41, 49), CPos.New(41, 48), CPos.New(41, 47), CPos.New(41, 46), CPos.New(41, 45), CPos.New(41, 44) }
SWFootprintTrigger = { CPos.New(26, 77), CPos.New(27, 77), CPos.New(28, 77), CPos.New(29, 77), CPos.New(33, 77), CPos.New(34, 77), CPos.New(35, 77), CPos.New(36, 77), CPos.New(37, 77), CPos.New(38, 77), CPos.New(39, 77) }
SEFootprintTrigger = { CPos.New(75, 83), CPos.New(76, 83), CPos.New(77, 83), CPos.New(78, 83), CPos.New(79, 83), CPos.New(80, 83), CPos.New(81, 83), CPos.New(82, 83), CPos.New(83, 83), CPos.New(84, 83), CPos.New(85, 83), CPos.New(86, 83), CPos.New(87, 83), CPos.New(88, 83), CPos.New(89, 83) }
NWWaterPath = { WaterEntryNW.Location, WaterLandingNW.Location }
NEWaterPath = { WaterEntryNE.Location, WaterLandingNE.Location }
SEWaterPath = { WaterEntrySE.Location, WaterLandingSE.Location }
NWWaterUnits = { "dtrk", "ttnk", "ttnk", "ttnk", "3tnk" }
NEWaterUnits = { "dtrk", "v2rl", "e6", "e6", "e6" }
SEWaterUnits = { "ttnk", "ttnk", "shok", "shok", "shok" }
NorthPillboxes = { NorthPill1, NorthPill2 }
SouthPillboxes = { SouthPill1, SouthPill2 }
VehicleSquad1 = { Ltnk1, Jeep1 }
VehicleSquad2 = { Ltnk2, Jeep2 }
VehicleSquad3 = { Ltnk3, Jeep3 }
CivSquads = { { "c1", "c3", "c7", "c10" }, { "c2", "c4", "c6", "c11" }, { "c11", "c10", "c9" }, { "c8", "c7", "c6" }, { "c5", "c4", "c3" }, { "c5", "c10" }, { "c4", "c2" }, { "c3", "c5" }, { "c9", "c11" } }
AlliedInfantry = { "e1", "e1", "e1", "e3" }
AttackGroupSize = 4
InfantryDelay = DateTime.Seconds(10)
IdlingUnits = { }
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
MissionStart = function()
LZCamera = Actor.Create("camera", true, { Owner = USSR, Location = LZ.Location })
ShockDrop.TargetParatroopers(LZ.CenterPosition, Angle.New(508))
Trigger.AfterDelay(DateTime.Seconds(1), function()
ShockDrop.TargetParatroopers(LZ.CenterPosition, Angle.New(520))
end)
Trigger.AfterDelay(DateTime.Seconds(4), function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
end)
Trigger.AfterDelay(DateTime.Seconds(10), function()
LZCamera.Destroy()
TroopsArrived = true
end)
InfantryProduction()
end
InfantryProduction = function()
if (SETent1.IsDead or SETent1.Owner ~= Greece) and (SETent2.IsDead or SETent2.Owner ~= Greece) then
return
end
local toBuild = { Utils.Random(AlliedInfantry) }
Greece.Build(toBuild, function(unit)
IdlingUnits[#IdlingUnits + 1] = unit[1]
Trigger.AfterDelay(InfantryDelay, InfantryProduction)
if #IdlingUnits >= (AttackGroupSize * 1.5) then
SendAttack()
end
end)
end
SendAttack = function()
local units = { }
for i = 0, AttackGroupSize, 1 do
local number = Utils.RandomInteger(1, #IdlingUnits)
if IdlingUnits[number] and not IdlingUnits[number].IsDead then
units[i] = IdlingUnits[number]
table.remove(IdlingUnits, number)
end
end
Utils.Do(units, function(unit)
if not unit.IsDead then
IdleHunt(unit)
end
end)
end
DomeCaptured = false
MissionTriggers = function()
local neFootTriggered
Trigger.OnEnteredProximityTrigger(NECivSpawn1.CenterPosition, WDist.FromCells(9), function(actor, id)
if actor.Owner == USSR and actor.Type ~= "badr" and not neFootTriggered then
Trigger.RemoveFootprintTrigger(id)
neFootTriggered = true
local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = USSR })
proxy.TargetAirstrike(NECivSpawn6.CenterPosition, Angle.SouthEast)
proxy.Destroy()
Utils.Do(VehicleSquad1, function(a)
if not a.IsDead then
a.AttackMove(NECivSpawn1.Location)
IdleHunt(a)
end
end)
local neVillageCam = Actor.Create("camera", true, { Owner = USSR, Location = NECivSpawn1.Location })
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
local neTroops = Reinforcements.ReinforceWithTransport(USSR, "lst.reinforcement", NEWaterUnits, NEWaterPath, { NEWaterPath[1] })[2]
Trigger.OnAllRemovedFromWorld(Utils.Where(neTroops, function(a) return a.Type == "e6" end), function()
if not DomeCaptured then
USSR.MarkFailedObjective(CaptureDome)
end
end)
Trigger.AfterDelay(DateTime.Seconds(2), function()
if not NEVillage1.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn1.Location, CivRallyNW.Location }, 0)
end
if not NEVillage2.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn2.Location, CivRallyNW.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(3), function()
if not NEVillage3.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn3.Location, CivRallyNW.Location }, 0)
end
if not NEVillage4.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn4.Location, CivRallyNW.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(4), function()
if not NEVillage5.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn5.Location, CivRallyNW.Location }, 0)
end
if not NEVillage6.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn6.Location, CivRallySE.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(5), function()
if not NEVillage7.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn7.Location, CivRallySE.Location }, 0)
end
if not NEVillage8.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn8.Location, CivRallySE.Location }, 0)
end
if not NEVillage9.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NECivSpawn9.Location, CivRallySE.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(10), function()
neVillageCam.Destroy()
end)
end
end)
Trigger.OnDamaged(NorthCabin, function()
if not NorthCabinDamaged then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { NEHermitSpawn.Location, CivRallyNW.Location }, 1)
NorthCabinDamaged = true
end
end)
Trigger.OnDamaged(SouthCabin, function()
if not SouthCabinDamaged then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SouthHermitSpawn.Location, CivRallySE.Location }, 1)
SouthCabinDamaged = true
end
end)
Trigger.OnAllKilled(Cabins, function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
ShockDrop.TargetParatroopers(LZ.CenterPosition, Angle.SouthWest)
end)
Trigger.OnAllKilled(NorthPillboxes, function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
ShockDrop.TargetParatroopers(LZ.CenterPosition, Angle.South)
end)
local nwFootTriggered
Trigger.OnEnteredFootprint(NWFootprintTrigger, function(actor, id)
if actor.Owner == USSR and not nwFootTriggered then
Trigger.RemoveFootprintTrigger(id)
nwFootTriggered = true
local nwBarracks1 = Reinforcements.Reinforce(GoodGuy, AlliedInfantry, { NWSpawn1.Location }, 0)
Utils.Do(nwBarracks1, IdleHunt)
local nwBarracks2 = Reinforcements.Reinforce(GoodGuy, AlliedInfantry, { NWSpawn2.Location }, 0)
Utils.Do(nwBarracks2, IdleHunt)
Utils.Do(VehicleSquad2, function(a)
if not a.IsDead then
a.AttackMove(SWCivSpawn1.Location)
IdleHunt(a)
end
end)
end
end)
Trigger.OnKilled(RadarDome, function()
if not DomeCaptured then
USSR.MarkFailedObjective(CaptureDome)
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
ShockDrop.TargetParatroopers(CivRallyNW.CenterPosition, Angle.West)
end
end)
Trigger.OnCapture(RadarDome, function()
DomeCaptured = true
USSR.MarkCompletedObjective(CaptureDome)
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
local nwTroops = Reinforcements.ReinforceWithTransport(USSR, "lst.reinforcement", NWWaterUnits, NWWaterPath, { NWWaterPath[1] })[2]
end)
Trigger.OnAllKilled(SouthPillboxes, function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
local seTroops = Reinforcements.ReinforceWithTransport(USSR, "lst.reinforcement", SEWaterUnits, SEWaterPath, { SEWaterPath[1] })[2]
Trigger.AfterDelay(DateTime.Seconds(10), function()
Media.PlaySpeechNotification(USSR, "ReinforcementsArrived")
Reinforcements.Reinforce(USSR, { "msub", "msub" }, { MSubEntry.Location, MSubStop.Location })
ShockDrop.TargetParatroopers(SEShockDrop.CenterPosition, Angle.SouthWest)
end)
end)
local swFootTriggered
Trigger.OnEnteredFootprint(SWFootprintTrigger, function(actor, id)
if actor.Owner == USSR and actor.Type ~= "badr" and not swFootTriggered then
Trigger.RemoveFootprintTrigger(id)
swFootTriggered = true
local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = USSR })
proxy.TargetAirstrike(SWCivSpawn3.CenterPosition, Angle.South)
proxy.Destroy()
local swVillageCam = Actor.Create("camera", true, { Owner = USSR, Location = SWCivSpawn2.Location })
local hiding = Reinforcements.Reinforce(Greece, { 'e1', 'e1', 'e3', 'e3', 'e3' }, { SWCivSpawn1.Location }, 0)
Utils.Do(hiding, IdleHunt)
Trigger.AfterDelay(DateTime.Seconds(2), function()
if not SWVillage1.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn1.Location, CivRallySE.Location }, 0)
end
if not SWVillage2.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn2.Location, CivRallySE.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(4), function()
if not SWVillage3.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn3.Location, CivRallySE.Location }, 0)
end
if not SWVillage4.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn4.Location, CivRallyNW.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(5), function()
if not SWVillage5.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn5.Location, CivRallySE.Location }, 0)
end
if not SWVillage6.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn6.Location, CivRallyNW.Location }, 0)
end
if not SWVillage7.IsDead then
Reinforcements.Reinforce(Spain, Utils.Random(CivSquads), { SWCivSpawn7.Location, CivRallySE.Location }, 0)
end
end)
Trigger.AfterDelay(DateTime.Seconds(5), function()
ShockDrop.TargetParatroopers(SouthwestLZ.CenterPosition, Angle.SouthWest)
Utils.Do(VehicleSquad3, function(a)
if not a.IsDead then
a.AttackMove(NECivSpawn1.Location)
IdleHunt(a)
end
end)
swVillageCam.Destroy()
end)
end
end)
local seFootTriggered
Trigger.OnEnteredFootprint(SEFootprintTrigger, function(actor, id)
if actor.Owner == USSR and not seFootTriggered then
Trigger.RemoveFootprintTrigger(id)
seFootTriggered = true
local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = USSR })
proxy.TargetAirstrike(SEBaseBombingRun.CenterPosition, Angle.East)
proxy.Destroy()
end
end)
end
TroopsArrived = false
Tick = function()
if USSR.HasNoRequiredUnits() and TroopsArrived then
Greece.MarkCompletedObjective(BeatRussia)
end
if Greece.HasNoRequiredUnits() and GoodGuy.HasNoRequiredUnits() and Spain.HasNoRequiredUnits() then
USSR.MarkCompletedObjective(KillAll)
end
end
WorldLoaded = function()
USSR = Player.GetPlayer("USSR")
Greece = Player.GetPlayer("Greece")
GoodGuy = Player.GetPlayer("GoodGuy")
Spain = Player.GetPlayer("Spain")
Trigger.OnObjectiveAdded(USSR, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
BeatRussia = Greece.AddObjective("Stop Ivan.")
KillAll = USSR.AddObjective("Destroy all that oppose us.")
CaptureDome = USSR.AddObjective("Capture the enemy radar dome.", "Secondary", false)
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 = LZ.CenterPosition
ShockDrop = Actor.Create("shockdrop", false, { Owner = USSR })
MissionStart()
MissionTriggers()
end
OnAnyDamaged = function(actors, func)
Utils.Do(actors, function(actor)
Trigger.OnDamaged(actor, func)
end)
end

View File

@@ -36,6 +36,7 @@ Counterstrike:
Aftermath:
production-disruption
monster-tank-madness
shock-therapy
situation-critical
OpenRA Originals:
evacuation