From 7c14f54ca387225aad00a7c983abbe5fc7d20c8b Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Mon, 27 Jul 2015 18:10:09 +0200 Subject: [PATCH] Added soviet04a and soviet04b --- mods/ra/maps/soviet-04a/AI.lua | 111 +++ mods/ra/maps/soviet-04a/main.lua | 148 ++++ mods/ra/maps/soviet-04a/map.bin | Bin 0 -> 81937 bytes mods/ra/maps/soviet-04a/map.png | Bin 0 -> 28849 bytes mods/ra/maps/soviet-04a/map.yaml | 760 +++++++++++++++++ .../maps/soviet-04a/reinforcements_teams.lua | 80 ++ mods/ra/maps/soviet-04b/AI.lua | 111 +++ mods/ra/maps/soviet-04b/main.lua | 141 ++++ mods/ra/maps/soviet-04b/map.bin | Bin 0 -> 81937 bytes mods/ra/maps/soviet-04b/map.png | Bin 0 -> 28849 bytes mods/ra/maps/soviet-04b/map.yaml | 788 ++++++++++++++++++ .../maps/soviet-04b/reinforcements_teams.lua | 80 ++ mods/ra/maps/soviet-05/map.yaml | 11 +- mods/ra/missions.yaml | 2 + 14 files changed, 2227 insertions(+), 5 deletions(-) create mode 100644 mods/ra/maps/soviet-04a/AI.lua create mode 100644 mods/ra/maps/soviet-04a/main.lua create mode 100644 mods/ra/maps/soviet-04a/map.bin create mode 100644 mods/ra/maps/soviet-04a/map.png create mode 100644 mods/ra/maps/soviet-04a/map.yaml create mode 100644 mods/ra/maps/soviet-04a/reinforcements_teams.lua create mode 100644 mods/ra/maps/soviet-04b/AI.lua create mode 100644 mods/ra/maps/soviet-04b/main.lua create mode 100644 mods/ra/maps/soviet-04b/map.bin create mode 100644 mods/ra/maps/soviet-04b/map.png create mode 100644 mods/ra/maps/soviet-04b/map.yaml create mode 100644 mods/ra/maps/soviet-04b/reinforcements_teams.lua diff --git a/mods/ra/maps/soviet-04a/AI.lua b/mods/ra/maps/soviet-04a/AI.lua new file mode 100644 index 0000000000..3ff254fa6f --- /dev/null +++ b/mods/ra/maps/soviet-04a/AI.lua @@ -0,0 +1,111 @@ +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +IdlingUnits = function() + local lazyUnits = Greece.GetGroundAttackers() + + Utils.Do(lazyUnits, function(unit) + Trigger.OnDamaged(unit, function() + Trigger.ClearAll(unit) + Trigger.AfterDelay(0, function() IdleHunt(unit) end) + end) + end) +end + +BaseBuildings = +{ + { "powr", CVec.New(0, 4), 300 }, + { "tent", CVec.New(-9, 6), 400, true }, + { "proc", CVec.New(4, 7), 1400, true }, + { "weap", CVec.New(8, -1), 2000, true } +} + +BuildBase = function() + if CYard.IsDead or CYard.Owner ~= Greece then + return + elseif Harvester.IsDead and Greece.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 = Greece, Location = GreeceCYard.Location + building[2] }) + Greece.Cash = Greece.Cash - building[3] + + building[4] = true + Trigger.OnKilled(actor, function() building[4] = true end) + Trigger.OnDamaged(actor, function(building) + if building.Owner == Greece 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 Greece.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) + Greece.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 Greece.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) + Greece.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) + unit.Hunt() + end + end) +end diff --git a/mods/ra/maps/soviet-04a/main.lua b/mods/ra/maps/soviet-04a/main.lua new file mode 100644 index 0000000000..c68f400014 --- /dev/null +++ b/mods/ra/maps/soviet-04a/main.lua @@ -0,0 +1,148 @@ + +RunInitialActivities = function() + Harvester.FindResources() + IdlingUnits() + Trigger.AfterDelay(10, function() + BringPatrol1() + BringPatrol2() + BuildBase() + end) + + Utils.Do(Map.NamedActors, function(actor) + if actor.Owner == Greece and actor.HasProperty("StartBuildingRepairs") then + Trigger.OnDamaged(actor, function(building) + if building.Owner == Greece and building.Health < 3/4 * building.MaxHealth then + building.StartBuildingRepairs() + end + end) + end + end) + + Reinforcements.Reinforce(player, SovietMCV, SovietStartToBasePath, 0, function(mcv) + mcv.Move(StartCamPoint.Location) + end) + Media.PlaySpeechNotification(player, "ReinforcementsArrived") + + 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.OnEnteredFootprint(VillageCamArea, function(actor, id) + if actor.Owner == player then + local camera = Actor.Create("camera", true, { Owner = player, Location = VillagePoint.Location }) + Trigger.RemoveFootprintTrigger(id) + Trigger.OnAllKilled(Village, function() + camera.Destroy() + end) + end + end) + + Trigger.OnAnyKilled(Civs, function() + Trigger.ClearAll(civ1) + Trigger.ClearAll(civ2) + Trigger.ClearAll(civ3) + local units = Reinforcements.Reinforce(Greece, Avengers, { SWRoadPoint.Location }, 0) + Utils.Do(units, function(unit) + unit.Hunt() + end) + end) + + Runner1.Move(CrossroadsEastPoint.Location) + Runner2.Move(InVillagePoint.Location) + Tank5.Move(V2MovePoint.Location) + Trigger.AfterDelay(DateTime.Seconds(2), function() + Tank1.Stop() + Tank2.Stop() + Tank3.Stop() + Tank4.Stop() + Tank5.Stop() + Trigger.AfterDelay(1, function() + Tank1.Move(SovietBaseEntryPointNE.Location) + Tank2.Move(SovietBaseEntryPointW.Location) + Tank3.Move(SovietBaseEntryPointNE.Location) + Tank4.Move(SovietBaseEntryPointW.Location) + Tank5.Move(V2MovePoint.Location) + end) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry) + Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor) + + if Map.Difficulty == "Hard" or Map.Difficulty == "Medium" then + Trigger.AfterDelay(DateTime.Seconds(15), ReinfInf) + end + Trigger.AfterDelay(DateTime.Minutes(1), ReinfInf) + Trigger.AfterDelay(DateTime.Minutes(3), ReinfInf) + Trigger.AfterDelay(DateTime.Minutes(2), ReinfArmor) +end + +Tick = function() + if Greece.HasNoRequiredUnits() then + player.MarkCompletedObjective(KillAll) + player.MarkCompletedObjective(KillRadar) + end + + if player.HasNoRequiredUnits() then + Greece.MarkCompletedObjective(BeatUSSR) + end + + if Greece.Resources >= Greece.ResourceCapacity * 0.75 then + Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25 + Greece.Resources = Greece.ResourceCapacity * 0.25 + end + + if RCheck then + RCheck = false + if Map.Difficulty == "Hard" then + Trigger.AfterDelay(DateTime.Seconds(150), ReinfArmor) + elseif Map.Difficulty == "Medium" then + Trigger.AfterDelay(DateTime.Minutes(5), ReinfArmor) + else + Trigger.AfterDelay(DateTime.Minutes(8), ReinfArmor) + end + end +end + +WorldLoaded = function() + player = Player.GetPlayer("USSR") + Greece = Player.GetPlayer("Greece") + + RunInitialActivities() + + 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) + + KillAll = player.AddPrimaryObjective("Defeat the Allied forces.") + BeatUSSR = Greece.AddPrimaryObjective("Defeat the Soviet forces.") + KillRadar = player.AddSecondaryObjective("Destroy Allied Radar Dome to stop enemy\nreinforcements.") + + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "Lose") + end) + + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "Win") + end) + + Trigger.OnKilled(Radar, function() + player.MarkCompletedObjective(KillRadar) + Media.PlaySpeechNotification(player, "ObjectiveMet") + end) + + Camera.Position = StartCamPoint.CenterPosition +end diff --git a/mods/ra/maps/soviet-04a/map.bin b/mods/ra/maps/soviet-04a/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..0366e163f732e784c4b3c3cdfbb3c931ca90c27f GIT binary patch literal 81937 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 R74!fA002ovPDHLkV1gA%tiS*O literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-04a/map.yaml b/mods/ra/maps/soviet-04a/map.yaml new file mode 100644 index 0000000000..6c515d7fec --- /dev/null +++ b/mods/ra/maps/soviet-04a/map.yaml @@ -0,0 +1,760 @@ +MapFormat: 7 + +RequiresMod: ra + +Title: Soviet 04a: Behind the lines + +Description: The Allied base in this region is proving to be problematic.\n\nYour mission is to take it out so that we can begin to move forces through this area.\n\nAs long as they have communications they will be able to call upon heavy reinforcements.\n\nCrush their communications, and they should be easier to remove. + +Author: Westwood Studios + +Tileset: SNOW + +MapSize: 128,128 + +Bounds: 38,45,72,46 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + Briefing: soviet4.vqa + GameStart: sovmcv.vqa + GameWon: radrraid.vqa + GameLost: allymorf.vqa + +Options: + Crates: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 5000 + TechLevel: Medium + ConfigurableStartingUnits: False + Difficulties: Easy, Normal, Hard + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@Spain: + Name: Spain + Faction: england + Allies: Greece + Enemies: USSR + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + PlayerReference@Greece: + Name: Greece + Faction: allies + ColorRamp: 161,134,236 + Allies: Spain + Enemies: USSR + PlayerReference@USSR: + Name: USSR + Playable: True + AllowBots: False + Required: True + LockFaction: True + Faction: soviet + LockColor: True + ColorRamp: 3,255,127 + LockSpawn: True + LockTeam: True + Enemies: Greece, Spain + +Actors: + Actor0: sbag + Location: 71,43 + Owner: Neutral + Actor1: sbag + Location: 72,43 + Owner: Neutral + Actor2: sbag + Location: 72,44 + Owner: Neutral + Actor3: cycl + Location: 47,45 + Owner: Neutral + Actor4: cycl + Location: 48,45 + Owner: Neutral + Actor5: cycl + Location: 49,45 + Owner: Neutral + Actor6: cycl + Location: 50,45 + Owner: Neutral + Actor7: cycl + Location: 53,45 + Owner: Neutral + Actor8: sbag + Location: 72,45 + Owner: Neutral + Actor9: sbag + Location: 72,46 + Owner: Neutral + Actor10: sbag + Location: 73,46 + Owner: Neutral + Actor11: sbag + Location: 74,46 + Owner: Neutral + Actor12: cycl + Location: 46,47 + Owner: Neutral + Actor13: sbag + Location: 72,47 + Owner: Neutral + Actor14: cycl + Location: 46,48 + Owner: Neutral + Actor15: sbag + Location: 71,48 + Owner: Neutral + Actor16: sbag + Location: 72,48 + Owner: Neutral + Actor17: cycl + Location: 46,49 + Owner: Neutral + Actor18: sbag + Location: 71,52 + Owner: Neutral + Actor19: sbag + Location: 72,52 + Owner: Neutral + Actor20: sbag + Location: 72,53 + Owner: Neutral + Actor21: sbag + Location: 72,54 + Owner: Neutral + Actor22: sbag + Location: 72,55 + Owner: Neutral + Actor23: sbag + Location: 73,55 + Owner: Neutral + Actor24: sbag + Location: 74,55 + Owner: Neutral + Actor25: sbag + Location: 72,56 + Owner: Neutral + Actor26: sbag + Location: 86,56 + Owner: Neutral + Actor27: sbag + Location: 88,56 + Owner: Neutral + Actor28: sbag + Location: 89,56 + Owner: Neutral + Actor29: sbag + Location: 90,56 + Owner: Neutral + Actor30: sbag + Location: 91,56 + Owner: Neutral + Actor31: sbag + Location: 92,56 + Owner: Neutral + Actor32: sbag + Location: 67,57 + Owner: Neutral + Actor33: sbag + Location: 68,57 + Owner: Neutral + Actor34: sbag + Location: 69,57 + Owner: Neutral + Actor35: sbag + Location: 70,57 + Owner: Neutral + Actor36: sbag + Location: 71,57 + Owner: Neutral + Actor37: sbag + Location: 72,57 + Owner: Neutral + Actor38: sbag + Location: 78,58 + Owner: Neutral + Actor39: sbag + Location: 79,58 + Owner: Neutral + Actor40: sbag + Location: 80,58 + Owner: Neutral + Actor41: sbag + Location: 81,58 + Owner: Neutral + Actor42: sbag + Location: 82,58 + Owner: Neutral + Actor43: sbag + Location: 83,58 + Owner: Neutral + Actor44: sbag + Location: 57,69 + Owner: Neutral + Actor45: sbag + Location: 61,69 + Owner: Neutral + Actor46: sbag + Location: 44,72 + Owner: Neutral + Actor47: sbag + Location: 48,72 + Owner: Neutral + Actor48: tc04 + Location: 97,67 + Owner: Neutral + Actor49: tc05 + Location: 71,79 + Owner: Neutral + Actor50: t10 + Location: 100,59 + Owner: Neutral + Actor51: t13 + Location: 78,50 + Owner: Neutral + Actor52: tc01 + Location: 68,55 + Owner: Neutral + Actor53: t08 + Location: 73,47 + Owner: Neutral + Actor54: tc01 + Location: 29,86 + Owner: Neutral + Actor55: t08 + Location: 36,84 + Owner: Neutral + Actor56: t06 + Location: 36,87 + Owner: Neutral + Actor57: t11 + Location: 38,74 + Owner: Neutral + Actor58: tc02 + Location: 42,75 + Owner: Neutral + Actor59: tc03 + Location: 60,80 + Owner: Neutral + Actor60: tc05 + Location: 54,73 + Owner: Neutral + Actor61: tc01 + Location: 47,87 + Owner: Neutral + Actor62: t16 + Location: 56,79 + Owner: Neutral + Actor63: tc04 + Location: 79,70 + Owner: Neutral + Actor64: tc01 + Location: 108,73 + Owner: Neutral + Actor65: t07 + Location: 94,60 + Owner: Neutral + Actor66: tc05 + Location: 91,66 + Owner: Neutral + Actor67: t17 + Location: 82,64 + Owner: Neutral + Actor68: tc04 + Location: 28,80 + Owner: Neutral + Actor69: tc05 + Location: 29,75 + Owner: Neutral + Actor70: tc02 + Location: 27,76 + Owner: Neutral + Actor71: t17 + Location: 42,52 + Owner: Neutral + Actor72: t01 + Location: 53,81 + Owner: Neutral + Actor73: tc01 + Location: 99,77 + Owner: Neutral + Actor74: mine + Location: 106,86 + Owner: Neutral + Actor75: mine + Location: 70,87 + Owner: Neutral + Actor76: tc04 + Location: 39,46 + Owner: Neutral + Actor77: tc05 + Location: 45,61 + Owner: Neutral + Actor78: tc02 + Location: 41,48 + Owner: Neutral + Actor79: tc04 + Location: 98,45 + Owner: Neutral + Actor80: t15 + Location: 95,48 + Owner: Neutral + Actor81: tc03 + Location: 38,68 + Owner: Neutral + Actor82: t08 + Location: 38,67 + Owner: Neutral + Actor83: t08 + Location: 40,69 + Owner: Neutral + Actor84: tc05 + Location: 38,79 + Owner: Neutral + Actor104: brl3 + Location: 95,50 + Owner: Greece + Actor105: barl + Location: 93,49 + Owner: Greece + Actor106: brl3 + Location: 94,50 + Owner: Greece + Actor107: barl + Location: 93,50 + Owner: Greece + Actor108: v19 + Location: 92,48 + Owner: Greece + Actor110: brl3 + Location: 83,57 + Owner: Greece + Actor111: barl + Location: 82,57 + Owner: Greece + Actor112: barl + Location: 81,57 + Owner: Greece + Actor113: brl3 + Location: 88,55 + Owner: Greece + Actor114: barl + Location: 87,55 + Owner: Greece + Actor115: brl3 + Location: 87,56 + Owner: Greece + Actor116: brl3 + Location: 57,46 + Owner: Greece + Actor117: barl + Location: 57,47 + Owner: Greece + Actor118: brl3 + Location: 92,50 + Owner: Greece + Actor119: barl + Location: 92,49 + Owner: Greece + Actor120: barl + Location: 94,49 + Owner: Greece + Actor133: 2tnk + Location: 69,54 + Owner: Greece + Facing: 64 + Actor136: 1tnk + Location: 59,68 + Owner: Greece + Facing: 128 + Actor137: 1tnk + Location: 46,71 + Owner: Greece + Facing: 128 + Actor139: jeep + Location: 57,54 + Owner: Greece + Facing: 96 + Actor140: 1tnk + Location: 62,46 + Owner: Greece + Facing: 160 + Actor141: 1tnk + Location: 60,57 + Owner: Greece + Facing: 128 + Actor142: 1tnk + Location: 54,57 + Owner: Greece + Facing: 128 + Actor143: 2tnk + Location: 92,53 + Owner: Greece + Facing: 192 + Actor144: 2tnk + Location: 92,55 + Owner: Greece + Health: 99 + Facing: 192 + Actor145: 2tnk + Location: 86,58 + Owner: Greece + Health: 99 + Facing: 160 + Actor146: jeep + Location: 89,60 + Owner: Greece + Facing: 160 + Actor151: 2tnk + Location: 40,55 + Owner: Greece + Facing: 128 + Actor152: 2tnk + Location: 44,55 + Owner: Greece + Facing: 128 + Actor154: 2tnk + Location: 67,64 + Owner: Greece + Facing: 160 + Actor155: 2tnk + Location: 69,63 + Owner: Greece + Facing: 160 + Actor159: mine + Location: 77,46 + Owner: Neutral + Radar: dome + Location: 49,46 + Owner: Greece + CYard: fact + Location: 58,45 + Owner: Greece + Proc: proc + Location: 63,53 + Owner: Greece + FreeActor: False + Silo1: silo + Location: 62,52 + Owner: Greece + Silo2: silo + Location: 63,53 + Owner: Greece + Silo3: silo + Location: 65,52 + Owner: Greece + Silo4: silo + Location: 66,53 + Owner: Greece + Barr: tent + Location: 50,52 + Owner: Greece + Gun1: gun + Location: 87,57 + Owner: Greece + Facing: 96 + Gun2: gun + Location: 84,58 + Owner: Greece + Facing: 96 + Gun3: gun + Location: 53,48 + Owner: Greece + Facing: 96 + Gun4: gun + Location: 67,65 + Owner: Greece + Facing: 96 + Gun5: gun + Location: 70,63 + Owner: Greece + Facing: 96 + Pbox1: pbox + Location: 57,70 + Owner: Greece + Pbox2: powr + Location: 51,45 + Owner: Greece + Pbox3: pbox + Location: 61,70 + Owner: Greece + Pbox4: pbox + Location: 67,63 + Owner: Greece + Pbox5: pbox + Location: 44,73 + Owner: Greece + Pbox6: pbox + Location: 48,73 + Owner: Greece + village1: v11 + Location: 57,80 + Owner: Spain + village2: v03 + Location: 49,77 + Owner: Spain + Health: 75 + village3: v02 + Location: 43,77 + Owner: Spain + village4: v01 + Location: 40,75 + Owner: Spain + village5: v05 + Location: 55,76 + Owner: Spain + Health: 39 + Weap: weap + Location: 67,45 + Owner: Greece + Gap1: gap + Location: 83,51 + Owner: Greece + Gap2: gap + Location: 59,65 + Owner: Greece + Powr1: powr + Location: 47,47 + Owner: Greece + Powr2: powr + Location: 93,46 + Owner: Greece + Powr3: powr + Location: 96,45 + Owner: Greece + APwr: apwr + Location: 49,56 + Owner: Greece + Fix1: fix + Location: 56,55 + Owner: Greece + Tank1: 3tnk + Location: 88,87 + Owner: USSR + Tank2: 3tnk + Location: 84,87 + Owner: USSR + Tank3: 3tnk + Location: 87,86 + Owner: USSR + Health: 99 + Tank4: 3tnk + Location: 85,86 + Owner: USSR + Tank5: v2rl + Location: 86,87 + Owner: USSR + civ1: c6 + Location: 53,80 + Owner: Spain + Facing: 64 + SubCell: 2 + civ2: c7 + Location: 58,79 + Owner: Spain + SubCell: 3 + civ3: c5 + Location: 57,81 + Owner: Spain + Facing: 64 + SubCell: 3 + Harvester: harv + Location: 76,47 + Owner: Greece + Facing: 160 + Runner1: jeep + Location: 88,83 + Owner: Greece + Runner2: jeep + Location: 84,83 + Owner: Greece + Facing: 64 + GreeceCYard: waypoint + Location: 59,47 + Owner: Neutral + BridgeEntrancePoint: waypoint + Location: 83,55 + Owner: Neutral + SovietBasePoint: waypoint + Location: 86,88 + Owner: Neutral + ToRadarPoint: waypoint + Location: 42,60 + Owner: Neutral + InVillagePoint: waypoint + Location: 56,82 + Owner: Neutral + NRoadPoint: waypoint + Location: 80,45 + Owner: Neutral + SWRoadPoint: waypoint + Location: 38,90 + Owner: Neutral + VillagePoint: waypoint + Location: 57,80 + Owner: Neutral + CrossroadsNorthPoint: waypoint + Location: 80,49 + Owner: Neutral + StartPoint: waypoint + Location: 86,90 + Owner: Neutral + SovietBaseEntryPointW: waypoint + Location: 69,79 + Owner: Neutral + NearRadarPoint: waypoint + Location: 43,47 + Owner: Neutral + NERoadTurnPoint: waypoint + Location: 106,54 + Owner: Neutral + CrossroadsEastPoint: waypoint + Location: 106,64 + Owner: Neutral + VillageEntrancePoint: waypoint + Location: 59,75 + Owner: Neutral + StartCamPoint: waypoint + Location: 86,87 + Owner: Neutral + SovietBaseEntryPointNE: waypoint + Location: 96,77 + Owner: Neutral + V2MovePoint: waypoint + Location: 84,83 + Owner: Neutral + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + -EnemyWatcher: + MissionObjectives: + EarlyGameOver: true + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + LuaScript: + Scripts: main.lua, AI.lua, reinforcements_teams.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + Demolishable: + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + Demolishable: + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Wall: + Tooltip: + ShowOwnerRow: false + ^Ship: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Plane: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + ^Crate: + Tooltip: + ShowOwnerRow: false + ^CivBuilding: + Tooltip: + ShowOwnerRow: false + ^TechBuilding: + Tooltip: + ShowOwnerRow: false + AFLD: + ParatroopersPower@paratroopers: + DropItems: E1,E1,E1,E2,E2 + TSLA: + Buildable: + Prerequisites: ~disabled + SAM: + Buildable: + Prerequisites: ~disabled + HPAD: + Buildable: + Prerequisites: ~disabled + APWR: + Buildable: + Prerequisites: ~disabled + BRIK: + Buildable: + Prerequisites: ~disabled + E3: + Buildable: + Prerequisites: ~tent + E4: + Buildable: + Prerequisites: ~disabled + HIJACKER: + Buildable: + Prerequisites: ~disabled + SPY: + Buildable: + Prerequisites: ~disabled + MECH: + Buildable: + Prerequisites: ~disabled + MCV: + Buildable: + Prerequisites: ~disabled + FTRK: + Buildable: + Prerequisites: ~disabled + TRUK: + Buildable: + Prerequisites: ~disabled + APC: + Buildable: + Prerequisites: ~disabled + AGUN: + Buildable: + Prerequisites: ~disabled + +Sequences: + +VoxelSequences: + +Weapons: + +Voices: + +Notifications: + +Translations: \ No newline at end of file diff --git a/mods/ra/maps/soviet-04a/reinforcements_teams.lua b/mods/ra/maps/soviet-04a/reinforcements_teams.lua new file mode 100644 index 0000000000..0e50f24842 --- /dev/null +++ b/mods/ra/maps/soviet-04a/reinforcements_teams.lua @@ -0,0 +1,80 @@ +Civs = { civ1, civ2, civ3 } +Village = { civ1, civ2, civ3, village1, village2, village5 } +SovietMCV = { "mcv" } +InfantryReinfGreece = { "e1", "e1", "e1", "e1", "e1" } +Avengers = { "jeep", "1tnk", "2tnk", "2tnk", "1tnk" } +Patrol1Group = { "jeep", "jeep", "2tnk", "2tnk" } +Patrol2Group = { "jeep", "1tnk", "1tnk", "1tnk" } +AlliedInfantryTypes = { "e1", "e3" } +AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" } +InfAttack = { } +ArmorAttack = { } + +SovietStartToBasePath = { StartPoint.Location, SovietBasePoint.Location } +InfReinfPath = { SWRoadPoint.Location, InVillagePoint.Location } +ArmorReinfPath = { NRoadPoint.Location, CrossroadsNorthPoint.Location } +Patrol1Path = { NearRadarPoint.Location, ToRadarPoint.Location, InVillagePoint.Location, ToRadarPoint.Location } +Patrol2Path = { BridgeEntrancePoint.Location, NERoadTurnPoint.Location, CrossroadsEastPoint.Location, BridgeEntrancePoint.Location } + +VillageCamArea = { CPos.New(68, 75),CPos.New(68, 76),CPos.New(68, 77),CPos.New(68, 78),CPos.New(68, 79), CPos.New(68, 80), CPos.New(68, 81), CPos.New(68, 82) } + +if Map.Difficulty == "Easy" then + ArmorReinfGreece = { "jeep", "1tnk", "1tnk" } +else + ArmorReinfGreece = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" } +end + +AttackPaths = +{ + { VillageEntrancePoint }, + { BridgeEntrancePoint, NERoadTurnPoint, CrossroadsEastPoint } +} + +ReinfInf = function() + Reinforcements.Reinforce(Greece, InfantryReinfGreece, InfReinfPath, 0, function(soldier) + soldier.Hunt() + end) +end + +ReinfArmor = function() + if not Radar.IsDead and Radar.Owner == Greece then + RCheck = true + Reinforcements.Reinforce(Greece, ArmorReinfGreece, ArmorReinfPath, 0, function(soldier) + soldier.Hunt() + end) + end +end + +BringPatrol1 = function() + local units = Reinforcements.Reinforce(Greece, Patrol1Group, { SWRoadPoint.Location }, 0) + Utils.Do(units, function(patrols) + patrols.Patrol(Patrol1Path, true, 250) + end) + + if not Radar.IsDead and Radar.Owner == Greece then + Trigger.OnAllKilled(units, function() + if Map.Difficulty == "Hard" then + Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol1) + else + Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol1) + end + end) + end +end + +BringPatrol2 = function() + local units = Reinforcements.Reinforce(Greece, Patrol2Group, { NRoadPoint.Location }, 0) + Utils.Do(units, function(patrols) + patrols.Patrol(Patrol2Path, true, 250) + end) + + if not Radar.IsDead and Radar.Owner == Greece then + Trigger.OnAllKilled(units, function() + if Map.Difficulty == "Hard" then + Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol2) + else + Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol2) + end + end) + end +end diff --git a/mods/ra/maps/soviet-04b/AI.lua b/mods/ra/maps/soviet-04b/AI.lua new file mode 100644 index 0000000000..292c7b0e11 --- /dev/null +++ b/mods/ra/maps/soviet-04b/AI.lua @@ -0,0 +1,111 @@ +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end + +IdlingUnits = function() + local lazyUnits = Greece.GetGroundAttackers() + + Utils.Do(lazyUnits, function(unit) + Trigger.OnDamaged(unit, function() + Trigger.ClearAll(unit) + Trigger.AfterDelay(0, function() IdleHunt(unit) end) + end) + end) +end + +BaseBuildings = +{ + { "powr", CVec.New(-4, -2), 300, true }, + { "tent", CVec.New(-8, 1), 400, true }, + { "proc", CVec.New(-5, 1), 1400, true }, + { "weap", CVec.New(-12, -1), 2000, true } +} + +BuildBase = function() + if CYard.IsDead or CYard.Owner ~= Greece then + return + elseif Harvester.IsDead and Greece.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 = Greece, Location = GreeceCYard.Location + building[2] }) + Greece.Cash = Greece.Cash - building[3] + + building[4] = true + Trigger.OnKilled(actor, function() building[4] = true end) + Trigger.OnDamaged(actor, function(building) + if building.Owner == Greece 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 Greece.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) + Greece.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 Greece.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) + Greece.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) + unit.Hunt() + end + end) +end diff --git a/mods/ra/maps/soviet-04b/main.lua b/mods/ra/maps/soviet-04b/main.lua new file mode 100644 index 0000000000..6d2a991d1c --- /dev/null +++ b/mods/ra/maps/soviet-04b/main.lua @@ -0,0 +1,141 @@ + +RunInitialActivities = function() + Harvester.FindResources() + Helper.Destroy() + IdlingUnits() + Trigger.AfterDelay(DateTime.Seconds(1), function() + BringPatrol1() + Trigger.AfterDelay(DateTime.Seconds(5), function() + BringPatrol2() + end) + BuildBase() + end) + + Utils.Do(Map.NamedActors, function(actor) + if actor.Owner == Greece and actor.HasProperty("StartBuildingRepairs") then + Trigger.OnDamaged(actor, function(building) + if building.Owner == Greece and building.Health < 3/4 * building.MaxHealth then + building.StartBuildingRepairs() + end + end) + end + end) + + Trigger.OnKilled(Powr, 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.OnEnteredFootprint(VillageCamArea, function(actor, id) + if actor.Owner == player then + local camera = Actor.Create("camera", true, { Owner = player, Location = VillagePoint.Location }) + Trigger.RemoveFootprintTrigger(id) + Trigger.OnAllKilled(Village, function() + camera.Destroy() + end) + end + end) + + Trigger.OnAnyKilled(Civs, function() + Trigger.ClearAll(civ1) + Trigger.ClearAll(civ2) + Trigger.ClearAll(civ3) + Trigger.ClearAll(civ4) + local units = Reinforcements.Reinforce(Greece, Avengers, { NRoadPoint.Location }, 0) + Utils.Do(units, function(unit) + unit.Hunt() + end) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry) + Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor) + + if Map.Difficulty == "Hard" or Map.Difficulty == "Medium" then + Trigger.AfterDelay(DateTime.Seconds(5), ReinfInf) + end + Trigger.AfterDelay(DateTime.Minutes(1), ReinfInf) + Trigger.AfterDelay(DateTime.Minutes(3), ReinfInf) + Trigger.AfterDelay(DateTime.Minutes(2), ReinfArmor) +end + +Tick = function() + if Greece.HasNoRequiredUnits() then + player.MarkCompletedObjective(KillAll) + player.MarkCompletedObjective(KillRadar) + end + + if player.HasNoRequiredUnits() then + Greece.MarkCompletedObjective(BeatUSSR) + end + + if Greece.Resources >= Greece.ResourceCapacity * 0.75 then + Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25 + Greece.Resources = Greece.ResourceCapacity * 0.25 + end + + if RCheck then + RCheck = false + if Map.Difficulty == "Hard" then + Trigger.AfterDelay(DateTime.Seconds(150), ReinfArmor) + elseif Map.Difficulty == "Medium" then + Trigger.AfterDelay(DateTime.Minutes(5), ReinfArmor) + else + Trigger.AfterDelay(DateTime.Minutes(8), ReinfArmor) + end + end +end + +WorldLoaded = function() + player = Player.GetPlayer("USSR") + Greece = Player.GetPlayer("Greece") + + RunInitialActivities() + + 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) + + KillAll = player.AddPrimaryObjective("Defeat the Allied forces.") + BeatUSSR = Greece.AddPrimaryObjective("Defeat the Soviet forces.") + KillRadar = player.AddSecondaryObjective("Destroy Allied Radar Dome to stop enemy\nreinforcements.") + + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "Lose") + end) + + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "Win") + end) + + Trigger.OnKilled(Radar, function() + player.MarkCompletedObjective(KillRadar) + Media.PlaySpeechNotification(player, "ObjectiveMet") + end) + + Trigger.OnDamaged(Harvester, function() + Utils.Do(Guards, function(unit) + if not unit.IsDead and not Harvester.IsDead then + unit.AttackMove(Harvester.Location) + end + end) + end) + + Camera.Position = StartCamPoint.CenterPosition +end diff --git a/mods/ra/maps/soviet-04b/map.bin b/mods/ra/maps/soviet-04b/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4df51fec49685be75036254ee859bf4a6a216c4 GIT binary patch literal 81937 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 literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-04b/map.png b/mods/ra/maps/soviet-04b/map.png new file mode 100644 index 0000000000000000000000000000000000000000..e92632f70fe14976003cf98c18d77856601545e5 GIT binary patch literal 28849 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 R74!fA002ovPDHLkV1gA%tiS*O literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-04b/map.yaml b/mods/ra/maps/soviet-04b/map.yaml new file mode 100644 index 0000000000..d32bfdfe11 --- /dev/null +++ b/mods/ra/maps/soviet-04b/map.yaml @@ -0,0 +1,788 @@ +MapFormat: 7 + +RequiresMod: ra + +Title: Soviet 04b: Behind the lines + +Description: The Allied base in this region is proving to be problematic.\n\nYour mission is to take it out so that we can begin to move forces through this area.\n\nAs long as they have communications they will be able to call upon heavy reinforcements.\n\nCrush their communications, and they should be easier to remove. + +Author: Westwood Studios + +Tileset: SNOW + +MapSize: 128,128 + +Bounds: 28,45,91,49 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + Briefing: soviet4.vqa + GameStart: sovmcv.vqa + GameWon: radrraid.vqa + GameLost: allymorf.vqa + +Options: + Crates: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 5000 + TechLevel: Medium + ConfigurableStartingUnits: False + Difficulties: Easy, Normal, Hard + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@Spain: + Name: Spain + Faction: england + Allies: Greece + Enemies: USSR + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + PlayerReference@Greece: + Name: Greece + Faction: allies + ColorRamp: 161,134,236 + Allies: Spain + Enemies: USSR + PlayerReference@USSR: + Name: USSR + Playable: True + AllowBots: False + Required: True + LockFaction: True + Faction: soviet + LockColor: True + ColorRamp: 3,255,127 + LockSpawn: True + LockTeam: True + Enemies: Greece, Spain + +Actors: + Helper: proc + Owner: Greece + Location: 92,75 + FreeActor: False + Actor0: sbag + Location: 85,50 + Owner: Neutral + Actor1: sbag + Location: 86,50 + Owner: Neutral + Actor2: sbag + Location: 103,50 + Owner: Neutral + Actor3: sbag + Location: 104,50 + Owner: Neutral + Actor4: sbag + Location: 105,50 + Owner: Neutral + Actor5: sbag + Location: 106,50 + Owner: Neutral + Actor6: sbag + Location: 109,50 + Owner: Neutral + Actor7: sbag + Location: 110,50 + Owner: Neutral + Actor8: sbag + Location: 113,50 + Owner: Neutral + Actor9: sbag + Location: 114,50 + Owner: Neutral + Actor10: sbag + Location: 85,51 + Owner: Neutral + Actor11: sbag + Location: 106,51 + Owner: Neutral + Actor12: sbag + Location: 109,51 + Owner: Neutral + Actor13: sbag + Location: 114,51 + Owner: Neutral + Actor14: sbag + Location: 85,52 + Owner: Neutral + Actor15: sbag + Location: 106,52 + Owner: Neutral + Actor16: sbag + Location: 109,52 + Owner: Neutral + Actor17: sbag + Location: 114,52 + Owner: Neutral + Actor18: sbag + Location: 85,53 + Owner: Neutral + Actor19: sbag + Location: 106,53 + Owner: Neutral + Actor20: sbag + Location: 109,53 + Owner: Neutral + Actor21: sbag + Location: 110,53 + Owner: Neutral + Actor22: sbag + Location: 113,53 + Owner: Neutral + Actor23: sbag + Location: 114,53 + Owner: Neutral + Actor24: sbag + Location: 85,54 + Owner: Neutral + Actor25: sbag + Location: 106,54 + Owner: Neutral + Actor26: sbag + Location: 106,55 + Owner: Neutral + Actor27: sbag + Location: 106,56 + Owner: Neutral + Actor28: sbag + Location: 106,57 + Owner: Neutral + Actor29: sbag + Location: 106,58 + Owner: Neutral + Actor30: sbag + Location: 85,59 + Owner: Neutral + Actor31: sbag + Location: 106,59 + Owner: Neutral + Actor32: sbag + Location: 85,60 + Owner: Neutral + Actor33: sbag + Location: 106,60 + Owner: Neutral + Actor34: sbag + Location: 85,61 + Owner: Neutral + Actor35: sbag + Location: 106,61 + Owner: Neutral + Actor36: sbag + Location: 85,62 + Owner: Neutral + Actor37: sbag + Location: 101,62 + Owner: Neutral + Actor38: sbag + Location: 102,62 + Owner: Neutral + Actor39: sbag + Location: 103,62 + Owner: Neutral + Actor40: sbag + Location: 104,62 + Owner: Neutral + Actor41: sbag + Location: 105,62 + Owner: Neutral + Actor42: sbag + Location: 106,62 + Owner: Neutral + Actor43: sbag + Location: 85,63 + Owner: Neutral + Actor44: sbag + Location: 100,63 + Owner: Neutral + Actor45: sbag + Location: 101,63 + Owner: Neutral + Actor46: sbag + Location: 85,64 + Owner: Neutral + Actor47: sbag + Location: 86,64 + Owner: Neutral + Actor48: sbag + Location: 87,64 + Owner: Neutral + Actor49: sbag + Location: 88,64 + Owner: Neutral + Actor50: sbag + Location: 89,64 + Owner: Neutral + Actor51: sbag + Location: 90,64 + Owner: Neutral + Actor52: sbag + Location: 97,64 + Owner: Neutral + Actor53: sbag + Location: 98,64 + Owner: Neutral + Actor54: sbag + Location: 99,64 + Owner: Neutral + Actor55: sbag + Location: 100,64 + Owner: Neutral + Actor56: t01 + Location: 112,62 + Owner: Neutral + Actor57: tc01 + Location: 109,61 + Owner: Neutral + Actor58: tc04 + Location: 110,45 + Owner: Neutral + Actor59: tc03 + Location: 114,45 + Owner: Neutral + Actor60: tc05 + Location: 99,45 + Owner: Neutral + Actor61: tc01 + Location: 117,79 + Owner: Neutral + Actor62: tc02 + Location: 109,79 + Owner: Neutral + Actor63: tc01 + Location: 113,48 + Owner: Neutral + Actor64: tc04 + Location: 116,51 + Owner: Neutral + Actor65: tc05 + Location: 113,53 + Owner: Neutral + Actor66: tc02 + Location: 109,54 + Owner: Neutral + Actor67: tc05 + Location: 73,60 + Owner: Neutral + Actor68: tc04 + Location: 82,63 + Owner: Neutral + Actor69: tc01 + Location: 77,62 + Owner: Neutral + Actor70: tc02 + Location: 78,60 + Owner: Neutral + Actor71: tc05 + Location: 95,66 + Owner: Neutral + Actor72: tc03 + Location: 86,62 + Owner: Neutral + Actor73: tc02 + Location: 95,69 + Owner: Neutral + Actor74: tc01 + Location: 102,62 + Owner: Neutral + Actor75: t11 + Location: 107,61 + Owner: Neutral + Actor76: tc04 + Location: 82,49 + Owner: Neutral + Actor77: tc04 + Location: 50,69 + Owner: Neutral + Actor78: tc01 + Location: 58,70 + Owner: Neutral + Actor79: tc01 + Location: 84,89 + Owner: Neutral + Actor80: tc04 + Location: 94,80 + Owner: Neutral + Actor81: tc05 + Location: 93,85 + Owner: Neutral + Actor82: tc05 + Location: 29,55 + Owner: Neutral + Actor83: tc03 + Location: 39,48 + Owner: Neutral + Actor84: tc02 + Location: 29,51 + Owner: Neutral + Actor85: tc01 + Location: 36,56 + Owner: Neutral + Actor86: tc04 + Location: 42,48 + Owner: Neutral + Actor87: t15 + Location: 36,50 + Owner: Neutral + Actor88: tc05 + Location: 48,49 + Owner: Neutral + Actor89: tc04 + Location: 67,49 + Owner: Neutral + Actor90: t17 + Location: 71,71 + Owner: Neutral + Actor91: tc04 + Location: 50,78 + Owner: Neutral + Actor92: tc04 + Location: 34,65 + Owner: Neutral + Actor93: tc04 + Location: 57,91 + Owner: Neutral + Actor94: tc05 + Location: 60,91 + Owner: Neutral + Actor95: tc02 + Location: 72,90 + Owner: Neutral + Actor114: pbox + Location: 89,65 + Owner: Greece + Actor115: pbox + Location: 97,65 + Owner: Greece + Actor116: pbox + Location: 84,60 + Owner: Greece + Actor117: pbox + Location: 84,53 + Owner: Greece + Actor118: pbox + Location: 51,71 + Owner: Greece + Actor119: pbox + Location: 57,71 + Owner: Greece + Actor125: gun + Location: 84,61 + Owner: Greece + Facing: 192 + Actor126: gun + Location: 97,63 + Owner: Greece + Facing: 128 + Actor129: 1tnk + Location: 56,71 + Owner: Greece + Facing: 96 + Actor130: 1tnk + Location: 53,71 + Owner: Greece + Facing: 96 + Actor135: mcv + Location: 33,90 + Owner: USSR + Actor136: 1tnk + Location: 117,62 + Owner: Greece + Facing: 96 + Actor137: 1tnk + Location: 114,62 + Owner: Greece + Facing: 96 + Actor138: 2tnk + Location: 111,53 + Owner: Greece + Facing: 128 + Actor139: 2tnk + Location: 112,53 + Owner: Greece + Facing: 128 + Actor142: jeep + Location: 74,91 + Owner: Greece + Actor143: jeep + Location: 48,49 + Owner: Greece + Facing: 160 + Actor144: 1tnk + Location: 86,90 + Owner: Greece + Facing: 32 + Actor145: 1tnk + Location: 96,86 + Owner: Greece + Facing: 96 + Actor146: 2tnk + Location: 96,47 + Owner: Greece + Facing: 160 + Actor148: e1 + Location: 76,57 + Owner: Greece + SubCell: 0 + Actor149: e1 + Location: 77,58 + Owner: Greece + SubCell: 2 + Actor150: e1 + Location: 76,58 + Owner: Greece + SubCell: 0 + Actor151: e3 + Location: 73,58 + Owner: Greece + SubCell: 0 + Actor152: e3 + Location: 72,57 + Owner: Greece + SubCell: 4 + Actor153: e3 + Location: 72,58 + Owner: Greece + SubCell: 2 + Actor154: e3 + Location: 95,80 + Owner: Greece + SubCell: 3 + Actor155: e3 + Location: 96,80 + Owner: Greece + SubCell: 0 + Actor160: dog + Location: 33,86 + Owner: USSR + SubCell: 1 + Actor161: dog + Location: 34,86 + Owner: USSR + SubCell: 1 + Actor162: dog + Location: 33,85 + Owner: USSR + SubCell: 1 + Actor163: dog + Location: 34,85 + Owner: USSR + SubCell: 1 + Actor164: e3 + Location: 102,53 + Owner: Greece + SubCell: 1 + Actor165: e3 + Location: 95,52 + Owner: Greece + SubCell: 0 + Actor166: e3 + Location: 102,57 + Owner: Greece + SubCell: 0 + Actor167: mine + Location: 37,55 + Owner: Neutral + Actor168: mine + Location: 52,88 + Owner: Neutral + Actor169: mine + Location: 91,87 + Owner: Neutral + Radar: dome + Location: 111,50 + Owner: Greece + Pbox1: pbox + Location: 111,80 + Owner: Greece + Pbox2: pbox + Location: 116,80 + Owner: Greece + NavyYard: syrd + Location: 78,65 + Owner: Greece + CYard: fact + Location: 103,51 + Owner: Greece + Proc: proc + Location: 99,54 + Owner: Greece + FreeActor: False + Silo1: silo + Location: 104,55 + Owner: Greece + Silo2: silo + Location: 104,56 + Owner: Greece + Silo3: silo + Location: 105,56 + Owner: Greece + Silo4: silo + Location: 105,55 + Owner: Greece + Powr: powr + Location: 100,50 + Owner: Greece + Powr2: powr + Location: 88,61 + Owner: Greece + Powr3: powr + Location: 96,50 + Owner: Greece + Powr4: powr + Location: 86,52 + Owner: Greece + Powr5: powr + Location: 89,51 + Owner: Greece + Powr6: powr + Location: 98,50 + Owner: Greece + Barr: tent + Location: 96,54 + Owner: Greece + Gap1: gap + Location: 86,50 + Owner: Greece + Gap2: gap + Location: 90,62 + Owner: Greece + Weap: weap + Location: 92,50 + Owner: Greece + village1: v01 + Location: 37,48 + Owner: Spain + village2: v03 + Location: 42,47 + Owner: Spain + village3: v05 + Location: 44,50 + Owner: Spain + village4: v06 + Location: 40,50 + Owner: Spain + village5: v07 + Location: 36,52 + Owner: Spain + Harvester: harv + Location: 93,78 + Owner: Greece + Facing: 128 + Tank1: 3tnk + Location: 32,87 + Owner: USSR + Tank2: 3tnk + Location: 34,87 + Owner: USSR + Tank3: v2rl + Location: 32,88 + Owner: USSR + Tank4: v2rl + Location: 34,88 + Owner: USSR + civ1: c1 + Location: 41,53 + Owner: Spain + Facing: 160 + SubCell: 0 + civ2: c2 + Location: 47,49 + Owner: Spain + Facing: 224 + SubCell: 1 + civ3: c3 + Location: 39,51 + Owner: Spain + SubCell: 2 + civ4: c4 + Location: 46,52 + Owner: Spain + Facing: 96 + SubCell: 4 + Guard1: 1tnk + Location: 105,59 + Owner: Greece + Facing: 64 + Guard2: 1tnk + Location: 105,60 + Owner: Greece + Facing: 64 + Guard3: 2tnk + Location: 105,61 + Owner: Greece + Facing: 64 + NRoadPoint: waypoint + Location: 75,45 + Owner: Neutral + CrossroadsPoint: waypoint + Location: 74,57 + Owner: Neutral + VillagePoint: waypoint + Location: 40,58 + Owner: Neutral + ToVillageRoadPoint: waypoint + Location: 52,57 + Owner: Neutral + InBasePoint: waypoint + Location: 94,57 + Owner: Neutral + OrefieldSouthPoint: waypoint + Location: 91,84 + Owner: Neutral + ToBridgePoint: waypoint + Location: 66,66 + Owner: Neutral + ToRadarBridgePoint: waypoint + Location: 107,88 + Owner: Neutral + IslandPoint: waypoint + Location: 113,75 + Owner: Neutral + EntranceSouthPoint: waypoint + Location: 93,67 + Owner: Neutral + GreeceCYard: waypoint + Location: 104,52 + Owner: Neutral + VillageCamPoint: waypoint + Location: 43,52 + Owner: Neutral + StartCamPoint: waypoint + Location: 33,88 + Owner: Neutral + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + -EnemyWatcher: + MissionObjectives: + EarlyGameOver: true + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + LuaScript: + Scripts: main.lua, AI.lua, reinforcements_teams.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + ^Infantry: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Tank: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + Demolishable: + ^Vehicle: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + Demolishable: + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Wall: + Tooltip: + ShowOwnerRow: false + ^Ship: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Plane: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + ^Crate: + Tooltip: + ShowOwnerRow: false + ^CivBuilding: + Tooltip: + ShowOwnerRow: false + ^TechBuilding: + Tooltip: + ShowOwnerRow: false + AFLD: + ParatroopersPower@paratroopers: + DropItems: E1,E1,E1,E2,E2 + TSLA: + Buildable: + Prerequisites: ~disabled + SAM: + Buildable: + Prerequisites: ~disabled + HPAD: + Buildable: + Prerequisites: ~disabled + APWR: + Buildable: + Prerequisites: ~disabled + BRIK: + Buildable: + Prerequisites: ~disabled + E3: + Buildable: + Prerequisites: ~tent + E4: + Buildable: + Prerequisites: ~disabled + HIJACKER: + Buildable: + Prerequisites: ~disabled + SPY: + Buildable: + Prerequisites: ~disabled + MECH: + Buildable: + Prerequisites: ~disabled + MCV: + Buildable: + Prerequisites: ~disabled + FTRK: + Buildable: + Prerequisites: ~disabled + TRUK: + Buildable: + Prerequisites: ~disabled + APC: + Buildable: + Prerequisites: ~disabled + AGUN: + Buildable: + Prerequisites: ~disabled + +Sequences: + +VoxelSequences: + +Weapons: + +Voices: + +Notifications: + +Translations: diff --git a/mods/ra/maps/soviet-04b/reinforcements_teams.lua b/mods/ra/maps/soviet-04b/reinforcements_teams.lua new file mode 100644 index 0000000000..6d1fd7cdd5 --- /dev/null +++ b/mods/ra/maps/soviet-04b/reinforcements_teams.lua @@ -0,0 +1,80 @@ +Civs = { civ1, civ2, civ3, civ4 } +Village = { civ1, civ3, civ4, village1, village3 } +Guards = { Guard1, Guard2, Guard3 } +SovietMCV = { "mcv" } +InfantryReinfGreece = { "e1", "e1", "e1", "e1", "e1" } +Avengers = { "jeep", "1tnk", "2tnk", "2tnk", "1tnk" } +Patrol1Group = { "jeep", "jeep", "2tnk", "2tnk" } +Patrol2Group = { "jeep", "1tnk", "1tnk", "1tnk" } +AlliedInfantryTypes = { "e1", "e3" } +AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" } +InfAttack = { } +ArmorAttack = { } + +InfReinfPath = { NRoadPoint.Location, CrossroadsPoint.Location, ToVillageRoadPoint.Location, VillagePoint.Location } +Patrol1Path = { ToVillageRoadPoint.Location, ToBridgePoint.Location, InBasePoint.Location } +Patrol2Path = { EntranceSouthPoint.Location, ToRadarBridgePoint.Location, IslandPoint.Location, ToRadarBridgePoint.Location } + +VillageCamArea = { CPos.New(37, 58),CPos.New(37, 59),CPos.New(37, 60),CPos.New(38, 60),CPos.New(39, 60), CPos.New(40, 60), CPos.New(41, 60), CPos.New(35, 57), CPos.New(34, 57), CPos.New(33, 57), CPos.New(32, 57) } + +if Map.Difficulty == "Easy" then + ArmorReinfGreece = { "jeep", "1tnk", "1tnk" } +else + ArmorReinfGreece = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" } +end + +AttackPaths = +{ + { CrossroadsPoint, ToVillageRoadPoint, VillagePoint }, + { EntranceSouthPoint, OrefieldSouthPoint }, + { CrossroadsPoint, ToBridgePoint } +} + +ReinfInf = function() + Reinforcements.Reinforce(Greece, InfantryReinfGreece, InfReinfPath, 0, function(soldier) + soldier.Hunt() + end) +end + +ReinfArmor = function() + if not Radar.IsDead and Radar.Owner == Greece then + RCheck = true + Reinforcements.Reinforce(Greece, ArmorReinfGreece, InfReinfPath, 0, function(soldier) + soldier.Hunt() + end) + end +end + +BringPatrol1 = function() + local units = Reinforcements.Reinforce(Greece, Patrol1Group, { NRoadPoint.Location }, 0) + Utils.Do(units, function(patrols) + patrols.Patrol(Patrol1Path, true, 250) + end) + + if not Radar.IsDead and Radar.Owner == Greece then + Trigger.OnAllKilled(units, function() + if Map.Difficulty == "Hard" then + Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol1) + else + Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol1) + end + end) + end +end + +BringPatrol2 = function() + local units = Reinforcements.Reinforce(Greece, Patrol2Group, { NRoadPoint.Location }, 0) + Utils.Do(units, function(patrols) + patrols.Patrol(Patrol2Path, true, 250) + end) + + if not Radar.IsDead and Radar.Owner == Greece then + Trigger.OnAllKilled(units, function() + if Map.Difficulty == "Hard" then + Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol2) + else + Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol2) + end + end) + end +end diff --git a/mods/ra/maps/soviet-05/map.yaml b/mods/ra/maps/soviet-05/map.yaml index 2b027609f2..35227cf143 100644 --- a/mods/ra/maps/soviet-05/map.yaml +++ b/mods/ra/maps/soviet-05/map.yaml @@ -652,14 +652,9 @@ Rules: ShowOwnerRow: false Demolishable: ^Building: - Capturable: - CaptureThreshold: 0.25 Tooltip: GenericVisibility: Enemy ShowOwnerRow: false - ^TechBuilding: - Capturable: - Type: ~disabled ^Wall: Tooltip: ShowOwnerRow: false @@ -679,6 +674,9 @@ Rules: ^Crate: Tooltip: ShowOwnerRow: false + AFLD: + ParatroopersPower@paratroopers: + DropItems: E1,E1,E1,E2,E2 TSLA: Buildable: Prerequisites: ~disabled @@ -731,6 +729,9 @@ Rules: powerproxy.paratroopers: ParatroopersPower: DropItems: E1,E1,E1,E1,E1 + AGUN: + Buildable: + Prerequisites: ~disabled Sequences: diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index 49300d5d6c..f287f01db1 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -7,4 +7,6 @@ Allied Campaign: Soviet Campaign: ./mods/ra/maps/soviet-01 ./mods/ra/maps/soviet-02a + ./mods/ra/maps/soviet-04a + ./mods/ra/maps/soviet-04b ./mods/ra/maps/soviet-05