From 3a66cd75b477df28ff3901e09917b8ae6ee924b3 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Wed, 3 Apr 2013 19:42:40 +1300 Subject: [PATCH 01/10] Add Desert Shellmap --- .../Missions/DesertShellmapScript.cs | 71 ++++ OpenRA.Mods.RA/OpenRA.Mods.RA.csproj | 1 + mods/ra/maps/desert-shellmap/map.bin | Bin 0 -> 81925 bytes mods/ra/maps/desert-shellmap/map.yaml | 385 ++++++++++++++++++ 4 files changed, 457 insertions(+) create mode 100644 OpenRA.Mods.RA/Missions/DesertShellmapScript.cs create mode 100644 mods/ra/maps/desert-shellmap/map.bin create mode 100644 mods/ra/maps/desert-shellmap/map.yaml diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs new file mode 100644 index 0000000000..5882a0ae6f --- /dev/null +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -0,0 +1,71 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 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. For more information, + * see COPYING. + */ +#endregion + +using System.Collections.Generic; +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.RA.Missions +{ + class DesertShellmapScriptInfo : TraitInfo, Requires { } + + class DesertShellmapScript : ITick, IWorldLoaded + { + World world; + Player allies; + Player soviets; + + List viewportTargets = new List(); + int2 viewportTarget; + int viewportTargetNumber; + int2 viewportOrigin; + float mul; + float div = 400; + int waitTicks = 0; + + public void Tick(Actor self) + { + if (--waitTicks > 0) + return; + if (++mul <= div) + Game.MoveViewport(float2.Lerp(viewportOrigin, viewportTarget, mul / div)); + else + { + mul = 0; + viewportOrigin = viewportTarget; + viewportTarget = viewportTargets[(viewportTargetNumber = (viewportTargetNumber + 1) % viewportTargets.Count)]; + waitTicks = 100; + } + } + + public void WorldLoaded(World w) + { + world = w; + + allies = w.Players.Single(p => p.InternalName == "Allies"); + soviets = w.Players.Single(p => p.InternalName == "Soviets"); + + var actors = w.WorldActor.Trait().Actors; + + for (var i = 1; i <= 5; i++) + viewportTargets.Add(actors["ViewportTarget" + i].Location.ToInt2()); + + AutoTarget at = null; + foreach (var actor in actors.Values.Where(a => a.Owner == allies && (at = a.TraitOrDefault()) != null)) + at.stance = UnitStance.Defend; + + viewportOrigin = viewportTargets[0]; + viewportTargetNumber = 1; + viewportTarget = viewportTargets[1]; + Game.viewport.Center(viewportOrigin); + Sound.SoundVolumeModifier = 0.25f; + } + } +} diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj index 6909ff4a35..12509ac1d7 100644 --- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj +++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj @@ -241,6 +241,7 @@ + diff --git a/mods/ra/maps/desert-shellmap/map.bin b/mods/ra/maps/desert-shellmap/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..233b1995eacc1287f39414652f49d2200bc84c86 GIT binary patch literal 81925 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 BYH0uf literal 0 HcmV?d00001 diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml new file mode 100644 index 0000000000..8807576bf6 --- /dev/null +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -0,0 +1,385 @@ +Selectable: False + +MapFormat: 5 + +RequiresMod: ra + +Title: Desert Shellmap + +Description: Desert Shellmap + +Author: Scott_NZ + +Tileset: DESERT + +MapSize: 128,128 + +Bounds: 1,1,126,126 + +UseAsShellmap: True + +Type: Conquest + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Race: allies + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Race: allies + PlayerReference@Allies: + Name: Allies + Race: allies + ColorRamp: 161,134,200,30 + Enemies: Soviets + PlayerReference@Soviets: + Name: Soviets + Race: soviet + ColorRamp: 3,255,127,28 + Enemies: Allies + +Actors: + Actor0: rock6 + Location: 51,30 + Owner: Neutral + Actor1: rock4 + Location: 38,30 + Owner: Neutral + Actor2: rock5 + Location: 64,20 + Owner: Neutral + Actor3: rock1 + Location: 31,20 + Owner: Neutral + Actor4: rock7 + Location: 32,37 + Owner: Neutral + Actor5: rock3 + Location: 33,37 + Owner: Neutral + Actor6: rock5 + Location: 35,38 + Owner: Neutral + Actor7: t08 + Location: 46,34 + Owner: Neutral + Actor8: oilb + Location: 27,51 + Owner: Neutral + Actor9: tc01 + Location: 97,69 + Owner: Neutral + Actor10: t08 + Location: 63,71 + Owner: Neutral + Actor11: oilb + Location: 24,53 + Owner: Neutral + Actor12: oilb + Location: 49,42 + Owner: Neutral + Actor13: oilb + Location: 60,46 + Owner: Neutral + Actor14: oilb + Location: 67,51 + Owner: Neutral + Actor15: oilb + Location: 59,33 + Owner: Neutral + Actor16: oilb + Location: 41,46 + Owner: Neutral + Actor17: brl3 + Location: 51,42 + Owner: Neutral + Actor18: barl + Location: 43,48 + Owner: Neutral + Actor19: barl + Location: 60,48 + Owner: Neutral + Actor20: barl + Location: 59,48 + Owner: Neutral + Actor21: brl3 + Location: 59,49 + Owner: Neutral + Actor22: barl + Location: 27,54 + Owner: Neutral + Actor23: brl3 + Location: 25,56 + Owner: Neutral + Actor24: barl + Location: 25,55 + Owner: Neutral + Actor25: barl + Location: 69,53 + Owner: Neutral + Actor26: barl + Location: 63,35 + Owner: Neutral + Actor27: barl + Location: 42,45 + Owner: Neutral + Actor28: v20 + Location: 43,66 + Owner: Neutral + Actor29: v24 + Location: 62,74 + Owner: Neutral + Actor30: v27 + Location: 53,66 + Owner: Neutral + Actor31: v23 + Location: 55,66 + Owner: Neutral + Actor32: v21 + Location: 51,66 + Owner: Neutral + Actor33: v29 + Location: 47,67 + Owner: Neutral + Actor34: v28 + Location: 44,57 + Owner: Neutral + Actor35: v30 + Location: 51,71 + Owner: Neutral + Actor36: v28 + Location: 50,71 + Owner: Neutral + Actor55: tran.husk2 + Location: 55,59 + Owner: Allies + Actor38: v28 + Location: 59,68 + Owner: Neutral + Actor39: v27.gun + Location: 63,68 + Owner: Allies + Actor40: dome + Location: 55,19 + Owner: Soviets + Actor41: brl3 + Location: 56,43 + Owner: Neutral + Actor42: v25 + Location: 49,68 + Owner: Neutral + Actor43: v29 + Location: 61,71 + Owner: Neutral + Actor44: tc01 + Location: 51,74 + Owner: Neutral + Actor45: v28.gun + Location: 47,63 + Owner: Allies + Actor46: v22 + Location: 61,63 + Owner: Neutral + Actor47: v27 + Location: 55,65 + Owner: Neutral + Actor48: v27 + Location: 52,69 + Owner: Neutral + Actor49: v26 + Location: 49,64 + Owner: Neutral + Actor51: rock5 + Location: 52,56 + Owner: Neutral + Actor50: apwr + Location: 51,14 + Owner: Soviets + Actor53: truk + Location: 55,43 + Owner: Neutral + Actor54: mine + Location: 74,85 + Owner: Neutral + Actor37: v37 + Location: 55,69 + Owner: Neutral + Actor63: tsla + Location: 48,31 + Owner: Soviets + Actor56: v23 + Location: 24,36 + Owner: Neutral + Actor57: v27 + Location: 25,34 + Owner: Neutral + Actor59: v29 + Location: 21,28 + Owner: Neutral + Actor58: v21 + Location: 13,26 + Owner: Neutral + Actor61: powr + Location: 36,19 + Owner: Soviets + Actor60: hpad + Location: 46,28 + Owner: Soviets + Actor69: kenn + Location: 43,29 + Owner: Soviets + Actor68: ftur + Location: 34,23 + Owner: Soviets + Actor70: afld + Location: 47,24 + Owner: Soviets + Actor79: barr + Location: 41,27 + Owner: Soviets + Actor80: proc + Location: 37,20 + Owner: Soviets + Actor81: rock7 + Location: 53,19 + Owner: Neutral + Actor73: 2tnk + Location: 61,58 + Owner: Allies + Facing: 190 + Actor85: powr + Location: 49,14 + Owner: Soviets + Actor83: fcom + Location: 42,18 + Owner: Soviets + Actor84: sam + Location: 54,23 + Owner: Soviets + Actor52: powr + Location: 54,14 + Owner: Soviets + Actor72: 1tnk + Location: 48,62 + Owner: Allies + Facing: 60 + Actor88: t08 + Location: 87,47 + Owner: Neutral + Actor71: 2tnk + Location: 50,57 + Owner: Allies + Facing: 40 + Actor74: 1tnk + Location: 62,62 + Owner: Allies + Facing: 180 + Actor87: tc01 + Location: 92,50 + Owner: Neutral + Actor86: mine + Location: 30,42 + Owner: Neutral + ViewportTarget1: waypoint + Location: 37,76 + Owner: Neutral + ViewportTarget2: waypoint + Location: 70,78 + Owner: Neutral + ViewportTarget3: waypoint + Location: 75,59 + Owner: Neutral + ViewportTarget4: waypoint + Location: 59,33 + Owner: Neutral + ViewportTarget5: waypoint + Location: 38,55 + Owner: Neutral + Actor92: flare + Location: 56,59 + Owner: Neutral + Actor62: apwr + Location: 38,17 + Owner: Soviets + Actor75: 2tnk + Location: 52,63 + Owner: Allies + Facing: 100 + Actor76: 2tnk + Location: 58,64 + Owner: Allies + Facing: 140 + Actor78: jeep + Location: 49,60 + Owner: Allies + Facing: 50 + Actor82: jeep + Location: 61,60 + Owner: Allies + Facing: 190 + Actor89: arty + Location: 56,56 + Owner: Allies + Actor90: arty + Location: 54,56 + Owner: Allies + Actor91: ftur + Location: 53,14 + Owner: Soviets + Actor93: ca + Location: 20,86 + Owner: Allies + Facing: 64 + Actor94: ca + Location: 40,90 + Owner: Allies + Facing: 64 + Actor95: rock6 + Location: 10,76 + Owner: Neutral + Actor97: rock2 + Location: 12,75 + Owner: Neutral + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + World: + -CrateDrop: + -SpawnMPUnits: + -MPStartLocations: + DesertShellmapScript: + TRAN.Husk2: + Burns: + Damage: 0 + V27.Gun: + Inherits: V27 + RenderBuilding: + Image: V27 + AutoTarget: + Armament: + Weapon: Dragon + Turreted: + AttackTurreted: + V28.Gun: + Inherits: V28 + RenderBuilding: + Image: V28 + AutoTarget: + Armament: + Weapon: Dragon + Turreted: + AttackTurreted: + +Sequences: + +Weapons: + +Voices: + +Notifications: From 1e45a9899b7bc2aae8f7f31be16fafb21ede6d4b Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Thu, 4 Apr 2013 21:02:43 +1300 Subject: [PATCH 02/10] Shellmap: Add Viewport movement, coastal attacks and so forth --- .../Missions/DesertShellmapScript.cs | 72 ++++-- mods/ra/maps/desert-shellmap/map.bin | Bin 81925 -> 81925 bytes mods/ra/maps/desert-shellmap/map.yaml | 214 ++++++++++++++++-- 3 files changed, 255 insertions(+), 31 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index 5882a0ae6f..850aa811e2 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -10,6 +10,7 @@ using System.Collections.Generic; using System.Linq; +using OpenRA.Mods.RA.Move; using OpenRA.Traits; namespace OpenRA.Mods.RA.Missions @@ -30,18 +31,46 @@ namespace OpenRA.Mods.RA.Missions float div = 400; int waitTicks = 0; + Actor attackLocation; + Actor coastRP1; + Actor coastRP2; + int coastUnitsLeft; + static readonly string[] CoastUnits = { "e1", "e1", "e2", "e3", "e4" }; + + Actor paradropLocation; + static readonly string[] ParadropUnits = { "e1", "e1", "e1", "e2", "e2" }; + public void Tick(Actor self) { - if (--waitTicks > 0) - return; - if (++mul <= div) - Game.MoveViewport(float2.Lerp(viewportOrigin, viewportTarget, mul / div)); - else + MissionUtils.CapOre(soviets); + if (world.FrameNumber % 20 == 0 && coastUnitsLeft-- > 0) { - mul = 0; - viewportOrigin = viewportTarget; - viewportTarget = viewportTargets[(viewportTargetNumber = (viewportTargetNumber + 1) % viewportTargets.Count)]; - waitTicks = 100; + var u = world.CreateActor(CoastUnits.Random(world.SharedRandom), soviets, coastRP1.Location, null); + u.QueueActivity(new Move.Move(coastRP2.Location, 0)); + u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); + } + + if (world.FrameNumber % 25 == 0) + foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && a.IsIdle && !a.IsDead() + && a.HasTrait() && a.HasTrait())) + actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(attackLocation.Location))); + + if (--waitTicks <= 0) + { + if (++mul <= div) + Game.MoveViewport(float2.Lerp(viewportOrigin, viewportTarget, mul / div)); + else + { + mul = 0; + viewportOrigin = viewportTarget; + viewportTarget = viewportTargets[(viewportTargetNumber = (viewportTargetNumber + 1) % viewportTargets.Count)]; + waitTicks = 100; + + if (viewportTargetNumber == 0) + coastUnitsLeft = 15; + if (viewportTargetNumber == 2) + MissionUtils.Paradrop(world, soviets, ParadropUnits, world.ChooseRandomEdgeCell(), paradropLocation.Location); + } } } @@ -54,18 +83,33 @@ namespace OpenRA.Mods.RA.Missions var actors = w.WorldActor.Trait().Actors; - for (var i = 1; i <= 5; i++) - viewportTargets.Add(actors["ViewportTarget" + i].Location.ToInt2()); + attackLocation = actors["AttackLocation"]; + coastRP1 = actors["CoastRP1"]; + coastRP2 = actors["CoastRP2"]; + paradropLocation = actors["ParadropLocation"]; - AutoTarget at = null; - foreach (var actor in actors.Values.Where(a => a.Owner == allies && (at = a.TraitOrDefault()) != null)) - at.stance = UnitStance.Defend; + var t1 = actors["ViewportTarget1"]; + var t2 = actors["ViewportTarget2"]; + var t3 = actors["ViewportTarget3"]; + var t4 = actors["ViewportTarget4"]; + var t5 = actors["ViewportTarget5"]; + viewportTargets = new[] { t1, t2, t3, t4, t5 }.Select(t => t.Location.ToInt2()).ToList(); + + foreach (var actor in actors.Values.Where(a => a.Owner == allies || a.HasTrait())) + { + if (actor.Owner == allies && actor.HasTrait()) + actor.Trait().stance = UnitStance.Defend; + actor.AddTrait(new Invulnerable()); + } viewportOrigin = viewportTargets[0]; viewportTargetNumber = 1; viewportTarget = viewportTargets[1]; Game.viewport.Center(viewportOrigin); Sound.SoundVolumeModifier = 0.25f; + + world.RenderedPlayer = allies; + world.RenderedShroud.Jank(); } } } diff --git a/mods/ra/maps/desert-shellmap/map.bin b/mods/ra/maps/desert-shellmap/map.bin index 233b1995eacc1287f39414652f49d2200bc84c86..670c688fcb44b889fc6eb9e626881087cb716359 100644 GIT binary patch delta 1453 zcmYjRT}V@57=GS!w&`poO2)t#{Y-~LDU!sntQ$k>s)AtPO+g?8-bzB?jW;eZB6!UiWwX zY-JY6LZ1WXpsfLG(9Ei{_bG4~&w{dW&4K2iuYuN}n=gYM6q*HQp&gE9<`d;Adjr^jmH{$MPr)U9ebeq+Wvh0^G*tyLRt^ zpTh6!4rCmah-03~Q5CV39J}fGDExup0;kBhz{*mS;|f-kHYeJBMK#3>4N>Oy8~6<} zA|Knmwt5no{K#D_7%mj!W~ZPG7yG14rVJOFRC8sx*ym<3hZx1!{&Lyrdg!Zy#WTi( zDS=hjV^a(lG}-=kiT8C{9Qxi;6r}SlShY`9Lz)%7djFS^Y+dPf`qf5mRONGCEXvim;L z!5<<9bmQLEZkfh&O?^4O>mxhHAQy1F6daSEM31UmB3VJF*SD%@&#S^xWL9LaSDUA@ H56k}p@ad*? delta 1500 zcmYk6%WG3n5XR5Bw@K5OrdX*IgrYVWEK0?qRMe^qMRel>gg{qBfB-Sk^Go-ZlbVWF7=S)FgVrHewx0G3&nt%&v`K0B zz>(OYETiYFKd)u^a^7MVQIgRMe{Vd=8M z2z&W;+15rShOh`1ZHn0k2b>C40^TVTq2?aF!k2W$(+X7@q?#-1e` zvl}$Ys|!oF_hSH+&-H&~Ao~E!9Tr0u`n4$YKnqQk`$%i8LM$ zH#_CS*C#t@ss^O`)L@+C!-;1K6T*IGu-^3W_4&4_t2>eEi|x%mfB8W|LGZZ%6cZgb@*Dm2szB4G_41?O}4E zkC2a0mioeo-)%ziTEn6OU4pnqDp(zzbRAa3SJqkWN!*#q+IKtsUSl8>?=lGjUOBL7 zM^ld82)ihBr!P Date: Fri, 5 Apr 2013 04:25:56 +1300 Subject: [PATCH 03/10] Shellmap: Add more Soviet buildings and improve paradrop --- .../Missions/DesertShellmapScript.cs | 41 ++-- mods/ra/maps/desert-shellmap/map.bin | Bin 81925 -> 81925 bytes mods/ra/maps/desert-shellmap/map.yaml | 226 +++++++++++++++--- 3 files changed, 217 insertions(+), 50 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index 850aa811e2..03fda53e5b 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -37,9 +37,12 @@ namespace OpenRA.Mods.RA.Missions int coastUnitsLeft; static readonly string[] CoastUnits = { "e1", "e1", "e2", "e3", "e4" }; - Actor paradropLocation; + Actor paradropLZ; + Actor paradropEntry; static readonly string[] ParadropUnits = { "e1", "e1", "e1", "e2", "e2" }; + Dictionary mapActors; + public void Tick(Actor self) { MissionUtils.CapOre(soviets); @@ -51,9 +54,9 @@ namespace OpenRA.Mods.RA.Missions } if (world.FrameNumber % 25 == 0) - foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && a.IsIdle && !a.IsDead() - && a.HasTrait() && a.HasTrait())) - actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(attackLocation.Location))); + foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && a.IsIdle && !a.IsDead() && a.HasTrait() && a.HasTrait()) + .Except(mapActors.Values)) + actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(attackLocation.Location, 0))); if (--waitTicks <= 0) { @@ -68,8 +71,8 @@ namespace OpenRA.Mods.RA.Missions if (viewportTargetNumber == 0) coastUnitsLeft = 15; - if (viewportTargetNumber == 2) - MissionUtils.Paradrop(world, soviets, ParadropUnits, world.ChooseRandomEdgeCell(), paradropLocation.Location); + if (viewportTargetNumber == 1) + MissionUtils.Paradrop(world, soviets, ParadropUnits, paradropEntry.Location, paradropLZ.Location); } } } @@ -81,21 +84,22 @@ namespace OpenRA.Mods.RA.Missions allies = w.Players.Single(p => p.InternalName == "Allies"); soviets = w.Players.Single(p => p.InternalName == "Soviets"); - var actors = w.WorldActor.Trait().Actors; + mapActors = w.WorldActor.Trait().Actors; - attackLocation = actors["AttackLocation"]; - coastRP1 = actors["CoastRP1"]; - coastRP2 = actors["CoastRP2"]; - paradropLocation = actors["ParadropLocation"]; + attackLocation = mapActors["AttackLocation"]; + coastRP1 = mapActors["CoastRP1"]; + coastRP2 = mapActors["CoastRP2"]; + paradropLZ = mapActors["ParadropLZ"]; + paradropEntry = mapActors["ParadropEntry"]; - var t1 = actors["ViewportTarget1"]; - var t2 = actors["ViewportTarget2"]; - var t3 = actors["ViewportTarget3"]; - var t4 = actors["ViewportTarget4"]; - var t5 = actors["ViewportTarget5"]; + var t1 = mapActors["ViewportTarget1"]; + var t2 = mapActors["ViewportTarget2"]; + var t3 = mapActors["ViewportTarget3"]; + var t4 = mapActors["ViewportTarget4"]; + var t5 = mapActors["ViewportTarget5"]; viewportTargets = new[] { t1, t2, t3, t4, t5 }.Select(t => t.Location.ToInt2()).ToList(); - foreach (var actor in actors.Values.Where(a => a.Owner == allies || a.HasTrait())) + foreach (var actor in mapActors.Values.Where(a => a.Owner == allies || a.HasTrait())) { if (actor.Owner == allies && actor.HasTrait()) actor.Trait().stance = UnitStance.Defend; @@ -107,9 +111,6 @@ namespace OpenRA.Mods.RA.Missions viewportTarget = viewportTargets[1]; Game.viewport.Center(viewportOrigin); Sound.SoundVolumeModifier = 0.25f; - - world.RenderedPlayer = allies; - world.RenderedShroud.Jank(); } } } diff --git a/mods/ra/maps/desert-shellmap/map.bin b/mods/ra/maps/desert-shellmap/map.bin index 670c688fcb44b889fc6eb9e626881087cb716359..613beeeb42bfa669968c4970d9660cb129dc59d3 100644 GIT binary patch literal 81925 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 literal 81925 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

=@WFuw!7yz>a|( z13LzG4D1-#F|cD`$H0z(9RoWCb`0zo*fFqUV8_6YfgJ`+s=2Ls!78`JH+6>)GFl z>wZ>!_x~LOI|g

=@WFuw!7yz>a|(13LzG4D1-#F|cD`$H0z(9RoWCb`0zo*fFqU zV8_6YfgJ-o26hbW7}zneV_?U?j)5HmI|hE4fjm*#<#+01Wt->f?$GqdGll)>(*Atm z9r#@Fc(S(d1c=@WFuw!7yz>a|(13LzG4D1-#F|cD`$H0z(9RoWCb`0zo*fFqUV8_6YfgJ-o26hbW M7}zoJ|33!)Kcr+Ke*gdg diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml index 237d6bd480..2cee4b6709 100644 --- a/mods/ra/maps/desert-shellmap/map.yaml +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -201,9 +201,9 @@ Actors: Actor53: truk Location: 55,43 Owner: Neutral - Actor54: mine - Location: 74,85 - Owner: Neutral + Actor153: apwr + Location: 87,84 + Owner: Allies Actor63: tsla Location: 48,31 Owner: Soviets @@ -284,7 +284,7 @@ Actors: Location: 70,78 Owner: Neutral ViewportTarget3: waypoint - Location: 75,59 + Location: 85,55 Owner: Neutral ViewportTarget4: waypoint Location: 59,33 @@ -358,32 +358,14 @@ Actors: Actor77: e1 Location: 59,64 Owner: Allies - ParadropLocation: waypoint - Location: 65,60 - Owner: Neutral Actor37: rock5 Location: 35,43 Owner: Neutral Actor67: t08 Location: 25,44 Owner: Neutral - Actor84: v34 - Location: 21,73 - Owner: Neutral - Actor96: v35 - Location: 20,73 - Owner: Neutral - Actor98: v32 - Location: 20,72 - Owner: Neutral - Actor99: v33 - Location: 20,74 - Owner: Neutral - Actor100: v34 - Location: 19,74 - Owner: Neutral Actor109: stek - Location: 107,46 + Location: 113,32 Owner: Soviets Actor102: proc Location: 94,28 @@ -439,17 +421,15 @@ Actors: Actor119: barr Location: 102,30 Owner: Soviets - Actor120: kenn - Location: 100,32 - Owner: Soviets Actor136: v2rl Location: 91,40 Owner: Soviets + Facing: 90 Actor122: afld Location: 116,49 Owner: Soviets - Actor123: hpad - Location: 104,40 + Actor121: hpad + Location: 112,50 Owner: Soviets Actor126: tsla Location: 110,27 @@ -490,8 +470,9 @@ Actors: Actor137: 4tnk Location: 105,33 Owner: Soviets - Actor121: afld - Location: 106,50 + Facing: 100 + Actor123: afld + Location: 119,49 Owner: Soviets Actor138: 4tnk Location: 112,46 @@ -499,9 +480,11 @@ Actors: Actor139: 3tnk Location: 89,32 Owner: Soviets + Facing: 64 Actor140: 3tnk Location: 92,29 Owner: Soviets + Facing: 20 Actor141: 3tnk Location: 36,23 Owner: Soviets @@ -523,6 +506,189 @@ Actors: Actor147: rock1 Location: 118,54 Owner: Neutral + Actor154: pbox.e1 + Location: 70,77 + Owner: Allies + Actor148: pbox.e1 + Location: 70,89 + Owner: Allies + Actor180: pbox.e1 + Location: 83,72 + Owner: Allies + Actor152: 1tnk + Location: 69,85 + Owner: Allies + Facing: 110 + Actor155: apwr + Location: 84,84 + Owner: Allies + ParadropEntry: waypoint + Location: 60,126 + Owner: Neutral + ParadropLZ: waypoint + Location: 60,88 + Owner: Neutral + Actor149: pbox.e1 + Location: 67,84 + Owner: Allies + Actor156: pbox.e1 + Location: 94,91 + Owner: Allies + Actor162: sbag + Location: 76,70 + Owner: Allies + Actor186: 3tnk + Location: 107,50 + Owner: Soviets + Facing: 80 + Actor174: tc01 + Location: 98,37 + Owner: Neutral + Actor184: atek + Location: 75,87 + Owner: Allies + Actor166: sbag + Location: 73,71 + Owner: Allies + Actor168: sbag + Location: 72,72 + Owner: Allies + Actor164: sbag + Location: 74,70 + Owner: Allies + Actor160: agun + Location: 83,80 + Owner: Allies + Actor165: sbag + Location: 73,70 + Owner: Allies + Actor161: hpad + Location: 74,72 + Owner: Allies + Actor167: sbag + Location: 73,72 + Owner: Allies + Actor163: sbag + Location: 75,70 + Owner: Allies + Actor169: barr + Location: 109,48 + Owner: Soviets + Actor170: kenn + Location: 104,41 + Owner: Soviets + Actor179: gun + Location: 87,76 + Owner: Allies + Facing: 0 + Actor182: rock6 + Location: 96,45 + Owner: Neutral + Actor120: gun + Location: 77,70 + Owner: Allies + Facing: 20 + Actor158: pdox + Location: 78,91 + Owner: Allies + Actor159: tent + Location: 70,81 + Owner: Allies + Actor177: dome + Location: 76,80 + Owner: Allies + Actor178: pbox.e1 + Location: 101,81 + Owner: Allies + Actor181: sbag + Location: 72,74 + Owner: Allies + Actor157: gap + Location: 81,92 + Owner: Allies + Actor187: ftur + Location: 104,47 + Owner: Soviets + Actor176: gun + Location: 71,74 + Owner: Allies + Facing: 30 + Actor175: sbag + Location: 72,73 + Owner: Allies + Actor198: tent + Location: 82,74 + Owner: Allies + Actor188: ftur + Location: 107,52 + Owner: Soviets + Actor54: agun + Location: 76,92 + Owner: Allies + Actor172: apwr + Location: 81,87 + Owner: Allies + Actor171: gun + Location: 68,80 + Owner: Allies + Facing: 55 + Actor195: 2tnk + Location: 71,78 + Owner: Allies + Facing: 64 + Actor196: pt + Location: 55,92 + Owner: Allies + Facing: 160 + Actor183: rock2 + Location: 93,41 + Owner: Neutral + Actor185: 3tnk + Location: 105,47 + Owner: Soviets + Actor197: dd + Location: 30,88 + Owner: Allies + Facing: 64 + Actor150: apwr + Location: 81,84 + Owner: Allies + Actor199: e1 + Location: 72,83 + Owner: Allies + Actor200: e1 + Location: 81,73 + Owner: Allies + Actor151: apwr + Location: 87,87 + Owner: Allies + Actor173: apwr + Location: 84,87 + Owner: Allies + Actor84: apwr + Location: 38,9 + Owner: Soviets + Actor96: apwr + Location: 38,12 + Owner: Soviets + Actor98: apwr + Location: 34,12 + Owner: Soviets + Actor99: apwr + Location: 34,9 + Owner: Soviets + Actor100: apwr + Location: 30,12 + Owner: Soviets + Actor189: apwr + Location: 30,9 + Owner: Soviets + Actor190: apwr + Location: 26,12 + Owner: Soviets + Actor191: apwr + Location: 26,9 + Owner: Soviets Smudges: From cd9a264f01c052661149b60467a1894efc169538 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Fri, 5 Apr 2013 15:56:59 +1300 Subject: [PATCH 04/10] Shellmap: Add beginning paradrop and Tanya --- .../Missions/DesertShellmapScript.cs | 2 + mods/ra/maps/desert-shellmap/map.yaml | 73 ++++++++++++++++--- 2 files changed, 65 insertions(+), 10 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index 03fda53e5b..dbdabb441a 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -111,6 +111,8 @@ namespace OpenRA.Mods.RA.Missions viewportTarget = viewportTargets[1]; Game.viewport.Center(viewportOrigin); Sound.SoundVolumeModifier = 0.25f; + + MissionUtils.Paradrop(world, soviets, ParadropUnits, paradropEntry.Location, paradropLZ.Location); } } } diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml index 2cee4b6709..cb922b6153 100644 --- a/mods/ra/maps/desert-shellmap/map.yaml +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -142,10 +142,10 @@ Actors: Location: 51,66 Owner: Neutral Actor33: v29 - Location: 47,67 + Location: 63,65 Owner: Neutral Actor34: miss - Location: 54,54 + Location: 54,60 Owner: Neutral Actor35: v30 Location: 51,71 @@ -153,9 +153,9 @@ Actors: Actor36: v28 Location: 50,71 Owner: Neutral - Actor55: tran.husk2 - Location: 55,59 - Owner: Allies + Actor92: brl3 + Location: 57,55 + Owner: Neutral Actor38: v28 Location: 59,68 Owner: Neutral @@ -190,7 +190,7 @@ Actors: Location: 52,69 Owner: Neutral Actor49: v26 - Location: 49,64 + Location: 57,71 Owner: Neutral Actor51: rock5 Location: 52,56 @@ -292,8 +292,8 @@ Actors: ViewportTarget5: waypoint Location: 38,55 Owner: Neutral - Actor92: flare - Location: 56,59 + Actor55: bio + Location: 55,54 Owner: Neutral Actor62: apwr Location: 38,17 @@ -689,6 +689,54 @@ Actors: Actor191: apwr Location: 26,9 Owner: Soviets + Actor192: c1 + Location: 58,67 + Owner: Neutral + Actor193: c2 + Location: 48,68 + Owner: Neutral + Actor194: c3 + Location: 61,73 + Owner: Neutral + Actor201: chan + Location: 56,71 + Owner: Neutral + Actor202: delphi + Location: 54,67 + Owner: Neutral + Actor203: gnrl + Location: 64,65 + Owner: Neutral + Actor204: c10 + Location: 53,73 + Owner: Neutral + Actor205: c9 + Location: 51,65 + Owner: Neutral + Actor206: mgg + Location: 52,60 + Owner: Allies + Facing: 200 + Actor207: tran.husk2 + Location: 43,80 + Owner: Allies + Actor208: e7 + Location: 39,81 + Owner: Allies + Facing: 64 + Actor209: e1 + Location: 41,79 + Owner: Allies + Actor210: e1 + Location: 46,80 + Owner: Allies + Actor211: jeep + Location: 41,82 + Owner: Allies + Facing: 90 + Actor212: flare + Location: 43,79 + Owner: Neutral Smudges: @@ -721,11 +769,16 @@ Rules: Weapon: Dragon Turreted: AttackTurreted: + E7: + AnnounceOnKill: Sequences: Weapons: + 8Inch: + Report: tank6 Voices: - -Notifications: + TanyaVoice: + Voices: + Kill: laugh1, lefty1, cmon1, gotit1 \ No newline at end of file From 30ae1186d8e8741b2552b17f1f725699fa7321c5 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Sat, 6 Apr 2013 15:24:22 +1300 Subject: [PATCH 05/10] Stirred up the Shellmap water because Fix Open Areas doesn't work for desert water apparently --- mods/ra/maps/desert-shellmap/map.bin | Bin 81925 -> 81925 bytes mods/ra/maps/desert-shellmap/map.yaml | 7 ++----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/mods/ra/maps/desert-shellmap/map.bin b/mods/ra/maps/desert-shellmap/map.bin index 613beeeb42bfa669968c4970d9660cb129dc59d3..1687d864ff1d1a5776f921fd7d9ca62c605eb218 100644 GIT binary patch literal 81925 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 >}e6*W2{0Lhzqo zfVnj;&;@zm&igzx!1|G z&E)#V_xcU%aZAn{QtNwC1D1}{rrV@oTh(g{I^fw608Suihe%$G0zd5{al@S5VdBrv z3aW<>1YrhbL}B<>{Rw#NkD)?%v|0Z%SsBgd+FxFXCjQw&)plY5oyK8drhWvK zhA#?Lsv*djHOv0`=0G5Jt%|eD%*T&S!35?O)uVA~f-vywsj7Fk<=yT0-Ib~RBh}x2 zq;CEut@9n#%6`{>Hhwr)EOT}0ZWBm=OmA;Vl>eST{N1Jf?y~&uvdimHGZ8>WkHsVa zPQYuEK$;@&Vpn#7WaLV3;svKW&pnMZRhGT{Y@&sxhvDt{tVpjVfEyBvjF42WK7W)i zAfZpk?|OwwOjCaJY%wtlq!*}eewvYIv2y+H+67MDT?K%7`bc}zBh4ky=sX#R3=Y%J zuIF3kJIEd!vb(Jhu5|EIPEo!-Ki2si6OKBpT+G*_@^#kWe>nv~c-DM&gbO?ew$k*_ zHYH_&036b|A!LvS@DPSLta6t5tVn*(=DygtQ%`t42o0j)E;dx5iGUU z4^;DIRLF;K3go5W^xZX=Z#N!kZ+@h`t!IbK@i=6FP9sxQF&;5OpO2TJltE>)d%~jT zW0m<{W#(4>47VLHyjDyp82Ix9bUXoO ziiF$cYUkJbxxGi9`(oSI+{VwD!fpJtH>-f^_zQ5pAdEIdKU?rGR7Wv$BeR&key6oN z?c`27_vn5HnJT^!$R3g3;HKb{XUj=c&ZE4Ew!RGYiHmDNVj)=(jbA8|5@)F8j7?tQ z+?r2>_FX_OF2L;Q&GkPiC?rPw00ANR*wK2!rO%}YT;$z#%}EZ0Ni^jwmeDaJe4~6I0RQDqJH69xdUU^A z=Kwc2UPY4KUMU&)`50vFZ$o~*ZdW(5wVWc2QNfu`RaO5Zc zNliD$B69*nq`(w#E)NQUO9_NmJQTZ4F(UM07lI*TqMjccF{F_cuU=z9ebNvdOk^&q z^l-}%wMo`;r|s{wYj@i1{^))jGb-;S=QpyZ^Y}cmiy0+GKa28sV_b{iPn_JIq;bY9 zVua(c9AQ$sJ`@4uiT_x}19%F)=m@0W)I5Q-T6Usm>@vwtKwt~OH&_W%`18R4j)?_6 zoIJ^us~m#I!I#fR;pd>dIS`1#bUJCE_Vzf*36iWpEXw`bUB3+9V>c_Kz`s5p-QO1` zhB$NMe%t?gYrkH7Pz4%dnaqCkl+V7oJ+DQW$Rg{SM_4r;N*3gCss=g;RB4zO4@C_8 z*TZOEk>(1sg1>>i(C%%fX$8L@bLW0h$B1q;_)oj;%FWNo#*TPM42pz|UkLO|(wFXVTtgrej_b+WOUfi~?Mhyhf5dJ^{pyr+4k?-O1Ct^QU(|@?x2|b-x||dfWYa^)%cbSM#n< z=D2wZOai_Q6}xce49AXgE$Cb8%L|zN!RJ`%?_wuk?}!0v)IazOw+=ppAB5d#79|K9 zolDae`3vx=x{N>QIN)=p`7yAOdy%0AgL_q7}UEzB%8wL1G3cB#`LszGSIr0DNi*JS$ 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 C2?kC8 literal 81925 zcmeI**{@|sl_v0rGu$EXkW9waT~*yxJro9v5bw6Hd{Z7IV^j}3`ENinl3$?8kcJn) z3^HY`DhUZ>H?0K80}>=QP+&8of`Ve^4=KYV{fqcc?0eE_9$NCvo03mD6pp=O#aiF` zR_x)#9&UZ8JXHQvHs#D2*!xr2`BPCtGVhJ;E?NAkZ2hUsx?JPjXaum{+IuN$?Ea}N zKUC_6%CZaf(pSeaH!s}&Ms*^gxYpSApFCEWdD-Fd2(dL5J=l(%EYb1G zJ6|j1Yb#&6SO_Za;)t+e_(Prlp{@WtRcBAtt*7d_v(3WbA5;j%hyiRU!6|%gat*0b zW5A{W1x1HMNq}v(KUADj5G8O1Q&XUcUNs3{6x8gHG-f(!Br(-e@ZmE1a8uJos4E`1 zfTyMPho$_mHT2f6wZaZ-^eF_S#{Pq4{$Sa9u zFH&gLiWo5vE9ZHjk?8_6|8lnq*)GNq&pW|2&QZ1?Y7MiwulnAaOmt#r!&D0h2=*|`AC_6q-=ev z)K8Vgr&g3EQ?aJ4NKl)2oh5`IN-r1u@{(Dttzj1k=j7*qS;{ZV>|aay*QOaJS;N0V zvV69bXHSv{C!xZ4!#uL4anQ|*k&APmz78%yJGSzHvbb34#j^N7(Vk74A1w8QYr^%@ zS@fguky1ZW79T0wpDMFYwS57@0v9H>(P)zp+bQHx$WBB7S82T92e=Un|m-6j0`$Z|gD6?@1G<&wxXPXfWvx9ci+dkE%{dY_GZfldbgVOqC)u-$1 zY!5!X5B?j}iw*F>2g>{dtzmjEKUiiTTod-w8R`_YY)uLuDYK6hdx1$sF8u9FwOp$6 zOLgljwS1+{zEVwN{BVa-EXj^(OrI&VwAnZ&Ed^@1{tt)SKQ86RjeNVn^4q0;yUc%4 z>MzPXmq1q@{H2%$W*KR_*mq0)ZgZ{enl_hJqJwAe(`SA0Gx6VN3*Ml@1N`^_GMqpz z78GGaT-c+QX(m`|`{TMoo3c^oFV%XfE-uyW()gc$r7piz%a`i>OYP?m3k<3`qOXn} zEV0kB+Qoma|2Yk%dL>s^gZH~qephC{FXi{`w3~xJH6RVAroj=M%O925kILe!rF^x_ z)^;mq%RgOT$A6pvA3{>YkEKi=y#m)pGBpjo!W6XypRD-^T(2Q}m+I_NU0$j?`0x9; zJ-wALwVyxnVxR_n5-DR%oyOjnsO*~+I44ia)Y=EXEA@9}{`*pYU*_K^&__42Ewezjqqepa(w|LM9p{&yZSy95XuPHc(-W_6oLy@3s>v57sw(p2MT zt6x`y$=&teHEaC)rDOgZ!iB;h7je`ke79-R>heP=3kAG~)$E&wP#}~z1JyS7zftNp zn(*8UrMyt)IYE4@ly8k4gs-tcx4pJoo&Trn=J?+^Z1c897h;htY9S*hlPXh@JQP5WNj=99HPS(i^%Y6n>&xLE4NwnXr<3k5L< zKr#iAHm5c<7->6;#y3m-W|_axQUDBjQYJfXl1wM)ar_qoQ_Dx|)^&3IlYKT9*z0@o zxa1DtOu6JG5+vjxu=`@IFIKU)&a@kVk{=NFP3G$vSL}f(Tnzj zaiHL0I$r6*Z6uVn)hrmLfCm8PVL&@IHB-*cIYCQD?aQi0A-_Iax33%i+di8M?Df4k zk{nCdbJST9ou~zchrJi;?8UnEVk36HpV#{FW>uO0&cgm>N0>cX_tq|luz@AkjAad< z%WqYlQev%Rr4Ye;#t&K|8h*9reUc30Q! z0(&?tX~cx*~AX347T|{ z4iqa^UBL9z=t8V?$W+Lmb|P$RGnI_6rcDRcThp(zu{PVX^JtwvT6eD-{u7k>W5S39 z?8f9c8f1#LX_Jg33;7Y+4+4#i@hf2Q#ag~t=U=?y=!)?5U0`)m=$Av-KoJq__#ej;^n#s;G(@Km zPP=xdoGxX5npa~g=2t-YY4^ClR?FAw%uj&Jt;{ah#Uy#6)+g%XiS~0$#?=fm&QT+C z94Kt+!n`zL3>du{m?wvmFT?l$t(1RnW%jdDepY5bFXiW}sdD}&rTnDKe_hJ2*Y?mp zc6QZu!gP?lc8wm6qe@%adcKtB%j`R)e5cHEMLqIj76~@Fz=qk?QZvn~zKI9B09ufi znK}PjtzWC^<>gv0*ZJkToFq@w*%Nj7MBQ1x+!_ZolYhF2!<7AkJ5ED;GGbOJ=`H_O z>c6)#|5>R&EAyY1`t!0#E`Cz#Ps-xgEmNjPey7W3+uyIB-@iGYJYVYbW&WK8b#+CZ zysZDC92pTiLZ*dZ{D^4llV$$NHdk3NQ7Pa`ksA6ECpFYusGs~$UBBEK2eiYr1BKy8 z&YVB@{!-rGW`a#MYg{nSyPDF~Ht&ROZ& z&Gvp0yuw}Pe~(c(z$;=AwavriW&IcBm1o}hxU^_If3nn1mc=K__OyuonNmK}h(e%v z)%#cfP#u?B&Es@H8>ez$+NhDc`u?IYmHkmy4wA-7LGv;%^|-w5xctR&`ESSNe;t>% z+*Qh5EAJE*eGio>x!8N;I$HlUIYT>aif|xQV^6Rqvxa(gMLH(x`SIWf9m-O${A6ov zWfA)`r9M*1BQ1Q^Sg=sA{zH{!2#hZ`a96i+$AJR>#u{jz?~jX8G#c0l?7atLr#OFH zwvWrfae4i5`7g)izaN+XeO%spSE+ZE#a(?j9H({p+JB_hN6z}@?{xm{u{drB4Yu%~ z7)fjjwjFJHTkUzLJa4u?9{gzh^bFz(X@(#cbq9~M6f7QTW*Jd5>{%^GyceYnJ~uAvQr$F*>Tx9E{DhE4aeob9+$s4E`N7iZoaF`?kdZ> znvvx=t+TN6NS!@$);E9G_!o}pjYEWJ*wl_NWF}tJ;lWx~o;TYYKP_>ND>{nyG^vJH5!@S1&K{VWKiu%syxY)`;W;!xlwLw=FT!r_Lp~*`5k5JzEbWh z^ZUxyahV^N-Q!{}xZ$|`<#GAj^_i**_|;TRW|bZtLZKr(AJxzWQ+e zic5Ob0z@+A)k1F3^`f2mNur_PZEIT2!uB}+vw-<1WPY|e)=6#?@1INk=f)wOq#(yS zW>e&Xh5a?ldpVWA+@0lS;f_-8D2qGF_I;(^R~GlRBhTWvoI5VBIWBKJE`P<>8%lXY znH`mSRJM=G!BKhr+G)KRS^J%Gt!ba~IQS3Y_`$F?HddVUnQ4k*43ikPoS5aTbL({V zA%eoEsYO3oFp7k!^J6`YaV`kywAA!XL+CGu<^AbYe$}020E|NZ?2fhz?A%vo_m$;+ z?a0FvckD3U_NF(q6wHrW3U-dl;Zb=5r(>N~r1bgSJKJY*2mb(P=BpcBofg7IOUEfF zNfG|;bd@sbN?z0kiYp9g7~b+_;8;%!dyF#`cX|~=n&vpIuw(wWQ~BDRWkQKNm&4B8 zrQBWScQ;A>$CgUIcr*c^ZM#yJu)KZLQm}he&L5Qui1l%r|j{uw@t+tC6n1enE` zK)|z^xI|$SKO{&y`8hw)bz>0mhgpwDCr$4Jrj_!^3v2QU+bSHx_n`NeWR2YdZ?PjpsUyeJu+1HrbU%O&qXK`EEzpcEkb8869uw`OsFgTgz z-DYNvfqM7vEalEJzjN)9=`FRqrOw}4%VVv~AG>0~_8Og$d-xa-3zpPD3qSDKCe*7I z4z4I@%yZ=VU4ICnuU8=4b$AvBs2$|@zF(t@Hax~1dvk+;HAEd)G|NI+mdO62Y4QsI z{S@=xTBzkX!h_q&_HC_xeTNjP$=d|(`Y^DJ>WnoR^d`R)w(l(U&a$|3?ULy&wZ5e; z-dgKptt=ipi`!v?|IAx}Gs#7fpv*39C9{hH`D`3{$TL?3zWN>1NkHT3p7>Z&!_v+; zm?xWi7R|CymL;mtBuA zxgbn}%>UV)WqIe?CDU8#>@9Wq);fEvmE~h+aXT#hj|E$pGwl(kW zMp_o$*O=VSb3q^Mk6u4k%422rz-;S*+5Q7FS3dLeCr;U4v7H^W8xaWmnb^z%nb26K z52_t1$26f)pv=hPtlk9(q&|f(*22#O`&B8wDzo*Qdj0x@!p^u#M>6~*rqJ^7QXX&Z z1e=-J_KRsrIeWxMOa17TPg_kl3*J}i`&PL#6Fm3c9=(37)CXquy|eP(+2VnjD<77b z#U$^b@~FMSJorQ`3*;exH9a~`F}B{Zt8V4FT*_zlF2EZ9<_snwZ%6fCmHMkPU%#n0 zu1~hcRl4W|-uCOymicGP*5i#mW83uZMJ^ge$yYxh9DKCQKDv6^Dx?|ije|V#j#$FQ zxQ@kb1M|Ra_TH9)@687Cs$xSYjmfQzs^Y^wCI0U)!A%qGTFtRT+K0Enpt^qLWa5}#A^GKqjY3$)x z$ELh9E)N`k@{rgy`q?#IS@l@LtI#d}){wjY?i(ZF$DE*DojLf|cI zPK(tKu02hf^T>3RTYE#QwX$Z{>WCS5QW2IED;Vmx@v?I^n1GCpYFuU9_L;J2}dYH>9|;ioSYl@-wx5=1k}R zOD0Led5Lg+QcaPLodR8EuNiCF3sx#M#E60I%&{)dffxUJ+w|*440R4@89qHqEl0Y_ zt*tC>Ej#~G>c6yE5k7Ig{9~c+{B~l=ZebFn-81z+bNA z%V&{-G5-^k^I%Sehr$_=uHFdilPZ+%uSJSFya`97Lemhn0Ld|Ik62Fk3rNPX1vz$^ z<(o@+b7O`+%Z*0uu~Lc_!t=M5dTUwU+H@2)6<%m={jtve*dDr0#z{N?kOyFB${k3Q z!K1(srOgQknIi6)10V+ak z(`hY6ya|w8Xnq2$o@yA!mW-07tv8qY=4OyG#xw}`r~vK?oQx$~h0njSB;o&wsf}!5O@ZJ@^k}KxWQB z2>CfnWO<5d{2XgSL&llZDEf&AfjNVau;Zz}_TXRAm&gCc!b@B<8sA)IZyqd-%T8H4 z$V%xArQXnvJW{ZIYn!^djMXr9dYFxOn}F#$m%C;kFZJVP@$r?A0-PWjC?nJw;Bn<| zbNA_5p010h&u;y#L(04o2&l*e3~Yc!?Mp}b*g}i32V!MRR~wQ?s>V8}yhrTn%% zb=DsIOZtA@jEFi9kVsP)J9u+*p-tl1wp@17EP4OyhBCXMEjwh*AA5{brl4Un7>s4P z`Rxq`7342J-a-&gBFaFuUPET%s*KL;=~|zz%csxcar7P$RAAUi?bq4O#i9|YLL;BP zH`Qp=+aDy;-pM0XS?7FB<7el$rT(_e$EqeHgp$S1;aGnlVZ`uyvD5W%DG!(V!%fXs zdQLtRv$p1sc90yPVo>cf9n)-KZMp$L2gCIX&98}+ya++jbuK$*cFB%y@98Q9TTh?G zb^>s>p^PA?l`ECw~g_I}nMrmOLb zjsL~}ZRFR7%i`g(tv!7x=C&)={CUASV4$``(72lrs6g(HJ%~gG^9CjIVW8gvS>G}3 zl8@K&c%47qn4dpgx1Tq7wqnQL15gFmqtW8}_`yyn2zgOU{kE-Uw0X`}WT2 zBrD#rK$kqS)AH5rEVKSVXIyB_F1F$49xk(o%ktsompi1j*?Z-h|MKQiZf@?(6MUW@ zcN2nk@6YT(;!3_)o?p3R9zI^BVDb1_-1fTa_b-aflk5c|!T`XH*iOi~AFe(&MU5Pp zIYHndvrFwG4DBNr(~p`E-swsrS{BCjCr4b6@4cy%H=R70&n$*lk9tmP{x>zv#m%MO z-1o}=*#}N{6S7|VvU^Z>Aq2x^Z6`OZ$Ej-f@j83FE+0RO)9zLLqqNP#UL#XG6B|pq z4)djjzJuu1m3d{Z(riZq0p@qs_))_Yp(1=KL%wfcNW&7qbyScez4XWkZtzpI;zNS5>Ask01*7#!3kVS4-k6UtHlDhgmsk2)D zL9zn5d4eAd<1L#)*#B|=0!F7@EaD~98*Xvp(Y4iY`Lz>4W2wiULyC`LIcT@DaOY$Z zR{N%D?_`R6L)dI*BIlP|O1Y&hZfTjC-PG#Co7&A^IO!|X$4sCl^a66;LAH4~j!r?# zAj{e?Z%+uXv*!;5E+|luCLEjD9W=0ww4?)>Hg%zkP{V}W9n*gOM8Hm%QMbScC&};j zm8?!n6EN)L{BldFx0K~AW%s5szp2&dZ)!JxDM+H9(%G9BXArmZ@xvJ^^WW{}d>4Teh82I!U91i zdGdl}YSTNm22M9l%3UV@PZRmyFeZ>BAnKOa=tLflmxgKPq}9g1yYwbry3Hmd(EB* z9sI{T0MNpK3JnuRATYPtxc*XA?u)Iz<~DxL7&zV3L#DzqJB&=vsF-!+?6>TM)iIfq z0`6p|9+h%bwvNiaNB6sgsn~2s8>OEzlE+9+T)f;`P&_u*;}HU54HT~;iMlih@qdlJ z&N{sFEANPc0TOg!Njek_gs1^a2pXu{UC&5gVW5m6U)ssXcB0I3OCM8X#_~dqL5|{a zT2P`%qBKH|NqD%T)jUOK8;j*R~at2olD@K6%lv!()L#sM;yGT^ksOO5o(a1J8EV1=>EJhk3C%n z7t8!(rF^W_fkzJE-X!cdPut{KTg^iHRq(H2D3N5VeK&GpMGJ0 zu))3t4@C_A(Vhcu+Zo3(1lpDGB`a5Ql#_2bA4|>VCt|Y`g<)nDgbSz9zWx(6bF9l9 zd~!pLG9&mgA0SC~_V1sS`)6DC&oo~5MC+PeEX$9T*~eN<&1Xw<+f+tY!g2GIDN%Um zB0r78b~_MdE$BP_V+-98H3i5N`@-V6Q$F}OxDEa_pfVHiHa)RGC|C;%)7O>ZM^THY zD+e=)X#+3|>V~`z%=}lI&$?K4ah|te3=hd%Gy=z^QPUa2wTTvb z&+ebi-qTXBynpow9IiqyFFZ1$p_nb?VUj8G@Ne=@egls$z0Gg;Wh}W(!+Ffa+kWo! z9}4Qe%1^KSX2>{)VgQHJuk}X7fTt0D%+K%~rN4nfv`xL~U7n4^Y-GHbx7ZEDa7liI*I^u;gBK@!+Dsi_%k zX2*q}&AsPN|B00F5C2s^rpzK30KH+D`x8u*^JuL;>_xDHO`ZO>c4Az3P(bWmGIl%*f>tgg>94gNuz@B@tAP~Acp4@rU=*e#r~r;`|q z2T>R(iZm!sM$UhtluxW4sB?;(sP@(F)rZrk>z0e9UcB-F>Ccz?`7*zMws-&RwfE1g z|1cXD=t_QpiR*aRyY)i<#LYOpg69;U^&)_kCh7ZysEs87xN*Mr(@b1k;NjfqEe8$$ z69NFD1I84>d}f7rSaLeh3p0gj)4z5EeCbv0H7LgVLl9#H2&8vekh0qNRR}ZQHD^{Cf93Io2CFo z7vcO9W%h~jK;0VE+tYJ&Vfgt{o-ea+_b<$^5xB@B7Vj+eon`*c_6?l&wXSdVFAR?v zE)iI5H0ERVFRZ@B3Xk0(GsNl;gqc@?tp?J-%yY-t% zHQ)qqT2BBB&zVRtYXmc@Go2C_9n6#1M1E6yeD!KZER&}&*bWr^TyPMEpD*?K_5tVi zG15Wc{H?1`S8>FnvF3mKPG-J}*=IPM7-p~q@`Kgi1)~qA5|S4Wt?s^oMAPm7q&78e zHMH9Tma1DIIlfoLw#AG|jbPI$OjOBso&`!zesN0R!T->5f=9VMI0w4P-4g)p%B?gyc+Sat#(jn$2*?{(Ri3))k@QEaQK= zBMA(l8dPJ|F;3qo@-}ml;^}7P&9&To3O@%1|MQ=g>Q_M4cE)-FJdl7IPBcgWhAm8z zAQNDdAA#6YQ$YUgb0@E6P#|Z7+(4VyYq76!!Y1SKMYAzBNai9tmzo7*SKL`UkBOjuVIFb)pG^!sO24X_Ks6{ zKz;BJ%rv#YhDT^9MHi?ficP2liwbB-v<;L#%27}Yf4VuYD@iey&EzN?hP{LF#J+SZ z6iO!{gg2du!0wAYR5uQ3PQM^>aeJ{*dh%C<*54VK9?*Kp(~mFNeBbIdOi18aeUj)M zwZ7vNCjZ*{8{Pzq)yyunbYKjbV4%?^wxL2exnfhTivpqHdI@b#ufywQGnyEi<}Eq> zo#`&^OGubD*9n}2>r_v_AjX2{-o*yha%fu-?eC26WeRz?bb3H*f2@~ob>*G0x!pGb z6TT?g#LF`E+iQ9IDIEOQ_z!jFDwg6pbisgIy@HCwCWT1o<5qxnlk5>m8J_bzl}$P} z1*IfAY--1dPqyZhmGvbgtPyB9*Em^y)^bq2K-csOqAO%R@B$2k9H~t$o73kj2`Mlb zd5{BR6I8t#Mj3MQfwi~S`u5YE|2PcKydy`*HWhea3;7yQ;UPiM1fEc>2&zrI5na~P zD2p^~=%u6ZWh~1I{lrdAm>P{5(dUbCYH^X_ge=pC@Nhhd9oXEluSTXJ0Z*R=DNu77 zgNAct6jKmt=+aI^Ez+^@J9}F#Z>#E8{*Og=v;cEmFRqqofERnf?+#(Z)3F`)TYCaI z)Fr63<1=y)BJeWav1M5?mSz&cES$Hn;iB)%aKkUcRl?x7GREPT>Wm@ISrLnM3Pz zq`laZvRb#9gzJajmpwjz>g2Bw3I`z=$V}5t)T#AiV49OSv5AdFf?Q7zedR9ay`|h+ zX7`rGxb?g}M6?Ry_Z4^jaX2)F^E|h>Vin3nHYQkN9b2Z-YrIzEW%Mpl4F2KSzBra>2*=UbB%fY{T%D)J;kW4OCpaMp6ML((-gw6rjc5^xZ2yQ7vn>g>4Iqvz+e<$v7iBVNMo7}A)b;!bIR*bWvJ95FY zlHA1_Q*DnpE-(Kj?YmFDIT?6R!5lmxlbvkB05Ib%n<)KmDc@~4{aLF#wZ*mJx)gH5 zF`&?I7T#U!yT@PacnM>#?B?Jiu{X$XJ1|KB@iZzNFnPb3qeYUU)YL;0$=}*df6uB%tz66Z!cos9WP1 zFq*oOAZQH{jz((a+XYVkTF2?%f8;ups-c>ux=qnF4m&&zP~`{-nKKAcP(dvc3VKgo zWA8(flos;(>ix93&c*a?+pE5$4NP*a<{|*NLvJz;5B$`?APk@CB#7&+@2%cnZj+?{ z3dnG^cg&|(8wBoSfG2-1rn_Urv(TsYAYunRVa}|`v;hV@L8aJ~3$cWJR3rqw8bD$u z;gf_Yk9_20XOm66?6aeRx5ni7l$IerX+Fy*wa1sVndMF@^=57u9;dO-rjn^kO>$Y* zz`O#dQ7z-$&cXO&@m{WpLI$2(<>u9ftiAUuPXpoP!u|KtdK`W5&rv1}{D2{cU%?V; zYee3_^oWF(7*U}i%nT=AjDsyU_Ij|WXl!?Ww3XF60^^Xp(%Q`!6v6BI-AkK7*3q*a_qd=IZZV*p^o5)xom_)XKt_RO%G97$KmyFB-suw-bTY~uXnz#D+fj=y zaV2r=V*?e21K-R(dkSZP!9V*7w89BI?c^OEu{2_Poxov>8o4sjd${(de3HUQBfOWS zQoS|Z*AwQI@3~Xvft$_rPbv45`R%3NUY56)-P_B-g;FlGE;f_dOnx<+vu97?7g-NM6k%A>10KS} zLISYpG7T^g9_XVbfq;rz`ly?a!)y{qPM=Ns_%vko$;Yv@OYW2AJ~ESU+s2ph6S#)L zGCK-)kkBFYdPt5Qer4yo>%1g)ZK}NNFX(rb`mUxUsAlS(Qtv5?+so|svUPhocY8U! zQ0j%Ub)oECD6hG&`q1>02*;n(TYtt9NRTUHkJGR!UcCahi7s_EMS)V}*fdI)fd}6& z<@+r_VbatHW7;hX)3nbsPWdhT_oe)Ong4y+df|$P2KjAF_N-~Mpa8}or_)=0hgs<8 z^3`GF&;5daSDC%5p#{}USlrWg0W;q&uzh>kyS<#hP-Yj(_Jy*4p}h7&dEi8GySwf3-XbZ$**@s_4iBtep8NwvLY9((Vw2? z@+pk^yE4yj;pxG`7fv1;WG!A|q4ay=>$zU$=yBip`%~+Okw5nfddv+0HZaq(J$>fz z==d|gPd~p zlfIcLA{KVX#SgA*>XK7x8YCVqE5B<`ulb9gdROZb(}RWMnKxAM-lk|?I2!lF*-4jP zhwgUtxNrRZsrAFiRllHtZ&Pc`4S@gylFI<^;t7*wMT1c6jzX`$Q2ydV`Rfbie_SYU zdhFExK*JjUnB+PWPn}7tRzfd^H6Wy^At^0{K7>B-$e%tFq>H{<5qna(y*}-;9G8Wl zkr4pGRcqwgx&FctA=1!}C1zV9a`c$~{?z(mr2m381hzoUTq-|4`HBeqCcysq0Zt7_ zmV?=*Uc*f@^25hY?GH2z{;|ZVS;1ZAJj}o(@I;}F7A2?))N9=qBYdKM?ax~l=KC* zSXvb02RIjcNyyD5B?*FA7i;^c{QM^u3aH?L9q*YEHpL<+*x-o{REkZS$qr>F-yHlY zlMBaKasxAp5PNC?8l})|!LDb-Bem1BbK@e1CR2>iXV#Mm`5SQiV?6;vcJwM?jDBOd z*TG4F8Zc4F1XIU2o!~SI6_j-`62M!h`ut}H$x#Z-5DL~N!06J31SAMyBMGZE6>Ytu zI5(CV>9dd_8UisygC?6&j3qiDL>DjQ8YJxRey*j!aBlMo}>2@HGBjZI4J$0B{5(R8z3p0TYnH z0|`8ECN9be(^y@z@f*`vX4T}BsihscA%;&D(qKQDyZw*?&-!Qm5MmTNjg#?82%U_A z-&nb5y*-sUYe65P^kl+0>6wP|5W~7?chJmLlQ6{Q_Xv39o`g3 z1Sk-VK&4MdP2OOS-@gs>kjIYAjIv3e*<>WvbSaF?$03EagSBM}`dC68os-AHyAhgt z4VNIslOvKgA9{gMgF6b0umC`2U9+}U$Z;NQG=r1Exl{UkwS#|7`2v_zXhj5=I-C$f zp4p;SCJw3D6dL6=m&Whk3>Tw;+6v>DY#Q_xLJA2}Z8OHzlBG*ycYG@;ED=$%SNQ4VaqyWA|i3K$o$5ENRz#F7m;v{zSs~k;O8`*lZN7U1!38 zE0A<4zVe#C0UcmT!2|{p9;2zYX{>Zm24)I@HF83Q1s?VCP7@D=z)@D1wDkgG4dh2U<`41Gyb` z$N?`16GCzUr;vdGPmF=5EkaKRBFNART0EPY03Hs!}p{{y*$ z|B%KzcrEok%#a`oI9tfQO9;@?obX4^f`JMP+KECV{16H=g;@qEgiLK}j6_1nGB0f& zt{r5Ig@g_lUQ3xi3BnqELi!ZcOsT^&oZ805W9UUb9YwQ&e1RkQ)+Wf|p zvCYd^pP{LXf<~iy}m{seV{&YxS#~_;qs%_Gt%wv!MCOR0>D=5Z| z)tInR5QQNb6*kn{K9GC4*2{H%xh`Mv2eF1nFycMH;D;@wk%(FdfTc~7K1tZnCI?kS zBuS#-^YI`Gp&=wG__1lYMuN4eAcrZ1TJk&HB(^*r($000Lw3;@HRP{5>3 zB~vK886vJQoaiV|%W=_UEnPGf*)%qiI0e9_uI6GaG8+}A3<9ZMeaZjIdpD>vN*xZh z8CSEZVIXYTS=0)7;$ol8fDah@=?W(l0#%I5XKH!om3t6k@E_PPXaJUmHrJej0f1P- z5;hW%$wq-3enQ|W6DA50Pn}tji-ioKsjx!_At{W6VP5po*X!alpNOOr4hhj>?D^bB zTfcWR9;FUuHRaf$&%PQkrr3{Dn+jCA_@!?%kqX}sn;FOs1zjy2uk2rH9{l4FW?(W6 zxQ3HN9ly!Q;_9?Nk;7N8n|^kam5X2qz%LPm*{4$Z@H@lQV< zS(scW>CIa1-Hb=6DaR(Wdg&WQnL+S0prSxd!Xt?i*Axtono)*_6Oup$692E{Uuquw zbAc01HNpUo5N2XP3yii#LV!~dBS|KSUhr%RP^N5BI6uAy)A;NL6Ra*0H7blUgm;?& zC^ppxW95@6YJeFMkQCri18LO$+LXkhrGl zZ-l+_e2_ikOm<(8{k@~fbOe|Qw3LCAaJ1rHto)RBNnEmKP`LQ-RcnqGh@L@xG{$5Gb5 z36|UL>o?rT!w-zG#s~%&nZ7$0LOA7uO$`X;NIOJLf090uATcVlBH3hFXn=+7q)!)X z8AYOPhz7GXH7KVc{N-t^f_D2{un#uO0jUO9fd>Xi^n!=p;HMcj5Tz|ay69^Q$8e!- zO^>5o`Asms_SbK?Cl})cI`QBpZ@xPhYrLn+a2U7?YyehYX&4x|HY5s$Pz$TzX@jk% zpaxaVAO$sLMJy~(=A{k1RLiA0zjQi(CaeR1fjfY?)_{%QM&OX^BB2ISO7@5-L$2V# zrs#ChY3*?@#zUdG3W^;uYM5ghMjc#v0wqLCvoo%LY{n7GFi?PyM1v!)9jWs7MA)>c zH~U4RNL*r(!4$oQ(^NAadZ{ihoz9;L8~lqGPDuC#GLwWvfPjIT zi5+ItvZEJTAdQL|9fgH3<8h!ojxrlpLD(}enWagMqj=n1dm1oZ(;b#zQ-i^gUVg(o z3=PIOQ;O?bUJ?~Z1B(Brko7} zW%F;tz=nYh0~-c544feYv)Swny`R177X55Ko1Ze~PS diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml index cb922b6153..364ced3738 100644 --- a/mods/ra/maps/desert-shellmap/map.yaml +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -769,8 +769,6 @@ Rules: Weapon: Dragon Turreted: AttackTurreted: - E7: - AnnounceOnKill: Sequences: @@ -779,6 +777,5 @@ Weapons: Report: tank6 Voices: - TanyaVoice: - Voices: - Kill: laugh1, lefty1, cmon1, gotit1 \ No newline at end of file + +Notifications: From 455dd98eecb131b8c68b130eb7410f56ed04fe21 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Sat, 6 Apr 2013 17:15:05 +1300 Subject: [PATCH 06/10] Add general attack code to shellmap --- .../Missions/DesertShellmapScript.cs | 26 ++++++++++++++++--- mods/ra/maps/desert-shellmap/map.yaml | 25 +++++++++++++----- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index dbdabb441a..53af151aec 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -41,15 +41,19 @@ namespace OpenRA.Mods.RA.Missions Actor paradropEntry; static readonly string[] ParadropUnits = { "e1", "e1", "e1", "e2", "e2" }; + Actor offmapAttackerSpawn1; + Actor offmapAttackerSpawn2; + Actor offmapAttackerSpawn3; + Actor[] offmapAttackerSpawns; + static readonly string[] OffmapAttackers = { "ftrk", "apc", "ttnk", "1tnk" }; + Dictionary mapActors; public void Tick(Actor self) { - MissionUtils.CapOre(soviets); - if (world.FrameNumber % 20 == 0 && coastUnitsLeft-- > 0) + if (world.FrameNumber % 100 == 0) { - var u = world.CreateActor(CoastUnits.Random(world.SharedRandom), soviets, coastRP1.Location, null); - u.QueueActivity(new Move.Move(coastRP2.Location, 0)); + var u = world.CreateActor(OffmapAttackers.Random(world.SharedRandom), soviets, offmapAttackerSpawns.Random(world.SharedRandom).Location, 128); u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); } @@ -58,6 +62,13 @@ namespace OpenRA.Mods.RA.Missions .Except(mapActors.Values)) actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(attackLocation.Location, 0))); + if (world.FrameNumber % 20 == 0 && coastUnitsLeft-- > 0) + { + var u = world.CreateActor(CoastUnits.Random(world.SharedRandom), soviets, coastRP1.Location, null); + u.QueueActivity(new Move.Move(coastRP2.Location, 0)); + u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); + } + if (--waitTicks <= 0) { if (++mul <= div) @@ -75,6 +86,8 @@ namespace OpenRA.Mods.RA.Missions MissionUtils.Paradrop(world, soviets, ParadropUnits, paradropEntry.Location, paradropLZ.Location); } } + + MissionUtils.CapOre(soviets); } public void WorldLoaded(World w) @@ -99,6 +112,11 @@ namespace OpenRA.Mods.RA.Missions var t5 = mapActors["ViewportTarget5"]; viewportTargets = new[] { t1, t2, t3, t4, t5 }.Select(t => t.Location.ToInt2()).ToList(); + offmapAttackerSpawn1 = mapActors["OffmapAttackerSpawn1"]; + offmapAttackerSpawn2 = mapActors["OffmapAttackerSpawn2"]; + offmapAttackerSpawn3 = mapActors["OffmapAttackerSpawn3"]; + offmapAttackerSpawns = new[] { offmapAttackerSpawn1, offmapAttackerSpawn2, offmapAttackerSpawn3 }; + foreach (var actor in mapActors.Values.Where(a => a.Owner == allies || a.HasTrait())) { if (actor.Owner == allies && actor.HasTrait()) diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml index 364ced3738..afec2a3181 100644 --- a/mods/ra/maps/desert-shellmap/map.yaml +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -26,6 +26,7 @@ Players: OwnsWorld: True NonCombatant: True Race: allies + Allies: Allies PlayerReference@Creeps: Name: Creeps NonCombatant: True @@ -34,6 +35,7 @@ Players: Name: Allies Race: allies ColorRamp: 161,134,200,30 + Allies: Neutral Enemies: Soviets PlayerReference@Soviets: Name: Soviets @@ -159,9 +161,9 @@ Actors: Actor38: v28 Location: 59,68 Owner: Neutral - Actor39: v27.gun + Actor39: v27 Location: 63,68 - Owner: Allies + Owner: Neutral Actor40: dome Location: 55,19 Owner: Soviets @@ -180,9 +182,9 @@ Actors: Actor45: v28.gun Location: 47,63 Owner: Allies - Actor46: v22 + Actor46: v22.gun Location: 61,63 - Owner: Neutral + Owner: Allies Actor47: v27 Location: 55,65 Owner: Neutral @@ -737,6 +739,15 @@ Actors: Actor212: flare Location: 43,79 Owner: Neutral + OffmapAttackerSpawn1: waypoint + Location: 10,1 + Owner: Neutral + OffmapAttackerSpawn2: waypoint + Location: 84,1 + Owner: Neutral + OffmapAttackerSpawn3: waypoint + Location: 1,50 + Owner: Neutral Smudges: @@ -751,10 +762,10 @@ Rules: TRAN.Husk2: Burns: Damage: 0 - V27.Gun: - Inherits: V27 + V22.Gun: + Inherits: V22 RenderBuilding: - Image: V27 + Image: V22 AutoTarget: Armament: Weapon: Dragon From 5c3923c4f5253ecc07812d816577426b77f24086 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Tue, 9 Apr 2013 14:06:28 +1200 Subject: [PATCH 07/10] Add civilian nudging for new shellmap --- OpenRA.Mods.RA/Missions/DesertShellmapScript.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index 53af151aec..70ff420876 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -22,6 +22,7 @@ namespace OpenRA.Mods.RA.Missions World world; Player allies; Player soviets; + Player neutral; List viewportTargets = new List(); int2 viewportTarget; @@ -31,6 +32,8 @@ namespace OpenRA.Mods.RA.Missions float div = 400; int waitTicks = 0; + int nextCivilianMove = 1; + Actor attackLocation; Actor coastRP1; Actor coastRP2; @@ -69,6 +72,17 @@ namespace OpenRA.Mods.RA.Missions u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); } + if (world.FrameNumber == nextCivilianMove) + { + var civilians = world.Actors.Where(a => !a.IsDead() && a.IsInWorld && a.Owner == neutral && a.HasTrait()); + if (civilians.Any()) + { + var civilian = civilians.Random(world.SharedRandom); + civilian.Trait().Nudge(civilian, civilian, true); + nextCivilianMove += world.SharedRandom.Next(1, 75); + } + } + if (--waitTicks <= 0) { if (++mul <= div) @@ -96,6 +110,7 @@ namespace OpenRA.Mods.RA.Missions allies = w.Players.Single(p => p.InternalName == "Allies"); soviets = w.Players.Single(p => p.InternalName == "Soviets"); + neutral = w.Players.Single(p => p.InternalName == "Neutral"); mapActors = w.WorldActor.Trait().Actors; From 92efc646027dab4e01d9c70891bc72fc639069fd Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Tue, 9 Apr 2013 16:33:33 +1200 Subject: [PATCH 08/10] Add some awesome things to the new shellmap like Chronosphere/Iron Curtain usage and auto unloading of cargo --- .../Missions/DesertShellmapScript.cs | 116 ++++++++++++++++-- mods/ra/maps/desert-shellmap/map.bin | Bin 81925 -> 81925 bytes mods/ra/maps/desert-shellmap/map.yaml | 97 +++++++++++++-- 3 files changed, 193 insertions(+), 20 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs index 70ff420876..8d34c3df9b 100644 --- a/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs +++ b/OpenRA.Mods.RA/Missions/DesertShellmapScript.cs @@ -10,7 +10,11 @@ using System.Collections.Generic; using System.Linq; +using OpenRA.FileFormats; +using OpenRA.Mods.RA.Activities; +using OpenRA.Mods.RA.Air; using OpenRA.Mods.RA.Move; +using OpenRA.Scripting; using OpenRA.Traits; namespace OpenRA.Mods.RA.Missions @@ -35,8 +39,8 @@ namespace OpenRA.Mods.RA.Missions int nextCivilianMove = 1; Actor attackLocation; - Actor coastRP1; - Actor coastRP2; + Actor coastWP1; + Actor coastWP2; int coastUnitsLeft; static readonly string[] CoastUnits = { "e1", "e1", "e2", "e3", "e4" }; @@ -49,26 +53,47 @@ namespace OpenRA.Mods.RA.Missions Actor offmapAttackerSpawn3; Actor[] offmapAttackerSpawns; static readonly string[] OffmapAttackers = { "ftrk", "apc", "ttnk", "1tnk" }; + static readonly string[] AttackerCargo = { "e1", "e2", "e3", "e4" }; + + static readonly string[] HeavyTanks = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk" }; + Actor heavyTankSpawn; + Actor heavyTankWP; + static readonly string[] MediumTanks = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "2tnk" }; + Actor mediumTankChronoSpawn; Dictionary mapActors; + Actor chronosphere; + Actor ironCurtain; + + CPos[] mig1Waypoints; + CPos[] mig2Waypoints; + public void Tick(Actor self) { if (world.FrameNumber % 100 == 0) { - var u = world.CreateActor(OffmapAttackers.Random(world.SharedRandom), soviets, offmapAttackerSpawns.Random(world.SharedRandom).Location, 128); + var actor = OffmapAttackers.Random(world.SharedRandom); + var spawn = offmapAttackerSpawns.Random(world.SharedRandom); + var u = world.CreateActor(actor, soviets, spawn.Location, Util.GetFacing(attackLocation.Location - spawn.Location, 0)); + var cargo = u.TraitOrDefault(); + if (cargo != null) + { + while (cargo.HasSpace(1)) + cargo.Load(u, world.CreateActor(false, AttackerCargo.Random(world.SharedRandom), soviets, null, null)); + } u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); } if (world.FrameNumber % 25 == 0) - foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == soviets && a.IsIdle && !a.IsDead() && a.HasTrait() && a.HasTrait()) - .Except(mapActors.Values)) - actor.QueueActivity(new AttackMove.AttackMoveActivity(actor, new Move.Move(attackLocation.Location, 0))); + foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.IsIdle && !a.IsDead() + && a.HasTrait() && a.HasTrait()).Except(mapActors.Values)) + MissionUtils.AttackNearestLandActor(true, actor, actor.Owner == soviets ? allies : soviets); if (world.FrameNumber % 20 == 0 && coastUnitsLeft-- > 0) { - var u = world.CreateActor(CoastUnits.Random(world.SharedRandom), soviets, coastRP1.Location, null); - u.QueueActivity(new Move.Move(coastRP2.Location, 0)); + var u = world.CreateActor(CoastUnits.Random(world.SharedRandom), soviets, coastWP1.Location, null); + u.QueueActivity(new Move.Move(coastWP2.Location, 0)); u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(attackLocation.Location, 0))); } @@ -83,6 +108,9 @@ namespace OpenRA.Mods.RA.Missions } } + if (world.FrameNumber == 1) + MissionUtils.Paradrop(world, soviets, ParadropUnits, paradropEntry.Location, paradropLZ.Location); + if (--waitTicks <= 0) { if (++mul <= div) @@ -98,12 +126,58 @@ namespace OpenRA.Mods.RA.Missions coastUnitsLeft = 15; if (viewportTargetNumber == 1) MissionUtils.Paradrop(world, soviets, ParadropUnits, paradropEntry.Location, paradropLZ.Location); + if (viewportTargetNumber == 2) + { + AttackWithHeavyTanks(); + ChronoSpawnMediumTanks(); + } + if (viewportTargetNumber == 4) + { + FlyMigs(mig1Waypoints); + FlyMigs(mig2Waypoints); + } } } MissionUtils.CapOre(soviets); } + void AttackWithHeavyTanks() + { + foreach (var tank in HeavyTanks) + { + var u = world.CreateActor(tank, soviets, heavyTankSpawn.Location, Util.GetFacing(heavyTankWP.Location - heavyTankSpawn.Location, 0)); + u.QueueActivity(new AttackMove.AttackMoveActivity(u, new Move.Move(heavyTankWP.Location, 0))); + } + ironCurtain.Trait().Activate(ironCurtain, new Order { TargetLocation = heavyTankSpawn.Location }); + } + + void ChronoSpawnMediumTanks() + { + var chronoInfo = new List>(); + foreach (var tank in MediumTanks.Select((x, i) => new { x, i })) + { + var u = world.CreateActor(tank.x, allies, mediumTankChronoSpawn.Location, Util.GetFacing(heavyTankWP.Location - mediumTankChronoSpawn.Location, 0)); + chronoInfo.Add(Pair.New(u, new CPos(mediumTankChronoSpawn.Location.X + tank.i, mediumTankChronoSpawn.Location.Y))); + } + RASpecialPowers.Chronoshift(world, chronoInfo, chronosphere, -1, false); + foreach (var tank in chronoInfo) + tank.First.QueueActivity(new AttackMove.AttackMoveActivity(tank.First, new Move.Move(heavyTankSpawn.Location, 0))); + } + + void FlyMigs(CPos[] waypoints) + { + var m = world.CreateActor("mig", new TypeDictionary + { + new OwnerInit(soviets), + new LocationInit(waypoints[0]), + new FacingInit(Util.GetFacing(waypoints[1] - waypoints[0], 0)) + }); + foreach (var waypoint in waypoints) + m.QueueActivity(Fly.ToCell(waypoint)); + m.QueueActivity(new RemoveSelf()); + } + public void WorldLoaded(World w) { world = w; @@ -115,8 +189,8 @@ namespace OpenRA.Mods.RA.Missions mapActors = w.WorldActor.Trait().Actors; attackLocation = mapActors["AttackLocation"]; - coastRP1 = mapActors["CoastRP1"]; - coastRP2 = mapActors["CoastRP2"]; + coastWP1 = mapActors["CoastWP1"]; + coastWP2 = mapActors["CoastWP2"]; paradropLZ = mapActors["ParadropLZ"]; paradropEntry = mapActors["ParadropEntry"]; @@ -132,6 +206,16 @@ namespace OpenRA.Mods.RA.Missions offmapAttackerSpawn3 = mapActors["OffmapAttackerSpawn3"]; offmapAttackerSpawns = new[] { offmapAttackerSpawn1, offmapAttackerSpawn2, offmapAttackerSpawn3 }; + heavyTankSpawn = mapActors["HeavyTankSpawn"]; + heavyTankWP = mapActors["HeavyTankWP"]; + mediumTankChronoSpawn = mapActors["MediumTankChronoSpawn"]; + + chronosphere = mapActors["Chronosphere"]; + ironCurtain = mapActors["IronCurtain"]; + + mig1Waypoints = new[] { mapActors["Mig11"], mapActors["Mig12"], mapActors["Mig13"], mapActors["Mig14"] }.Select(a => a.Location).ToArray(); + mig2Waypoints = new[] { mapActors["Mig21"], mapActors["Mig22"], mapActors["Mig23"], mapActors["Mig24"] }.Select(a => a.Location).ToArray(); + foreach (var actor in mapActors.Values.Where(a => a.Owner == allies || a.HasTrait())) { if (actor.Owner == allies && actor.HasTrait()) @@ -144,8 +228,18 @@ namespace OpenRA.Mods.RA.Missions viewportTarget = viewportTargets[1]; Game.viewport.Center(viewportOrigin); Sound.SoundVolumeModifier = 0.25f; + } + } - MissionUtils.Paradrop(world, soviets, ParadropUnits, paradropEntry.Location, paradropLZ.Location); + class DesertShellmapAutoUnloadInfo : TraitInfo, Requires { } + + class DesertShellmapAutoUnload : INotifyDamage + { + public void Damaged(Actor self, AttackInfo e) + { + var cargo = self.Trait(); + if (!cargo.IsEmpty(self) && !(self.GetCurrentActivity() is UnloadCargo)) + self.QueueActivity(false, new UnloadCargo(true)); } } } diff --git a/mods/ra/maps/desert-shellmap/map.bin b/mods/ra/maps/desert-shellmap/map.bin index 1687d864ff1d1a5776f921fd7d9ca62c605eb218..9b1aa33b1498472314d52488bfbdff1be4cebc64 100644 GIT binary patch delta 159 zcmWlPF$%&!6b0w+W(6VD2d`iklz0kHU~4IO03o2HN$pjHEtkbjn`UEWW#tjPfC)_T zm^WSPy4F2j)j~nB{#`XPZBYt;*fgSwQCxzA?V-o`@Af3C009#rViJ-ldc+^=vuHp9 qHX;$5=GXbpZoOX)kY}tfuNNr?B+nEh`1@@#8Iy4%GER-Qzvmx-(I_X7Y~tvA5{ diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml index afec2a3181..9ccc1dbd04 100644 --- a/mods/ra/maps/desert-shellmap/map.yaml +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -200,9 +200,6 @@ Actors: Actor50: apwr Location: 51,14 Owner: Soviets - Actor53: truk - Location: 55,43 - Owner: Neutral Actor153: apwr Location: 87,84 Owner: Allies @@ -342,10 +339,10 @@ Actors: AttackLocation: waypoint Location: 55,61 Owner: Neutral - CoastRP1: waypoint + CoastWP1: waypoint Location: 1,79 Owner: Neutral - CoastRP2: waypoint + CoastWP2: waypoint Location: 36,81 Owner: Neutral Actor64: e1 @@ -411,7 +408,7 @@ Actors: Actor115: tsla Location: 40,24 Owner: Soviets - Actor107: iron + IronCurtain: iron Location: 110,40 Owner: Soviets Actor117: fix @@ -525,10 +522,10 @@ Actors: Location: 84,84 Owner: Allies ParadropEntry: waypoint - Location: 60,126 + Location: 62,126 Owner: Neutral ParadropLZ: waypoint - Location: 60,88 + Location: 62,86 Owner: Neutral Actor149: pbox.e1 Location: 67,84 @@ -590,7 +587,7 @@ Actors: Location: 77,70 Owner: Allies Facing: 20 - Actor158: pdox + Chronosphere: pdox Location: 78,91 Owner: Allies Actor159: tent @@ -748,6 +745,81 @@ Actors: OffmapAttackerSpawn3: waypoint Location: 1,50 Owner: Neutral + Actor213: 2tnk + Location: 79,70 + Owner: Allies + Facing: 0 + Actor214: 2tnk + Location: 80,70 + Owner: Allies + Facing: 0 + HeavyTankWP: waypoint + Location: 79,69 + Owner: Neutral + Actor221: powr + Location: 74,84 + Owner: Allies + Actor215: 2tnk + Location: 82,71 + Owner: Allies + Facing: 0 + HeavyTankSpawn: waypoint + Location: 80,50 + Owner: Neutral + Actor216: arty + Location: 74,71 + Owner: Allies + Facing: 0 + MediumTankChronoSpawn: waypoint + Location: 80,60 + Owner: Neutral + Actor220: powr + Location: 76,84 + Owner: Allies + Actor219: gun + Location: 85,70 + Owner: Allies + Actor53: gap + Location: 76,71 + Owner: Allies + Mig11: waypoint + Location: 94,1 + Owner: Neutral + Mig12: waypoint + Location: 68,33 + Owner: Neutral + Mig22: waypoint + Location: 70,35 + Owner: Neutral + Mig13: waypoint + Location: 41,38 + Owner: Neutral + Mig14: waypoint + Location: 1,26 + Owner: Neutral + Mig23: waypoint + Location: 41,40 + Owner: Neutral + Mig24: waypoint + Location: 1,28 + Owner: Neutral + Actor227: 2tnk + Location: 45,62 + Owner: Allies + Facing: 0 + Actor230: e1 + Location: 64,63 + Owner: Allies + Actor229: e1 + Location: 47,62 + Owner: Allies + Actor228: 2tnk + Location: 65,63 + Owner: Allies + Facing: 0 + Mig21: waypoint + Location: 96,3 + Owner: Neutral Smudges: @@ -780,12 +852,19 @@ Rules: Weapon: Dragon Turreted: AttackTurreted: + APC: + DesertShellmapAutoUnload: + MIG: + Plane: + Speed: 30 Sequences: Weapons: 8Inch: Report: tank6 + 2Inch: + Range: 10 Voices: From 7436fd1613e9107d4d5a7bbd2f6397db6e7d6391 Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Tue, 9 Apr 2013 16:35:44 +1200 Subject: [PATCH 09/10] Adjust medium tank spawn location --- mods/ra/maps/desert-shellmap/map.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ra/maps/desert-shellmap/map.yaml b/mods/ra/maps/desert-shellmap/map.yaml index 9ccc1dbd04..62fe48114e 100644 --- a/mods/ra/maps/desert-shellmap/map.yaml +++ b/mods/ra/maps/desert-shellmap/map.yaml @@ -771,7 +771,7 @@ Actors: Owner: Allies Facing: 0 MediumTankChronoSpawn: waypoint - Location: 80,60 + Location: 80,65 Owner: Neutral Actor220: powr Location: 76,84 From 5ff317a6b188ec8ad3c65946b43619170313106c Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Tue, 9 Apr 2013 16:57:22 +1200 Subject: [PATCH 10/10] Shellmap polish --- mods/ra/maps/desert-shellmap/map.bin | Bin 81925 -> 81925 bytes mods/ra/maps/desert-shellmap/map.yaml | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/mods/ra/maps/desert-shellmap/map.bin b/mods/ra/maps/desert-shellmap/map.bin index 9b1aa33b1498472314d52488bfbdff1be4cebc64..528047942b29d93ea6fa997d2c536414d8accf1e 100644 GIT binary patch delta 451 zcmX|+Jx;?w5QXRMCJ}ZZ;Mg&UihDqh5I>O*0LTC!&q{#_f>G9wkYZ)OUT@VV= zIU%P;NmPNmH zh