From 2242ae8937b6d96dafae7c750ac0279543a0db06 Mon Sep 17 00:00:00 2001 From: Biofreak1987 Date: Tue, 11 Aug 2015 14:32:16 +0200 Subject: [PATCH] Add Soviet07 --- mods/ra/maps/soviet-07/map.bin | Bin 0 -> 81937 bytes mods/ra/maps/soviet-07/map.png | Bin 0 -> 28849 bytes mods/ra/maps/soviet-07/map.yaml | 946 ++++++++++++++++++++++++++++ mods/ra/maps/soviet-07/soviet07.lua | 302 +++++++++ mods/ra/missions.yaml | 1 + 5 files changed, 1249 insertions(+) create mode 100644 mods/ra/maps/soviet-07/map.bin create mode 100644 mods/ra/maps/soviet-07/map.png create mode 100644 mods/ra/maps/soviet-07/map.yaml create mode 100644 mods/ra/maps/soviet-07/soviet07.lua diff --git a/mods/ra/maps/soviet-07/map.bin b/mods/ra/maps/soviet-07/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..b6090bbdf6e6a5861a85c2f9e915fedd295167b6 GIT binary patch literal 81937 zcmeI)YmX$ib;j{x_jJ!p&+J9si?m4$#9w6B7a$0d014tCK(2x;%a*J)Aiog&R!ZXB zEbo4$e6e-s$Ma0L71?kQ=VhG*L9ke?s-6Eie0WG!_2#qXv*oQN|K9qqWjP)@HGwA3 z1e!n-XaY^32{eHw&;*)56KDcWpb0dACeQ?$Koe*JO`r)hfhN!dnm`k10!^R^G=V12 z1e!n-XaY^32{eHw&;*)56KDcWpb0dACeQ?$Koe*JO`r)hfhN!d&IGRB9m~68^EYFW zemK*nzDnM{Hmh!*SUjmwU%W;bxZC z`yKS=-7y}FaerLgAD8#X=7$4~`^V$G_h$X!{@C9iyZht%+@KCOTHYVqy2L4E*J^o{ zn^gHm{fF~zm@_x{4B^hZ%CC;gZSlW2uKGLltG^%1y|LVm&F#3j9n1RzD~Jw%IqMI% zW89AY?buejtY$a2BgrKiIJK)9<%f8%x6n~W(ocrV2 z3YW!y^Ublm7@O~m;jYj{o=2{^O>N`v0na%znh#l&!_Xx{AW{($PQJxd^llB99s@A=E@2Z4+lA?pho^& zqsu5yLwtAkCW-&w(6o|$%7Z-Fm)L>|IlDHuKmWZq@&D%&=JH3g7mPoyzEE-$?C`P< z=J9HHxxL(>2F^O1+I8v<4x?rl#h>zIOxYcm2UG2r%PLTwP4$KIe`bY+UGX2!r^goJu0Hn4JuZ-+d4MT_Kt z?^NJB)C<&KmjB}qz9|^;_=B$(An#D_6zi;3e=gr2BLOGP`FMJ zeoxvJ|7T4}w-WGxPj({yauHFaX|??IeQ-=maUjKV@Ub#ns#H)TX-1`Izc?jl3A;n> z`L;4ozRUk&_8tD8@mCwyx}lpWn+_|uv*2Hz%GL4@7JOg?!C?debF^6mF;q2B#u>33 zDr=)&dsh*eT<)r+=FW3a`12Y6YZ()t3!ddB@?537TK?QG`W*65#3FLg;nk{*uP( z9WshGab0a(%Mg$%--kFc&(zTK*uwf+`0FA^t1}mPHg;M+0Xs zvQzNCMnr8J`RNLBwni0PK_M_>->_< z0?BH>WU)?7b_yKY6mV*JSW|}L&$twZ9o+|icTO)0d6k~BTKQJ5A`mKrC%PA?cite!G>DxrrFI| zYJ)gi%mxVC#0HDQkLE%L{+_bt@fQTNxgQ8pT#>^o>kIKu4d(cpoie_y@U^KtS3j83 zTb4?SjKoaK^Kn(XIoB_Sw0kiwZR=Dw(JvTrlr*ugXGyE|f6yol>`+KJBhTB_@cajf zIin#JRnGO#+OmQ1@cCGN@T*N0R)8@Z`qwrT>?WMX2*8QbG+F7Aa<(QtI$dnF{3ii2 zV(~M3E(JuV05kl@({cM`Ts#>!PsVtATs#`HBRn3vN8|GIF`kTFd2&W-c{cQMo=)!0 zU)KM#I?=AWYIdtr2VAEKrULxO2d3X@2{Q#|G(cszAgUoNy<-!4uyLA zXdHeq#yeyCPPu*g|K?N^CD)H6*JeY1j?M(9AbU!JPbS#7;k`Lu$W<9}VxV=J0RNG9 zezI;*tiZ>FyUsb+b2Ir*sPS9z<$l z9cQyO!~dOSg>}OBS10y>I&mPMS84E7a?x1;-9O!3VctLR?8nW=%Aj`QDIM< z-ywg#5fuH^SUw#Wuf}*aE*whUk;q{>LXp%SL)Lt7;?Kz=GCbc|26g|a(~OSlDyLY- z(^tzsp6Sm=J3@gWCdkZ=0Or%N|8(qLO`o5U($k9nbEqRcy@Sk$UE-coczgHDsA2# zS2fSNt|{2=?Qva)`zK@jWE|eESEm1ZEay~&ML34w>w25l`cJ+QxciRa;T)PX|J5(n z?ELY3@ae#eXOg}c%NM7))uWnlnR7jwk-y2Wxqw_0I?R8~znkfrSyn=vkaxoj$pF?Rbq{&T&k+6ae~ci$V!_r~Vs7%%VE zKfzz~_)GBP|A*IOydK-vWA}PonqIv#E>8Rd9CKEXGXeN)5&m=r|BEq}UoP89_%Daa zA9L`{g*m^n0{9;1p_s?{^}!51>l_7)fYKZVzM?;;*)FM>Yi^}Khf*Fw6cyTP!zlPy z0-3M_F5kUb(3TuhA+p2yr9`Ag91mp(`tQ+e9s)9Nl6w(%z6ko`F={#PrWAft`Sl67 zLuIzuSB*B(Ts}>(lsx+{#edGT3OfU_4l9IzlwU8vpYyMoKR*PY6JlbPL>3M)M7l#( z7|QK2*AWc6oSzBw3-GOrZvS)!`A9~|H}&$>=FNinhH0q%N2g6O-6T`CPsXD1yT7_{ zo#NxKCc>~Y0X3NLPY!9i#3*~yrN?7${l~Y!LerSzD~E+Km$N3q^X02I3vb_-+Pl?* zkLI#7Il6N8!F)%>7G$Qt?CwFU<*)lo;!p7D02)w$De>p5zgd5{TmP|oZ)kpRu0PD> zpj!Vq6n|Ic4qHohKIkj`xvo?0pRa7@q^!QX zYpXqpz*e`G`J}Rr9Zl(x32W%B8T+A>ggCuh{{0%2`JDe^@7ce>Eq^ z9C_H~YIq}0)+5wRXMQ@i=k*^uHBYC8;6ImxYW;^ac`uHnn0zHi_)z|z^?!J0Khh~q z0g{5DIcGC)td{?r`Ig%7`S6d7sKjJ0Ce#1V>!WNNG_~M!n=$ls7~kG)XZ*iAO~G~* z|7VebhevkArE>@GC&*dPiJ#t&{OS%27 zR);JHWyAfjRJ1SPImMrxJRUyd%<_NmO%|r-mkF{2=W%P+pXvXgMY^FYMPiP~^4yVs zJcG=QrJk?ftp&|JM4iHnES2U9_vSpys5<sKOJF}=EUCT#K3OIUbGz{I-2BbvdzRhipkPzDD(5oA&&Trf;U9U~p7<|s z7LXGf&2c!$KN`JE2HpQQPIlmjStg@$^JC}#5XW!NG2Lxf*Ibj9@sG~m$L5I>b(@Fp1 z|5q0k#_whxi_9soZOF~A3pT1g@89Y~ZWt-^EdK9ta^z!Wm22h?1=Lc2a85OBkw67` zW%<>g%sCYJaeGoD-Pxi%KQaGw`)cDI=;z5JHK zPiA00ZzT^Nq=TFWGu_i04WEZ*0mHPjCbLrBT zS@{9a{K%&@Of`9#M8ToYd*|AwX!9pymz4^+J*-d0=9796_q67N|30f3>}Znv^6n*v zNF3(+0{#l@qJTUTP^XphH{q=x|K!yYVTt$hXDL2xz~%5W?5vlm*uv{Q4(FKr$;3;{ zmy)J^?RjO*6H=#eMmTsC$PU4Y!^6%5+Q`?d|HU84i*L@~fAf``G+vDD>7zM^`Fif~ zVm7#`v-=n0@SPfV&)Zuk{kl^^(E$sg;uKn zesj{7x%oKvH`4y~%9;gS)h~tK)QI3s2E(^KM{_Q{BmU2&xi|9hd52tG&IBsiLOtdx z)vP!EtVM%4>^>g{&iq?~&-1Ccdi`GUf!KtJN-8(P@xPB z4%ty$l<^mKUX87UE!1)~I)yxe5am}kI;dPP|N0u``djt;x1~j!ih@KtqM!sk3KFFf z8VQ7E`P(!8xj7FRr>z0}6MrJi=Oqf0oCy*Fg|?2Mo(bd{uay7$Gj1`H72!-3st_o7 zf`9HE$ChWEM+l_7WYk_>>zOUO$-kneg4JD&yEhh6E*tU4imArQk5ZCqtxonm`k10!^R^ zG=V121e!n-XaY^32{eHw&;*)56KDcWpb0dACeQ?$Koj_X5m@?P6KDcWpb0dACeQ?$ zKoe*JO`r)hfhN!dnm`k10!^R^G=V121e!n-XaY^32{eHw&;*)56KDcWpb0dACeQ?$ zKoe*JO`r)hfhN!dnm`k10!^R^G=V121e!n-XaY^32{eHw&;*)56KDcWpb0dACeQ?$ zKoe*JO`r)hfhN!dnm`k10!^R^G=V121e!n-XaY^32{eHw&;*)56KDcWpb0dACeQ?$ qKoe*JO`r)hfhN!dnm`k10!^R^G=V121e!n-XaY^32{eHwu>3b^Pg8CH literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-07/map.png b/mods/ra/maps/soviet-07/map.png new file mode 100644 index 0000000000000000000000000000000000000000..e92632f70fe14976003cf98c18d77856601545e5 GIT binary patch literal 28849 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 R74!fA002ovPDHLkV1gA%tiS*O literal 0 HcmV?d00001 diff --git a/mods/ra/maps/soviet-07/map.yaml b/mods/ra/maps/soviet-07/map.yaml new file mode 100644 index 0000000000..2e3e2dc064 --- /dev/null +++ b/mods/ra/maps/soviet-07/map.yaml @@ -0,0 +1,946 @@ +MapFormat: 7 + +RequiresMod: ra + +Title: Soviet 07: Core of the matter + +Description: The Allies have infiltrated one of our nuclear reactors! They have tampered with the core so that a meltdown is imminent within 30 minutes. They must not succeed!\n\nEnter the base and find any remaining technicians. Guide them to the 4 coolant stations so they can activate them, then activate the main computer. The security systems have been armed so beware.\n\nKill any Allies you find. + +Author: Westwood Studios + +Tileset: INTERIOR + +MapSize: 128,128 + +Bounds: 40,43,70,45 + +Visibility: MissionSelector + +Type: Campaign + +Videos: + Briefing: soviet7.vqa + GameStart: countdwn.vqa + GameWon: averted.vqa + GameLost: nukestok.vqa + +Options: + Crates: False + Fog: True + Shroud: True + AllyBuildRadius: False + FragileAlliances: False + StartingCash: 0 + ConfigurableStartingUnits: False + Difficulties: Easy, Normal, Hard + ShortGame: False + +Players: + PlayerReference@Neutral: + Name: Neutral + OwnsWorld: True + NonCombatant: True + Faction: england + PlayerReference@Creeps: + Name: Creeps + NonCombatant: True + Faction: england + PlayerReference@Greece: + Name: Greece + Faction: allies + ColorRamp: 161,134,236 + Allies: Soviet + Enemies: USSR + PlayerReference@USSR: + Name: USSR + AllowBots: False + Playable: True + Required: True + LockFaction: True + Faction: soviet + LockColor: True + ColorRamp: 3,255,127 + LockSpawn: True + LockTeam: True + Allies: Soviet + Enemies: Greece, Creeps + PlayerReference@Soviet: + Name: Soviet + Faction: soviet + ColorRamp: 3,255,127 + Allies: USSR, Greece + PlayerReference@Spain: + Name: Spain + Faction: allies + ColorRamp: 100,222,100 + +Actors: + Actor0: boxes01 + Location: 49,46 + Owner: Neutral + Actor1: boxes02 + Location: 42,46 + Owner: Neutral + Actor2: boxes03 + Location: 49,48 + Owner: Neutral + Actor3: boxes04 + Location: 42,48 + Owner: Neutral + Actor4: boxes06 + Location: 48,46 + Owner: Neutral + Actor5: boxes07 + Location: 49,47 + Owner: Neutral + Actor6: boxes01 + Location: 67,74 + Owner: Neutral + Actor7: boxes01 + Location: 47,68 + Owner: Neutral + Actor8: boxes02 + Location: 42,67 + Owner: Neutral + Actor9: boxes01 + Location: 43,67 + Owner: Neutral + Actor10: boxes01 + Location: 44,67 + Owner: Neutral + Actor11: boxes03 + Location: 48,60 + Owner: Neutral + Actor12: boxes03 + Location: 44,68 + Owner: Neutral + Actor13: boxes04 + Location: 46,66 + Owner: Neutral + Actor14: boxes04 + Location: 47,69 + Owner: Neutral + Actor15: boxes03 + Location: 44,69 + Owner: Neutral + Actor16: boxes02 + Location: 44,62 + Owner: Neutral + Actor17: boxes02 + Location: 49,68 + Owner: Neutral + Actor18: boxes01 + Location: 48,66 + Owner: Neutral + Actor19: boxes01 + Location: 43,65 + Owner: Neutral + Actor20: boxes02 + Location: 46,65 + Owner: Neutral + Actor21: boxes03 + Location: 44,65 + Owner: Neutral + Actor22: boxes01 + Location: 43,62 + Owner: Neutral + Actor23: boxes04 + Location: 43,63 + Owner: Neutral + Actor24: boxes05 + Location: 43,64 + Owner: Neutral + Actor25: boxes05 + Location: 41,67 + Owner: Neutral + Actor26: boxes05 + Location: 47,66 + Owner: Neutral + Actor27: boxes05 + Location: 46,62 + Owner: Neutral + Actor28: boxes06 + Location: 48,62 + Owner: Neutral + Actor29: boxes04 + Location: 49,62 + Owner: Neutral + Actor30: boxes03 + Location: 49,63 + Owner: Neutral + Actor31: boxes03 + Location: 46,64 + Owner: Neutral + Actor32: boxes03 + Location: 48,68 + Owner: Neutral + Actor33: boxes02 + Location: 46,61 + Owner: Neutral + Actor34: boxes01 + Location: 46,60 + Owner: Neutral + Actor35: boxes04 + Location: 43,59 + Owner: Neutral + Actor36: boxes04 + Location: 43,60 + Owner: Neutral + Actor37: boxes05 + Location: 42,57 + Owner: Neutral + Actor38: boxes06 + Location: 43,58 + Owner: Neutral + Actor39: boxes07 + Location: 45,62 + Owner: Neutral + Actor40: boxes08 + Location: 45,56 + Owner: Neutral + Actor41: boxes05 + Location: 46,57 + Owner: Neutral + Actor42: boxes03 + Location: 48,57 + Owner: Neutral + Actor43: boxes03 + Location: 44,55 + Owner: Neutral + Actor44: boxes09 + Location: 46,54 + Owner: Neutral + Actor45: boxes08 + Location: 45,55 + Owner: Neutral + Actor46: boxes07 + Location: 45,54 + Owner: Neutral + Actor47: boxes05 + Location: 45,53 + Owner: Neutral + Actor48: boxes04 + Location: 47,55 + Owner: Neutral + Actor49: boxes03 + Location: 47,54 + Owner: Neutral + Actor50: boxes03 + Location: 47,60 + Owner: Neutral + Actor51: boxes02 + Location: 46,59 + Owner: Neutral + Actor52: boxes01 + Location: 49,57 + Owner: Neutral + Actor53: boxes05 + Location: 46,63 + Owner: Neutral + Actor54: boxes01 + Location: 41,57 + Owner: Neutral + Actor55: boxes01 + Location: 45,57 + Owner: Neutral + Actor56: boxes02 + Location: 45,58 + Owner: Neutral + Actor57: boxes03 + Location: 45,59 + Owner: Neutral + Actor58: boxes01 + Location: 46,56 + Owner: Neutral + Actor59: boxes01 + Location: 43,57 + Owner: Neutral + Actor60: boxes01 + Location: 46,55 + Owner: Neutral + Actor61: boxes06 + Location: 86,69 + Owner: Neutral + Actor65: barl + Location: 98,45 + Owner: Creeps + Actor66: barl + Location: 98,49 + Owner: Creeps + Actor67: brl3 + Location: 98,46 + Owner: Creeps + Actor68: brl3 + Location: 100,44 + Owner: Creeps + Actor69: barl + Location: 105,48 + Owner: Creeps + Actor70: barl + Location: 106,49 + Owner: Creeps + Actor71: barl + Location: 105,50 + Owner: Creeps + Actor72: brl3 + Location: 105,51 + Owner: Creeps + Actor73: barl + Location: 106,52 + Owner: Creeps + Actor75: barl + Location: 105,54 + Owner: Creeps + Actor76: barl + Location: 105,55 + Owner: Creeps + Actor77: brl3 + Location: 105,56 + Owner: Creeps + Actor78: brl3 + Location: 106,57 + Owner: Creeps + Actor79: barl + Location: 105,58 + Owner: Creeps + Actor80: barl + Location: 105,59 + Owner: Creeps + Actor81: barl + Location: 106,60 + Owner: Creeps + Actor82: barl + Location: 105,61 + Owner: Creeps + Actor83: brl3 + Location: 106,62 + Owner: Creeps + Actor84: barl + Location: 104,63 + Owner: Creeps + Actor86: barl + Location: 98,47 + Owner: Creeps + Actor87: brl3 + Location: 98,48 + Owner: Creeps + Actor88: brl3 + Location: 105,63 + Owner: Creeps + Actor89: barl + Location: 101,44 + Owner: Creeps + Actor90: brl3 + Location: 69,74 + Owner: Creeps + Actor93: brl3 + Location: 64,73 + Owner: Creeps + Actor94: barl + Location: 62,73 + Owner: Creeps + Actor95: barl + Location: 65,73 + Owner: Creeps + Actor97: barl + Location: 70,74 + Owner: Creeps + Actor98: brl3 + Location: 70,72 + Owner: Creeps + Actor99: barl + Location: 69,72 + Owner: Creeps + Actor100: brl3 + Location: 43,46 + Owner: Creeps + Actor101: barl + Location: 45,45 + Owner: Creeps + Actor102: brl3 + Location: 47,46 + Owner: Creeps + Actor103: barl + Location: 44,45 + Owner: Creeps + Actor104: brl3 + Location: 46,45 + Owner: Creeps + Actor105: brl3 + Location: 63,73 + Owner: Creeps + Actor106: brl3 + Location: 49,71 + Owner: Creeps + Actor107: barl + Location: 48,71 + Owner: Creeps + Actor108: brl3 + Location: 47,72 + Owner: Creeps + Actor110: barl + Location: 45,72 + Owner: Creeps + Actor111: brl3 + Location: 45,71 + Owner: Creeps + Actor112: brl3 + Location: 44,70 + Owner: Creeps + Actor113: barl + Location: 43,71 + Owner: Creeps + Actor114: brl3 + Location: 44,72 + Owner: Creeps + Actor115: brl3 + Location: 42,72 + Owner: Creeps + Actor116: barl + Location: 42,70 + Owner: Creeps + Actor117: brl3 + Location: 43,69 + Owner: Creeps + Actor118: barl + Location: 42,73 + Owner: Creeps + Actor119: barl + Location: 42,74 + Owner: Creeps + Actor120: barl + Location: 83,67 + Owner: Creeps + Actor121: barl + Location: 83,68 + Owner: Creeps + Actor122: barl + Location: 83,69 + Owner: Creeps + Actor124: barl + Location: 81,79 + Owner: Creeps + Actor125: barl + Location: 81,80 + Owner: Creeps + Actor126: brl3 + Location: 82,80 + Owner: Creeps + Actor127: bio + Location: 65,46 + Owner: Greece + Actor128: bio + Location: 87,46 + Owner: Greece + Actor130: barl + Location: 80,79 + Owner: Creeps + Actor133: barl + Location: 99,44 + Owner: Creeps + Actor134: brl3 + Location: 98,44 + Owner: Creeps + Actor135: brl3 + Location: 99,45 + Owner: Creeps + Actor136: barl + Location: 102,44 + Owner: Creeps + Actor138: barl + Location: 78,80 + Owner: Creeps + Actor139: brl3 + Location: 79,80 + Owner: Creeps + Actor150: e1 + Location: 84,67 + Owner: Greece + Facing: 192 + SubCell: 4 + Actor172: e1 + Location: 77,80 + Owner: Greece + Facing: 224 + SubCell: 2 + Actor227: flare + Owner: Spain + Location: 75,49 + Actor226: flare + Owner: Spain + Location: 76,49 + Actor228: flare + Owner: Spain + Location: 75,48 + Actor229: flare + Owner: Spain + Location: 76,48 + Actor223: brl3 + Owner: Creeps + Location: 105,53 + BarlCC: barl + Location: 83,70 + Owner: Creeps + CameraCC: camera + Owner: Neutral + Location: 87,69 + CameraFTurBottom: camera + Owner: Neutral + Location: 62,80 + CameraFTurLeft: camera + Owner: Neutral + Location: 59,65 + CameraFTurRight: camera + Owner: Neutral + Location: 93,65 + CameraGoalCenter1: camera + Owner: Neutral + Location: 75,51 + CameraGoalCenter2: camera + Owner: Neutral + Location: 75,55 + CameraGoalCenter3: camera + Owner: Neutral + Location: 75,61 + CameraGoalLeft1: camera + Owner: Neutral + Location: 68,58 + CameraGoalLeft2: camera + Owner: Neutral + Location: 68,63 + CameraGoalRight1: camera + Owner: Neutral + Location: 84,58 + CameraGoalRight2: camera + Owner: Neutral + Location: 84,63 + CameraRSoldier: camera + Owner: Neutral + Location: 62,72 + CameraStart1: camera + Owner: Neutral + Location: 102,48 + CameraStart2: camera + Owner: Neutral + Location: 102,54 + CameraSoldierTrap2: camera + Owner: Neutral + Location: 47,71 + CCGuard1: e1 + Location: 87,67 + Owner: Greece + Facing: 192 + SubCell: 3 + CCGuard2: e1 + Location: 88,67 + Owner: Greece + Facing: 192 + SubCell: 4 + CCGuard3: e1 + Location: 88,68 + Owner: Greece + Facing: 192 + SubCell: 1 + CCGuard4: e1 + Location: 87,68 + Owner: Greece + Facing: 192 + SubCell: 3 + Dog1: dog + Location: 84,84 + Owner: Soviet + Facing: 224 + SubCell: 1 + Dog2: dog + Owner: Soviet + Location: 84,83 + SubCell: 3 + Facing: 92 + Dog3: dog + Location: 82,83 + Owner: Soviet + SubCell: 4 + Dog4: dog + Location: 80,83 + Owner: Soviet + Facing: 64 + SubCell: 2 + Dog5: dog + Location: 85,82 + Owner: Soviet + Facing: 224 + SubCell: 1 + Dog6: dog + Location: 85,79 + Owner: Soviet + Facing: 192 + SubCell: 4 + Dog7: dog + Location: 85,81 + Owner: Soviet + Facing: 192 + SubCell: 4 + Dog8: dog + Location: 86,83 + Owner: Soviet + Facing: 224 + SubCell: 1 + Dog9: dog + Location: 86,84 + Owner: Soviet + SubCell: 0 + Dog10: dog + Location: 86,82 + Owner: Soviet + Facing: 192 + SubCell: 0 + Dog11: dog + Location: 82,84 + Owner: Soviet + Facing: 32 + SubCell: 1 + Dog12: dog + Location: 83,84 + Owner: Soviet + SubCell: 1 + Dog13: dog + Location: 86,81 + Owner: Soviet + Facing: 32 + SubCell: 1 + Dog14: dog + Location: 85,83 + Owner: Soviet + SubCell: 3 + Dog15: dog + Location: 81,83 + Owner: Soviet + SubCell: 4 + Dog16: dog + Location: 86,80 + Owner: Soviet + SubCell: 4 + Dog17: dog + Location: 85,84 + Owner: Soviet + SubCell: 0 + Dog18: dog + Location: 81,84 + Owner: Soviet + SubCell: 1 + Dog19: dog + Location: 86,79 + Owner: Soviet + Facing: 224 + SubCell: 0 + EntranceGuard1: e1 + Location: 100,57 + Owner: Greece + SubCell: 1 + EntranceGuard2: e1 + Location: 99,55 + Owner: Greece + SubCell: 1 + EntranceGuard3: e1 + Location: 100,56 + Owner: Greece + SubCell: 2 + EntranceGuard4: e1 + Location: 98,56 + Owner: Greece + SubCell: 2 + EntranceGuard5: e1 + Location: 98,57 + Owner: Greece + SubCell: 1 + EntranceGuard6: e1 + Location: 99,56 + Owner: Greece + SubCell: 2 + EntranceGuard7: e1 + Location: 97,56 + Owner: Greece + SubCell: 2 + EntranceGuard8: e1 + Location: 99,56 + Owner: Greece + SubCell: 3 + GoalGuard5: e7 + Location: 75,54 + Owner: Greece + Facing: 128 + SubCell: 2 + GoalGuard1: e1 + Location: 74,54 + Owner: Greece + Facing: 128 + SubCell: 2 + GoalGuard2: e1 + Location: 73,54 + Owner: Greece + Facing: 128 + SubCell: 2 + GoalGuard3: e1 + Location: 76,54 + Owner: Greece + Facing: 128 + SubCell: 2 + GoalGuard4: e1 + Location: 77,54 + Owner: Greece + Facing: 128 + SubCell: 2 + FTurBottom: ftur + Location: 62,79 + Owner: Greece + FTur1Goal: waypoint + Owner: Neutral + Location: 77,53 + FTur2Goal: waypoint + Owner: Neutral + Location: 74,53 + FTurLeft: ftur + Location: 45,50 + Owner: Greece + FTurPrisoners: ftur + Location: 59,64 + Owner: Greece + FTurRight: ftur + Location: 93,64 + Owner: Greece + PBox: pbox + Location: 83,81 + Owner: Greece + PBoxBrl: brl3 + Location: 80,80 + Owner: Creeps + Prisoner1: e6 + Location: 44,46 + Owner: Soviet + Facing: 160 + SubCell: 4 + Prisoner2: e6 + Location: 44,47 + Owner: Soviet + Facing: 128 + SubCell: 4 + Prisoner3: e6 + Location: 46,47 + Owner: Soviet + Facing: 96 + SubCell: 0 + Prisoner4: e6 + Location: 45,47 + Owner: Soviet + Facing: 96 + SubCell: 1 + Prisoner5: e6 + Location: 46,46 + Owner: Soviet + Facing: 128 + SubCell: 3 + Prisoner6: e1 + Location: 46,46 + Owner: Soviet + Health: 51 + SubCell: 4 + PrisonEntranceGuard: e1 + Location: 46,69 + Owner: Greece + Facing: 128 + SubCell: 1 + PrisonerGuard1: e1 + Location: 45,48 + Owner: Greece + SubCell: 0 + PrisonerGuard2: e1 + Location: 46,49 + Owner: Greece + Facing: 128 + SubCell: 0 + PrisonerGuard3: e1 + Location: 44,49 + Owner: Greece + Facing: 128 + SubCell: 0 + RSoldier1: e3 + Owner: Greece + Location: 65,72 + SubCell: 3 + Facing: 92 + TurretFacing: 92 + RSoldier2: e3 + Location: 65,74 + Owner: Greece + Facing: 92 + SubCell: 2 + TurretFacing: 92 + RSoldierTrap1: brl3 + Owner: Creeps + Location: 68,72 + RSoldierTrap2: barl + Owner: Creeps + Location: 68,74 + StartingUnitsSpawn: waypoint + Location: 102,43 + Owner: Neutral + SoldierTrap1: brl3 + Owner: Creeps + Location: 98,50 + SoldierTrap2: barl + Owner: Creeps + Location: 46,71 + SoldierTrap1Waypoint1: waypoint + Location: 102,46 + Owner: Neutral + SoldierTrap1Waypoint2: waypoint + Owner: Neutral + Location: 104,53 + SoldierTrap1Waypoint3: waypoint + Owner: Neutral + Location: 93,72 + SoldierTrap2Waypoint: waypoint + Owner: Neutral + Location: 45,52 + +Smudges: + +Rules: + Player: + -ConquestVictoryConditions: + MissionObjectives: + EarlyGameOver: true + -EnemyWatcher: + World: + -CrateSpawner: + -SpawnMPUnits: + -MPStartLocations: + LuaScript: + Scripts: soviet07.lua + ObjectivesPanel: + PanelName: MISSION_OBJECTIVES + ^Infantry: + -GivesBounty: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Building: + Tooltip: + GenericVisibility: Enemy + ShowOwnerRow: false + ^Wall: + Tooltip: + ShowOwnerRow: false + ^Husk: + Tooltip: + GenericVisibility: Enemy, Ally, Neutral + GenericStancePrefix: false + ShowOwnerRow: false + ^Crate: + Tooltip: + ShowOwnerRow: false + BARL: + Health: + HP: 1 + Explodes: + Weapon: MissionBarrelExplodeInterior + BRL3: + Health: + HP: 1 + Explodes: + Weapon: MissionBarrelExplodeInterior + CAMERA: + RevealsShroud: + Range: 6c0 + E1: + Armament@PRIMARY: + Weapon: M1CarbineInterior + FTUR: + Armament: + Weapon: FireballLauncherInterior + LocalOffset: 512,0,0 + Valued: + Cost: 0 + Power: + Amount: 0 + -Sellable: + PBOX: + -AutoTarget: + +Sequences: + +VoxelSequences: + +Weapons: + M1CarbineInterior: + ReloadDelay: 20 + Range: 3c0 + Report: GUN11.AUD + Projectile: Bullet + Speed: 1c682 + Warhead@1Dam: SpreadDamage + Spread: 128 + Damage: 15 + Versus: + Wood: 25 + Light: 30 + Heavy: 10 + Concrete: 10 + DamageTypes: Prone50Percent, TriggerProne, BulletDeath + Warhead@2Eff: CreateEffect + Explosion: piffs + InvalidImpactTypes: Water + Warhead@3EffWater: CreateEffect + Explosion: water_piffs + ValidImpactTypes: Water + FireballLauncherInterior: + ReloadDelay: 65 + Range: 3c0 + Burst: 2 + BurstDelay: 20 + Projectile: Bullet + Speed: 204 + Trail: fb2 + Image: FB1 + Warhead@1Dam: SpreadDamage + Spread: 213 + Damage: 150 + Versus: + None: 90 + Wood: 50 + Light: 60 + Heavy: 25 + Concrete: 50 + DamageTypes: Prone50Percent, TriggerProne, FireDeath + Warhead@2Smu: LeaveSmudge + SmudgeType: Scorch + Warhead@3Eff: CreateEffect + Explosion: napalm + ImpactSound: firebl3.aud + MissionBarrelExplodeInterior: + Warhead@1Dam: SpreadDamage + Spread: 350 + Damage: 250 + Falloff: 1000, 368, 135, 50, 18, 7, 0 + Delay: 5 + Versus: + None: 120 + Wood: 200 + Light: 50 + Heavy: 25 + Concrete: 10 + DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath + Warhead@2Smu: LeaveSmudge + SmudgeType: Scorch + Size: 2,1 + Delay: 5 + Warhead@3Eff: CreateEffect + Explosion: napalm + ImpactSound: firebl3.aud + Delay: 5 + +Voices: + +Notifications: + +Translations: diff --git a/mods/ra/maps/soviet-07/soviet07.lua b/mods/ra/maps/soviet-07/soviet07.lua new file mode 100644 index 0000000000..3a07ea1c8b --- /dev/null +++ b/mods/ra/maps/soviet-07/soviet07.lua @@ -0,0 +1,302 @@ +if Map.Difficulty == "Easy" then + remainingTime = DateTime.Minutes(7) +elseif Map.Difficulty == "Normal" then + remainingTime = DateTime.Minutes(6) +elseif Map.Difficulty == "Hard" then + remainingTime = DateTime.Minutes(5) +end + +Dogs = { Dog1, Dog2, Dog3, Dog4, Dog5, Dog6, Dog7, Dog8, Dog9, Dog10, Dog11, Dog12, Dog13, Dog14, Dog15, Dog16, Dog17, Dog18, Dog19 } +Engineers = { Prisoner1, Prisoner2, Prisoner3, Prisoner4, Prisoner5 } +PrisonerGuards = { PrisonerGuard1, PrisonerGuard2, PrisonerGuard3 } +EntranceGuards = { EntranceGuard1, EntranceGuard2, EntranceGuard3, EntranceGuard4, EntranceGuard5, EntranceGuard6, EntranceGuard7, EntranceGuard8, EntranceGuard9, EntranceGuard10 } +GoalGuards = { GoalGuard1, GoalGuard2, GoalGuard3, GoalGuard4, GoalGuard5 } +CCGuards = { CCGuard1, CCGuard2, CCGuard3, CCGuard4 } +StartingUnitsReinforcements = { "e1", "e1", "e1", "e1" } + +CameraCCTrigger = { CPos.New(83, 71), CPos.New(84,71) } +CameraGoalCenterTrigger = { CPos.New(74, 66), CPos.New(75, 66), CPos.New(76, 66), CPos.New(77, 66) } +CameraGoalLeftTrigger = { CPos.New(62, 59), CPos.New(62, 60), CPos.New(62, 62), CPos.New(62, 63) } +CameraGoalRightTrigger = { CPos.New(90, 59), CPos.New(90, 60), CPos.New(90, 62), CPos.New(90, 63) } +ControlCenterTrigger = { CPos.New(87, 67), CPos.New(88, 67) } +ControlCenterEngineerTrigger = { CPos.New(87, 67), CPos.New(88, 67) } +FTurBottomTrigger = { CPos.New(67, 82), CPos.New(67, 83) } +FTurLeftTrigger = { CPos.New(57, 70), CPos.New(58, 70), CPos.New(59, 70), CPos.New(60, 70) } +FTurRightTrigger = { CPos.New(97, 68), CPos.New(97, 69), CPos.New(97, 70) } +GoalCenterTrigger = { CPos.New(73, 52), CPos.New(74, 52), CPos.New(75, 52), CPos.New(76, 52), CPos.New(77, 52), CPos.New(78, 52) } +GoalLeft1Trigger = { CPos.New(65, 58), CPos.New(66, 58), CPos.New(67, 58), CPos.New(65, 59), CPos.New(66, 59), CPos.New(67, 59) } +GoalLeft2Trigger = { CPos.New(65, 64), CPos.New(66, 64), CPos.New(67, 64), CPos.New(65, 65), CPos.New(66, 65), CPos.New(67, 65) } +GoalRight1Trigger = { CPos.New(86, 57), CPos.New(87, 57), CPos.New(88, 57), CPos.New(86, 58), CPos.New(87, 58), CPos.New(88, 58) } +GoalRight2Trigger = { CPos.New(86, 64), CPos.New(87, 64), CPos.New(88, 64), CPos.New(86, 65), CPos.New(87, 65), CPos.New(88, 65) } +RSoldierTrapTrigger = { CPos.New(72, 72), CPos.New(72,73), CPos.New(72,74) } +SoldierTrap2Trigger = { CPos.New(51, 73), CPos.New(51, 74) } + +Trigger.OnEnteredFootprint(CameraCCTrigger, function(a, id) + if not cameraCCTrigger and a.Owner == player then + cameraCCTrigger = true + Actor.Create("camera", true, { Owner = player, Location = CameraCC.Location }) + end +end) + +Trigger.OnEnteredFootprint(CameraGoalCenterTrigger, function(a, id) + if not cameraGoalCenterTrigger and a.Owner == player then + cameraGoalCenterTrigger = true + if not controlCenterEngineerTrigger then + Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter1.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter2.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter3.Location }) + end + end +end) + +Trigger.OnEnteredFootprint(CameraGoalLeftTrigger, function(a, id) + if not cameraGoalLeftTrigger and a.Owner == player then + cameraGoalLeftTrigger = true + Actor.Create("camera", true, { Owner = player, Location = CameraGoalLeft1.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraGoalLeft2.Location }) + end +end) + +Trigger.OnEnteredFootprint(CameraGoalRightTrigger, function(a, id) + if not cameraGoalRightTrigger and a.Owner == player then + cameraGoalRightTrigger = true + Actor.Create("camera", true, { Owner = player, Location = CameraGoalRight1.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraGoalRight2.Location }) + end +end) + +Trigger.OnEnteredFootprint(ControlCenterTrigger, function(a, id) + if not controlCenterTrigger and a.Owner == player and a.Type == "e1" then + controlCenterTrigger = true + FTurPrisoners.Kill() + FTurLeft.Kill() + FTurRight.Kill() + FTurBottom.Kill() + player.MarkCompletedObjective(sovietObjective1) + end +end) + +Trigger.OnEnteredFootprint(ControlCenterEngineerTrigger, function(a, id) + if not controlCenterEngineerTrigger and a.Owner == player and a.Type == "e6" then + controlCenterEngineerTrigger = true + Actor.Create("ftur", true, { Owner = player, Location = FTur1Goal.Location}) + Actor.Create("ftur", true, { Owner = player, Location = FTur2Goal.Location}) + Camera.Position = CameraGoalCenter1.CenterPosition + if not cameraGoalRightTrigger then + Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter1.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter2.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter3.Location }) + end + Utils.Do(GoalGuards, function(actor) + if not actor.IsDead then + actor.AttackMove(FTur1Goal.Location) + end + end) + player.MarkCompletedObjective(sovietObjective4) + end +end) + +Trigger.OnEnteredFootprint(FTurBottomTrigger, function(a, id) + if not fTurBottomTrigger and a.Owner == player then + fTurBottomTrigger = true + if not rSoldierTrapTrigger then + Actor.Create("camera", true, { Owner = player, Location = CameraRSoldier.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraFTurBottom.Location }) + end + end +end) + +Trigger.OnEnteredFootprint(FTurLeftTrigger, function(a, id) + if not fTurLeftTrigger and a.Owner == player then + fTurLeftTrigger = true + Actor.Create("camera", true, { Owner = player, Location = CameraFTurLeft.Location }) + end +end) + +Trigger.OnEnteredFootprint(FTurRightTrigger, function(a, id) + if not fTurRightTrigger and a.Owner == player then + fTurRightTrigger = true + Actor.Create("camera", true, { Owner = player, Location = CameraFTurRight.Location }) + end +end) + +Trigger.OnEnteredFootprint(GoalCenterTrigger, function(a, id) + if not goalCenterTrigger and a.Owner == player and a.Type == "e6" then + goalCenterTrigger = true + player.MarkCompletedObjective(sovietObjective5) + end +end) + +Trigger.OnEnteredFootprint(GoalLeft1Trigger, function(a, id) + if not goalLeft1Trigger and a.Owner == player and a.Type == "e6" then + goalLeft1Trigger = true + Media.PlaySpeechNotification(player, "ControlCenterDeactivated") + end +end) + +Trigger.OnEnteredFootprint(GoalLeft2Trigger, function(a, id) + if not goalLeft2Trigger and a.Owner == player and a.Type == "e6" then + goalLeft2Trigger = true + Media.PlaySpeechNotification(player, "ControlCenterDeactivated") + end +end) + +Trigger.OnEnteredFootprint(GoalRight1Trigger, function(a, id) + if not goalRight1Trigger and a.Owner == player and a.Type == "e6" then + goalRight1Trigger = true + Media.PlaySpeechNotification(player, "ControlCenterDeactivated") + end +end) + +Trigger.OnEnteredFootprint(GoalRight2Trigger, function(a, id) + if not goalRight2Trigger and a.Owner == player and a.Type == "e6" then + goalRight2Trigger = true + Media.PlaySpeechNotification(player, "ControlCenterDeactivated") + end +end) + +Trigger.OnEnteredFootprint(RSoldierTrapTrigger, function(a, id) + if not rSoldierTrapTrigger and a.Owner == player then + rSoldierTrapTrigger = true + if not fTurBottomTrigger then + Actor.Create("camera", true, { Owner = player, Location = CameraRSoldier.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraFTurBottom.Location }) + end + if not RSoldier1.IsDead and not RSoldierTrap1.IsDead then + RSoldier1.Attack(RSoldierTrap1) + end + if not RSoldier2.IsDead and not RSoldierTrap2.IsDead then + RSoldier2.Attack(RSoldierTrap2) + end + end +end) + +Trigger.OnEnteredFootprint(SoldierTrap2Trigger, function(a, id) + if not soldierTrap2Trigger and a.Owner == player then + soldierTrap2Trigger = true + Actor.Create("camera", true, { Owner = player, Location = CameraSoldierTrap2.Location }) + if not SoldierTrap2.IsDead then + PrisonEntranceGuard.Attack(SoldierTrap2) + end + PrisonEntranceGuard.Move(SoldierTrap2Waypoint.Location) + end +end) + +Trigger.OnAllKilled(Engineers, function() + enemy.MarkCompletedObjective(alliedObjective) +end) + +Trigger.OnAllKilled(PrisonerGuards, function() + Utils.Do(Engineers, function(actor) + actor.Owner = player + end) + Prisoner6.Owner = player + player.MarkCompletedObjective(sovietObjective2) +end) + +Trigger.OnKilled(BarlCC, function() + if not cameraCCTrigger then + Actor.Create("camera", true, { Owner = player, Location = CameraCC.Location }) + cameraCCTrigger = true + end + Utils.Do(CCGuards, function(actor) + if not actor.IsDead then + actor.Hunt() + end + end) +end) + +Trigger.OnKilled(PBoxBrl, function() + PBox.Kill() + Utils.Do(Dogs, function(actor) + actor.Owner = player + end) + player.MarkCompletedObjective(sovietObjective6) +end) + +Trigger.OnKilled(PrisonEntranceGuard, function() + if controlCenterTrigger then + Utils.Do(PrisonerGuards, function(actor) + if not actor.IsDead then + actor.Hunt() + end + end) + end +end) + +IntroSequence = function() + StartingUnits = Reinforcements.Reinforce(player, StartingUnitsReinforcements, { StartingUnitsSpawn.Location, SoldierTrap1Waypoint1.Location }, 0) + Trigger.AfterDelay(DateTime.Seconds(3), function() + Utils.Do(EntranceGuards, function(actor) + if not SoldierTrap1.IsDead then + actor.Attack(SoldierTrap1) + end + actor.AttackMove(SoldierTrap1Waypoint1.Location) + actor.AttackMove(SoldierTrap1Waypoint2.Location) + actor.AttackMove(SoldierTrap1Waypoint3.Location) + end) + Media.PlaySpeechNotification(player, "TimerStarted") + timerStarted = true + end) + Trigger.OnAllKilled(StartingUnits, function() + enemy.MarkCompletedObjective(alliedObjective) + end) +end + +WorldLoaded = function() + player = Player.GetPlayer("USSR") + enemy = Player.GetPlayer("Greece") + Camera.Position = SoldierTrap1Waypoint1.CenterPosition + Actor.Create("camera", true, { Owner = player, Location = CameraStart1.Location }) + Actor.Create("camera", true, { Owner = player, Location = CameraStart2.Location }) + IntroSequence() + Trigger.OnObjectiveAdded(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective") + end) + Trigger.OnObjectiveCompleted(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed") + end) + Trigger.OnObjectiveFailed(player, function(p, id) + Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed") + end) + Trigger.OnPlayerWon(player, function() + Media.PlaySpeechNotification(player, "Win") + end) + Trigger.OnPlayerLost(player, function() + Media.PlaySpeechNotification(player, "Lose") + end) + alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.") + sovietObjective1 = player.AddPrimaryObjective("Deactivate the security system.") + sovietObjective2 = player.AddPrimaryObjective("Rescue the engineers.") + sovietObjective3 = player.AddPrimaryObjective("Get the engineers to the coolant stations.") + sovietObjective4 = player.AddPrimaryObjective("Use an Engineer to reprogram the security system.") + sovietObjective5 = player.AddPrimaryObjective("Get an Engineer to the reactor core.") + sovietObjective6 = player.AddSecondaryObjective("Free the dogs.") +end + +Tick = function() + if player.HasNoRequiredUnits() and timerStarted then + enemy.MarkCompletedObjective(alliedObjective) + end + if remainingTime == DateTime.Minutes(5) and Map.Difficulty ~= "Hard" then + Media.PlaySpeechNotification(player, "WarningFiveMinutesRemaining") + elseif remainingTime == DateTime.Minutes(4) then + Media.PlaySpeechNotification(player, "WarningFourMinutesRemaining") + elseif remainingTime == DateTime.Minutes(3) then + Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining") + elseif remainingTime == DateTime.Minutes(2) then + Media.PlaySpeechNotification(player, "WarningTwoMinutesRemaining") + elseif remainingTime == DateTime.Minutes(1) then + Media.PlaySpeechNotification(player, "WarningOneMinuteRemaining") + end + if goalLeft1Trigger and goalLeft2Trigger and goalRight1Trigger and goalRight2Trigger then + player.MarkCompletedObjective(sovietObjective3) + end + if remainingTime > 0 and timerStarted then + UserInterface.SetMissionText("Time until Meltdown: " .. Utils.FormatTime(remainingTime), player.Color) + remainingTime = remainingTime - 1 + elseif remainingTime == 0 then + UserInterface.SetMissionText("") + enemy.MarkCompletedObjective(alliedObjective) + end +end \ No newline at end of file diff --git a/mods/ra/missions.yaml b/mods/ra/missions.yaml index f287f01db1..2a50e68f3c 100644 --- a/mods/ra/missions.yaml +++ b/mods/ra/missions.yaml @@ -10,3 +10,4 @@ Soviet Campaign: ./mods/ra/maps/soviet-04a ./mods/ra/maps/soviet-04b ./mods/ra/maps/soviet-05 + ./mods/ra/maps/soviet-07