Add soviet-06a

This commit is contained in:
Biofreak1987
2015-10-11 20:36:02 +02:00
parent 27e898f4ee
commit 7fcde4a7c9
7 changed files with 1237 additions and 0 deletions

View File

@@ -68,6 +68,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Red Alert Lua scripts", "Re
mods\ra\maps\soviet-05\soviet05.lua = mods\ra\maps\soviet-05\soviet05.lua
mods\ra\maps\soviet-05\soviet05-AI.lua = mods\ra\maps\soviet-05\soviet05-AI.lua
mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua = mods\ra\maps\soviet-05\soviet05-reinforcements_teams.lua
mods\ra\maps\soviet-06a\soviet06a.lua = mods\ra\maps\soviet-06a\soviet06a.lua
mods\ra\maps\soviet-06a\soviet06a-AI.lua = mods\ra\maps\soviet-06a\soviet06a-AI.lua
mods\ra\maps\soviet-07\soviet07.lua = mods\ra\maps\soviet-07\soviet07.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

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,980 @@
MapFormat: 7
RequiresMod: ra
Title: Soviet 06a: Bridge over the River Grotzny
Description: There is a special cargo that needs to be transported to a nearby Soviet base in the northeast.\n\nMake sure the trucks reach their destination intact. Along the way, there is a bridge which the Allies may have destroyed.\n\nIf so, use the Naval options at your disposal. Our attack subs will make short work of any Allied boats you discover.
Author: Westwood Studios
Tileset: TEMPERAT
MapSize: 128,128
Bounds: 5,1,93,53
Visibility: MissionSelector
Type: Campaign
Videos:
Briefing: soviet6.vqa
GameStart: onthprwl.vqa
GameWon: sitduck.vqa
GameLost: dpthchrg.vqa
Options:
Crates: False
Fog: True
Shroud: True
AllyBuildRadius: False
FragileAlliances: False
StartingCash: 11500
ConfigurableStartingUnits: False
ShortGame: False
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: allies
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
PlayerReference@Greece:
Name: Greece
Faction: allies
ColorRamp: 161,134,236
Enemies: USSR
PlayerReference@USSR:
Name: USSR
AllowBots: False
Playable: True
Required: True
LockFaction: True
Faction: soviet
LockColor: True
ColorRamp: 3,255,127
LockSpawn: True
LockTeam: True
Enemies: Greece, Creeps
Actors:
Actor0: cycl
Location: 17,1
Owner: Greece
Actor1: cycl
Location: 18,1
Owner: Greece
Actor2: cycl
Location: 19,1
Owner: Greece
Actor3: cycl
Location: 20,1
Owner: Greece
Actor4: cycl
Location: 21,1
Owner: Greece
Actor5: cycl
Location: 22,1
Owner: Greece
Actor6: cycl
Location: 23,1
Owner: Greece
Actor7: cycl
Location: 24,1
Owner: Greece
Actor8: cycl
Location: 25,1
Owner: Greece
Actor9: cycl
Location: 26,1
Owner: Greece
Actor10: cycl
Location: 27,1
Owner: Greece
Actor11: cycl
Location: 28,1
Owner: Greece
Actor12: cycl
Location: 29,1
Owner: Greece
Actor13: cycl
Location: 30,1
Owner: Greece
Actor14: cycl
Location: 31,1
Owner: Greece
Actor15: cycl
Location: 32,1
Owner: Greece
Actor16: cycl
Location: 33,1
Owner: Greece
Actor17: cycl
Location: 34,1
Owner: Greece
Actor18: cycl
Location: 35,1
Owner: Greece
Actor19: cycl
Location: 17,2
Owner: Greece
Actor20: cycl
Location: 17,3
Owner: Greece
Actor21: cycl
Location: 18,3
Owner: Greece
Actor22: cycl
Location: 17,4
Owner: Greece
Actor23: cycl
Location: 18,4
Owner: Greece
Actor24: cycl
Location: 17,10
Owner: Greece
Actor25: cycl
Location: 18,10
Owner: Greece
Actor26: cycl
Location: 17,11
Owner: Greece
Actor27: cycl
Location: 18,11
Owner: Greece
Actor28: cycl
Location: 17,12
Owner: Greece
Actor29: cycl
Location: 17,13
Owner: Greece
Actor30: cycl
Location: 17,14
Owner: Greece
Actor31: cycl
Location: 17,15
Owner: Greece
Actor32: cycl
Location: 17,16
Owner: Greece
Actor33: cycl
Location: 17,17
Owner: Greece
Actor34: cycl
Location: 17,18
Owner: Greece
Actor35: cycl
Location: 18,18
Owner: Greece
Actor36: cycl
Location: 18,19
Owner: Greece
Actor37: cycl
Location: 31,19
Owner: Greece
Actor38: cycl
Location: 32,19
Owner: Greece
Actor39: cycl
Location: 18,20
Owner: Greece
Actor40: cycl
Location: 31,20
Owner: Greece
Actor41: cycl
Location: 17,21
Owner: Greece
Actor42: cycl
Location: 18,21
Owner: Greece
Actor43: cycl
Location: 31,21
Owner: Greece
Actor44: cycl
Location: 17,22
Owner: Greece
Actor45: sbag
Location: 19,22
Owner: Greece
Actor46: sbag
Location: 20,22
Owner: Greece
Actor47: sbag
Location: 21,22
Owner: Greece
Actor48: sbag
Location: 27,22
Owner: Greece
Actor49: sbag
Location: 28,22
Owner: Greece
Actor50: sbag
Location: 29,22
Owner: Greece
Actor51: cycl
Location: 31,22
Owner: Greece
Actor52: cycl
Location: 17,23
Owner: Greece
Actor53: sbag
Location: 21,23
Owner: Greece
Actor54: sbag
Location: 27,23
Owner: Greece
Actor55: cycl
Location: 31,23
Owner: Greece
Actor56: cycl
Location: 17,24
Owner: Greece
Actor57: cycl
Location: 18,24
Owner: Greece
Actor58: cycl
Location: 19,24
Owner: Greece
Actor59: cycl
Location: 20,24
Owner: Greece
Actor60: cycl
Location: 21,24
Owner: Greece
Actor61: cycl
Location: 27,24
Owner: Greece
Actor62: cycl
Location: 28,24
Owner: Greece
Actor63: cycl
Location: 29,24
Owner: Greece
Actor64: cycl
Location: 30,24
Owner: Greece
Actor65: cycl
Location: 31,24
Owner: Greece
Actor66: sbag
Location: 71,31
Owner: Greece
Actor67: sbag
Location: 72,31
Owner: Greece
Actor68: sbag
Location: 71,32
Owner: Greece
Actor69: sbag
Location: 72,32
Owner: Greece
Actor70: sbag
Location: 72,33
Owner: Greece
Actor71: sbag
Location: 73,33
Owner: Greece
Actor72: sbag
Location: 73,34
Owner: Greece
Actor73: sbag
Location: 74,34
Owner: Greece
Actor74: sbag
Location: 75,34
Owner: Greece
Actor75: sbag
Location: 74,35
Owner: Greece
Actor76: sbag
Location: 75,35
Owner: Greece
Actor77: t17
Location: 66,28
Owner: Neutral
Actor78: t08
Location: 83,35
Owner: Neutral
Actor79: t16
Location: 82,34
Owner: Neutral
Actor80: tc04
Location: 80,36
Owner: Neutral
Actor81: tc05
Location: 77,34
Owner: Neutral
Actor82: tc01
Location: 79,32
Owner: Neutral
Actor83: tc01
Location: 61,52
Owner: Neutral
Actor84: tc02
Location: 61,49
Owner: Neutral
Actor85: tc03
Location: 58,52
Owner: Neutral
Actor86: tc05
Location: 52,47
Owner: Neutral
Actor87: t16
Location: 35,21
Owner: Neutral
Actor88: tc04
Location: 36,24
Owner: Neutral
Actor89: t15
Location: 38,22
Owner: Neutral
Actor90: t12
Location: 31,24
Owner: Neutral
Actor91: tc05
Location: 95,15
Owner: Neutral
Actor92: tc01
Location: 94,19
Owner: Neutral
Actor93: tc03
Location: 85,13
Owner: Neutral
Actor94: tc02
Location: 94,6
Owner: Neutral
Actor95: tc01
Location: 96,11
Owner: Neutral
Actor96: tc04
Location: 84,4
Owner: Neutral
Actor97: t17
Location: 83,13
Owner: Neutral
Actor98: t16
Location: 88,11
Owner: Neutral
Actor99: t16
Location: 91,23
Owner: Neutral
Actor100: t14
Location: 93,24
Owner: Neutral
Actor101: t11
Location: 95,22
Owner: Neutral
Actor102: tc05
Location: 32,22
Owner: Neutral
Actor103: tc05
Location: 5,12
Owner: Neutral
Actor104: tc01
Location: 9,12
Owner: Neutral
Actor105: tc05
Location: 50,34
Owner: Neutral
Actor106: tc04
Location: 53,34
Owner: Neutral
Actor107: tc05
Location: 74,47
Owner: Neutral
Actor108: tc04
Location: 80,43
Owner: Neutral
Actor109: tc02
Location: 78,42
Owner: Neutral
Actor110: tc01
Location: 74,46
Owner: Neutral
Actor111: t17
Location: 73,48
Owner: Neutral
Actor112: t16
Location: 77,46
Owner: Neutral
Actor113: t15
Location: 80,41
Owner: Neutral
Actor114: t14
Location: 68,52
Owner: Neutral
Actor115: t13
Location: 84,40
Owner: Neutral
Actor116: tc02
Location: 65,52
Owner: Neutral
Actor117: tc01
Location: 66,49
Owner: Neutral
Actor118: t08
Location: 32,20
Owner: Neutral
Actor119: tc02
Location: 18,52
Owner: Neutral
Actor120: t15
Location: 27,51
Owner: Neutral
Actor121: t11
Location: 40,40
Owner: Neutral
Actor122: t10
Location: 41,34
Owner: Neutral
Actor123: t10
Location: 43,29
Owner: Neutral
Actor124: t08
Location: 41,32
Owner: Neutral
Actor125: t08
Location: 42,41
Owner: Neutral
Actor126: tc05
Location: 29,28
Owner: Neutral
Actor127: tc02
Location: 19,26
Owner: Neutral
Actor128: tc04
Location: 17,24
Owner: Neutral
Actor129: t14
Location: 37,33
Owner: Neutral
Actor130: tc01
Location: 38,28
Owner: Neutral
Actor131: t16
Location: 39,27
Owner: Neutral
Actor132: t16
Location: 37,28
Owner: Neutral
Actor133: t10
Location: 11,49
Owner: Neutral
Actor134: tc05
Location: 12,24
Owner: Neutral
Actor135: tc04
Location: 5,30
Owner: Neutral
Actor136: tc02
Location: 12,12
Owner: Neutral
Actor137: t16
Location: 11,12
Owner: Neutral
Actor234: t12
Owner: Neutral
Location: 15,14
Actor139: t08
Location: 16,15
Owner: Neutral
Actor140: t01
Location: 8,12
Owner: Neutral
Actor141: t10
Location: 13,33
Owner: Neutral
Actor142: t15
Location: 7,40
Owner: Neutral
Actor143: t14
Location: 17,32
Owner: Neutral
Actor144: tc02
Location: 5,39
Owner: Neutral
Actor145: tc03
Location: 85,6
Owner: Neutral
Actor233: t01
Owner: Neutral
Location: 15,13
Actor147: t10
Location: 14,12
Owner: Neutral
Actor148: tc05
Location: 81,4
Owner: Neutral
Actor149: t01
Location: 61,9
Owner: Neutral
Actor150: tc03
Location: 71,6
Owner: Neutral
Actor151: t17
Location: 60,6
Owner: Neutral
Actor152: t11
Location: 70,3
Owner: Neutral
Actor153: tc05
Location: 22,2
Owner: Neutral
Actor154: tc03
Location: 28,2
Owner: Neutral
Actor155: tc01
Location: 33,1
Owner: Neutral
Actor156: hbox
Location: 19,23
Owner: Greece
Actor157: hbox
Location: 29,23
Owner: Greece
Actor158: gun
Location: 20,23
Owner: Greece
Facing: 128
Actor159: gun
Location: 28,23
Owner: Greece
Facing: 128
Actor161: dome
Location: 23,5
Owner: Greece
Actor163: gap
Location: 24,21
Owner: Greece
Actor164: syrd
Location: 35,14
Owner: Greece
Actor167: gun
Location: 33,5
Owner: Greece
Facing: 192
Actor168: gun
Location: 33,9
Owner: Greece
Facing: 192
Actor169: v07
Location: 66,4
Owner: Greece
Health: 45
Actor170: v03
Location: 64,8
Owner: Greece
Actor171: v01
Location: 71,8
Owner: Greece
Actor172: v05
Location: 61,8
Owner: Greece
Health: 43
Actor173: v06
Location: 68,4
Owner: Greece
Actor174: powr
Location: 20,2
Owner: Greece
Actor175: powr
Location: 25,2
Owner: Greece
Actor179: 2tnk
Location: 73,35
Owner: Greece
Facing: 160
Actor180: 2tnk
Location: 72,34
Owner: Greece
Facing: 160
Actor181: 2tnk
Location: 71,33
Owner: Greece
Facing: 160
Actor182: arty
Location: 74,33
Owner: Greece
Facing: 160
Actor183: arty
Location: 73,32
Owner: Greece
Facing: 160
Actor186: 3tnk
Location: 56,47
Owner: USSR
Health: 99
Facing: 32
Actor187: 3tnk
Location: 60,49
Owner: USSR
Health: 99
Facing: 32
Actor191: v2rl
Location: 57,49
Owner: USSR
Facing: 32
Actor193: 2tnk
Location: 73,31
Owner: Greece
Facing: 160
Actor194: 2tnk
Location: 75,33
Owner: Greece
Facing: 160
Actor195: 2tnk
Location: 85,18
Owner: Greece
Facing: 160
Actor196: 2tnk
Location: 88,20
Owner: Greece
Facing: 160
Actor197: 2tnk
Location: 22,23
Owner: Greece
Facing: 128
Actor198: 2tnk
Location: 26,23
Owner: Greece
Facing: 128
Actor199: arty
Location: 18,23
Owner: Greece
Facing: 96
Actor200: arty
Location: 30,23
Owner: Greece
Facing: 160
Actor202: 1tnk
Location: 23,21
Owner: Greece
Facing: 128
Actor203: 1tnk
Location: 25,21
Owner: Greece
Facing: 128
Actor204: 2tnk
Location: 40,6
Owner: Greece
Facing: 192
Actor205: 2tnk
Location: 40,8
Owner: Greece
Facing: 192
Actor206: arty
Location: 40,7
Owner: Greece
Facing: 192
Actor207: 1tnk
Location: 77,10
Owner: Greece
Facing: 192
Actor208: 1tnk
Location: 77,11
Owner: Greece
Facing: 192
Actor209: 1tnk
Location: 77,12
Owner: Greece
Facing: 192
Actor210: ca
Location: 87,29
Owner: Greece
Facing: 224
Actor211: ca
Location: 87,25
Owner: Greece
Facing: 160
Actor212: ca
Location: 76,22
Owner: Greece
Facing: 224
Actor213: pt
Location: 38,4
Owner: Greece
Facing: 192
Actor214: pt
Location: 38,10
Owner: Greece
Facing: 192
Actor215: dd
Location: 55,15
Owner: Greece
Facing: 192
Actor216: waypoint
Location: 39,13
Owner: Neutral
Actor235: silo
Owner: Greece
Location: 26,9
Actor236: silo
Owner: Greece
Location: 24,9
Actor237: silo
Owner: Greece
Location: 27,2
Actor238: silo
Owner: Greece
Location: 27,3
waypoint78: waypoint
Location: 83,23
Owner: Neutral
waypoint79: waypoint
Location: 87,19
Owner: Neutral
waypoint80: waypoint
Location: 84,22
Owner: Neutral
waypoint81: waypoint
Location: 76,22
Owner: Neutral
waypoint82: waypoint
Location: 87,29
Owner: Neutral
APCWaypoint1: waypoint
Location: 52,50
Owner: Neutral
APCWaypoint2: waypoint
Location: 58,51
Owner: Neutral
Apwr: apwr
Location: 18,11
Owner: Greece
Apwr2: apwr
Owner: Greece
Location: 27,5
AttackWaypoint1: waypoint
Owner: Neutral
Location: 24,30
AttackWaypoint2: waypoint
Owner: Neutral
Location: 35,30
Barr: tent
Location: 29,16
Owner: Greece
BaseAttacker1: 1tnk
Location: 76,35
Owner: Greece
Facing: 160
BaseAttacker2: 1tnk
Location: 71,30
Owner: Greece
Facing: 160
CameraBarrier: camera
Location: 70,36
Owner: Neutral
CameraBase1: camera
Location: 34,40
Owner: Neutral
CameraBase2: camera
Location: 24,40
Owner: Neutral
CameraBase3: camera
Location: 30,46
Owner: Neutral
CameraBase4: camera
Location: 48,39
Owner: Neutral
CameraStart: camera
Location: 58,48
Owner: Neutral
CYard: fact
Location: 30,2
Owner: Greece
CYardLocation: waypoint
Owner: Neutral
Location: 31,4
Harvester: harv
Location: 12,10
Owner: Greece
IntroEnemy1: 1tnk
Location: 63,42
Owner: Greece
Health: 28
Facing: 160
IntroEnemy2: jeep
Location: 64,42
Owner: Greece
Health: 43
Facing: 160
IntroEnemy3: 1tnk
Location: 64,43
Owner: Greece
Health: 50
Facing: 160
Mcv: mcv
Location: 61,45
Owner: USSR
Facing: 96
McvWaypoint: waypoint
Location: 53,53
Owner: Neutral
Proc: proc
Location: 24,9
Owner: Greece
FreeActor: False
Truck1: truk
Location: 54,52
Owner: USSR
Facing: 32
Truck2: truk
Location: 55,51
Owner: USSR
Facing: 32
Weap: weap
Location: 22,15
Owner: Greece
Smudges:
Rules:
Player:
-ConquestVictoryConditions:
MissionObjectives:
EarlyGameOver: true
-EnemyWatcher:
World:
-CrateSpawner:
-SpawnMPUnits:
-MPStartLocations:
LuaScript:
Scripts: soviet06a.lua, soviet06a-AI.lua
ObjectivesPanel:
PanelName: MISSION_OBJECTIVES
^Building:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Infantry:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Vehicle:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Ship:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Plane:
Tooltip:
GenericVisibility: Enemy
ShowOwnerRow: false
^Wall:
Tooltip:
ShowOwnerRow: false
^TechBuilding:
Tooltip:
ShowOwnerRow: false
^Crate:
Tooltip:
ShowOwnerRow: false
^Husk:
Tooltip:
GenericVisibility: Enemy, Ally, Neutral
GenericStancePrefix: false
ShowOwnerRow: false
APWR:
Buildable:
Prerequisites: ~disabled
ARTY:
Buildable:
Prerequisites: ~vehicles.allies, ~techlevel.low
BRIK:
Buildable:
Prerequisites: ~disabled
TSLA:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
IRON:
Buildable:
Prerequisites: ~disabled
MSLO:
Buildable:
Prerequisites: ~disabled
E3:
Buildable:
Prerequisites: ~tent
SHOK:
Buildable:
Prerequisites: ~disabled
SNIPER:
Buildable:
Prerequisites: ~disabled
HIJACKER:
Buildable:
Prerequisites: ~disabled
MIG:
Buildable:
Prerequisites: ~disabled
FTRK:
Buildable:
Prerequisites: ~disabled
2TNK:
Buildable:
Prerequisites: ~vehicles.allies, ~techlevel.low
4TNK:
Buildable:
Prerequisites: ~disabled
APC:
Buildable:
Prerequisites: ~disabled
TRUK:
-SpawnActorOnDeath:
-SupplyTruck:
Buildable:
Prerequisites: ~disabled
QTNK:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
MSUB:
Buildable:
Prerequisites: ~disabled
STEK:
Buildable:
Prerequisites: ~disabled
DOG:
Health:
HP: 25
AutoTarget:
ScanRadius: 5
HARV:
Harvester:
SearchFromProcRadius: 50
SearchFromOrderRadius: 50
AFLD:
ParatroopersPower@paratroopers:
DropItems: E1,E1,E1,E1,E1
MONEYCRATE:
GiveCashCrateAction:
Amount: 2000
V01:
SpawnActorOnDeath:
Actor: moneycrate
V05:
SpawnActorOnDeath:
Actor: healcrate
Sequences:
VoxelSequences:
Weapons:
Voices:
Notifications:
Translations:

View File

@@ -0,0 +1,112 @@
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
IdlingUnits = function()
local lazyUnits = enemy.GetGroundAttackers()
Utils.Do(lazyUnits, function(unit)
Trigger.OnDamaged(unit, function()
Trigger.ClearAll(unit)
Trigger.AfterDelay(0, function() IdleHunt(unit) end)
end)
end)
end
BaseBuildings =
{
{ "apwr", CVec.New(-13, 7), 500, true },
{ "tent", CVec.New(-2, 12), 400, true },
{ "proc", CVec.New(-7, 5), 1400, true },
{ "weap", CVec.New(-9, 11), 2000, true },
{ "apwr", CVec.New(-4, 1), 500, true }
}
BuildBase = function()
if CYard.IsDead or CYard.Owner ~= enemy then
return
elseif Harvester.IsDead and enemy.Resources <= 299 then
return
end
for i,v in ipairs(BaseBuildings) do
if not v[4] then
BuildBuilding(v)
return
end
end
Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
end
BuildBuilding = function(building)
Trigger.AfterDelay(Actor.BuildTime(building[1]), function()
local actor = Actor.Create(building[1], true, { Owner = enemy, Location = CYardLocation.Location + building[2] })
enemy.Cash = enemy.Cash - building[3]
building[4] = true
Trigger.OnKilled(actor, function() building[4] = true end)
Trigger.OnDamaged(actor, function(building)
if building.Owner == enemy and building.Health < building.MaxHealth * 3/4 then
building.StartBuildingRepairs()
end
end)
Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
end)
end
ProduceInfantry = function()
if not BaseBuildings[2][4] then
return
elseif Harvester.IsDead and enemy.Resources <= 299 then
return
end
local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
local toBuild = { Utils.Random(AlliedInfantryTypes) }
local Path = Utils.Random(AttackPaths)
enemy.Build(toBuild, function(unit)
InfAttack[#InfAttack + 1] = unit[1]
if #InfAttack >= 10 then
SendUnits(InfAttack, Path)
InfAttack = { }
Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
else
Trigger.AfterDelay(delay, ProduceInfantry)
end
end)
end
ProduceArmor = function()
if not BaseBuildings[4][4] then
return
elseif Harvester.IsDead and enemy.Resources <= 599 then
return
end
local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
local toBuild = { Utils.Random(AlliedArmorTypes) }
local Path = Utils.Random(AttackPaths)
enemy.Build(toBuild, function(unit)
ArmorAttack[#ArmorAttack + 1] = unit[1]
if #ArmorAttack >= 6 then
SendUnits(ArmorAttack, Path)
ArmorAttack = { }
Trigger.AfterDelay(DateTime.Minutes(3), ProduceArmor)
else
Trigger.AfterDelay(delay, ProduceArmor)
end
end)
end
SendUnits = function(units, waypoints)
Utils.Do(units, function(unit)
if not unit.IsDead then
Utils.Do(waypoints, function(waypoint)
unit.AttackMove(waypoint.Location)
end)
IdleHunt(unit)
end
end)
end

View File

@@ -0,0 +1,142 @@
ArmorAttack = { }
AttackPaths = { { AttackWaypoint1 }, { AttackWaypoint2 } }
BaseAttackers = { BaseAttacker1, BaseAttacker2 }
InfAttack = { }
IntroAttackers = { IntroEnemy1, IntroEnemy2, IntroEnemy3 }
Trucks = { Truck1, Truck2 }
AlliedInfantryTypes = { "e1", "e1", "e3" }
AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "2tnk", "2tnk", "arty" }
SovietReinforcements1 = { "e6", "e6", "e6", "e6", "e6" }
SovietReinforcements2 = { "e4", "e4", "e2", "e2", "e2" }
SovietReinforcements1Waypoints = { McvWaypoint.Location, APCWaypoint1.Location }
SovietReinforcements2Waypoints = { McvWaypoint.Location, APCWaypoint2.Location }
TruckGoalTrigger = { CPos.New(83, 7), CPos.New(83, 8), CPos.New(83, 9), CPos.New(83, 10), CPos.New(84, 10), CPos.New(84, 11), CPos.New(84, 12), CPos.New(85, 12), CPos.New(86, 12), CPos.New(87, 12), CPos.New(87, 13), CPos.New(88, 13), CPos.New(89, 13), CPos.New(90, 13), CPos.New(90, 14), CPos.New(90, 15), CPos.New(91, 15), CPos.New(92, 15), CPos.New(93, 15), CPos.New(94, 15) }
CameraBarrierTrigger = { CPos.New(65, 39), CPos.New(65, 40), CPos.New(66, 40), CPos.New(66, 41), CPos.New(67, 41), CPos.New(67, 42), CPos.New(68, 42), CPos.New(68, 43), CPos.New(68, 44) }
CameraBaseTrigger = { CPos.New(53, 42), CPos.New(54, 42), CPos.New(54, 41), CPos.New(55, 41), CPos.New(56, 41), CPos.New(56, 40), CPos.New(57, 40), CPos.New(57, 39), CPos.New(58, 39), CPos.New(59, 39), CPos.New(59, 38), CPos.New(60, 38), CPos.New(61, 38) }
Trigger.OnEnteredFootprint(TruckGoalTrigger, function(a, id)
if not truckGoalTrigger and a.Owner == player and a.Type == "truk" then
truckGoalTrigger = true
player.MarkCompletedObjective(sovietObjective)
end
end)
Trigger.OnEnteredFootprint(CameraBarrierTrigger, function(a, id)
if not cameraBarrierTrigger and a.Owner == player then
cameraBarrierTrigger = true
local cameraBarrier = Actor.Create("camera", true, { Owner = player, Location = CameraBarrier.Location })
Trigger.AfterDelay(DateTime.Seconds(15), function()
cameraBarrier.Kill()
end)
end
end)
Trigger.OnEnteredFootprint(CameraBaseTrigger, function(a, id)
if not cameraBaseTrigger and a.Owner == player then
cameraBaseTrigger = true
local cameraBase1 = Actor.Create("camera", true, { Owner = player, Location = CameraBase1.Location })
local cameraBase2 = Actor.Create("camera", true, { Owner = player, Location = CameraBase2.Location })
local cameraBase3 = Actor.Create("camera", true, { Owner = player, Location = CameraBase3.Location })
local cameraBase4 = Actor.Create("camera", true, { Owner = player, Location = CameraBase4.Location })
Trigger.AfterDelay(DateTime.Minutes(1), function()
cameraBase1.Kill()
cameraBase2.Kill()
cameraBase3.Kill()
cameraBase4.Kill()
end)
end
end)
Trigger.OnAllKilled(Trucks, function()
if not controlCenterTrigger then
enemy.MarkCompletedObjective(alliedObjective)
end
end)
Trigger.OnKilled(Apwr, function(building)
BaseBuildings[1][4] = false
end)
Trigger.OnKilled(Barr, function(building)
BaseBuildings[2][4] = false
end)
Trigger.OnKilled(Proc, function(building)
BaseBuildings[3][4] = false
end)
Trigger.OnKilled(Weap, function(building)
BaseBuildings[4][4] = false
end)
Trigger.OnKilled(Apwr2, function(building)
BaseBuildings[5][4] = false
end)
-- Activate the AI once the player deployed the Mcv
Trigger.OnRemovedFromWorld(Mcv, function()
if not mcvDeployed then
mcvDeployed = true
BuildBase()
Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
Trigger.AfterDelay(DateTime.Minutes(2), function()
Utils.Do(BaseAttackers, function(actor)
IdleHunt(actor)
end)
end)
end
end)
WorldLoaded = function()
player = Player.GetPlayer("USSR")
enemy = Player.GetPlayer("Greece")
Camera.Position = CameraStart.CenterPosition
Mcv.Move(McvWaypoint.Location)
Harvester.FindResources()
Utils.Do(IntroAttackers, function(actor)
IdleHunt(actor)
end)
Utils.Do(Map.NamedActors, function(actor)
if actor.Owner == enemy and actor.HasProperty("StartBuildingRepairs") then
Trigger.OnDamaged(actor, function(building)
if building.Owner == enemy and building.Health < 3/4 * building.MaxHealth then
building.StartBuildingRepairs()
end
end)
end
end)
Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements1, SovietReinforcements1Waypoints)
Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements2, SovietReinforcements2Waypoints)
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)
Trigger.OnPlayerWon(player, function()
Media.PlaySpeechNotification(player, "Win")
end)
Trigger.OnPlayerLost(player, function()
Media.PlaySpeechNotification(player, "Lose")
end)
alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
end
Tick = function()
if player.HasNoRequiredUnits() then
enemy.MarkCompletedObjective(alliedObjective)
end
if enemy.Resources >= enemy.ResourceCapacity * 0.75 then
enemy.Cash = enemy.Cash + enemy.Resources - enemy.ResourceCapacity * 0.25
enemy.Resources = enemy.ResourceCapacity * 0.25
end
end

View File

@@ -12,4 +12,5 @@ Soviet Campaign:
./mods/ra/maps/soviet-04a
./mods/ra/maps/soviet-04b
./mods/ra/maps/soviet-05
./mods/ra/maps/soviet-06a
./mods/ra/maps/soviet-07