From 3114a5b85e22d1240a4b6c4fcf34e67ecc04496b Mon Sep 17 00:00:00 2001 From: Scott_NZ Date: Sat, 18 Aug 2012 17:26:18 +1200 Subject: [PATCH] Add Soviet apc/flamer rush after 7 minutes --- OpenRA.Mods.RA/Missions/Allies02Script.cs | 87 +++++++++++++++------- mods/ra/maps/allies-02.oramap | Bin 11789 -> 11811 bytes 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/OpenRA.Mods.RA/Missions/Allies02Script.cs b/OpenRA.Mods.RA/Missions/Allies02Script.cs index 7ffbe31af9..f54a649ca8 100644 --- a/OpenRA.Mods.RA/Missions/Allies02Script.cs +++ b/OpenRA.Mods.RA/Missions/Allies02Script.cs @@ -51,11 +51,11 @@ namespace OpenRA.Mods.RA.Missions Actor badgerEntryPoint; Actor badgerDropPoint; Actor sovietRallyPoint; + Actor flamersEntryPoint; Actor einsteinChinook; World world; - Player allies1; Player allies2; Player soviets; @@ -67,19 +67,24 @@ namespace OpenRA.Mods.RA.Missions const string InfantryQueueName = "Infantry"; const string VehicleQueueName = "Vehicle"; - static readonly string[] SovietInfantry = { "e1", "e2", "e3" }; - static readonly string[] SovietVehicles = { "3tnk" }; - const int SovietGroupSize = 5; + static List sovietInfantry = new List { "e1", "e2", "e3" }; + static List sovietVehicles = new List { "3tnk" }; + static readonly string[] SovietVehicleAdditions = { "v2rl" }; + const int SovietGroupSize = 3; + const int SovietVehicleAdditionsTicks = 1500 * 4; - const int StartReinforcementsTicks = 25 * 10; const int ReinforcementsTicks = 1500 * 12; static readonly string[] Reinforcements = { "2tnk", "2tnk", "2tnk", "mcv" }; const int ReinforcementsCash = 2000; - const int ParatroopersTicks = 1500 * 5; + const int ParatroopersTicks = 1500 * 10; static readonly string[] Paratroopers = { "e1", "e1", "e1", "e2", "3tnk" }; const string BadgerName = "badr"; + const int FlamerTicks = 1500 * 7; + static readonly string[] Flamers = { "e4", "e4", "e4", "e4", "e4" }; + const string ApcName = "apc"; + const string ChinookName = "tran"; const string SignalFlareName = "flare"; const string EngineerName = "e6"; @@ -138,15 +143,20 @@ namespace OpenRA.Mods.RA.Missions if (world.FrameNumber == 1) { InitializeSovietFactories(); - } - if (world.FrameNumber == StartReinforcementsTicks) - { StartReinforcementsTimer(); } if (world.FrameNumber == ParatroopersTicks) { ParadropSovietUnits(); } + if (world.FrameNumber == FlamerTicks) + { + RushSovietFlamers(); + } + if (world.FrameNumber == SovietVehicleAdditionsTicks) + { + sovietVehicles.AddRange(SovietVehicleAdditions); + } if (world.FrameNumber % 25 == 0) { AddSovietCashIfRequired(); @@ -212,28 +222,25 @@ namespace OpenRA.Mods.RA.Missions { if (!sovietBarracks.Destroyed) { - BuildSovietUnit(InfantryQueueName, SovietInfantry.Random(world.SharedRandom)); + BuildSovietUnit(InfantryQueueName, sovietInfantry.Random(world.SharedRandom)); } if (!sovietWarFactory.Destroyed) { - BuildSovietUnit(VehicleQueueName, SovietVehicles.Random(world.SharedRandom)); + BuildSovietUnit(VehicleQueueName, sovietVehicles.Random(world.SharedRandom)); } } void ManageSovietUnits() { - var idleSovietUnits = UnitsNearActor(allies2BasePoint, 20).Where(a => a.Owner == soviets && a.IsIdle); - var idleSovietUnitsAtRP = UnitsNearActor(sovietRallyPoint, 5).Where(a => a.Owner == soviets && a.IsIdle); + var idleSovietUnits = ForcesNearActor(allies2BasePoint, 20).Where(a => a.Owner == soviets && a.IsIdle); + var idleSovietUnitsAtRP = ForcesNearActor(sovietRallyPoint, 5).Where(a => a.Owner == soviets && a.IsIdle); if (idleSovietUnitsAtRP.Count() >= SovietGroupSize) { idleSovietUnits = idleSovietUnits.Union(idleSovietUnitsAtRP); } foreach (var unit in idleSovietUnits) { - var closestAlliedBuilding = BuildingsNearActor(allies2BasePoint, 20) - .Where(a => a.Owner == allies2) - .OrderBy(a => (unit.Location - a.Location).LengthSquared) - .FirstOrDefault(); + var closestAlliedBuilding = ClosestAlliedBuilding(unit, 20); if (closestAlliedBuilding != null) { unit.QueueActivity(new AttackMove.AttackMoveActivity(unit, new Move.Move(closestAlliedBuilding.Location, 3))); @@ -241,6 +248,14 @@ namespace OpenRA.Mods.RA.Missions } } + Actor ClosestAlliedBuilding(Actor actor, int range) + { + return BuildingsNearActor(allies2BasePoint, range) + .Where(a => a.Owner == allies2) + .OrderBy(a => (actor.Location - a.Location).LengthSquared) + .FirstOrDefault(); + } + void InitializeSovietFactories() { sovietBarracks.Trait().rallyPoint = sovietRallyPoint.Location; @@ -296,6 +311,23 @@ namespace OpenRA.Mods.RA.Missions } } + void RushSovietFlamers() + { + var closestAlliedBuilding = ClosestAlliedBuilding(badgerDropPoint, 10); + if (closestAlliedBuilding == null) + { + return; + } + var apc = world.CreateActor(ApcName, new TypeDictionary { new OwnerInit(soviets), new LocationInit(flamersEntryPoint.Location) }); + foreach (var flamer in Flamers) + { + var unit = world.CreateActor(false, flamer, new TypeDictionary { new OwnerInit(soviets) }); + apc.Trait().Load(apc, unit); + } + apc.QueueActivity(new MoveAdjacentTo(Target.FromActor(closestAlliedBuilding))); + apc.QueueActivity(new UnloadCargo(true)); + } + void ReinforcementsTimerExpired(CountdownTimerWidget timer) { timer.Visible = false; @@ -331,21 +363,25 @@ namespace OpenRA.Mods.RA.Missions einsteinChinook.QueueActivity(new RemoveSelf()); } - IEnumerable BuildingsNearActor(Actor actor, int range) - { - return world.FindUnitsInCircle(actor.CenterLocation, Game.CellSize * range) - .Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait() && !a.HasTrait() && !a.Owner.NonCombatant); - } - IEnumerable UnitsNearActor(Actor actor, int range) { return world.FindUnitsInCircle(actor.CenterLocation, Game.CellSize * range) - .Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait() && !a.Owner.NonCombatant); + .Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && !a.Owner.NonCombatant); + } + + IEnumerable BuildingsNearActor(Actor actor, int range) + { + return UnitsNearActor(actor, range).Where(a => a.HasTrait() && !a.HasTrait()); + } + + IEnumerable ForcesNearActor(Actor actor, int range) + { + return UnitsNearActor(actor, range).Where(a => a.HasTrait()); } bool AlliesControlMiss() { - var units = UnitsNearActor(engineerMiss, EngineerMissClearRange); + var units = ForcesNearActor(engineerMiss, EngineerMissClearRange); return units.Any() && units.All(a => a.Owner == allies1); } @@ -379,6 +415,7 @@ namespace OpenRA.Mods.RA.Missions sovietBarracks = actors["SovietBarracks"]; sovietWarFactory = actors["SovietWarFactory"]; sovietRallyPoint = actors["SovietRallyPoint"]; + flamersEntryPoint = actors["FlamersEntryPoint"]; w.WorldActor.Trait().Explore(w, sam1.Location, 2); w.WorldActor.Trait().Explore(w, sam2.Location, 2); w.WorldActor.Trait().Explore(w, sam3.Location, 2); diff --git a/mods/ra/maps/allies-02.oramap b/mods/ra/maps/allies-02.oramap index b615f8378f413d3d81f4fcc7d60849f5e7840fdd..06981e428ed891bee836e47d2061a48936644f54 100644 GIT binary patch delta 4915 zcmY*dWmFW7vt3d^VrdX1S8|C(6p*f!SZQ!+*rn42S=vQnT}o0y6lCd^Sdd1#C8Pu- zlx`4^^#A+4ciubi&73p$%*>tpWxm}w%UnwueH{`~CIA3H0f4+>sG=ES$5ci!sN6+1 z_&P8G0RBP$ZU6ueyXRs7b{_66R&$a9zM>^`wUjUB8YHnEKt9mcPYEyr%W8XJ_a34wEM@ za^_lP&YYa4uf6n+ecLbrO^p~->)yzS=lb0DQ$$tzS*DM}$cW;ewBPpmPjsufq7vqB z@Wf(y>e)Ko@o<5>l3bJj_nT_-Hkq~t3y*pw%a=A7=P|DfkAN5FtI{O1nddgEX#}mB zqrW>lt6MGsZ9;S%WmkhIi?g%OGH(z*$2x6r`4{oxBTAbrnXQsZV7 zbSA6Qeq46NW%h+{Tl2P3<4$(nwx>aBzEWKDZ6?16-By_u;yPg~% z>vvPJ-`ugWGP_6|Y=auMkFU}^VROI$T@?2}sj1pVZ+5A(ZtY+&|y3X9p z$^GM(w*#b%IEVj!K^p!|)VQvM&xfFFQD?S`bHfK`s73AR=E?$##=1gpZuuaViP`Q2 z^h5aifl8aqU#sq_^#vImKFdMjoqgMnxs8gJ;@t%l=2B*micn8zQE=rVcG-6g^0~T1 zr`~hjcMDS3q;ugSe_6O|q`r&v$d14C!UY?8WWSjc8MkI7uX_w5GFPE36Q%HtJqSou z02#cv>UH(Sz;eGwg(avA-@sv5Tz}Dcu~7RkB9uvZNp}`%$j%$q1=FIU?52Q(%kPC-dgO$s$`fyJq7ZlU3EHIRfir%8eK?rJK{`ZmJ8!J zVD)Z_JY0cvgUWd|LO{!i$Z-JOWmR&6e7wtCfl9L+R2z5Skah9DB~~P%{NnbP>u6#= zUs@b6@q3042mgG@L4Q|@HV!a*5Z3C$Ju~T^b3e;bu_@W}qH?@b>i>lR&c*g9WMFpAS7M0u&PE{yy)!DTwS2 zc#XvHSb(@pNk@2C=pBFExDrxha$?tCvJT%z@R6ZbOp^4BJoL=UaNHeg@ubqx4s{Wn6+z z0$b)Do@Un|^qlCTFDBmt_5J+| z!6IUbVO5rQd0#y)8S3s7wa)9_!qSwE-xMajk(tWM(17s}e0=Kc3x*B2=_kHq*M6V^ zEOU40;9x)@;(Z`JJ|Z)z44i0^(M;5Z=mTO(qn>tWbPo2|mL^IWInk!~d9p*kq?<|T z$CboEeWIX{cAOMAH%9}9;RA|_4aF?6L$$~YeEV_BpS23-*+SkCiDk7qNEIr9+sZ3^lo;1cWw3@AZA9!ob_5G3p0CU9d`cq zHfwY$S%`7uKFQ1yd+gqG@uJABi#*nyWJorEFINAp&h+zE?U5w^zBW3;D>FP%LX5 z(Am#&;ws|2mG>JUY8`F%-QKK+s*m7lIg_oFL!|{XfhHDfnh5c53y9HLTqh3vTX^_x zh0;{U_REvw6sW#G196E!R@1lH+m&;xl@rWW-D-+Kvj@KIreM$!EUH8vipwoEHA3Cf z5$cBz9E@YA)^X+Ty+kpv**g4BrsD67V?3KtTGif!m@qX-U)r8XA{Ss2!$I=n1S#B8 z%Fe@ajm#;o$ZEw7o(*_Soe_#`#VnkOqZe^8qemV7Lpt0V*#%!oZ$#*%VqJ;^V4~d} zJn|{z-~WiM^2-vQ1u-DJ*0oI3Gr7AtUyY!l=@{%lEARHq8a{ZbzPB74Wv`5k)nB4qF?6P@ z>iDGnHnx*ZpusL*IqK@3^Bv%KV)RJ2nCbfPp>XumJ=ZDenVLi9BHVh zuYeK4JzCPzbSPs!=9nRcBJ1Kl+?PazN%;jy`f(_2O~5?b85lKxHcReil%*#AkY2b* zuD~z8owr?7;2g{Ww>^JBpGOL_cay*Wba`at{TIY2Ll-^nk+~&@fiS23*o=Eh-|cY! z#1K6m=#Y{mE`~Rvic6}`n*m1#jN_qIX2M|o+jV+?Q6a49U8+gkiK^A4Ie}65FZNXQ zCwM`1DYmCPcww4ITuChxZ^^iUCXnwX6@8qNzGf0P>=Kox>h66dV72xII1qh} zaF8}TPmD#1#((OA!Z{fbaqMbq9!bB89{7k0ncNxP(EeO~vT_YK+!n`y7HuJvOb1!(@Lqd&U_FzWW3!khK=L#dX#0m8Hv=@eu6NVaj>KRbdn z)5I{8C7Zq*Y_8C^=9SS;Ci4U|=1Vc+^m7L&-~vXXCc=`xAzz8kc;!g5f{S>-jg(-I z>sxwWLc7vC$+gYGC;^RU{^{ZyHX5b7)&m7Q0Z?psqQr<2KV(#M%-Bc;Q1rw;j*ey+)o=TOQ*dfC z7oiA0xvE%d+<18^EyEHq>;aY<|q(e#{h^H0LH}6&&WuVS8YGVZ75FosS+Tm^%h-qOcns#Z;1IaI*7wY8A<*;# z@)A@jr$`SCbhA*_oSc5b2P@XFpbHtk;fv&%)RQU~7Gd(G? zh|%OquSPuynC*AK47E5FVYHSU=_yW-n?Zy6j#o^HmSQLpOCmEYAN>S6C{YgR zAq?ZA2-^8@KZda|g-MaW;P979uhbqqsVD`a3;me5X4MVV{DkOb134s84VIIOs}@;H z+AiAS$c#0wc3ufT#Nu8{ZuKj_H{pVsGAahaI;l1>8mxU6UoQk9TxQDp6EO=vxwbc{ zx&^4C0AaVPMgXc*E4nlIHA%C_>?RuS{Ji`N-rws(89W(k^lT~QG&_q@p^nx+;%=80 zgh6#HZZ*7Q(;Vl+`C2u$O})x{(&76Ur5C{4!O-z~nU?}bQ6PGlE}3l`$~<5PUWV+k zxj=I;-7uL3=erQntaQRmHmHAwrcR`-X2CIDqIgZX;TH=pRy~oCxJs648J;)m>c{S;^OHWA3#Fhv*7dQW6#Uy-fnmY2B(#2awWv5U^s{D} ztl+$mC}+KcF*<1fT52ZcjmQqfZl?Q@6`UR8P1EOj|A(bg%JbgpbVFWXTHd*+_bFcj z8>a>I)fd+gxxHx{#iThe9V~JW;r8@6 zux&Sdlb609d`7`H?_}g+tAmDX{eg2-Ax9!M>4$7BN` zuoK}t!H+UjV0lGU5SN#fi<^OBWNQJ=)lyS@=)yX3>$=$jO@KM6vt`$B)kJu*Vg|@7 zJl~B*MC_Wa3p=2RO zy?*@I|7g&WaR*8Fq|H3`_SW;?7s`?MVjsHB&>fF*i8y>7VN0swylVpzQW1FC*lCii zPyAJp(ElXimnzel;P_U#E;N_)UD<~(;bS-_)W#ptl5>KMm;ez`Mr4xOnJt{6N^^i# zTb6B8m-IQwsc!?zUg6|L1xB!^IiO{}V$rI6?F4$Q)aVzVB!ng@=j2Zg5E3NvNyZD| zFw+>8B`c5PwIC*Tp-q+?pL&-I!O%PIZK?Ac4gc{BkzpR#^hjsP8A6-ZQnZuS2!=0!TM0fhb&4MB~gx$J3|Sn z_6dUYW24cE4Ipqqw_*nhC#Z!87kZMCb0DqV+G{3!DozdYP0b~W?_<#aG z?kt5`weIX;_NKWipT&a{Cd>jKbU(PTzYFJA^EluL$_u*t!O^SDdv=hu=&iAEE7{lD zO!44U8_h?Lm$#3yGzZc#HAgMawN2q9b9ef98Bun$e%*Xy>G7yJ>4iICuP)?a%yQ*&d74*c ztNBQM=JJ=h(oB!~ABukYit~{2q2YtDsiR+~7b{1dU$;uNx2DCjF;mEx*}@IDg!iyZIB0YPE@!>CcLK%vbBS^DE=zui{FIW53qcjGuY61_t2!dkb;RjWT0PTc`Ho zKZ5@m6tX@m^lu3a!331_`%M?7pI==J8nt+~~H7a(G zbs=2Bc# zzSo&-DqYv8;6OKR6M`z~cj-}TXi=Q}<>qr;pcryeJ6pktwZzsRzrNY_Jd~>ARQf`Y}HlnuS@IMFor~5hlp4S@V^F?%E5c* zqY`!ifJ~VPa0>wX$C~;#LX+J@IV2b%(6iuSqI~<0f`E`=qHvb~#{Vnv|Gcf_I#D4p iE{=~6{$>9Ut^;!Z>snujjQn3|;(xN{A2b*JxBCwRx<0r7 delta 4894 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 Q00IEB0000)EdT%j06*V51^@s6