diff --git a/mods/ra/maps/ant-03/ant-03-AI.lua b/mods/ra/maps/ant-03/ant-03-AI.lua new file mode 100644 index 0000000000..6874c340d2 --- /dev/null +++ b/mods/ra/maps/ant-03/ant-03-AI.lua @@ -0,0 +1,104 @@ +--[[ + Copyright 2007-2021 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] +NorthNestPath = { NorthPath1, NorthPath2 } +SouthNestPath = { SouthPath1, SouthPath2 } +BaseNestPath = { NorthPath1, SouthPath1 } + +AntSquad = +{ + easy = { "warriorant", "warriorant", "warriorant" }, + normal = { "warriorant", "warriorant", "warriorant", "warriorant" }, + hard = { "warriorant", "warriorant", "warriorant", "warriorant", "warriorant" } +} + +ActivateHive1 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive1.Location }) + Utils.Do(ants, IdleHunt) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive1) +end + +ActivateHive2 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive2.Location }) + local path = Utils.Random(NorthNestPath) + Utils.Do(ants, function(ant) + ant.AttackMove(path.Location) + IdleHunt(ant) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive2) +end + +ActivateHive3 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive3.Location }) + local path = Utils.Random(NorthNestPath) + Utils.Do(ants, function(ant) + ant.AttackMove(path.Location) + IdleHunt(ant) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive3) +end + +ActivateHive4 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive4.Location }) + local path = Utils.Random(SouthNestPath) + Utils.Do(ants, function(ant) + ant.AttackMove(path.Location) + IdleHunt(ant) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive4) +end + +ActivateHive5 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive5.Location }) + local path = Utils.Random(SouthNestPath) + Utils.Do(ants, function(ant) + ant.AttackMove(path.Location) + IdleHunt(ant) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive5) +end + +ActivateHive6 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive6.Location }) + local path = Utils.Random(BaseNestPath) + Utils.Do(ants, function(ant) + ant.AttackMove(path.Location) + IdleHunt(ant) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive6) +end + +ActivateHive7 = function() + local ants = Reinforcements.Reinforce(USSR, AntSquad, { Hive7.Location }) + local path = Utils.Random(SouthNestPath) + Utils.Do(ants, function(ant) + ant.AttackMove(path.Location) + IdleHunt(ant) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive7) +end + +ActivateAntHives = function() + local difficulty = Map.LobbyOption("difficulty") + AntSquad = AntSquad[difficulty] + + Trigger.AfterDelay(DateTime.Minutes(1), ActivateHive1) + Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(30), ActivateHive2) + Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(45), ActivateHive3) + Trigger.AfterDelay(DateTime.Minutes(4), ActivateHive4) + Trigger.AfterDelay(DateTime.Minutes(5) + DateTime.Seconds(15), ActivateHive5) + Trigger.AfterDelay(DateTime.Minutes(6) + DateTime.Seconds(30), ActivateHive6) + Trigger.AfterDelay(DateTime.Minutes(7) + DateTime.Seconds(45), ActivateHive7) +end diff --git a/mods/ra/maps/ant-03/ant-03.lua b/mods/ra/maps/ant-03/ant-03.lua new file mode 100644 index 0000000000..14d97ab1c0 --- /dev/null +++ b/mods/ra/maps/ant-03/ant-03.lua @@ -0,0 +1,121 @@ +--[[ + Copyright 2007-2021 The OpenRA Developers (see AUTHORS) + This file is part of OpenRA, which is free software. It is made + available to you under the terms of the GNU General Public License + as published by the Free Software Foundation, either version 3 of + the License, or (at your option) any later version. For more + information, see COPYING. +]] +IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end +StartAnts = { StartAnt1, StartAnt2 } +Hive1Killzone = { CPos.New(80,83), CPos.New(81,83), CPos.New(82,83), CPos.New(83,83), CPos.New(84,83), CPos.New(85,83), CPos.New(85,84), CPos.New(85,85), CPos.New(85,86), CPos.New(85,87), CPos.New(84,87), CPos.New(83,87), CPos.New(82,87), CPos.New(81,87), CPos.New(80,87), CPos.New(80,86), CPos.New(80,85), CPos.New(80,84) } +Hive2Killzone = { CPos.New(84,50), CPos.New(85,50), CPos.New(86,50), CPos.New(87,50), CPos.New(88,50), CPos.New(89,50), CPos.New(89,51), CPos.New(89,52), CPos.New(89,53), CPos.New(89,54), CPos.New(88,54), CPos.New(87,54), CPos.New(86,54), CPos.New(85,54), CPos.New(84,54), CPos.New(84,53), CPos.New(84,52), CPos.New(84,51) } +Hive3Killzone = { CPos.New(73,30), CPos.New(74,30), CPos.New(75,30), CPos.New(76,30), CPos.New(77,30), CPos.New(78,30), CPos.New(78,31), CPos.New(78,32), CPos.New(78,33), CPos.New(78,34), CPos.New(77,34), CPos.New(76,34), CPos.New(75,34), CPos.New(74,34), CPos.New(73,34), CPos.New(73,33), CPos.New(73,32), CPos.New(73,31) } +Hive4Killzone = { CPos.New(51,99), CPos.New(52,99), CPos.New(53,99), CPos.New(54,99), CPos.New(55,99), CPos.New(56,99), CPos.New(56,100), CPos.New(56,101), CPos.New(56,102), CPos.New(56,103), CPos.New(55,103), CPos.New(54,103), CPos.New(53,103), CPos.New(52,103), CPos.New(51,103), CPos.New(51,102), CPos.New(51,101), CPos.New(51,100) } +Hive5Killzone = { CPos.New(55,64), CPos.New(55,65), CPos.New(55,66), CPos.New(56,66), CPos.New(57,66), CPos.New(58,66), CPos.New(59,66), CPos.New(60,66), CPos.New(60,65), CPos.New(60,64), CPos.New(60,63) } +Hive6Killzone = { CPos.New(32,31), CPos.New(33,31), CPos.New(34,31), CPos.New(35,31), CPos.New(36,31), CPos.New(37,31), CPos.New(37,32), CPos.New(37,33), CPos.New(37,34), CPos.New(37,35), CPos.New(36,35), CPos.New(35,35), CPos.New(34,35), CPos.New(33,35), CPos.New(32,34), CPos.New(32,33), CPos.New(32,32) } +Hive7Killzone = { CPos.New(30,76), CPos.New(31,76), CPos.New(32,76), CPos.New(33,76), CPos.New(34,76), CPos.New(35,76), CPos.New(35,77), CPos.New(35,78), CPos.New(35,79), CPos.New(35,80), CPos.New(34,80), CPos.New(33,80), CPos.New(32,80), CPos.New(31,80), CPos.New(30,80), CPos.New(30,79), CPos.New(30,78), CPos.New(30,77) } +Hives = { Hive1, Hive2, Hive3, Hive4, Hive5, Hive6, Hive7 } +HiveFlares = { Hive1Flare, Hive2Flare, Hive3Flare, Hive4Flare, Hive5Flare, Hive6Flare, Hive7Flare } +HiveKillzones = { Hive1Killzone, Hive2Killzone, Hive3Killzone, Hive4Killzone, Hive5Killzone, Hive6Killzone, Hive7Killzone } +HiveGassed = { Hive1Gassed, Hive2Gassed, Hive3Gassed, Hive4Gassed, Hive5Gassed, Hive6Gassed, Hive7Gassed } + +Start = function() + Utils.Do(BadGuy.GetGroundAttackers(), function(unit) + Trigger.OnDamaged(unit, function() IdleHunt(unit) end) + end) + + Utils.Do(StartAnts, function(ants) + IdleHunt(ants) + end) + + Trigger.OnAllKilled(StartAnts, function() + Media.PlaySpeechNotification(Spain, "ReinforcementsArrived") + Reinforcements.Reinforce(Spain, { "apc.grens", "apc.rockets" }, { SpainEntry.Location, APCStop.Location }) + end) + + Trigger.AfterDelay(DateTime.Minutes(1), function() + Media.PlaySpeechNotification(Spain, "ReinforcementsArrived") + VamonosPest = Reinforcements.Reinforce(Spain, { "chan", "chan", "chan", "chan", "chan", "chan", "chan" }, { SpainEntry.Location, DefaultCameraPosition.Location }, 3) + Trigger.OnAllKilled(VamonosPest, function() + if not Spain.IsObjectiveCompleted(GasNests) then + Spain.MarkFailedObjective(GasNests) + end + end) + end) +end + +GasAntNests = function() + for nestId = 1, 7 do + Trigger.OnEnteredProximityTrigger(Hives[nestId].CenterPosition, WDist.FromCells(1), function(actor, id) + if actor.Type == "chan" then + Trigger.RemoveProximityTrigger(id) + HiveGassed[nestId] = true + Actor.Create("flare", true, { Owner = England, Location = Hives[nestId].Location }) + Actor.Create("flare", true, { Owner = England, Location = HiveFlares[nestId].Location }) + Trigger.OnEnteredFootprint(HiveKillzones[nestId], function(ant) + if ant.Type == "warriorant" then + ant.Kill("ExplosionDeath") + end + end) + end + end) + end +end + +SendAnts = function() + if not Spain.IsObjectiveCompleted(KillAll) and not AntsSent then + AntsSent = true + Utils.Do(BadGuy.GetGroundAttackers(), function(ant) + IdleHunt(ant) + end) + end +end + +Tick = function() + if Spain.HasNoRequiredUnits() then + BadGuy.MarkCompletedObjective(EatSpain) + end + + if BadGuy.HasNoRequiredUnits() then + Spain.MarkCompletedObjective(KillAll) + end + + if Hive1Gassed and Hive2Gassed and Hive3Gassed and Hive4Gassed and Hive5Gassed and Hive6Gassed and Hive7Gassed then + Spain.MarkCompletedObjective(GasNests) + SendAnts() + end +end + +WorldLoaded = function() + Spain = Player.GetPlayer("Spain") + BadGuy = Player.GetPlayer("BadGuy") + USSR = Player.GetPlayer("USSR") + England = Player.GetPlayer("England") + + Trigger.OnObjectiveAdded(Spain, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + + EatSpain = BadGuy.AddObjective("For the Swarm!") + GasNests = Spain.AddObjective("Gas every ant nest.") + KillAll = Spain.AddObjective("Kill every ant lurking above ground.") + + Trigger.OnObjectiveCompleted(Spain, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(Spain, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + Trigger.OnPlayerLost(Spain, function() + Media.PlaySpeechNotification(Spain, "Lose") + end) + Trigger.OnPlayerWon(Spain, function() + Media.PlaySpeechNotification(Spain, "Win") + end) + + Camera.Position = DefaultCameraPosition.CenterPosition + Start() + GasAntNests() + ActivateAntHives() +end diff --git a/mods/ra/maps/ant-03/map.bin b/mods/ra/maps/ant-03/map.bin new file mode 100644 index 0000000000..c9954ffafc Binary files /dev/null and b/mods/ra/maps/ant-03/map.bin differ diff --git a/mods/ra/maps/ant-03/map.png b/mods/ra/maps/ant-03/map.png new file mode 100644 index 0000000000..7d97b5c826 Binary files /dev/null and b/mods/ra/maps/ant-03/map.png differ diff --git a/mods/ra/maps/ant-03/map.yaml b/mods/ra/maps/ant-03/map.yaml new file mode 100644 index 0000000000..a10a92cdd2 --- /dev/null +++ b/mods/ra/maps/ant-03/map.yaml @@ -0,0 +1,671 @@ +MapFormat: 11 + +RequiresMod: ra + +Title: 03: Hunt! + +Author: Westwood Studios + +Tileset: TEMPERAT + +MapSize: 128,128 + +Bounds: 28,27,75,80 + +Visibility: MissionSelector + +Categories: Campaign + +LockPreview: True + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: allies + PlayerReference@BadGuy: + Name: BadGuy + Faction: soviet + Color: FF1400 + Allies: USSR + Enemies: Spain + PlayerReference@Spain: + Name: Spain + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: allies + LockColor: True + Color: F6D679 + LockSpawn: True + LockTeam: True + Allies: England + Enemies: BadGuy, Spain, USSR + PlayerReference@USSR: + Name: USSR + Faction: soviet + Color: FF1400 + Allies: BadGuy + Enemies: Spain + PlayerReference@England: + Name: England + Faction: allies + Color: A0F08C + Allies: Spain + +Actors: + Actor0: brik + Location: 52,33 + Owner: BadGuy + Health: 38 + Actor1: brik + Location: 51,34 + Owner: BadGuy + Health: 48 + Actor2: brik + Location: 52,34 + Owner: BadGuy + Actor3: brik + Location: 52,35 + Owner: BadGuy + Actor4: brik + Location: 52,36 + Owner: BadGuy + Health: 47 + Actor5: wcrate + Location: 92,39 + Owner: Neutral + Actor6: brik + Location: 51,40 + Owner: BadGuy + Health: 49 + Actor7: brik + Location: 51,41 + Owner: BadGuy + Health: 41 + Actor8: brik + Location: 50,43 + Owner: BadGuy + Actor9: brik + Location: 51,43 + Owner: BadGuy + Health: 29 + Actor10: brik + Location: 44,44 + Owner: BadGuy + Actor11: brik + Location: 45,44 + Owner: BadGuy + Actor12: brik + Location: 46,44 + Owner: BadGuy + Health: 44 + Actor13: brik + Location: 50,44 + Owner: BadGuy + Health: 39 + Actor14: brik + Location: 44,45 + Owner: BadGuy + Actor15: brik + Location: 45,45 + Owner: BadGuy + Health: 35 + Actor16: tc03 + Location: 80,79 + Owner: Neutral + Actor17: tc04 + Location: 66,64 + Owner: Neutral + Actor18: tc01 + Location: 65,63 + Owner: Neutral + Actor19: tc05 + Location: 92,45 + Owner: Neutral + Actor20: tc03 + Location: 95,47 + Owner: Neutral + Actor21: tc02 + Location: 100,59 + Owner: Neutral + Actor22: t16 + Location: 102,58 + Owner: Neutral + Actor23: tc03 + Location: 92,72 + Owner: Neutral + Actor24: tc02 + Location: 94,71 + Owner: Neutral + Actor25: tc03 + Location: 76,67 + Owner: Neutral + Actor26: tc01 + Location: 84,55 + Owner: Neutral + Actor27: tc04 + Location: 85,46 + Owner: Neutral + Actor28: t14 + Location: 91,49 + Owner: Neutral + Actor29: t15 + Location: 58,61 + Owner: Neutral + Actor30: tc05 + Location: 58,68 + Owner: Neutral + Actor31: tc04 + Location: 57,67 + Owner: Neutral + Actor32: tc03 + Location: 55,68 + Owner: Neutral + Actor33: tc04 + Location: 28,69 + Owner: Neutral + Actor34: tc05 + Location: 38,81 + Owner: Neutral + Actor35: tc01 + Location: 96,99 + Owner: Neutral + Actor36: tc04 + Location: 89,105 + Owner: Neutral + Actor37: t15 + Location: 96,103 + Owner: Neutral + Actor38: tc04 + Location: 46,69 + Owner: Neutral + Actor39: tc02 + Location: 44,70 + Owner: Neutral + Actor40: tc03 + Location: 39,45 + Owner: Neutral + Actor41: tc02 + Location: 37,47 + Owner: Neutral + Actor42: tc05 + Location: 63,32 + Owner: Neutral + Actor43: tc04 + Location: 61,33 + Owner: Neutral + Actor44: tc01 + Location: 63,34 + Owner: Neutral + Actor45: t11 + Location: 49,51 + Owner: Neutral + Actor46: t10 + Location: 58,79 + Owner: Neutral + Actor47: tc05 + Location: 45,100 + Owner: Neutral + Actor48: tc02 + Location: 55,105 + Owner: Neutral + Actor49: tc05 + Location: 62,102 + Owner: Neutral + Actor50: t01 + Location: 37,43 + Owner: Neutral + Actor51: tc02 + Location: 54,34 + Owner: Neutral + Actor52: tc01 + Location: 76,35 + Owner: Neutral + Actor53: tc02 + Location: 81,32 + Owner: Neutral + Actor54: tc05 + Location: 100,27 + Owner: Neutral + Actor55: tc02 + Location: 101,32 + Owner: Neutral + Actor56: tc03 + Location: 101,34 + Owner: Neutral + Actor57: tc04 + Location: 38,76 + Owner: Neutral + Actor58: t16 + Location: 38,78 + Owner: Neutral + Actor59: mine + Location: 30,60 + Owner: Neutral + Actor60: mine + Location: 84,64 + Owner: Neutral + Actor61: mine + Location: 100,104 + Owner: Neutral + Actor62: t02 + Location: 98,55 + Owner: Neutral + Actor63: tc04 + Location: 84,105 + Owner: Neutral + Actor64: tc05 + Location: 81,104 + Owner: Neutral + Actor65: tc01 + Location: 80,105 + Owner: Neutral + Actor66: tc04 + Location: 94,78 + Owner: Neutral + Actor67: tc01 + Location: 96,77 + Owner: Neutral + Actor68: tc03 + Location: 45,104 + Owner: Neutral + Actor69: tc03 + Location: 28,90 + Owner: Neutral + Actor70: tc01 + Location: 66,42 + Owner: Neutral + Actor71: tc05 + Location: 59,43 + Owner: Neutral + Actor72: tc02 + Location: 34,82 + Owner: Neutral + Actor73: t01 + Location: 71,84 + Owner: Neutral + Actor74: tc03 + Location: 69,103 + Owner: Neutral + Actor75: tc01 + Location: 87,57 + Owner: Neutral + Actor76: tc04 + Location: 81,93 + Owner: Neutral + Actor77: tc05 + Location: 100,87 + Owner: Neutral + Actor78: weap + Location: 48,34 + Health: 6 + Owner: USSR + Actor79: silo + Location: 38,38 + Health: 6 + Owner: USSR + Actor80: sam + Location: 43,32 + Facing: 124 + Health: 25 + Owner: USSR + Actor81: afld + Location: 39,41 + Health: 10 + Owner: USSR + Actor82: apwr + Location: 43,39 + Owner: USSR + Health: 20 + Actor83: barr + Location: 47,39 + Health: 6 + Owner: USSR + Actor84: fix + Location: 44,34 + Owner: USSR + Health: 28 + Actor85: stek + Location: 39,31 + Health: 6 + Owner: USSR + Actor86: fcom + Location: 40,37 + Health: 6 + Owner: USSR + Actor87: v01 + Location: 92,38 + Owner: Neutral + Health: 10 + Actor88: v02 + Location: 99,44 + Owner: Neutral + Health: 12 + Actor89: v08 + Location: 96,44 + Owner: Neutral + Health: 12 + Actor90: v11 + Location: 89,40 + Owner: Neutral + Health: 20 + Actor91: v10 + Location: 100,38 + Owner: Neutral + Health: 8 + Actor92: v09 + Location: 99,41 + Owner: Neutral + Health: 10 + Actor93: v05 + Location: 89,43 + Owner: Neutral + Health: 10 + Actor94: mcv + Location: 100,92 + Owner: Spain + Facing: 252 + Actor95: 2tnk + Location: 98,91 + Owner: Spain + Facing: 252 + Actor96: 2tnk + Location: 98,93 + Owner: Spain + Facing: 252 + Actor97: 4tnk + Location: 101,93 + Owner: Spain + Facing: 252 + Actor98: 4tnk + Location: 101,91 + Owner: Spain + Facing: 252 + StartAnt2: warriorant + Owner: BadGuy + Location: 72,101 + Facing: 384 + StartAnt1: warriorant + Owner: BadGuy + Location: 100,74 + Facing: 384 + Actor154: warriorant + Owner: BadGuy + Facing: 384 + Location: 100,70 + Actor155: warriorant + Owner: BadGuy + Facing: 384 + Location: 87,70 + Actor156: warriorant + Owner: BadGuy + Facing: 384 + Location: 79,70 + Actor157: warriorant + Owner: BadGuy + Facing: 384 + Location: 100,63 + Actor158: warriorant + Owner: BadGuy + Facing: 384 + Location: 88,61 + Actor159: warriorant + Owner: BadGuy + Facing: 384 + Location: 97,56 + Actor160: warriorant + Owner: BadGuy + Facing: 384 + Location: 91,51 + Actor161: warriorant + Owner: BadGuy + Facing: 384 + Location: 95,52 + Actor162: warriorant + Owner: BadGuy + Facing: 384 + Location: 91,55 + Actor163: warriorant + Owner: BadGuy + Facing: 384 + Location: 85,55 + Actor164: warriorant + Owner: BadGuy + Facing: 384 + Location: 84,48 + Actor165: warriorant + Owner: BadGuy + Facing: 384 + Location: 82,49 + Actor166: warriorant + Owner: BadGuy + Facing: 384 + Location: 76,50 + Actor167: warriorant + Owner: BadGuy + Facing: 384 + Location: 92,42 + Actor168: warriorant + Owner: BadGuy + Facing: 384 + Location: 82,30 + Actor169: warriorant + Owner: BadGuy + Facing: 384 + Location: 85,36 + Actor170: warriorant + Owner: BadGuy + Facing: 384 + Location: 67,28 + Actor171: warriorant + Owner: BadGuy + Facing: 384 + Location: 67,34 + Actor172: warriorant + Owner: BadGuy + Facing: 384 + Location: 33,31 + Actor173: warriorant + Owner: BadGuy + Facing: 384 + Location: 38,35 + Actor174: warriorant + Owner: BadGuy + Facing: 384 + Location: 46,32 + Actor175: warriorant + Owner: BadGuy + Facing: 384 + Location: 49,37 + Actor176: warriorant + Owner: BadGuy + Facing: 384 + Location: 42,40 + Actor177: warriorant + Owner: BadGuy + Facing: 384 + Location: 44,42 + Actor178: warriorant + Owner: BadGuy + Facing: 384 + Location: 47,45 + Actor179: warriorant + Owner: BadGuy + Location: 52,42 + Facing: 384 + Actor180: warriorant + Owner: BadGuy + Facing: 384 + Location: 35,55 + Actor181: warriorant + Owner: BadGuy + Facing: 384 + Location: 34,62 + Actor182: warriorant + Owner: BadGuy + Facing: 384 + Location: 30,64 + Actor183: warriorant + Owner: BadGuy + Facing: 384 + Location: 29,71 + Actor184: warriorant + Owner: BadGuy + Facing: 384 + Location: 32,73 + Actor185: warriorant + Owner: BadGuy + Facing: 384 + Location: 29,78 + Actor186: warriorant + Owner: BadGuy + Facing: 384 + Location: 32,86 + Actor187: warriorant + Owner: BadGuy + Facing: 384 + Location: 31,89 + Actor188: warriorant + Owner: BadGuy + Facing: 384 + Location: 46,87 + Actor189: warriorant + Owner: BadGuy + Facing: 384 + Location: 42,74 + Actor190: warriorant + Owner: BadGuy + Facing: 384 + Location: 49,72 + Actor191: warriorant + Owner: BadGuy + Facing: 384 + Location: 48,96 + Actor192: warriorant + Owner: BadGuy + Facing: 384 + Location: 51,100 + Actor193: warriorant + Owner: BadGuy + Facing: 384 + Location: 55,103 + Actor194: warriorant + Owner: BadGuy + Facing: 384 + Location: 54,95 + Actor195: warriorant + Owner: BadGuy + Facing: 384 + Location: 56,96 + Actor196: warriorant + Owner: BadGuy + Facing: 384 + Location: 63,95 + Actor197: warriorant + Owner: BadGuy + Facing: 384 + Location: 68,99 + Actor198: warriorant + Owner: BadGuy + Facing: 384 + Location: 69,94 + Actor199: warriorant + Owner: BadGuy + Facing: 384 + Location: 69,90 + Actor200: warriorant + Owner: BadGuy + Facing: 384 + Location: 67,79 + Actor201: warriorant + Owner: BadGuy + Facing: 384 + Location: 62,72 + Actor202: warriorant + Owner: BadGuy + Facing: 384 + Location: 60,72 + Actor203: warriorant + Owner: BadGuy + Facing: 384 + Location: 55,70 + Actor204: warriorant + Owner: BadGuy + Facing: 384 + Location: 53,71 + Actor205: warriorant + Owner: BadGuy + Facing: 384 + Location: 57,67 + Actor206: warriorant + Owner: BadGuy + Facing: 384 + Location: 58,67 + DefaultCameraPosition: waypoint + Location: 99,92 + Owner: Neutral + SpainEntry: waypoint + Location: 102,92 + Owner: Neutral + APCStop: waypoint + Location: 96,88 + Owner: Neutral + Hive1: waypoint + Location: 83,85 + Owner: Neutral + Hive1Flare: waypoint + Location: 82,84 + Owner: Neutral + Hive2: waypoint + Location: 87,52 + Owner: Neutral + Hive2Flare: waypoint + Location: 86,51 + Owner: Neutral + Hive3: waypoint + Location: 76,32 + Owner: Neutral + Hive3Flare: waypoint + Location: 75,31 + Owner: Neutral + Hive4: waypoint + Location: 54,101 + Owner: Neutral + Hive4Flare: waypoint + Location: 53,100 + Owner: Neutral + Hive5: waypoint + Location: 58,64 + Owner: Neutral + Hive5Flare: waypoint + Location: 57,63 + Owner: Neutral + Hive6: waypoint + Location: 35,33 + Owner: Neutral + Hive6Flare: waypoint + Location: 34,32 + Owner: Neutral + Hive7: waypoint + Location: 33,78 + Owner: Neutral + Hive7Flare: waypoint + Location: 32,77 + Owner: Neutral + NorthPath1: waypoint + Location: 86,78 + Owner: Neutral + NorthPath2: waypoint + Location: 100,76 + Owner: Neutral + SouthPath1: waypoint + Location: 74,90 + Owner: Neutral + SouthPath2: waypoint + Location: 74,101 + Owner: Neutral + +Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml diff --git a/mods/ra/maps/ant-03/rules.yaml b/mods/ra/maps/ant-03/rules.yaml new file mode 100644 index 0000000000..2f163ebd89 --- /dev/null +++ b/mods/ra/maps/ant-03/rules.yaml @@ -0,0 +1,137 @@ +World: + LuaScript: + Scripts: ant-03.lua, ant-03-AI.lua, campaign-global.lua + MissionData: + Briefing: The source of the ant's activity has been pinpointed in this area. We suspect that their nests are in this area -- they must be destroyed!\n\nA team of civilian specialists are en-route to your location. Use them to gas all the ant nests in the area. In addition, destroy all ants that you encounter.\n\nBe careful -- these things can chew through anything. Good luck. + ScriptLobbyDropdown@difficulty: + ID: difficulty + Label: Difficulty + Values: + easy: Easy + normal: Normal + hard: Hard + Default: normal + +Player: + PlayerResources: + DefaultCash: 5500 + +WarriorAnt: + MustBeDestroyed: + Health: + HP: 25000 + +CHAN: + -Wanders: + +APC.grens: + Inherits: APC + RenderSprites: + Image: APC + Selectable: + Class: APC + Cargo: + InitialUnits: e2, e2, e1, e1, e1 + Buildable: + Prerequisites: ~disabled + +APC.rockets: + Inherits: APC + RenderSprites: + Image: APC + Selectable: + Class: APC + Cargo: + InitialUnits: e3, e3, e3, e3, e3 + Buildable: + Prerequisites: ~disabled + +APC: + Buildable: + Prerequisites: ~vehicles.allies + Selectable: + Class: APC + +E2: + Buildable: + Prerequisites: ~tent + +E4: + Buildable: + Prerequisites: stek, ~barr + +V2RL: + Buildable: + Prerequisites: dome, ~vehicles.allies + +4TNK: + Buildable: + Prerequisites: fix, dome, ~vehicles.allies + +SPY: + Buildable: + Prerequisites: ~disabled + +MECH: + Buildable: + Prerequisites: ~disabled + +3TNK: + Buildable: + Prerequisites: ~disabled + +FTRK: + Buildable: + Prerequisites: ~disabled + +QTNK: + Buildable: + Prerequisites: ~disabled + +THF: + Buildable: + Prerequisites: ~disabled + +GAP: + Buildable: + Prerequisites: ~disabled + +MSLO: + Buildable: + Prerequisites: ~disabled + +PDOX: + Buildable: + Prerequisites: ~disabled + +E7: + Buildable: + Prerequisites: ~disabled + +E7.noautotarget: + Buildable: + Prerequisites: ~disabled + +MCV: + Buildable: + Prerequisites: ~disabled + +TRUK: + Buildable: + Prerequisites: ~disabled + +MRJ: + Buildable: + Prerequisites: ~disabled + +ARTY: + Buildable: + Prerequisites: ~disabled + +ATEK: + Buildable: + Prerequisites: ~disabled + +HPAD: + Buildable: + Prerequisites: ~disabled diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index d8504823e6..edbba8e3f1 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -57,3 +57,4 @@ OpenRA Originals: survival02 Ant Missions: ant-01 + ant-03