Add allies04

This commit is contained in:
abcdefg30
2016-08-21 18:34:29 +02:00
parent c312cf9171
commit e0cff5b0a5
7 changed files with 1087 additions and 0 deletions

View File

@@ -0,0 +1,270 @@
IdlingUnits = { }
Yaks = { }
AttackGroupSizes =
{
easy = 6,
normal = 8,
hard = 10
}
AttackDelays =
{
easy = { DateTime.Seconds(4), DateTime.Seconds(9) },
normal = { DateTime.Seconds(2), DateTime.Seconds(7) },
hard = { DateTime.Seconds(1), DateTime.Seconds(5) }
}
AttackRallyPoints =
{
{ SovietRally1.Location, SovietRally3.Location, SovietRally5.Location, SovietRally4.Location, SovietRally13.Location, PlayerBase.Location },
{ SovietRally7.Location, SovietRally10.Location, PlayerBase.Location },
{ SovietRally1.Location, SovietRally3.Location, SovietRally5.Location, SovietRally4.Location, SovietRally12.Location, PlayerBase.Location },
{ SovietRally7.Location, ParadropPoint1.Location, PlayerBase.Location },
{ SovietRally8.Location, SovietRally9.Location, ParadropPoint1.Location, PlayerBase.Location, }
}
SovietInfantryTypes = { "e1", "e1", "e2" }
SovietVehicleTypes = { "3tnk", "3tnk", "3tnk", "ftrk", "ftrk", "apc" }
SovietAircraftType = { "yak" }
AttackOnGoing = false
HoldProduction = false
HarvesterKilled = false
Powr1 = { name = "powr", pos = CPos.New(47, 21), prize = 500, exists = true }
Barr = { name = "barr", pos = CPos.New(53, 26), prize = 400, exists = true }
Proc = { name = "proc", pos = CPos.New(54, 21), prize = 1400, exists = true }
Weap = { name = "weap", pos = CPos.New(48, 28), prize = 2000, exists = true }
Powr2 = { name = "powr", pos = CPos.New(51, 21), prize = 500, exists = true }
Powr3 = { name = "powr", pos = CPos.New(46, 25), prize = 500, exists = true }
Powr4 = { name = "powr", pos = CPos.New(49, 21), prize = 500, exists = true }
Ftur1 = { name = "powr", pos = CPos.New(56, 27), prize = 600, exists = true }
Ftur2 = { name = "powr", pos = CPos.New(51, 32), prize = 600, exists = true }
Ftur3 = { name = "powr", pos = CPos.New(54, 30), prize = 600, exists = true }
Afld1 = { name = "afld", pos = CPos.New(43, 23), prize = 500, exists = true }
Afld2 = { name = "afld", pos = CPos.New(43, 21), prize = 500, exists = true }
BaseBuildings = { Powr1, Barr, Proc, Weap, Powr2, Powr3, Powr4, Ftur1, Ftur2, Ftur3, Afld1, Afld2 }
InitialBase = { Barracks, Refinery, PowerPlant1, PowerPlant2, PowerPlant3, PowerPlant4, Warfactory, Flametur1, Flametur2, Flametur3, Airfield1, Airfield2 }
BuildBase = function()
if Conyard.IsDead or Conyard.Owner ~= ussr then
return
elseif Harvester.IsDead and ussr.Resources <= 299 then
return
end
for i,v in ipairs(BaseBuildings) do
if not v.exists then
BuildBuilding(v)
return
end
end
Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
end
BuildBuilding = function(building)
Trigger.AfterDelay(Actor.BuildTime(building.name), function()
local actor = Actor.Create(building.name, true, { Owner = ussr, Location = building.pos })
ussr.Cash = ussr.Cash - building.prize
building.exists = true
Trigger.OnKilled(actor, function() building.exists = false end)
Trigger.OnDamaged(actor, function(building)
if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then
building.StartBuildingRepairs()
DefendActor(actor)
end
end)
Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
end)
end
IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
SetupAttackGroup = function()
local units = { }
for i = 0, AttackGroupSize, 1 do
if #IdlingUnits == 0 then
return units
end
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
return units
end
SendAttack = function()
if Attacking then
return
end
Attacking = true
HoldProduction = true
local units = SetupAttackGroup()
local path = Utils.Random(AttackRallyPoints)
Utils.Do(units, function(unit)
unit.Patrol(path)
IdleHunt(unit)
end)
Trigger.OnAllRemovedFromWorld(units, function()
Attacking = false
HoldProduction = false
end)
end
ProtectHarvester = function(unit)
DefendActor(unit)
Trigger.OnKilled(unit, function() HarvesterKilled = true end)
end
DefendActor = function(unit)
Trigger.OnDamaged(unit, function(self, attacker)
if AttackOnGoing then
return
end
AttackOnGoing = true
local Guards = SetupAttackGroup()
if #Guards <= 0 then
AttackOnGoing = false
return
end
Utils.Do(Guards, function(unit)
if not self.IsDead then
unit.AttackMove(self.Location)
end
IdleHunt(unit)
end)
Trigger.OnAllRemovedFromWorld(Guards, function() AttackOnGoing = false end)
end)
end
InitAIUnits = function()
IdlingUnits = ussr.GetGroundAttackers()
DefendActor(Conyard)
for i,v in ipairs(InitialBase) do
DefendActor(v)
Trigger.OnDamaged(v, function(building)
if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then
building.StartBuildingRepairs()
end
end)
Trigger.OnKilled(v, function()
BaseBuildings[i].exists = false
end)
end
end
ProduceInfantry = function()
if HoldProduction then
Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
return
end
-- See AttackDelay in WorldLoaded
local delay = Utils.RandomInteger(AttackDelay[1], AttackDelay[2])
local toBuild = { Utils.Random(SovietInfantryTypes) }
ussr.Build(toBuild, function(unit)
IdlingUnits[#IdlingUnits + 1] = unit[1]
Trigger.AfterDelay(delay, ProduceInfantry)
-- See AttackGroupSize in WorldLoaded
if #IdlingUnits >= (AttackGroupSize * 2.5) then
SendAttack()
end
end)
end
ProduceVehicles = function()
if HoldProduction then
Trigger.AfterDelay(DateTime.Minutes(1), ProduceVehicles)
return
end
-- See AttackDelay in WorldLoaded
local delay = Utils.RandomInteger(AttackDelay[1], AttackDelay[2])
if HarvesterKilled then
ussr.Build({ "harv" }, function(harv)
ProtectHarvester(harv[1])
HarvesterKilled = false
Trigger.AfterDelay(delay, ProduceVehicles)
end)
else
local toBuild = { Utils.Random(SovietVehicleTypes) }
ussr.Build(toBuild, function(unit)
IdlingUnits[#IdlingUnits + 1] = unit[1]
Trigger.AfterDelay(delay, ProduceVehicles)
-- See AttackGroupSize in WorldLoaded
if #IdlingUnits >= (AttackGroupSize * 2.5) then
SendAttack()
end
end)
end
end
ProduceAircraft = function()
ussr.Build(SovietAircraftType, function(units)
local yak = units[1]
Yaks[#Yaks + 1] = yak
Trigger.OnKilled(yak, ProduceAircraft)
if #Yaks == 1 then
Trigger.AfterDelay(DateTime.Minutes(1), ProduceAircraft)
end
TargetAndAttack(yak)
end)
end
TargetAndAttack = function(yak, target)
if not target or target.IsDead or (not target.IsInWorld) then
local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") end)
if #enemies > 0 then
target = Utils.Random(enemies)
else
yak.Wait(DateTime.Seconds(5))
end
end
if target and yak.AmmoCount() > 0 then
yak.Attack(target)
else
yak.ReturnToBase()
end
yak.CallFunc(function()
TargetAndAttack(yak, target)
end)
end
ActivateAI = function()
InitAIUnits()
ProtectHarvester(Harvester)
local difficulty = Map.LobbyOption("difficulty")
AttackDelay = AttackDelays[difficulty]
AttackGroupSize = AttackGroupSizes[difficulty]
Trigger.AfterDelay(DateTime.Seconds(10), function()
ProduceInfantry()
ProduceVehicles()
ProduceAircraft()
end)
end

View File

@@ -0,0 +1,170 @@
ConvoyUnits =
{
{ "ftrk", "ftrk", "truk", "truk", "apc", "ftrk" },
{ "ftrk", "3tnk", "truk", "truk", "apc" },
{ "3tnk", "3tnk", "truk", "truk", "ftrk" }
}
ConvoyRallyPoints =
{
{ SovietEntry1.Location, SovietRally1.Location, SovietRally3.Location, SovietRally5.Location, SovietRally4.Location, SovietRally6.Location },
{ SovietEntry2.Location, SovietRally10.Location, SovietRally11.Location }
}
ConvoyDelays =
{
easy = { DateTime.Minutes(4), DateTime.Minutes(5) + DateTime.Seconds(20) },
normal = { DateTime.Minutes(2) + DateTime.Seconds(30), DateTime.Minutes(4) },
hard = { DateTime.Minutes(1) + DateTime.Seconds(30), DateTime.Minutes(2) + DateTime.Seconds(30) }
}
Convoys =
{
easy = 2,
normal = 3,
hard = 5
}
ParadropDelays =
{
easy = { DateTime.Seconds(40), DateTime.Seconds(90) },
normal = { DateTime.Seconds(30), DateTime.Seconds(70) },
hard = { DateTime.Seconds(20), DateTime.Seconds(50) }
}
ParadropWaves =
{
easy = 4,
normal = 6,
hard = 10
}
ParadropLZs = { ParadropPoint1.CenterPosition, ParadropPoint2.CenterPosition, ParadropPoint3.CenterPosition }
Paradropped = 0
Paradrop = function()
Trigger.AfterDelay(Utils.RandomInteger(ParadropDelay[1], ParadropDelay[2]), function()
local units = PowerProxy.SendParatroopers(Utils.Random(ParadropLZs))
Utils.Do(units, function(unit)
Trigger.OnAddedToWorld(unit, IdleHunt)
end)
Paradropped = Paradropped + 1
if Paradropped <= ParadropWaves[Map.LobbyOption("difficulty")] then
Paradrop()
end
end)
end
ConvoysSent = 0
SendConvoys = function()
Trigger.AfterDelay(Utils.RandomInteger(ConvoyDelay[1], ConvoyDelay[2]), function()
local path = Utils.Random(ConvoyRallyPoints)
local units = Reinforcements.Reinforce(ussr, Utils.Random(ConvoyUnits), { path[1] })
local lastWaypoint = path[#path]
Utils.Do(units, function(unit)
Trigger.OnAddedToWorld(unit, function()
if unit.Type == "truk" then
Utils.Do(path, function(waypoint)
unit.Move(waypoint)
end)
Trigger.OnIdle(unit, function()
unit.Move(lastWaypoint)
end)
else
unit.Patrol(path)
Trigger.OnIdle(unit, function()
unit.AttackMove(lastWaypoint)
end)
end
end)
end)
local id = Trigger.OnEnteredFootprint({ lastWaypoint }, function(a, id)
if a.Owner == ussr and Utils.Any(units, function(unit) return unit == a end) then
-- We are at our destination and thus don't care about other queued actions anymore
a.Stop()
a.Destroy()
if a.Type == "truk" then
player.MarkFailedObjective(DestroyConvoys)
end
end
end)
Trigger.OnAllRemovedFromWorld(units, function()
Trigger.RemoveFootprintTrigger(id)
ConvoysSent = ConvoysSent + 1
if ConvoysSent <= Convoys[Map.LobbyOption("difficulty")] then
SendConvoys()
else
player.MarkCompletedObjective(DestroyConvoys)
end
end)
Media.PlaySpeechNotification(player, "ConvoyApproaching")
end)
end
Tick = function()
if player.HasNoRequiredUnits() then
player.MarkFailedObjective(KillUSSR)
end
if ussr.HasNoRequiredUnits() then
player.MarkCompletedObjective(KillUSSR)
-- We don't care about future convoys anymore
player.MarkCompletedObjective(DestroyConvoys)
end
end
InitObjectives = function()
Trigger.OnObjectiveAdded(player, function(p, id)
Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
end)
KillUSSR = player.AddPrimaryObjective("Destroy all Soviet units and buildings in this region.")
DestroyConvoys = player.AddSecondaryObjective("Eliminate all passing Soviet convoys.")
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.OnPlayerLost(player, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(player, "MissionFailed")
end)
end)
Trigger.OnPlayerWon(player, function()
Trigger.AfterDelay(DateTime.Seconds(1), function()
Media.PlaySpeechNotification(player, "MissionAccomplished")
end)
end)
end
WorldLoaded = function()
player = Player.GetPlayer("Greece")
ussr = Player.GetPlayer("USSR")
Camera.Position = AlliedConyard.CenterPosition
InitObjectives()
local difficulty = Map.LobbyOption("difficulty")
ConvoyDelay = ConvoyDelays[difficulty]
ParadropDelay = ParadropDelays[difficulty]
PowerProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
Paradrop()
SendConvoys()
Trigger.AfterDelay(0, ActivateAI)
end

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,539 @@
MapFormat: 11
RequiresMod: ra
Title: 04: Ten to one
Author: Westwood Studios
Tileset: SNOW
MapSize: 128,128
Bounds: 37,21,56,65
Visibility: MissionSelector
Categories: Campaign
LockPreview: True
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Faction: allies
PlayerReference@USSR:
Name: USSR
Faction: soviet
Color: FE1100
Enemies: Greece
PlayerReference@Greece:
Name: Greece
Playable: True
Required: True
LockFaction: True
Faction: allies
LockColor: True
Color: E2E6F5
Enemies: USSR
Actors:
Actor0: t17
Location: 65,35
Owner: Neutral
Actor1: tc02
Location: 65,36
Owner: Neutral
Actor2: tc04
Location: 85,81
Owner: Neutral
Actor3: tc01
Location: 89,84
Owner: Neutral
Actor4: tc05
Location: 90,83
Owner: Neutral
Actor5: t10
Location: 84,71
Owner: Neutral
Actor6: t11
Location: 54,55
Owner: Neutral
Actor7: tc04
Location: 45,53
Owner: Neutral
Actor8: t01
Location: 45,44
Owner: Neutral
Actor9: t11
Location: 59,71
Owner: Neutral
Actor10: tc01
Location: 62,84
Owner: Neutral
Actor11: t07
Location: 51,84
Owner: Neutral
Actor12: t08
Location: 48,85
Owner: Neutral
Actor13: t14
Location: 46,84
Owner: Neutral
Actor14: t11
Location: 40,84
Owner: Neutral
Actor15: t07
Location: 87,44
Owner: Neutral
Actor16: t01
Location: 92,45
Owner: Neutral
Actor17: t11
Location: 77,56
Owner: Neutral
Actor18: t02
Location: 79,47
Owner: Neutral
Actor19: tc02
Location: 44,68
Owner: Neutral
Actor20: t17
Location: 67,62
Owner: Neutral
Actor21: tc05
Location: 68,67
Owner: Neutral
Actor22: tc04
Location: 67,66
Owner: Neutral
Actor23: t15
Location: 71,63
Owner: Neutral
Actor24: t16
Location: 72,62
Owner: Neutral
Actor25: t08
Location: 64,55
Owner: Neutral
Actor26: t17
Location: 69,50
Owner: Neutral
Actor27: tc04
Location: 67,49
Owner: Neutral
Actor28: tc02
Location: 67,51
Owner: Neutral
Actor29: t01
Location: 67,44
Owner: Neutral
Actor30: t06
Location: 67,54
Owner: Neutral
Actor31: tc01
Location: 70,54
Owner: Neutral
Actor32: t17
Location: 70,55
Owner: Neutral
Actor33: tc04
Location: 67,76
Owner: Neutral
Actor34: tc03
Location: 71,52
Owner: Neutral
Actor35: t05
Location: 40,74
Owner: Neutral
Actor36: tc02
Location: 69,72
Owner: Neutral
Actor37: t10
Location: 68,77
Owner: Neutral
Actor38: t11
Location: 51,71
Owner: Neutral
Actor39: t08
Location: 50,78
Owner: Neutral
Actor40: t07
Location: 44,77
Owner: Neutral
Actor41: tc01
Location: 63,74
Owner: Neutral
Actor42: tc01
Location: 59,60
Owner: Neutral
Actor43: t17
Location: 53,66
Owner: Neutral
Actor44: t01
Location: 45,56
Owner: Neutral
Actor45: t10
Location: 43,56
Owner: Neutral
Actor46: t10
Location: 55,46
Owner: Neutral
Actor47: t14
Location: 58,49
Owner: Neutral
Actor48: t16
Location: 61,44
Owner: Neutral
Actor49: t01
Location: 89,62
Owner: Neutral
Actor50: t12
Location: 92,63
Owner: Neutral
Actor51: t08
Location: 92,60
Owner: Neutral
Actor52: t03
Location: 75,72
Owner: Neutral
Actor53: t06
Location: 75,80
Owner: Neutral
Actor54: t01
Location: 77,41
Owner: Neutral
Actor55: t03
Location: 76,42
Owner: Neutral
Actor56: t05
Location: 83,27
Owner: Neutral
Actor57: tc02
Location: 79,35
Owner: Neutral
Actor58: tc04
Location: 90,26
Owner: Neutral
Actor59: t17
Location: 92,22
Owner: Neutral
Actor60: tc03
Location: 91,31
Owner: Neutral
Actor61: t01
Location: 43,47
Owner: Neutral
Actor62: t02
Location: 37,52
Owner: Neutral
Actor63: t10
Location: 37,37
Owner: Neutral
Actor64: tc02
Location: 41,28
Owner: Neutral
Actor65: tc03
Location: 67,27
Owner: Neutral
Actor66: t16
Location: 63,27
Owner: Neutral
Actor67: t03
Location: 38,27
Owner: Neutral
Actor68: t06
Location: 42,31
Owner: Neutral
Actor69: t07
Location: 77,25
Owner: Neutral
Actor70: tc02
Location: 40,24
Owner: Neutral
Actor71: t17
Location: 37,24
Owner: Neutral
Actor81: silo
Location: 43,27
Owner: USSR
Actor82: silo
Location: 44,28
Owner: USSR
Actor83: silo
Location: 44,26
Owner: USSR
Actor89: 3tnk
Location: 42,35
Owner: USSR
Facing: 64
Actor90: 3tnk
Location: 39,34
Owner: USSR
Facing: 64
Actor91: 3tnk
Location: 49,31
Owner: USSR
Facing: 96
Actor93: e2
Location: 47,40
Owner: USSR
Facing: 64
SubCell: 0
Actor94: e2
Location: 47,36
Owner: USSR
Facing: 96
SubCell: 4
Actor95: e2
Location: 50,40
Owner: USSR
Facing: 96
SubCell: 0
Actor96: e2
Location: 48,40
Owner: USSR
Facing: 64
SubCell: 0
Actor97: e2
Location: 48,36
Owner: USSR
Facing: 64
SubCell: 0
Actor98: e2
Location: 46,39
Owner: USSR
Facing: 96
SubCell: 2
Actor99: e1
Location: 70,59
Owner: Greece
Facing: 192
SubCell: 4
Actor100: e1
Location: 44,34
Owner: USSR
Facing: 96
SubCell: 4
Actor101: e1
Location: 43,37
Owner: USSR
Facing: 96
SubCell: 4
waypoint17: waypoint
Location: 92,68
Owner: Neutral
waypoint98: waypoint
Location: 70,60
Owner: Neutral
Actor129: proc
Owner: Greece
Location: 82,54
Actor130: powr
Owner: Greece
Location: 87,53
Actor131: tent
Owner: Greece
Location: 83,49
Health: 12
Actor88: jeep
Location: 70,60
Owner: Greece
Facing: 224
Actor132: jeep
Location: 57,65
Owner: Greece
Actor133: jeep
Location: 62,67
Owner: Greece
Actor134: jeep
Location: 74,81
Owner: Greece
Actor135: jeep
Location: 45,71
Owner: Greece
Actor136: e1
Location: 47,71
Owner: Greece
Actor137: e1
Location: 44,72
Owner: Greece
Actor138: e1
Location: 49,73
Owner: Greece
Actor139: e1
Location: 47,73
Owner: Greece
Actor140: e1
Location: 45,73
Owner: Greece
Actor141: e1
Location: 56,69
Owner: Greece
Actor142: e3
Location: 48,72
Owner: Greece
Actor143: e1
Location: 73,80
Owner: Greece
Actor144: e1
Location: 76,79
Owner: Greece
Actor145: e1
Location: 74,80
Owner: Greece
Actor146: e1
Location: 62,69
Owner: Greece
Actor147: e3
Location: 58,69
Owner: Greece
Actor148: e3
Location: 60,68
Owner: Greece
Actor149: e3
Location: 75,79
Owner: Greece
Actor150: e1
Location: 85,54
Owner: Greece
Actor151: e1
Location: 85,51
Owner: Greece
Actor152: e1
Location: 84,48
Owner: Greece
Actor153: e3
Location: 84,55
Owner: Greece
Actor154: e2
Owner: USSR
Location: 82,47
SubCell: 3
Facing: 92
TurretFacing: 92
Actor155: e1
Owner: USSR
Location: 87,49
SubCell: 3
Facing: 92
TurretFacing: 92
Actor156: e1
Owner: USSR
Location: 87,49
SubCell: 1
Facing: 122
TurretFacing: 122
AlliedConyard: fact
Owner: Greece
Location: 88,49
Health: 88
Harvester: harv
Location: 57,24
Owner: USSR
Facing: 64
Conyard: fact
Location: 49,24
Owner: USSR
Barracks: barr
Location: 53,26
Owner: USSR
Refinery: proc
Location: 54,21
Owner: USSR
FreeActor: false
PowerPlant1: powr
Location: 47,21
Owner: USSR
PowerPlant2: powr
Location: 51,21
Owner: USSR
PowerPlant3: powr
Location: 46,25
Owner: USSR
PowerPlant4: powr
Location: 49,21
Owner: USSR
Warfactory: weap
Location: 48,28
Owner: USSR
Flametur1: ftur
Location: 56,27
Owner: USSR
Flametur2: ftur
Location: 51,32
Owner: USSR
Flametur3: ftur
Location: 54,30
Owner: USSR
Airfield1: afld
Location: 43,23
Owner: USSR
Airfield2: afld
Location: 43,21
Owner: USSR
ParadropPoint1: waypoint
Location: 77,40
Owner: Neutral
ParadropPoint2: waypoint
Location: 83,65
Owner: Neutral
ParadropPoint3: waypoint
Location: 76,52
Owner: Neutral
SovietEntry1: waypoint
Location: 37,34
Owner: Neutral
SovietEntry2: waypoint
Location: 88,21
Owner: Neutral
SovietRally1: waypoint
Location: 48,38
Owner: Neutral
SovietRally2: waypoint
Location: 43,51
Owner: Neutral
SovietRally3: waypoint
Location: 49,65
Owner: Neutral
SovietRally4: waypoint
Location: 61,80
Owner: Neutral
SovietRally5: waypoint
Location: 49,74
Owner: Neutral
SovietRally6: waypoint
Location: 80,85
Owner: Neutral
SovietRally7: waypoint
Location: 59,32
Owner: Neutral
SovietRally8: waypoint
Location: 56,34
Owner: Neutral
SovietRally9: waypoint
Location: 62,48
Owner: Neutral
SovietRally10: waypoint
Location: 84,30
Owner: Neutral
SovietRally11: waypoint
Location: 92,42
Owner: Neutral
SovietRally12: waypoint
Location: 72,66
Owner: Neutral
SovietRally13: waypoint
Location: 80,77
Owner: Neutral
USSRBase: waypoint
Location: 50,25
Owner: Neutral
PlayerBase: waypoint
Location: 88,52
Owner: Neutral
Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, rules.yaml

View File

@@ -0,0 +1,107 @@
Player:
PlayerResources:
DefaultCash: 5000
World:
LuaScript:
Scripts: allies04.lua, allies04-AI.lua
MissionData:
Briefing: Soviet forces are trying to retake the pass you cleared for our convoys.\n\nDon't let this happen. Hold the pass and prevent the Soviets from taking this vital area.\n\nDestroy all Soviet units and buildings in this region.
BriefingVideo: ally4.vqa
StartVideo: binoc.vqa
WinVideo: oildrum.vqa
LossVideo: bmap.vqa
MapOptions:
TechLevel: medium
ScriptLobbyDropdown@difficulty:
ID: difficulty
Label: Difficulty
Values:
easy: Easy
normal: Normal
hard: Hard
Default: easy
powerproxy.paratroopers:
ParatroopersPower:
DropItems: E1,E1,E1,E2,E2
V2RL:
Buildable:
Prerequisites: ~disabled
2TNK:
Buildable:
Prerequisites: ~disabled
3TNK:
Buildable:
Prerequisites: ~vehicles.soviet
ARTY:
Buildable:
Prerequisites: ~disabled
MCV:
Buildable:
Prerequisites: ~disabled
TRUK:
Buildable:
Prerequisites: ~disabled
SPEN:
Buildable:
Prerequisites: ~disabled
SYRD:
Buildable:
Prerequisites: ~disabled
APWR:
Buildable:
Prerequisites: ~disabled
TSLA:
Buildable:
Prerequisites: ~disabled
SAM:
Buildable:
Prerequisites: ~disabled
AGUN:
Buildable:
Prerequisites: ~disabled
AFLD:
Buildable:
Prerequisites: ~disabled
HPAD:
Buildable:
Prerequisites: ~disabled
BRIK:
Buildable:
Prerequisites: ~disabled
E4:
Buildable:
Prerequisites: ~disabled
E6:
Buildable:
Prerequisites: ~disabled
SPY:
Buildable:
Prerequisites: ~disabled
MECH:
Buildable:
Prerequisites: ~disabled
HIJACKER:
Buildable:
Prerequisites: ~disabled

View File

@@ -3,6 +3,7 @@ Allied Campaign:
./mods/ra/maps/allies-02
./mods/ra/maps/allies-03a
./mods/ra/maps/allies-03b
./mods/ra/maps/allies-04
./mods/ra/maps/allies-05a
Soviet Campaign:
./mods/ra/maps/soviet-01