Counterstrike Soviet mission Top o' The World ported
I've just finished porting this mission. Tell me if you spot something wrong ;) Update: Fixed a few things in the lua and rules.
This commit is contained in:
committed by
Oliver Brakmann
parent
7695714f66
commit
19977bb7da
@@ -98,6 +98,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re
|
||||
mods\ra\maps\soviet-07\soviet07.lua = mods\ra\maps\soviet-07\soviet07.lua
|
||||
mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea.lua = mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea.lua
|
||||
mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea-AI.lua = mods\ra\maps\soviet-soldier-volkov-n-chitzkoi\scu35ea-AI.lua
|
||||
mods\ra\maps\top-o-the-world\scu36ea.lua = mods\ra\maps\top-o-the-world\scu36ea.lua
|
||||
mods\ra\maps\survival01\survival01.lua = mods\ra\maps\survival01\survival01.lua
|
||||
mods\ra\maps\survival02\survival02.lua = mods\ra\maps\survival02\survival02.lua
|
||||
EndProjectSection
|
||||
|
||||
BIN
mods/ra/maps/top-o-the-world/map.bin
Normal file
BIN
mods/ra/maps/top-o-the-world/map.bin
Normal file
Binary file not shown.
BIN
mods/ra/maps/top-o-the-world/map.png
Normal file
BIN
mods/ra/maps/top-o-the-world/map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
898
mods/ra/maps/top-o-the-world/map.yaml
Normal file
898
mods/ra/maps/top-o-the-world/map.yaml
Normal file
@@ -0,0 +1,898 @@
|
||||
MapFormat: 11
|
||||
|
||||
RequiresMod: ra
|
||||
|
||||
Title: Top o' the world
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
Tileset: SNOW
|
||||
|
||||
MapSize: 128,128
|
||||
|
||||
Bounds: 29,31,70,65
|
||||
|
||||
Visibility: MissionSelector
|
||||
|
||||
Categories: Mission
|
||||
|
||||
LockPreview: True
|
||||
|
||||
Players:
|
||||
PlayerReference@Neutral:
|
||||
Name: Neutral
|
||||
OwnsWorld: True
|
||||
NonCombatant: True
|
||||
Faction: england
|
||||
PlayerReference@Creeps:
|
||||
Name: Creeps
|
||||
NonCombatant: True
|
||||
Faction: england
|
||||
Enemies: Greece, GoodGuy, USSR, BadGuy
|
||||
PlayerReference@BadGuy:
|
||||
Name: BadGuy
|
||||
Faction: soviet
|
||||
Color: FE1100
|
||||
Allies: USSR
|
||||
Enemies: Greece, GoodGuy, Creeps
|
||||
Bot: campaign
|
||||
PlayerReference@Greece:
|
||||
Name: Greece
|
||||
Faction: allies
|
||||
Color: ABB7E4
|
||||
Allies: GoodGuy
|
||||
Enemies: USSR, Creeps
|
||||
Bot: campaign
|
||||
PlayerReference@GoodGuy:
|
||||
Name: GoodGuy
|
||||
Faction: allies
|
||||
Color: ABB7E4
|
||||
Allies: Greece
|
||||
Enemies: USSR, Creeps
|
||||
Bot: campaign
|
||||
PlayerReference@USSR:
|
||||
Name: USSR
|
||||
AllowBots: False
|
||||
Playable: True
|
||||
Required: True
|
||||
LockFaction: True
|
||||
Faction: soviet
|
||||
LockColor: True
|
||||
Color: FE1100
|
||||
LockSpawn: True
|
||||
LockTeam: True
|
||||
Allies: BadGuy
|
||||
Enemies: Greece, GoodGuy, Creeps
|
||||
|
||||
Actors:
|
||||
Actor0: brik
|
||||
Location: 61,37
|
||||
Owner: BadGuy
|
||||
Actor1: brik
|
||||
Location: 62,37
|
||||
Owner: BadGuy
|
||||
Actor2: brik
|
||||
Location: 65,37
|
||||
Owner: BadGuy
|
||||
Actor3: brik
|
||||
Location: 66,37
|
||||
Owner: BadGuy
|
||||
Actor4: brik
|
||||
Location: 70,37
|
||||
Owner: BadGuy
|
||||
Actor5: brik
|
||||
Location: 71,37
|
||||
Owner: BadGuy
|
||||
Actor6: brik
|
||||
Location: 74,37
|
||||
Owner: BadGuy
|
||||
Actor7: brik
|
||||
Location: 75,37
|
||||
Owner: BadGuy
|
||||
Actor8: brik
|
||||
Location: 61,38
|
||||
Owner: BadGuy
|
||||
Actor9: brik
|
||||
Location: 62,38
|
||||
Owner: BadGuy
|
||||
Actor10: brik
|
||||
Location: 63,38
|
||||
Owner: BadGuy
|
||||
Actor11: brik
|
||||
Location: 64,38
|
||||
Owner: BadGuy
|
||||
Actor12: brik
|
||||
Location: 65,38
|
||||
Owner: BadGuy
|
||||
Actor13: brik
|
||||
Location: 66,38
|
||||
Owner: BadGuy
|
||||
Actor14: brik
|
||||
Location: 70,38
|
||||
Owner: BadGuy
|
||||
Actor15: brik
|
||||
Location: 71,38
|
||||
Owner: BadGuy
|
||||
Actor16: brik
|
||||
Location: 72,38
|
||||
Owner: BadGuy
|
||||
Actor17: brik
|
||||
Location: 73,38
|
||||
Owner: BadGuy
|
||||
Actor18: brik
|
||||
Location: 74,38
|
||||
Owner: BadGuy
|
||||
Actor19: brik
|
||||
Location: 75,38
|
||||
Owner: BadGuy
|
||||
Actor20: sbag
|
||||
Location: 73,66
|
||||
Owner: GoodGuy
|
||||
Actor21: sbag
|
||||
Location: 74,66
|
||||
Owner: GoodGuy
|
||||
Actor22: sbag
|
||||
Location: 74,67
|
||||
Owner: GoodGuy
|
||||
Actor23: sbag
|
||||
Location: 93,73
|
||||
Owner: GoodGuy
|
||||
Actor24: sbag
|
||||
Location: 95,73
|
||||
Owner: GoodGuy
|
||||
Actor25: sbag
|
||||
Location: 91,76
|
||||
Owner: GoodGuy
|
||||
Actor26: sbag
|
||||
Location: 92,76
|
||||
Owner: GoodGuy
|
||||
Actor27: sbag
|
||||
Location: 97,76
|
||||
Owner: GoodGuy
|
||||
Actor28: sbag
|
||||
Location: 98,76
|
||||
Owner: GoodGuy
|
||||
Actor29: sbag
|
||||
Location: 91,77
|
||||
Owner: GoodGuy
|
||||
Actor30: sbag
|
||||
Location: 98,77
|
||||
Owner: GoodGuy
|
||||
Actor31: sbag
|
||||
Location: 76,81
|
||||
Owner: GoodGuy
|
||||
Actor32: sbag
|
||||
Location: 77,81
|
||||
Owner: GoodGuy
|
||||
Actor33: sbag
|
||||
Location: 80,81
|
||||
Owner: GoodGuy
|
||||
Actor34: sbag
|
||||
Location: 75,82
|
||||
Owner: GoodGuy
|
||||
Actor35: sbag
|
||||
Location: 76,82
|
||||
Owner: GoodGuy
|
||||
Actor36: sbag
|
||||
Location: 80,82
|
||||
Owner: GoodGuy
|
||||
Actor37: sbag
|
||||
Location: 75,83
|
||||
Owner: GoodGuy
|
||||
Actor38: sbag
|
||||
Location: 80,83
|
||||
Owner: GoodGuy
|
||||
Actor39: sbag
|
||||
Location: 79,84
|
||||
Owner: GoodGuy
|
||||
Actor40: sbag
|
||||
Location: 80,84
|
||||
Owner: GoodGuy
|
||||
Actor41: sbag
|
||||
Location: 90,93
|
||||
Owner: GoodGuy
|
||||
Actor42: sbag
|
||||
Location: 90,94
|
||||
Owner: GoodGuy
|
||||
Actor43: sbag
|
||||
Location: 87,95
|
||||
Owner: GoodGuy
|
||||
Actor44: sbag
|
||||
Location: 88,95
|
||||
Owner: GoodGuy
|
||||
Actor45: sbag
|
||||
Location: 89,95
|
||||
Owner: GoodGuy
|
||||
Actor46: sbag
|
||||
Location: 90,95
|
||||
Owner: GoodGuy
|
||||
Actor47: tc02
|
||||
Location: 34,31
|
||||
Owner: Neutral
|
||||
Actor48: tc01
|
||||
Location: 45,31
|
||||
Owner: Neutral
|
||||
Actor49: tc05
|
||||
Location: 86,30
|
||||
Owner: Neutral
|
||||
Actor50: tc03
|
||||
Location: 97,31
|
||||
Owner: Neutral
|
||||
Actor51: tc05
|
||||
Location: 55,31
|
||||
Owner: Neutral
|
||||
Actor52: t12
|
||||
Location: 60,32
|
||||
Owner: Neutral
|
||||
Actor53: t17
|
||||
Location: 76,32
|
||||
Owner: Neutral
|
||||
Actor54: tc04
|
||||
Location: 29,33
|
||||
Owner: Neutral
|
||||
Actor55: t08
|
||||
Location: 40,35
|
||||
Owner: Neutral
|
||||
Actor56: tc02
|
||||
Location: 56,36
|
||||
Owner: Neutral
|
||||
Actor57: t13
|
||||
Location: 76,36
|
||||
Owner: Neutral
|
||||
Actor58: tc01
|
||||
Location: 43,37
|
||||
Owner: Neutral
|
||||
Actor59: t10
|
||||
Location: 82,37
|
||||
Owner: Neutral
|
||||
Actor60: t12
|
||||
Location: 83,38
|
||||
Owner: Neutral
|
||||
Actor61: t11
|
||||
Location: 77,39
|
||||
Owner: Neutral
|
||||
Actor62: tc02
|
||||
Location: 96,42
|
||||
Owner: Neutral
|
||||
Actor63: tc05
|
||||
Location: 29,43
|
||||
Owner: Neutral
|
||||
Actor64: tc04
|
||||
Location: 87,44
|
||||
Owner: Neutral
|
||||
Actor65: tc03
|
||||
Location: 29,46
|
||||
Owner: Neutral
|
||||
Actor66: t14
|
||||
Location: 29,50
|
||||
Owner: Neutral
|
||||
Actor67: tc02
|
||||
Location: 38,51
|
||||
Owner: Neutral
|
||||
Actor68: ice02
|
||||
Location: 97,52
|
||||
Owner: Neutral
|
||||
Actor69: t15
|
||||
Location: 40,53
|
||||
Owner: Neutral
|
||||
Actor70: t16
|
||||
Location: 30,55
|
||||
Owner: Neutral
|
||||
Actor71: tc04
|
||||
Location: 29,56
|
||||
Owner: Neutral
|
||||
Actor72: tc03
|
||||
Location: 29,59
|
||||
Owner: Neutral
|
||||
Actor73: tc05
|
||||
Location: 45,59
|
||||
Owner: Neutral
|
||||
Actor74: ice04
|
||||
Location: 96,61
|
||||
Owner: Neutral
|
||||
Actor75: tc04
|
||||
Location: 40,60
|
||||
Owner: Neutral
|
||||
Actor76: tc04
|
||||
Location: 66,60
|
||||
Owner: Neutral
|
||||
Actor77: tc02
|
||||
Location: 76,61
|
||||
Owner: Neutral
|
||||
Actor78: t08
|
||||
Location: 85,63
|
||||
Owner: Neutral
|
||||
Actor79: tc01
|
||||
Location: 45,63
|
||||
Owner: Neutral
|
||||
Actor80: t17
|
||||
Location: 86,66
|
||||
Owner: Neutral
|
||||
Actor81: tc04
|
||||
Location: 55,68
|
||||
Owner: Neutral
|
||||
Actor82: tc01
|
||||
Location: 29,71
|
||||
Owner: Neutral
|
||||
Actor83: tc02
|
||||
Location: 60,72
|
||||
Owner: Neutral
|
||||
Actor84: tc03
|
||||
Location: 50,73
|
||||
Owner: Neutral
|
||||
Actor85: t08
|
||||
Location: 46,76
|
||||
Owner: Neutral
|
||||
Actor86: t10
|
||||
Location: 42,76
|
||||
Owner: Neutral
|
||||
Actor87: tc02
|
||||
Location: 36,77
|
||||
Owner: Neutral
|
||||
Actor88: t16
|
||||
Location: 70,77
|
||||
Owner: Neutral
|
||||
Actor89: tc04
|
||||
Location: 30,78
|
||||
Owner: Neutral
|
||||
Actor90: tc02
|
||||
Location: 66,79
|
||||
Owner: Neutral
|
||||
Actor91: t08
|
||||
Location: 69,80
|
||||
Owner: Neutral
|
||||
Actor92: tc05
|
||||
Location: 69,78
|
||||
Owner: Neutral
|
||||
Actor93: t07
|
||||
Location: 57,80
|
||||
Owner: Neutral
|
||||
Actor94: tc01
|
||||
Location: 64,80
|
||||
Owner: Neutral
|
||||
Actor95: t08
|
||||
Location: 34,82
|
||||
Owner: Neutral
|
||||
Actor96: tc05
|
||||
Location: 54,80
|
||||
Owner: Neutral
|
||||
Actor97: tc04
|
||||
Location: 52,81
|
||||
Owner: Neutral
|
||||
Actor98: t06
|
||||
Location: 57,82
|
||||
Owner: Neutral
|
||||
Actor99: tc04
|
||||
Location: 58,81
|
||||
Owner: Neutral
|
||||
Actor100: t08
|
||||
Location: 60,83
|
||||
Owner: Neutral
|
||||
Actor101: t11
|
||||
Location: 61,82
|
||||
Owner: Neutral
|
||||
Actor102: tc01
|
||||
Location: 83,82
|
||||
Owner: Neutral
|
||||
Actor103: tc02
|
||||
Location: 62,83
|
||||
Owner: Neutral
|
||||
Actor104: tc05
|
||||
Location: 29,85
|
||||
Owner: Neutral
|
||||
Actor105: tc01
|
||||
Location: 63,86
|
||||
Owner: Neutral
|
||||
Actor106: t11
|
||||
Location: 29,88
|
||||
Owner: Neutral
|
||||
Actor107: t08
|
||||
Location: 42,90
|
||||
Owner: Neutral
|
||||
Actor108: tc04
|
||||
Location: 57,90
|
||||
Owner: Neutral
|
||||
Actor109: tc01
|
||||
Location: 56,92
|
||||
Owner: Neutral
|
||||
Actor110: tc02
|
||||
Location: 63,92
|
||||
Owner: Neutral
|
||||
Actor111: t08
|
||||
Location: 71,93
|
||||
Owner: Neutral
|
||||
Actor112: tc05
|
||||
Location: 41,93
|
||||
Owner: Neutral
|
||||
Actor113: tc02
|
||||
Location: 49,94
|
||||
Owner: Neutral
|
||||
Actor114: tc05
|
||||
Location: 51,93
|
||||
Owner: Neutral
|
||||
Actor115: tc01
|
||||
Location: 55,94
|
||||
Owner: Neutral
|
||||
Actor116: tc04
|
||||
Location: 68,93
|
||||
Owner: Neutral
|
||||
Actor117: tc02
|
||||
Location: 70,94
|
||||
Owner: Neutral
|
||||
Actor118: apwr
|
||||
Location: 64,32
|
||||
Owner: BadGuy
|
||||
Actor119: apwr
|
||||
Location: 70,32
|
||||
Owner: BadGuy
|
||||
Actor120: apwr
|
||||
Location: 61,33
|
||||
Owner: BadGuy
|
||||
USSRTechCenter01: stek
|
||||
Location: 67,33
|
||||
Owner: BadGuy
|
||||
Actor122: apwr
|
||||
Location: 73,33
|
||||
Owner: BadGuy
|
||||
Actor123: tsla
|
||||
Location: 65,36
|
||||
Owner: BadGuy
|
||||
Actor124: tsla
|
||||
Location: 71,36
|
||||
Owner: BadGuy
|
||||
Actor125: tsla
|
||||
Location: 63,37
|
||||
Owner: BadGuy
|
||||
Actor126: tsla
|
||||
Location: 73,37
|
||||
Owner: BadGuy
|
||||
BridgeBarrel01: brl3
|
||||
Location: 84,38
|
||||
Owner: Greece
|
||||
BridgeBarrel02: barl
|
||||
Location: 84,39
|
||||
Owner: Greece
|
||||
BridgeBarrel03: brl3
|
||||
Location: 87,39
|
||||
Owner: Greece
|
||||
Actor130: gun
|
||||
Location: 43,40
|
||||
Owner: Greece
|
||||
Facing: 223
|
||||
Actor131: gun
|
||||
Location: 40,41
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
Actor132: gap
|
||||
Location: 42,42
|
||||
Owner: Greece
|
||||
Actor133: apwr
|
||||
Location: 90,41
|
||||
Owner: Greece
|
||||
Actor134: apwr
|
||||
Location: 93,41
|
||||
Owner: Greece
|
||||
Actor135: gun
|
||||
Location: 44,43
|
||||
Owner: Greece
|
||||
Facing: 223
|
||||
Actor136: gun
|
||||
Location: 40,44
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
Actor137: gun
|
||||
Location: 44,46
|
||||
Owner: Greece
|
||||
Facing: 223
|
||||
Actor138: gun
|
||||
Location: 41,47
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
Actor139: hbox
|
||||
Location: 87,47
|
||||
Owner: Greece
|
||||
AAGun01: agun
|
||||
Location: 53,61
|
||||
Owner: GoodGuy
|
||||
Facing: 95
|
||||
AAGun02: agun
|
||||
Location: 67,62
|
||||
Owner: GoodGuy
|
||||
Facing: 95
|
||||
Actor142: gun
|
||||
Location: 73,67
|
||||
Owner: GoodGuy
|
||||
Facing: 95
|
||||
AAGun03: agun
|
||||
Location: 62,69
|
||||
Owner: GoodGuy
|
||||
Facing: 223
|
||||
AAGun04: agun
|
||||
Location: 59,73
|
||||
Owner: GoodGuy
|
||||
Facing: 63
|
||||
Actor145: gun
|
||||
Location: 94,73
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AAGun05: agun
|
||||
Location: 70,75
|
||||
Owner: GoodGuy
|
||||
Facing: 159
|
||||
Actor147: gun
|
||||
Location: 92,77
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
Actor148: gun
|
||||
Location: 97,77
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AAGun06: agun
|
||||
Location: 39,78
|
||||
Owner: GoodGuy
|
||||
Facing: 159
|
||||
Actor150: brl3
|
||||
Location: 77,82
|
||||
Owner: GoodGuy
|
||||
Actor151: v19
|
||||
Location: 76,83
|
||||
Owner: GoodGuy
|
||||
Actor152: barl
|
||||
Location: 77,83
|
||||
Owner: GoodGuy
|
||||
Actor153: brl3
|
||||
Location: 79,83
|
||||
Owner: GoodGuy
|
||||
AlliedGNRLHouse: v10
|
||||
Location: 89,94
|
||||
Owner: Greece
|
||||
Actor155: 2tnk
|
||||
Location: 94,46
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
AlliedSquad05MTank01: 2tnk
|
||||
Location: 57,56
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
AlliedSquad05MTank02: 2tnk
|
||||
Location: 63,56
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
AlliedSquad04MGG01: mgg
|
||||
Location: 34,61
|
||||
Owner: Greece
|
||||
Facing: 127
|
||||
AlliedSquad04MTank01: 2tnk
|
||||
Location: 31,63
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AlliedSquad04Arty01: arty
|
||||
Location: 33,63
|
||||
Owner: Greece
|
||||
Facing: 127
|
||||
AlliedSquad04Arty02: arty
|
||||
Location: 35,63
|
||||
Owner: Greece
|
||||
Facing: 127
|
||||
AlliedSquad04MTank02: 2tnk
|
||||
Location: 37,63
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AlliedSquad03LTank01: 1tnk
|
||||
Location: 78,63
|
||||
Owner: GoodGuy
|
||||
Facing: 159
|
||||
AlliedSquad04MTank03: 2tnk
|
||||
Location: 33,64
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AlliedSquad04Arty03: arty
|
||||
Location: 34,64
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AlliedSquad04MTank04: 2tnk
|
||||
Location: 35,64
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
AlliedSquad04MTank05: 2tnk
|
||||
Location: 34,65
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
Actor168: 1tnk
|
||||
Location: 66,65
|
||||
Owner: GoodGuy
|
||||
Facing: 127
|
||||
Actor169: 2tnk
|
||||
Location: 75,78
|
||||
Owner: GoodGuy
|
||||
Facing: 191
|
||||
Actor170: 2tnk
|
||||
Location: 78,82
|
||||
Owner: GoodGuy
|
||||
Actor171: 2tnk
|
||||
Location: 55,83
|
||||
Owner: GoodGuy
|
||||
Facing: 95
|
||||
USSRHTank01: 3tnk
|
||||
Location: 35,87
|
||||
Owner: USSR
|
||||
USSRHTank02: 3tnk
|
||||
Location: 37,87
|
||||
Owner: USSR
|
||||
USSRHTank03: 3tnk
|
||||
Location: 39,87
|
||||
Owner: USSR
|
||||
USSRMTank01: 4tnk
|
||||
Location: 35,89
|
||||
Owner: USSR
|
||||
USSRMTank02: 4tnk
|
||||
Location: 39,89
|
||||
Owner: USSR
|
||||
USSRV201: v2rl
|
||||
Location: 34,93
|
||||
Owner: USSR
|
||||
USSRV202: v2rl
|
||||
Location: 37,93
|
||||
Owner: USSR
|
||||
USSRV203: v2rl
|
||||
Location: 40,93
|
||||
Owner: USSR
|
||||
ObjectiveTruck01: truk
|
||||
Location: 37,95
|
||||
Owner: USSR
|
||||
Actor181: e3
|
||||
Location: 47,33
|
||||
Owner: GoodGuy
|
||||
Facing: 63
|
||||
SubCell: 1
|
||||
Actor182: e3
|
||||
Location: 47,34
|
||||
Owner: GoodGuy
|
||||
Facing: 63
|
||||
SubCell: 1
|
||||
AlliedSquad03RocketInf01: e3
|
||||
Location: 78,61
|
||||
Owner: Greece
|
||||
Facing: 127
|
||||
SubCell: 1
|
||||
AlliedSquad03RocketInf02: e3
|
||||
Location: 84,61
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
SubCell: 3
|
||||
Actor185: e3
|
||||
Location: 72,62
|
||||
Owner: Greece
|
||||
SubCell: 4
|
||||
AlliedSquad03RocketInf03: e3
|
||||
Location: 80,64
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
SubCell: 3
|
||||
Actor187: e3
|
||||
Location: 72,66
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
SubCell: 0
|
||||
Actor188: e3
|
||||
Location: 74,68
|
||||
Owner: Greece
|
||||
Facing: 95
|
||||
SubCell: 2
|
||||
Actor189: e3
|
||||
Location: 60,69
|
||||
Owner: GoodGuy
|
||||
Facing: 191
|
||||
SubCell: 4
|
||||
Actor190: e3
|
||||
Location: 60,71
|
||||
Owner: GoodGuy
|
||||
Facing: 191
|
||||
SubCell: 0
|
||||
Actor191: e3
|
||||
Location: 69,78
|
||||
Owner: Greece
|
||||
SubCell: 4
|
||||
AlliedSquad02RifleInf01: e1
|
||||
Location: 88,85
|
||||
Owner: Greece
|
||||
SubCell: 2
|
||||
AlliedSquad02RifleInf02: e1
|
||||
Location: 89,85
|
||||
Owner: Greece
|
||||
SubCell: 2
|
||||
AlliedSquad02RifleInf03: e1
|
||||
Location: 89,85
|
||||
Owner: Greece
|
||||
SubCell: 1
|
||||
AlliedSquad02RifleInf04: e1
|
||||
Location: 88,86
|
||||
Owner: Greece
|
||||
SubCell: 2
|
||||
AlliedSquad02RifleInf05: e1
|
||||
Location: 89,86
|
||||
Owner: Greece
|
||||
SubCell: 2
|
||||
AlliedSquad02RifleInf06: e1
|
||||
Location: 89,86
|
||||
Owner: Greece
|
||||
SubCell: 1
|
||||
AlliedSquad02RifleInf07: e1
|
||||
Location: 88,87
|
||||
Owner: Greece
|
||||
SubCell: 2
|
||||
AlliedSquad02RifleInf08: e1
|
||||
Location: 89,87
|
||||
Owner: Greece
|
||||
SubCell: 2
|
||||
AlliedSquad02RifleInf09: e1
|
||||
Location: 89,87
|
||||
Owner: Greece
|
||||
SubCell: 1
|
||||
USSRDog01: dog
|
||||
Location: 35,91
|
||||
Owner: USSR
|
||||
SubCell: 1
|
||||
USSRDog02: dog
|
||||
Location: 35,91
|
||||
Owner: USSR
|
||||
SubCell: 2
|
||||
USSRGrenadier01: e2
|
||||
Location: 37,91
|
||||
Owner: USSR
|
||||
SubCell: 1
|
||||
USSRGrenadier02: e2
|
||||
Location: 37,91
|
||||
Owner: USSR
|
||||
SubCell: 4
|
||||
USSRGrenadier03: e2
|
||||
Location: 37,91
|
||||
Owner: USSR
|
||||
SubCell: 3
|
||||
USSRGrenadier04: e2
|
||||
Location: 37,91
|
||||
Owner: USSR
|
||||
SubCell: 5
|
||||
USSRGrenadier05: e2
|
||||
Location: 37,91
|
||||
Owner: USSR
|
||||
SubCell: 2
|
||||
USSRDog03: dog
|
||||
Location: 39,91
|
||||
Owner: USSR
|
||||
SubCell: 2
|
||||
USSRDog04: dog
|
||||
Location: 40,91
|
||||
Owner: USSR
|
||||
SubCell: 1
|
||||
USSRFlame01: e4
|
||||
Location: 35,92
|
||||
Owner: USSR
|
||||
SubCell: 1
|
||||
USSRFlame02: e4
|
||||
Location: 35,92
|
||||
Owner: USSR
|
||||
SubCell: 2
|
||||
USSRFlame03: e4
|
||||
Location: 39,92
|
||||
Owner: USSR
|
||||
SubCell: 2
|
||||
USSRFlame04: e4
|
||||
Location: 40,92
|
||||
Owner: USSR
|
||||
SubCell: 1
|
||||
AlliedSquad01RocketInf01: e3
|
||||
Location: 90,92
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
SubCell: 5
|
||||
AlliedSquad01RocketInf02: e3
|
||||
Location: 88,93
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
SubCell: 1
|
||||
AlliedSquad01RocketInf03: e3
|
||||
Location: 89,93
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
SubCell: 2
|
||||
AlliedSquad01RocketInf04: e3
|
||||
Location: 87,94
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
SubCell: 4
|
||||
AlliedSquad01RocketInf05: e3
|
||||
Location: 88,94
|
||||
Owner: GoodGuy
|
||||
Facing: 31
|
||||
SubCell: 4
|
||||
Actor219: e3
|
||||
Location: 74,95
|
||||
Owner: Greece
|
||||
SubCell: 1
|
||||
Actor220: e3
|
||||
Location: 75,95
|
||||
Owner: Greece
|
||||
SubCell: 1
|
||||
hcrate01: healcrate
|
||||
Location: 72,63
|
||||
Owner: Neutral
|
||||
hcrate02: healcrate
|
||||
Location: 78,83
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartySpawn: waypoint
|
||||
Location: 93,31
|
||||
Owner: Neutral
|
||||
WaystationWP02: waypoint
|
||||
Location: 68,32
|
||||
Owner: Neutral
|
||||
WaystationWP01: waypoint
|
||||
Location: 68,37
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP01: waypoint
|
||||
Location: 85,38
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP06: waypoint
|
||||
Location: 36,41
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP05: waypoint
|
||||
Location: 49,41
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP02: waypoint
|
||||
Location: 63,48
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP04: waypoint
|
||||
Location: 51,50
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP07: waypoint
|
||||
Location: 34,53
|
||||
Owner: Neutral
|
||||
AlliedHuntingPartyWP03: waypoint
|
||||
Location: 61,53
|
||||
Owner: Neutral
|
||||
AlliedDestroyer02WP02: waypoint
|
||||
Location: 90,55
|
||||
Owner: Neutral
|
||||
AlliedDestroyer01WP02: waypoint
|
||||
Location: 88,57
|
||||
Owner: Neutral
|
||||
AlliedDestroyer02WP01: waypoint
|
||||
Location: 94,57
|
||||
Owner: Neutral
|
||||
AlliedDestroyer02Spawn: waypoint
|
||||
Location: 98,57
|
||||
Owner: Neutral
|
||||
AlliedDestroyer01WP01: waypoint
|
||||
Location: 94,59
|
||||
Owner: Neutral
|
||||
AlliedDestroyer01Spawn: waypoint
|
||||
Location: 98,59
|
||||
Owner: Neutral
|
||||
UnusedWaypoint: waypoint
|
||||
Location: 95,62
|
||||
Owner: Neutral
|
||||
MapCenterPoint: waypoint
|
||||
Location: 64,64
|
||||
Owner: Neutral
|
||||
PlayerStartLocation: waypoint
|
||||
Location: 37,85
|
||||
Owner: Neutral
|
||||
DefaultCameraPosition: waypoint
|
||||
Location: 37,91
|
||||
Owner: Neutral
|
||||
AlliedGNRLDestination: waypoint
|
||||
Location: 87,92
|
||||
Owner: Neutral
|
||||
AlliedParadropLZ01: waypoint
|
||||
Location: 35,93
|
||||
Owner: Neutral
|
||||
AlliedParadropLZ02: waypoint
|
||||
Location: 39,93
|
||||
Owner: Neutral
|
||||
AlliedGNRLSpawn: waypoint
|
||||
Location: 89,94
|
||||
Owner: Neutral
|
||||
|
||||
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
|
||||
|
||||
Weapons: weapons.yaml
|
||||
75
mods/ra/maps/top-o-the-world/rules.yaml
Normal file
75
mods/ra/maps/top-o-the-world/rules.yaml
Normal file
@@ -0,0 +1,75 @@
|
||||
World:
|
||||
LuaScript:
|
||||
Scripts: scu36ea.lua
|
||||
MissionData:
|
||||
Briefing: A critical cargo held in this supply truck must reach the waystation atop this mountain. The way is blocked by Allied squads, but do not let that deter you -- the cargo must reach its destination.\n\nIn addition, the onset of nightfall has brought sub-zero temperatures with it. The Allies are prepared for this -- our units are not. The life expectancy of your troops in these extremes is limited. Infantry may last 12 minutes, while vehicles could survive for up to 36 minutes. You have little time. Go.\n
|
||||
WinVideo: sovtstar.vqa
|
||||
LossVideo: sovbatl.vqa
|
||||
ScriptLobbyDropdown@difficulty:
|
||||
ID: difficulty
|
||||
Label: Difficulty
|
||||
Values:
|
||||
easy: Easy
|
||||
normal: Normal
|
||||
hard: Hard
|
||||
Default: easy
|
||||
|
||||
^Palettes:
|
||||
IndexedPlayerPalette@truk:
|
||||
BaseName: truk
|
||||
BasePalette: player
|
||||
RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
|
||||
PlayerIndex:
|
||||
USSR: 200, 200, 201, 202, 203, 203, 204, 205, 206, 206, 207, 221, 222, 222, 223, 223
|
||||
AllowModifiers: True
|
||||
|
||||
MSLO:
|
||||
Buildable:
|
||||
Prerequisites: ~disabled
|
||||
|
||||
HEALCRATE:
|
||||
Crate:
|
||||
Lifetime: 0
|
||||
|
||||
AGUN:
|
||||
Power:
|
||||
Amount: 125
|
||||
|
||||
TRUK:
|
||||
-SpawnActorOnDeath:
|
||||
RenderSprites:
|
||||
PlayerPalette: truk
|
||||
|
||||
GNRL:
|
||||
Armament:
|
||||
Weapon: SilencedPPK
|
||||
|
||||
SCAMERA:
|
||||
Inherits: CAMERA
|
||||
RevealsShroud:
|
||||
Range: 5c512
|
||||
|
||||
powerproxy.spyplane:
|
||||
AlwaysVisible:
|
||||
AirstrikePower:
|
||||
OrderName: SovietSpyPlane
|
||||
Icon: spyplane
|
||||
ChargeInterval: 4500
|
||||
Description: Spy Plane (Single Use)
|
||||
LongDesc: Reveals an area of the map and cloaked enemy units.
|
||||
OneShot: true
|
||||
SelectTargetSpeechNotification: SelectTarget
|
||||
EndChargeSpeechNotification: SpyPlaneReady
|
||||
CameraActor: camera.spyplane
|
||||
CameraRemoveDelay: 150
|
||||
UnitType: u2
|
||||
QuantizedFacings: 8
|
||||
DisplayBeacon: true
|
||||
BeaconPoster: camicon
|
||||
ArrowSequence: arrow
|
||||
ClockSequence: clock
|
||||
CircleSequence: circles
|
||||
|
||||
powerproxy.parabombs:
|
||||
AirstrikePower:
|
||||
ChargeInterval: 4500
|
||||
361
mods/ra/maps/top-o-the-world/scu36ea.lua
Normal file
361
mods/ra/maps/top-o-the-world/scu36ea.lua
Normal file
@@ -0,0 +1,361 @@
|
||||
--[[
|
||||
Copyright 2007-2019 The OpenRA Developers (see AUTHORS)
|
||||
This file is part of OpenRA, which is free software. It is made
|
||||
available to you under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation, either version 3 of
|
||||
the License, or (at your option) any later version. For more
|
||||
information, see COPYING.
|
||||
]]
|
||||
|
||||
--All timers have been reduced by 40% because time was flying 40% faster than reality in the original game.
|
||||
--That's why instead of having an hour to complete the mission you only have 36 minutes.
|
||||
|
||||
--Unit Groups Setup
|
||||
USSRDie01 = { USSRGrenadier01, USSRGrenadier02, USSRGrenadier03, USSRFlame01, USSRFlame03 }
|
||||
USSRDie02 = { USSRGrenadier04, USSRGrenadier05, USSRFlame02, USSRFlame04 }
|
||||
USSRDie03 = { USSRHTank01, USSRHTank02 }
|
||||
USSRDie04 = { USSRDog01, USSRDog03 }
|
||||
USSRDie05 = { USSRDog02, USSRDog04 }
|
||||
USSRDie06 = { USSRV202, USSRV203 }
|
||||
AlliedSquad01 = { AlliedSquad01RocketInf01, AlliedSquad01RocketInf02, AlliedSquad01RocketInf03, AlliedSquad01RocketInf04, AlliedSquad01RocketInf05 }
|
||||
AlliedSquad02 = { AlliedSquad02RifleInf01, AlliedSquad02RifleInf02, AlliedSquad02RifleInf03, AlliedSquad02RifleInf04, AlliedSquad02RifleInf05, AlliedSquad02RifleInf06, AlliedSquad02RifleInf07, AlliedSquad02RifleInf08, AlliedSquad02RifleInf09 }
|
||||
AlliedSquad03 = { AlliedSquad03LTank01, AlliedSquad03RocketInf01, AlliedSquad03RocketInf02, AlliedSquad03RocketInf03 }
|
||||
AlliedSquad04 = { AlliedSquad04MGG01, AlliedSquad04MTank01, AlliedSquad04MTank02, AlliedSquad04MTank03, AlliedSquad04MTank04, AlliedSquad04MTank05, AlliedSquad04Arty01, AlliedSquad04Arty02, AlliedSquad04Arty03 }
|
||||
AlliedTanksReinforcement = { "2tnk", "2tnk" }
|
||||
if Map.LobbyOption("difficulty") == "easy" then
|
||||
AlliedHuntingParty = { "1tnk" }
|
||||
elseif Map.LobbyOption("difficulty") == "normal" then
|
||||
AlliedHuntingParty = { "1tnk", "1tnk" }
|
||||
elseif Map.LobbyOption("difficulty") == "hard" then
|
||||
AlliedHuntingParty = { "1tnk", "1tnk", "1tnk" }
|
||||
end
|
||||
|
||||
--Building Group Setup
|
||||
AlliedAAGuns = { AAGun01, AAGun02, AAGun03, AAGun04, AAGun05, AAGun06 }
|
||||
|
||||
--Area Triggers Setup
|
||||
WaystationTrigger = { CPos.New(61, 37), CPos.New(62, 37), CPos.New(63, 37), CPos.New(64, 37), CPos.New(65, 37), CPos.New(66, 37), CPos.New(67, 37), CPos.New(68, 37), CPos.New(69, 37), CPos.New(70, 37), CPos.New(71, 37), CPos.New(72, 37), CPos.New(73, 37), CPos.New(74, 37), CPos.New(75, 37), CPos.New(61, 38), CPos.New(62, 38), CPos.New(63, 38), CPos.New(64, 38), CPos.New(65, 38), CPos.New(66, 38), CPos.New(67, 38), CPos.New(68, 38), CPos.New(69, 38), CPos.New(70, 38), CPos.New(71, 38), CPos.New(72, 38), CPos.New(73, 38), CPos.New(74, 38), CPos.New(75, 38), CPos.New(61, 39), CPos.New(62, 39), CPos.New(63, 39), CPos.New(64, 39), CPos.New(65, 39), CPos.New(66, 39), CPos.New(67, 39), CPos.New(68, 39), CPos.New(69, 39), CPos.New(70, 39), CPos.New(71, 39), CPos.New(72, 39), CPos.New(73, 39), CPos.New(74, 39), CPos.New(75, 39) }
|
||||
Inf01Trigger = { CPos.New(81, 90), CPos.New(81, 91), CPos.New(81, 92), CPos.New(81, 93), CPos.New(81, 94), CPos.New(81, 95), CPos.New(82, 90), CPos.New(82, 91), CPos.New(82, 92), CPos.New(82, 93), CPos.New(82, 94), CPos.New(82, 95) }
|
||||
Inf02Trigger = { CPos.New(85, 90), CPos.New(85, 91), CPos.New(85, 92), CPos.New(85, 93), CPos.New(85, 94), CPos.New(85, 95), CPos.New(86, 90), CPos.New(86, 91), CPos.New(86, 92), CPos.New(86, 93), CPos.New(86, 94), CPos.New(86, 95) }
|
||||
RevealBridgeTrigger = { CPos.New(74, 52), CPos.New(75, 52), CPos.New(76, 52), CPos.New(77, 52), CPos.New(78, 52), CPos.New(79, 52), CPos.New(80, 52), CPos.New(81, 52), CPos.New(82, 52), CPos.New(83, 52), CPos.New(84, 52), CPos.New(85, 52), CPos.New(86, 52), CPos.New(87, 52), CPos.New(88, 52), CPos.New(76, 53), CPos.New(77, 53), CPos.New(78, 53), CPos.New(79, 53), CPos.New(80, 53), CPos.New(81, 53), CPos.New(82, 53), CPos.New(83, 53), CPos.New(84, 53), CPos.New(85, 53), CPos.New(86, 53), CPos.New(87, 53) }
|
||||
|
||||
--Mission Variables Setup
|
||||
RemainingTime = DateTime.Minutes(36)
|
||||
BridgeIsIntact = true
|
||||
|
||||
--Mission Functions Setup
|
||||
HuntObjectiveTruck = function(a)
|
||||
if a.HasProperty("Hunt") then
|
||||
if a.Owner == greece or a.Owner == goodguy then
|
||||
Trigger.OnIdle(a, function(a)
|
||||
if a.IsInWorld and not ObjectiveTruck01.IsDead then
|
||||
a.AttackMove(ObjectiveTruck01.Location, 2)
|
||||
elseif a.IsInWorld then
|
||||
a.Hunt()
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
HuntEnemyUnits = function(a)
|
||||
if a.HasProperty("Hunt") then
|
||||
Trigger.OnIdle(a, function(a)
|
||||
if a.IsInWorld then
|
||||
a.Hunt()
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
AlliedGroundPatrols = function(a)
|
||||
if a.HasProperty("Hunt") then
|
||||
if a.IsInWorld then
|
||||
a.Patrol({ AlliedHuntingPartyWP02.Location, AlliedHuntingPartyWP03.Location, AlliedHuntingPartyWP04.Location, AlliedHuntingPartyWP05.Location, AlliedHuntingPartyWP06.Location, AlliedHuntingPartyWP07.Location }, false, 50)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
SpawnAlliedHuntingParty = function()
|
||||
Trigger.AfterDelay(DateTime.Minutes(3), function()
|
||||
if BridgeIsIntact then
|
||||
local tanks = Reinforcements.Reinforce(greece, AlliedHuntingParty, { AlliedHuntingPartySpawn.Location, AlliedHuntingPartyWP01.Location,AlliedHuntingPartyWP03.Location, AlliedHuntingPartyWP05.Location }, 0)
|
||||
Utils.Do(tanks, function(units)
|
||||
HuntObjectiveTruck(units)
|
||||
end)
|
||||
SpawnAlliedHuntingParty()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
WorldLoaded = function()
|
||||
--Players Setup
|
||||
player = Player.GetPlayer("USSR")
|
||||
greece = Player.GetPlayer("Greece")
|
||||
goodguy = Player.GetPlayer("GoodGuy")
|
||||
badguy = Player.GetPlayer("BadGuy")
|
||||
neutral = Player.GetPlayer("Neutral")
|
||||
creeps = Player.GetPlayer("Creeps")
|
||||
|
||||
Camera.Position = DefaultCameraPosition.CenterPosition
|
||||
|
||||
--Objectives Setup
|
||||
Trigger.OnObjectiveAdded(player, function(p, id)
|
||||
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
|
||||
end)
|
||||
Trigger.OnObjectiveCompleted(player, function(p, id)
|
||||
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
|
||||
end)
|
||||
Trigger.OnObjectiveFailed(player, function(p, id)
|
||||
Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
|
||||
end)
|
||||
|
||||
BringSupplyTruck = player.AddPrimaryObjective("Bring the supply truck to the waystation.")
|
||||
ProtectWaystation = player.AddPrimaryObjective("The waystation must not be destroyed.")
|
||||
DestroyAAGuns = player.AddSecondaryObjective("Destroy all the AA Guns to enable air support.")
|
||||
PreventAlliedIncursions = player.AddSecondaryObjective("Find and destroy the bridge the allies are using\nto bring their reinforcements in the area.")
|
||||
|
||||
Trigger.OnPlayerWon(player, function()
|
||||
Media.PlaySpeechNotification(player, "MissionAccomplished")
|
||||
end)
|
||||
Trigger.OnPlayerLost(player, function()
|
||||
Media.PlaySpeechNotification(player, "MissionFailed")
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(USSRTechCenter01, function()
|
||||
player.MarkFailedObjective(ProtectWaystation)
|
||||
end)
|
||||
|
||||
Trigger.OnKilled(ObjectiveTruck01, function()
|
||||
player.MarkFailedObjective(BringSupplyTruck)
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(WaystationTrigger, function(unit, id)
|
||||
if unit == ObjectiveTruck01 then
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
player.MarkCompletedObjective(BringSupplyTruck)
|
||||
player.MarkCompletedObjective(ProtectWaystation)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilled(AlliedAAGuns, function()
|
||||
player.MarkCompletedObjective(DestroyAAGuns)
|
||||
Media.PlaySpeechNotification(player, "ObjectiveMet")
|
||||
Trigger.AfterDelay(DateTime.Seconds(2), function()
|
||||
Actor.Create("powerproxy.spyplane", true, { Owner = player })
|
||||
Actor.Create("powerproxy.parabombs", true, { Owner = player })
|
||||
Media.DisplayMessage("Very good comrade general! Our air units just took off\nand should be in your area in approximately three minutes.")
|
||||
end)
|
||||
end)
|
||||
|
||||
--Triggers Setup
|
||||
SpawnAlliedHuntingParty()
|
||||
|
||||
Trigger.AfterDelay(0, function()
|
||||
local playerrevealcam = Actor.Create("camera", true, { Owner = player, Location = PlayerStartLocation.Location })
|
||||
Trigger.AfterDelay(1, function()
|
||||
if playerrevealcam.IsInWorld then playerrevealcam.Destroy() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(Inf01Trigger, function(unit, id)
|
||||
if unit.Owner == player then
|
||||
if not AlliedGNRLHouse.IsDead then
|
||||
Reinforcements.Reinforce(greece, { "gnrl" }, { AlliedGNRLSpawn.Location, AlliedGNRLDestination.Location }, 0, function(unit)
|
||||
HuntEnemyUnits(unit)
|
||||
end)
|
||||
end
|
||||
Utils.Do(AlliedSquad01, HuntEnemyUnits)
|
||||
local alliedgnrlcamera = Actor.Create("scamera", true, { Owner = player, Location = AlliedGNRLSpawn.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(6), function()
|
||||
if alliedgnrlcamera.IsInWorld then alliedgnrlcamera.Destroy() end
|
||||
end)
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(Inf02Trigger, function(unit, id)
|
||||
if unit.Owner == player then
|
||||
Utils.Do(AlliedSquad02, HuntEnemyUnits)
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Utils.Do(AlliedSquad03, function(actor)
|
||||
Trigger.OnDamaged(actor, function(unit, attacker)
|
||||
if attacker.Owner == player then
|
||||
Utils.Do(AlliedSquad03, HuntEnemyUnits)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.OnEnteredFootprint(RevealBridgeTrigger, function(unit, id)
|
||||
if unit.Owner == player then
|
||||
local bridgecamera01 = Actor.Create("camera", true, { Owner = player, Location = AlliedHuntingPartySpawn.Location })
|
||||
local bridgecamera02 = Actor.Create("camera", true, { Owner = player, Location = AlliedHuntingPartyWP01.Location })
|
||||
Trigger.AfterDelay(DateTime.Seconds(6), function()
|
||||
if bridgecamera01.IsInWorld then bridgecamera01.Destroy() end
|
||||
if bridgecamera02.IsInWorld then bridgecamera02.Destroy() end
|
||||
end)
|
||||
if Map.LobbyOption("difficulty") == "normal" then
|
||||
Reinforcements.Reinforce(goodguy, { "dd" }, { AlliedDestroyer01Spawn.Location, AlliedDestroyer01WP01.Location, AlliedDestroyer01WP02.Location }, 0, function(unit)
|
||||
unit.Stance = "Defend"
|
||||
end)
|
||||
end
|
||||
if Map.LobbyOption("difficulty") == "hard" then
|
||||
Reinforcements.Reinforce(goodguy, { "dd" }, { AlliedDestroyer01Spawn.Location, AlliedDestroyer01WP01.Location, AlliedDestroyer01WP02.Location }, 0, function(unit)
|
||||
unit.Stance = "Defend"
|
||||
end)
|
||||
Reinforcements.Reinforce(goodguy, { "dd" }, { AlliedDestroyer02Spawn.Location, AlliedDestroyer02WP01.Location, AlliedDestroyer02WP02.Location }, 0, function(unit)
|
||||
unit.Stance = "Defend"
|
||||
end)
|
||||
end
|
||||
Trigger.RemoveFootprintTrigger(id)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(9), function()
|
||||
local powerproxy01 = Actor.Create("powerproxy.paratroopers", true, { Owner = greece })
|
||||
local paratroopers01 = powerproxy01.SendParatroopers(AlliedParadropLZ01.CenterPosition, false, Facing.SouthWest)
|
||||
local powerproxy02 = Actor.Create("powerproxy.paratroopers", true, { Owner = goodguy })
|
||||
local paratroopers02 = powerproxy02.SendParatroopers(AlliedParadropLZ02.CenterPosition, false, Facing.SouthWest)
|
||||
Utils.Do(paratroopers01, HuntObjectiveTruck)
|
||||
Utils.Do(paratroopers02, HuntObjectiveTruck)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(0, function()
|
||||
BridgeEnd = Map.ActorsInBox(AlliedHuntingPartySpawn.CenterPosition, AlliedHuntingPartyWP01.CenterPosition, function(self) return self.Type == "br2" end)[1]
|
||||
Trigger.OnKilled(BridgeEnd, function()
|
||||
BridgeIsIntact = false
|
||||
if not BridgeBarrel01.IsDead then BridgeBarrel01.Kill() end
|
||||
if not BridgeBarrel03.IsDead then BridgeBarrel03.Kill() end
|
||||
player.MarkCompletedObjective(PreventAlliedIncursions)
|
||||
Media.PlaySpeechNotification(player, "ObjectiveMet")
|
||||
Trigger.AfterDelay(DateTime.Seconds(2), function()
|
||||
Media.DisplayMessage("This should stop the allied forces from getting their ground based reinforcements.")
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.OnAnyKilled({ BridgeBarrel01, BridgeBarrel03 }, function()
|
||||
if not BridgeEnd.IsDead then
|
||||
BridgeEnd.Kill()
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnAnyKilled(AlliedSquad04, function()
|
||||
if BridgeIsIntact then
|
||||
local tanks = Reinforcements.Reinforce(greece, AlliedTanksReinforcement, { AlliedHuntingPartySpawn.Location, AlliedHuntingPartyWP01.Location }, 0, function(units)
|
||||
AlliedGroundPatrols(units)
|
||||
end)
|
||||
Trigger.OnAllKilled(tanks, function()
|
||||
if BridgeIsIntact then
|
||||
Reinforcements.Reinforce(greece, AlliedTanksReinforcement, { AlliedHuntingPartySpawn.Location, AlliedHuntingPartyWP01.Location }, 0, function(units)
|
||||
AlliedGroundPatrols(units)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilled(AlliedSquad04, function()
|
||||
if BridgeIsIntact then
|
||||
local tanks = Reinforcements.Reinforce(greece, AlliedTanksReinforcement, { AlliedHuntingPartySpawn.Location, AlliedHuntingPartyWP01.Location }, 0, function(units)
|
||||
AlliedGroundPatrols(units)
|
||||
end)
|
||||
Trigger.OnAllKilled(tanks, function()
|
||||
if BridgeIsIntact then
|
||||
Reinforcements.Reinforce(greece, AlliedTanksReinforcement, { AlliedHuntingPartySpawn.Location, AlliedHuntingPartyWP01.Location }, 0, function(units)
|
||||
AlliedGroundPatrols(units)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
--Units Death Setup
|
||||
Trigger.AfterDelay(DateTime.Seconds(660), function()
|
||||
Utils.Do(USSRDie01, function(actor)
|
||||
if not actor.IsDead then actor.Kill() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(744), function()
|
||||
Utils.Do(USSRDie02, function(actor)
|
||||
if not actor.IsDead then actor.Kill() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(1122), function()
|
||||
if not USSRHTank03.IsDead then USSRHTank03.Kill() end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(1230), function()
|
||||
Utils.Do(USSRDie03, function(actor)
|
||||
if not actor.IsDead then actor.Kill() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(1338), function()
|
||||
Utils.Do(USSRDie04, function(actor)
|
||||
if not actor.IsDead then actor.Kill() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(1416), function()
|
||||
Utils.Do(USSRDie05, function(actor)
|
||||
if not actor.IsDead then actor.Kill() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(1668), function()
|
||||
if not USSRV201.IsDead then USSRV201.Kill() end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(1746), function()
|
||||
Utils.Do(USSRDie06, function(actor)
|
||||
if not actor.IsDead then actor.Kill() end
|
||||
end)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(2034), function()
|
||||
if not USSRMTank02.IsDead then USSRMTank02.Kill() end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Seconds(2142), function()
|
||||
if not USSRMTank01.IsDead then USSRMTank01.Kill() end
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(DateTime.Minutes(36), function()
|
||||
if not ObjectiveTruck01.IsDead then ObjectiveTruck01.Kill() end
|
||||
end)
|
||||
end
|
||||
|
||||
Tick = function()
|
||||
|
||||
-- Timer Setup
|
||||
if RemainingTime == DateTime.Minutes(30) then
|
||||
Media.PlaySpeechNotification(player, "ThirtyMinutesRemaining")
|
||||
elseif RemainingTime == DateTime.Minutes(20) then
|
||||
Media.PlaySpeechNotification(player, "TwentyMinutesRemainingg")
|
||||
elseif RemainingTime == DateTime.Minutes(10) then
|
||||
Media.PlaySpeechNotification(player, "TenMinutesRemaining")
|
||||
elseif RemainingTime == DateTime.Minutes(5) then
|
||||
Media.PlaySpeechNotification(player, "WarningFiveMinutesRemaining")
|
||||
elseif RemainingTime == DateTime.Minutes(4) then
|
||||
Media.PlaySpeechNotification(player, "WarningFourMinutesRemaining")
|
||||
elseif RemainingTime == DateTime.Minutes(3) then
|
||||
Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining")
|
||||
elseif RemainingTime == DateTime.Minutes(2) then
|
||||
Media.PlaySpeechNotification(player, "WarningTwoMinutesRemaining")
|
||||
elseif RemainingTime == DateTime.Minutes(1) then
|
||||
Media.PlaySpeechNotification(player, "WarningOneMinuteRemaining")
|
||||
end
|
||||
|
||||
if RemainingTime > 0 then
|
||||
UserInterface.SetMissionText("Time Remaining: " .. Utils.FormatTime(RemainingTime), neutral.Color)
|
||||
RemainingTime = RemainingTime - 1
|
||||
elseif RemainingTime == 0 then
|
||||
UserInterface.SetMissionText("")
|
||||
end
|
||||
end
|
||||
2
mods/ra/maps/top-o-the-world/weapons.yaml
Normal file
2
mods/ra/maps/top-o-the-world/weapons.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
TeslaZap:
|
||||
Range: 6c0
|
||||
@@ -26,6 +26,7 @@ Counterstrike:
|
||||
sarin-gas-1-crackdown
|
||||
sarin-gas-2-down-under
|
||||
soviet-soldier-volkov-n-chitzkoi
|
||||
top-o-the-world
|
||||
Aftermath:
|
||||
monster-tank-madness
|
||||
OpenRA Originals:
|
||||
|
||||
Reference in New Issue
Block a user