From db1720900f9754f9ad7c53eceeea69038a208b9e Mon Sep 17 00:00:00 2001 From: "Ghostrider [GRG]" Date: Sat, 23 Sep 2023 10:09:31 -0400 Subject: [PATCH] Add Editor Plugin --- @GMS_EDEN/addons/3DEN_plugin.pbo | Bin 0 -> 344333 bytes @GMS_EDEN/addons/3DEN_plugin/$PBOPREFIX$ | 1 + .../addons/3DEN_plugin/Cfggms3DENDisplay-1.h | 265 +++++++++ .../Core/fn_AttributeSaveLootVehColor.sqf | 6 + .../addons/3DEN_plugin/Core/fn_about.sqf | 4 + .../Core/fn_buildingContainer copy.sqf | 23 + .../3DEN_plugin/Core/fn_buildingContainer.sqf | 15 + .../Core/fn_configureGarrisonATL.sqf | 87 +++ .../addons/3DEN_plugin/Core/fn_display.sqf | 13 + .../Core/fn_displayGarrisonMarkers.sqf | 30 + .../Core/fn_displayLootMarkers.sqf | 27 + .../addons/3DEN_plugin/Core/fn_endMessage.sqf | 10 + .../Core/fn_exportDynamic copy.sqf | 558 ++++++++++++++++++ .../3DEN_plugin/Core/fn_exportDynamic.sqf | 463 +++++++++++++++ .../Core/fn_getLootVehicleInfo.sqf | 31 + .../Core/fn_getMissionGarrisonInfo.sqf | 11 + .../Core/fn_getMissionLootVehicleInfo.sqf | 11 + @GMS_EDEN/addons/3DEN_plugin/Core/fn_help.sqf | 9 + .../addons/3DEN_plugin/Core/fn_initialize.sqf | 5 + .../Core/fn_initializeAttributes.sqf | 23 + .../3DEN_plugin/Core/fn_isInVehicle.sqf | 6 + .../3DEN_plugin/Core/fn_isInfantryGroup.sqf | 17 + .../3DEN_plugin/Core/fn_isInfantryUnit.sqf | 14 + .../addons/3DEN_plugin/Core/fn_isInside.sqf | 19 + .../Core/fn_onAttributeLoadGarrison.sqf | 4 + .../Core/fn_onAttributeLoadGarrisonColor.sqf | 4 + .../Core/fn_onAttributeLoadLootVeh.sqf | 4 + .../Core/fn_onAttributeLoadLootVehColor.sqf | 4 + .../Core/fn_onAttributeSaveGarrison.sqf | 10 + .../Core/fn_onAttributeSaveGarrisonColor.sqf | 15 + .../Core/fn_onAttributeSaveLootVeh.sqf | 12 + .../Core/fn_onAttributeSaveLootVehColor.sqf | 16 + .../addons/3DEN_plugin/Core/fn_onDrag.sqf | 13 + .../3DEN_plugin/Core/fn_onLoadGarrison.sqf | 33 ++ .../Core/fn_onLoadGarrisonColor.sqf | 16 + .../3DEN_plugin/Core/fn_onLoadLootVeh.sqf | 12 + .../Core/fn_onLoadLootVehColor.sqf | 12 + .../3DEN_plugin/Core/fn_onRegistered.sqf | 28 + .../3DEN_plugin/Core/fn_onUnregister.sqf | 12 + .../3DEN_plugin/Core/fn_removeMarker.sqf | 18 + .../3DEN_plugin/Core/fn_setCompletionMode.sqf | 12 + .../3DEN_plugin/Core/fn_setDifficulty.sqf | 13 + .../3DEN_plugin/Core/fn_setEventHandlers.sqf | 14 + .../3DEN_plugin/Core/fn_setGarrison.sqf | 11 + .../Core/fn_setLoadCratesTiming.sqf | 12 + .../3DEN_plugin/Core/fn_setLootVehicle.sqf | 50 ++ .../3DEN_plugin/Core/fn_setSpawnLocations.sqf | 16 + .../3DEN_plugin/Core/fn_spawnCratesTiming.sqf | 12 + .../3DEN_plugin/Core/fn_startMessage.sqf | 10 + @GMS_EDEN/addons/3DEN_plugin/Core/fn_test.sqf | 1 + .../Core/fn_toggleStaticSpawns.sqf | 6 + .../3DEN_plugin/Core/fn_versionInfo.sqf | 19 + .../3DEN_plugin/Core/gms3DEN_defines.hpp | 15 + .../3DEN_plugin/Static/pullMarkerInfo.sqf | 45 ++ .../3DEN_plugin/Static/setCenterAtPlayer.sqf | 1 + .../addons/3DEN_plugin/Static/template.sqf | 81 +++ @GMS_EDEN/addons/3DEN_plugin/To Do List | 39 ++ @GMS_EDEN/addons/3DEN_plugin/To Do List copy | 6 + @GMS_EDEN/addons/3DEN_plugin/config.cpp | 20 + @GMS_EDEN/addons/3DEN_plugin/gmsCfg3DEN.h | 179 ++++++ .../addons/3DEN_plugin/gmsCfg3DENDisplay.h | 239 ++++++++ .../addons/3DEN_plugin/gmsCfg3DENVersion.h | 8 + .../addons/3DEN_plugin/gmsCfg3DENsettings.h | 51 ++ .../addons/3DEN_plugin/gmsCfgFunctions.h | 55 ++ @GMS_EDEN/addons/3DEN_plugin/gmsCfgPatches.h | 12 + .../addons/3DEN_plugin/testIntersects.sqf | 15 + @GMS_EDEN/addons/Guidelines.txt | 7 + 67 files changed, 2810 insertions(+) create mode 100644 @GMS_EDEN/addons/3DEN_plugin.pbo create mode 100644 @GMS_EDEN/addons/3DEN_plugin/$PBOPREFIX$ create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Cfggms3DENDisplay-1.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_AttributeSaveLootVehColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_about.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer copy.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_configureGarrisonATL.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_display.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_displayGarrisonMarkers.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_displayLootMarkers.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_endMessage.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic copy.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_getLootVehicleInfo.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionGarrisonInfo.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_help.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_initialize.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_initializeAttributes.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_isInVehicle.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryGroup.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryUnit.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_isInside.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrison.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrisonColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVeh.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVehColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrison.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrisonColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVeh.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVehColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onDrag.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrison.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrisonColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVeh.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVehColor.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onRegistered.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_onUnregister.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_removeMarker.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setCompletionMode.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setDifficulty.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setEventHandlers.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setGarrison.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setLoadCratesTiming.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setLootVehicle.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_setSpawnLocations.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_spawnCratesTiming.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_startMessage.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_test.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_toggleStaticSpawns.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/fn_versionInfo.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Core/gms3DEN_defines.hpp create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Static/pullMarkerInfo.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Static/setCenterAtPlayer.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/Static/template.sqf create mode 100644 @GMS_EDEN/addons/3DEN_plugin/To Do List create mode 100644 @GMS_EDEN/addons/3DEN_plugin/To Do List copy create mode 100644 @GMS_EDEN/addons/3DEN_plugin/config.cpp create mode 100644 @GMS_EDEN/addons/3DEN_plugin/gmsCfg3DEN.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENDisplay.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENVersion.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENsettings.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/gmsCfgFunctions.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/gmsCfgPatches.h create mode 100644 @GMS_EDEN/addons/3DEN_plugin/testIntersects.sqf create mode 100644 @GMS_EDEN/addons/Guidelines.txt diff --git a/@GMS_EDEN/addons/3DEN_plugin.pbo b/@GMS_EDEN/addons/3DEN_plugin.pbo new file mode 100644 index 0000000000000000000000000000000000000000..a7ebd6151d09a4637c10778e0c7cc5c86539dbe9 GIT binary patch literal 344333 zcmeFa37lM2o#@{Pg53ceaY1prG{Nq~Uh39f2?->fK%&`98cI%m%(Kahf$GH+@9NWK~&Un9UXO0!EKyz8yS7y-#O>ry0@x23C#H3|9$>x zC4IW;oZtPO-}#;2e$E|eHG_)=x_%bj#$q!FYgZ09zTc>~s<};@cP!2?&DQDz15@Gb z>_SUE*;H#S&N~Ok?TI-B;EZ7nXX`sp4y5fh>S1km!dqNapFj0}`s;gEof=3RD8Ldx zX8bu1)*Y_B_2fX>oet(nrr*aOtNT^neR3e}PQO;rZrAFwEz@z|iMr!OJW<-6ju!>Z zR;^Jt{Vvtr2AcGfw(fWSQr&CQDT22B{<_=q53UHLt$Xcq+TL6c_4#`PY2?j2d}+6X zR(or`&C>#}-I{1!5vmTC7*bsQ<@0@MPdBVh4QpGi)mC4B_5=;)&nI^I(w>;DwX0J* zw{PD%J+pb!*6HngE>Imtbhm-#D^Cift@>%It8bodzR!hgJ!z}&{h;MFYl|{7_4U?7 zCuyrr=Wm{#+A_0c^M+04Tm9><3r-EBrTWC*o^JZcW2CLVt=0YDO7%s_EURECZT0nB zqp`15bru)r4=xG?#}`_&6D?<9ab7)O;Gd4uKn13>6N9|Q!a}XxJ>Z$gcLqp1F(7O$ zH0rf>qd9&+9<|`qlTVsFtus*CiGhoaR(pJD(RbQGa>NJqfC0fx+Q|{kV7xP_5KBU?FJE2IIZMu1h>e+FipIms)elr(9~7TAm{9uI|miby}&( z51ZAL0n+Xn;03k)sS%c8b{Qe<^oT_VlJ#HGFDG!5c5)!o7;iVm*?Qi-#!@>urSA-N z7F61aVZCd)@zhRdX{*k)df2E2S9$(QZWE@bk#N~V~%E1{nW z!hEqkoWP_YrC>Fe8UQh7d2Go1*xYm<)8dRm~m2*y5EZU_)ChLY7r;vAi$1VpM zJ5zA%OvMga;feyX*=*W>z55Biw9}y6YQ-y8O66jqnDgzNn|17B*>x(8>)Pd_SIIb) zqGvlf1?n{hROvTUzO=hR1!2|?b3xtX_TPl?TpFb-lo)TnBn(Uu66BNFZ zb{dplEoMBJ2QIQhzf!Cef@0u#VZH>Mis$7DE-PvK3dpw&C?UJFQ=se&4DYZ~9xLVe zg|JkFx$}1332iS|cKsj^;9SvGK)$v@!}{BAU+YOb4a%;%#cWVJ&3&KVS45+o_;=a>(OSB_FtcDPyA;!#o?x z)u7&C_^JS3NxK`AmoEk`*knsy7VQ;eieVwg#*U< zw!_}3ge9-wg`QUm^P!PfOGpFx5j7$06sVkCWrx{bMWm>oE0p|v*7vhPsgSot%oK{g zjgl<|3dBuDiV9ZJPJ_x;v-E{GJvSTX1I!THcKk4#E9Ef&vaG3xG7B`QteN0D5y;X` zgUVGy_Dlw0;FmBHN`-PRpLHuvq2#d7QLiov+RbaS|AWG9KshwhPJ=2`a~0-fSIS5} zC&RvRa#?H+y8`GSEIMrI&@*KJfdM6=Puks}Dn*~Z6y!WqjPD{S0%RU05|c+p z1X}d{;$a$=&`R2AP(@a-fVIIs#=QyQ^=IcS@_b=C^O4(Y(${r6bdfe zC(LWfP)TsRv{Rt+nQEZ|HU%GcM9QJz%lRC;+Rf!Nq=*Sp<6+6i~AnR{{Bo0VT{J?QT#33aj8E1mMe}SGFrQ21HmYRk9v7ZNBK* z1-GDWh94PFf|az>pz_tMQ$Q)_1I$l`JMeuGZHDca!z8Md3t<>yh$|q~gqo0cH>iBU zMUs??B^bWs+fGR~N|-Gm5h1;Y9htA>G}(1%VPN3R@RhXFpxA>MuaeEk3ffMPgHK%t z@1&B&sPPbkA#x|oYd!ce!we#?q@4y;gc*?Hg&fmB+_-L7%2%*!Dz*~_9{!D8DU{rd zHnu-%XyvnUq@4y;u42F9F4+vpNUScLFrkb?Vpxi2!bPh%bVqp9E!0|Hq zA{G&n84Duggq4yDOoh(nW`gg4?9xty@^Jw~MIi<9VPNAAI6%nyK*M2SVT-w-Qgk&| zHycp90441-sG#cLjRfrCGX9@!Lt(rcM=X+ZC^8Fg5xK9idZ(G7$SY}ggK~pxkj-PI zyB-t4l_(%Xkp2AiXS#gQdf) ztz-*0nR;gYij@*(V6mb_-&ID6ie!*>8dR=|MeGFZ8Z2}# z07e)D*=$x;0rNN`c1^BW(xCp$&`Ll_I}Ivd&ADL_Pu0ny>vI_#96KAhnQ{TE8;7it zVMTmLui)PrP_ly3PJ=2`F$r*W5idF0WyvbIB|#9BE17H#2iD7kUIA^WfVjrK60D@1 z2E}&9$H`^O_<<}Usu;^A482Uo4PAUfNQej4wQ(d`(z9_2r7F+O2s`*LRLP-C^JNJ) zu$i+tWOUYpdtF~)CBx;X`tcpTd$8bC9RetJ;FRoqDCUco&0?G8vzY?B26^R5;K0@_ z`Yr=XXeI6R1ih-C5of|Jm&+NORmYafxR`zgyWkK*32mIaQrS`1L~i&k?7<#4ybx9~ zT`P9BfOtn&6pGN>MzmyH>}8it1;e3ov}~U+SP6?tJB3vdm5R%qMV=#Mm`(;6Q>YMU zz&f%Ec!K3(K8H=Bu==q2cR=YuX{SNiRSX!#1sLeCeLh#rInWDTX0wb13<*rgf+qVu z14{Oww7Ws!jpB%gURW+*-@@(aXZ&s^hLA=@I9MjGRui8!pxy?pq@4yu{HmM@F>Q%_ zq4W6h%f%h(LEg3|5=h0}$a&k)_oflRqr%9OK+oH7er_6ZIE z5AmSz*=?|r2}-*gl#>gJE_{S!@&oiRy9d32Yna0m3sJa;En5ejK4U=1#*ub6D8KBY z$^C2*l^|Yxo;V#wzt|ypRA2yKApR7PuNhEcGf2A|RN&)(m$E@n46!uwITVZ!wK6QF z7Zi(PFF6%$ew=3bN@ykRZcz9h63@wmg!l4c*&%jV%A?IPg+kWJm#~kpjMCa!SoEVk zSmml%YJ_ESK7lv{mxwvces&)=HyZ}8vRDXQEs$?86BMkZoyLlojLY*YYIc>p@3R6R zmSHt<23#j}izS>5Ek*y_Oz;smPx;dB0p%eZ!g5A90UsWrigy!K+(MpsQ3&3=D|?VACpjTyPxN5e){fE;={{j{y@rn%LIif~cpNvG{2R3FZ>!DzL z@&pY^wzIU;pd7LKm>hu*l#E-*mO}g|QbZE=ASL9w1UQjG3dY|XS_!vHI}OUK5~_rs z2<3=LguHP{A`~n65EHdzdoG-Sho>dO?+jLA$w)g5%C8a}B+5_>E7*Af!2nN^CB%0s z=owanNG8fz#~Ge$yi~zT+G$XP!tz)bIHo0Eq;iRnbP)q42%G|*icg44aMT|CV~nDg z0G+hEL6r*lkY%row6gJ>aK3URya*^0Hpi=g9l%aA!?#yxvI{dvyBicX8NqsduN;0Z zF`fXn&y#+U=$wO8MH=F|Dj4t6kW|h~+G$W>6{iN15hElMVzxUFo>(Ci!ki=xz?a0M zJx%s=%?gV0l6DGIIZMt9g<7F|K)f+uBGllxP7y`n5Tzz`M}(&kItri5PSR+}1f|^r z3ZKs{lfOaHmqJ-GpA|&!6NV2R!eRw%N-dDZ5R#vH)P%ItpmKx_@wDNrFiXP9c2R!V zL1u7=sn?d)%NvQXr%G zDzf@yf<0DWIbTH;6Yk3Ra3>)ZVkv||ZQDmjvw`xZ95M5tpiQ+;8?p;uNjr@d?vfk$ z*m`hOA&;p*G>$kTu6G$H6EsWg0>qA*TG@aSZkKj9s7eO2&n6Cl=Z6SjGDKR%LPH!9 z&lJCskeCAXL_@1hM7E`!28Com?;)S~e^5Xp`aW3~WQC+j$XB7IeJlqJD)OC0$n^Nm zWv_~#>=YHR>2-p*(t^AdxVh(2kju|hj%$y2!@JFU#ZlY0q> zQV?Ju9#Zl>;(+8i46QDEgoY(pNxKIWzAg_Z(i&jQdTclnd&DD&&mnlky7Y*-D;U=p zc_qvs?KG&c3jRb=efWUvEAc{<89a_lZ)b{Ghiy$lC8xLZ9s^2jQE7LBf@=sCqjBIT zky&NppkbNVdog5sxx5X|j@~$@8fFks(oTV@WU3CXU&SF&StKeT?mGc(TjCfwsEw0C zpp~$Un&3ALtwaw>I}M7^Jwa7s>sSj&P@;YTk<|hr;6jLD><~nTO$}Bb)l^q{P}<#~ z0w(A}mkP^|M#j;~4T|ktAYF!ULl}VcGs=rBC5TmWdGsp2rBeV)%?zJNfRc6^RFSMD*)tR=(MJjf z0^*=}^lUzYer}o632{wUQ~|j=0ZQ84pvWdF-%^SM$d=*qVz*)1An8kFQ;V4G#cV|Z z`Md!ozO%G@K#_UHr1G&iN@M_#eZ-~7W*3n2B~09sn}?DL$dewXVXZ;PNIMOxRK-}w zC1qAvAaJ9Pxd)fBnc0cNYcNKsPteM%VOCJcF6}g^auq+2<;J@5YMe#=V#!Fm z8x%>!3>%Kb9$_p}g?T$eljv`zd$Q-a`` zWbxoB8kT5hX?KHy6)>~$ow0=}a49*Y^zu|RR4N%VXb$B`wwu+=5Yb8;lO9?**(&}m z@m`|;xbS!oNK#_$1(L)lM@%Hi4iy3|`ffMOAj(VHX{<1c@-}`5*%o#%%$-G?N+M1Y z&J}hJ-%$dkX?5E1dV&H<+TEb=05SP+X&mz2MSNxqB79R<99}%uT#hoHoCftmgOyBB z+G$Y5DiP<9`Yo)F3frbcLJ+rv7(8KLuY%W0QjJZj(0P{uCCni0Zcs=ztXXn4rHoYG zNTk*!#7cf5L-h?IixBftV|7Bp7L|4yRH=#}$8^Q;A?1iiBg{z@v5=>di`-6y?Tpi- zv5JD3!VEpZOb2;|(F0>*jFu=S!igg+<`Uc?wwBMh#DirK^&b4O5i+s|rJcsAj8UXY zNJzt0Fs{VkQt20j9vmTQzB1u4ttQSlw2~E+b{dpZ%?MAjmvi{;WOFLGH^2-Cjgf)F zPbL0=Pp!!Q&J~&&Za`j1yBieI9ZaEsfTM@$Nm$w=V~DiD%XR!R4mw6{QA^RN2tih` zrwGAutG-9*pPVe|VXCAEB2u{J5(A?Ih+IXMVlI%>WWVA58ml*fm9*1X1y!oHB%Fp$ zAj3$IujqON)G(I`0ZW}B!CSYaC-^!INku=T-3^Lb4Fbs6d}KYz0Kl5acqzIedxM%M z6Do-d1!TMN2SwvZI}IvCirVa*B6c<-$#%JfL&*+ecHqiezL$=_nk4wN~+5QhSxG=JxNO zreVnhrJV+quae-RG6Px4#86=r>yUNKy9BZdKBYmT`SD#849f^)0VVA;C?Z9e$0SX0 zAkYjlPeL$mUW!13AuzPC;9R|eOJ;%+bdq*Ar~>6$HWiPyFX~uwmv~(`PQ-hOQKJ$G zWt25vjhXE%dQjTkps0?*qQ%T0WDmP$2rUo~Aznzf9%I5GNl4sH;qy#`m278er$He_ zLxKvhClWM=tyjnqs>jTujuP!mv?xP1)kM{v^l%MJYzAp}gTjJA9#I7(_APp}QkFCq zL41{BBvv2=quT0=l$T)Dqr6J^YP4JeVK(oTaaSBa)#5+eerRDVX zod%R_9BHRPIaR8{C>3=`5{hx;Ig;_D01;L%XV73}lq^zK0r^A%l(f4+5kT zsoEiCOT>fvYO02Dz{{*4>hC=)ucR*@d zQAT(_#J&}buO_gPb`L0$-UQh5>|ZGr2ubD;1(A{>Ji3fWfQ|X-6&yjH%a5?Aw9}xx zDol+F4x3WXNBNFV@R^K1u~38qp(jKJl?hs2EgFIRRwgLzG$?}P8A2YIER+r4F|l5S zGNvC{FTX-16)G%1}1z3BkBX}ZH-mr@Csk`IJ}-s@&#E! zN`i7OsWi2v){}rk$pKv~8Y;s{?rE|Q7^6s}sI*fP^m0{7t)K>bjXXMH6l<~|<>a!B zDT>9LCTn6sVXr$u6HBV2rJV*ao z**usM(;-jxIvZrNW&A^MCDVt5#;{Q!UZnojIeKZQL2(vyOq6aB^UJZjr2-r*Q9ue*6c?2h?1_tdL6yW04h=yI zDNQE|Q_PbWEU>l7p5XYZD%oC~6c3b0B#=TShXDC%h4nz;Si%mniE4L9Dvb4cqoe{f_De;i+Vf%Sd(f%d8xF!K}p03FN@G2wK8ZP zv1>4nu#iZ~s8DhiMW}$h(oArX6_j=w6h;x^S0&Fd*(jAl0m|+vv1}FCJuf*qq_P5a ziUB1Ply(}FTXl0(W^&LAO+oD`42yBaU}|I?mJv6K?PLPKQwds0y9X4Jv>XMGBHl?) zau|f_(=r7Blvp6FSzyVgDy&{+uo8hR?QT$T6iF5iP8HdNIBke{4tQm7f;l@=ME^Lj zyXN)?l<-wAD8DNCMY1-8-Gh>p#QN0t;>2-W!N>P0|B%b4G!BeFQ73M<5FCmB~^ht$;+wRm4K>Ij-UdRirI-Z3QB~cq7Dk$<0!8 zMfn!ddu$0#ieQxJjdOUuqE?Nt5KgYd$8O{ksPGTxaMUlAXI2j77@dVkWotj{f z!GOf^qqvkb5{4qjIb6&v%puMkp_cIuv&1(wi;8lWAK`Xsr$O0Og2n^_*l(aC(Wflg zbTa=Cj%+wN4uXE{cLkzmuo5?1+TEbwAm2lsb3_Ox$3KNSL?6*Q_!Q)e(TsrApbU$O z6s>i$Xdty}VmxB7*%>Mi$n;CeC~0gg5Nsr@E%cEo*ofj+QgYK1zXDXAY8Z-FNt{ZK zgknLD^8j*YB1a&rLRbyI%YfQo6uqbkX{RTcrHYj>jFcjAsz*|0WJpk56twsl$dVW( z>1Y)FTw(>Kod%Vw60AqO5QZrb2dkjKhzNLiUS+ZUiLw#6h~n+vQWVpsnzXw?A%5kt zl7b}?O0_o5E(O=I(oI6P8DltC9#uT4sUlamgG?%D;IGPIIC zDD7@gga9ZP#TUeF%je*6LVrxKR3JR(aVmymazy*o#2%>r)sjKlX;5XNwJx=8NG+S# zI=K^S1W8fBn^huygh7ULLI@U4g2JT%VYU*LMG(KF1#-izpvZP{f@OihvN@ykRG$@kAB$}O&f_bupS>pe80iD5tUJ5KQ9i$qM7@Jp# zucX}#icke7>8RS4f&m9h0gIS;H0N`WF_fei@E0>$AV0@|5|t|L6sRy$#pf!MO(&C1 z2quF^N~wfPavdLzd;q&yPJU@M5gi#5P(4S+LgbZCl$NMk3F$<3hn1v2v{R9XoXsN2j0h3wK! zgQ8xP(sN?FFc5KeR0d@gL}|bX38Neg43V;Ch6pR!gS}XhmMsvaf}?W8866HJIGi`4 z5{pCBgzep=tK9}G0VVA;RwaBKN*=L3DGWrFQZY&zh9Cxx4W=3_mccs8Xuk4K z(6D5J((VRDMvD`IxPC<`r4%uYNyC92$|F?xmh1r4!wSZm4cTSmNIMP6MGv~pvw-yi;|;2iOC^9!lKgd2E}=N3Vf;GD`*!0!>nB9j3m|Dg-jsz z&D3`32|ix|8W=c_WU;iQLhc{cC+R# zwSzs*{$N|9(Y`2{n`+EAn(@Umk3IFb{ja^#mG-j3;t_vs=4_pNY9Q@sgub0-sTo}0G@G?nqrPE!TRi9oCgJtlFLP#- zb~MP>7Y)Vz+Gd%5Mn7qH^@~7ncbfaSc_$wBD}&RI7$)tmVM4I(A^Xgbe_@EUqai`v z-yXDD&MY^bm_@nOEXsH3D($%Im5YsLd(*+XvrzNWWZh^ zmu@*VkapC2HfWo*u6gspR_-o|hpaX0_Azjhc4El(T1##~ifEM@_G?4mD_(b}EA8H4 z%RTVpiILKdM$QHEi!oNOHI#ZESV=qTRO6DKnloR!szcOkOxN7%Qv+%Dc8z(yv(BG4 z*6?3kxgwBuJgCJioqD@@@PcMzse?~+2JD^SBkkV)7lK)ge$LGCEp(T5vU{uMcaZ-} z!#r;|@038=$&TzyS*;l8Ys^GPesjJr?WivsB-+&58jc?=S3K_NX53>gTMvz$QRs_;M{IK*R|Iv)y@Z%MMv^!%rH63ocGD732W?HX- zm!#e4)_1kvZ}#)KA2~UYcK_~aOrC8pdEx#Qfwa?Oy65~q3_`nRRs_=S+dKV$H<%&6 zY_15T-5IhwnB_{dpc(k_gfBPPT*HK=-RXQ`y=l6~o$oZv@=`iWJL=pF78?5lEvw_s zmO*1bouwUh=1#b&hTJPAH=b>8B=+ZH&4?=)A??J7O|>wrc}w%{jt=~TL1v!b(oXc= zyg#V7w>WiwKB;d0XuyXIkal7~4|{*l0I#k*DUf!euQ0+?)8Qt$>DmG+I-c-K1Ai~@ zrJWk1bbm_1{ELx_7t&qYiSBzAodfl44bRcn-9^kfY98>1H}3GI9gmRieNj5mjM&06 zq#ciFJI!{t!u+I}^F}&LJL)WV=Eaj-V>(Uz^|hX~<4%p)+4*2k8Fa4s2`z#w9SBa zz|LptF+ZLBVBPO!KiTL;V- z)0=0ew@z={Jae%%ZYd_S4%GbiTvwl|ojayC@0eD-u&&$CC+gRk2RB@(OFXL=Zsig> zL2iOMs#%;e)amyBgXwznPOD{Y3PK0zzV?(M{r9x&;Wdem51leJsJ{}IsM(lrS$ra& znvc~8#t&Z2Kk}dHEf*5HjVt31ymoVbdr)86gKM_f^XXckMnjF4BckV&p+h~-Pd`2e zxyDL8K@gO&5t>`s0Wcze>rV$^+6_L8Di@nt?S}B3wE%urOAwS#0_Ct+3)(?wS?D#Z z6$JY%G2(>^`~YS3f8j?1sR?d-FR>oK&N?)F!S+2fv2!>)rvBELm_J%ei{eNP3#|1Ylin@tZwQFdlfYgt;B`^=#k=uxXDPZ_ehe)Jj&DuxIUt*eXr(_jwX{lAw^ zi5VE@kL}hEm`teO=k4IiwzbY0-mKTdIBdhq^=>rgr&++x0H$G?L9KqH`aQRs0Fm3e z%slTMij$M=9weg&BxWc4HR!0TcV#x7gSd=Da9H=u(nK_c9BRN~&1(}@kP)%4+vK#J zs<}J36*XjkRi{B@qtmRm@HJ*UXJXNDmLpLYugP9%S;A=Txkf8cJ42Ywu&2d!ri#hT zMmao}MT3?hZ?r*<%xAJShsXN!QOt}gh;$#BaF@FM+1g_^VIL+uJUc1b!8FxcMQpQ0 zu#Oh+Fe{$wH#zwyTk7sz*x3z=bXGV1xy|sBWk_SLl(y`NjA9Sje(pi*0=NXp>Icp7 z3wB>HzT9-(d2gQrHzO>rS85p|cf_A%m~3zZTcpF7kr)-WbS%Nc$a2M;Nl6$pX=>*3 zfYb;4(IG_yJrHtqcay(UT&vdG2tz-1s+MO}tp~(fRaX5GI?iJXA6-A~+sy0^TH?I4 zjsVw4qqN`1&M~u@oYcY{HEMe9F&B^D$K8dE!Avi&!M$LD!wb#yM9pSp*QJDLA1b%!4~ikTdBdKkSffIt zRei+H-Vym`l z3%6UNjO~v$U))Emn}L56NUKG^H)vba4QtDW-J7gYHM9@b*6`jD_1%3$d{+4IC{Wk@ zcW-c4Bu8}}G&9f;mYIV7@;=U?q4q{RiNQ#Xb@-;Q)IH2(#C4f!A~%|34V2C`5Uh^i zj=47_UW8u<2bD09H&_JC9f8x7eV+INvs1$UttZyz3GeiNsXyP@)Pab809tIMJ%NW< z_aogAZIIl z`a1D#`ge&@jZyTSnL;ERqu(7FnTEB@vUhB0hd7@}yGM`cvxp-G>N0Grh!^KZqUrYH zmYT{DQPV_>tm6o3BI>bsL<79nSan;%9qM_pS7pI1-Tmb6B=cM>DnloEEbU@JyS{@u zF&$w#rE1ipw0Kee778$;{BnHa#IBS$Xp*3>_bA;|mkqTZjU9czx$Ykx03Bp_%y9kY z)jL~R^zNP=^7fm+GJLQBu_Uv!43>T1%5xH;$}EKFZbMKMyHaGcic+K)VigJFG}}x4 z0xRhEh(zl7`tf~PtUJXQYx!QzPs4<+N1C;e{yt4vr%5b_N8G3R^5AlDf0|YH;+%H8wK_69vCuJ&_j=}fcl2R!y?YKn=fkhDZz9!w*t-83-;3Gamqk8& z#4C<6iQH5kLQ+t+RaRcPAM>Q@CFrKbU%W0yC-S;fW6We76QU!pdgaiOwq<9vx+R#B zG$z#$38onJgb0#41T!-&Kuh;$QhAwxur>NuEW@_ z?VbvmegF?|(u7(Tgv=c+X{xLWNucJF+Rhy{g2_@}6x z`T53y)*AVGdX6s-G@AQli^rX?p$QV`I2lz(JWoU-Z^LX^kzYq0!1#_vT|N$)9)UFe z+9ar{?ky`%I!nF5w9W^OI)S!r8ifgk7NO7mwcr5J11T7ndA0=;gTWYIwrXu_uH9Z- zGdZbBpFqOXI7~E}vy-N0YtlV9UiZf9{v=PFoETa?c{Ft?i9TJgV;%1KD)Bzo-Y>=D zjb94e|7$jbdAaN`r9YjbndIl4Pc=FMc4DqSy!fTI!$bUN!G8F$DIhgUsp7`2rRYI0Z8Q%~%}JK0Z*4-V_Dv%iOAkZO2&4468A>i_-GGc# ztd=0GsSes9@{!3#P@1Bvy`W)0fqQa(bNCrS$_!RAsh{TDK)HshG!x|i1Y&I5yCMhZC z$a4+7(QR{z3Q8}C}lKv`M93y6;!qFD-IH{joV=2)j{q>rXm=KQw^7bSk8x$jV&N@V) zherLvcu2h0N8(R~XJ^f!qE-}_M6n4zfv@+hdR#m10|BOI7O+S#jS9wR7oB?b6VW08I?C(YwcAd#`K?kqQ%Rc^ytArjzDI*Zhu@3|D@zu3!W5nlG=NEUCsKn)?hkxDj}m)G>dQQC)F?OkYOS7-9?f&X0&09 z_-pAU&(XbOCW;tG9WpSFyzk7TphPqj8Gi41sAui(<4UGbiGjw;dGzd&T(k(NUb#Qb ziYaCoJQOiU&G+Cx?l;hSIFf#P8LwWeQx@@Zit>pp4RhEey{HQ8QHlfu;9jk#L~pG9 z!CXfq#6m3E%=dCZyRb-X-21qgT>$@&u41O>!;=xT#Iqym6m?t!DPI8)I`b_RMp3=Au%@Y(G@1%_k{lP0 zsedG*s@~SldI#$SQI*t}iY}HK+f3Ogv&KMU+4T#PqL_BKJse@Ap3niGrf{m0(JGz3 z|A#57=o*nfqObXFex>%02s3jEIPL3n?HrN2mgyKx4vHo=k6!Yw4cvd@Bp!Oyi`)-^ zK~+a#b`O@WMI1pbwYIiRHbg64(HQZz?{TcQwgi6H{NT&}TZzY*?tjANKEf92USqR| z5~Nj3d(`w*y$`>MBI!1^tuAftsUOk^wLQp}x5;;mBxo z^xG)f_-L6)8d-2&)Ft^l$}k_@;jd#St2FI8L_T)1s$T(6Po(YG$*O46X)U5v|K#d8 zBD~?)$*TSW$|UNeRBc?2DrGDYP1CV4CFmucI%!@MBoVPF7jNeW-lwWK|S<9UN4V2SN*S9_-l3s^0A= z{_wGrRs9Y|9XnaouS$vFURo{oZZ*!xB+jHE?!{9U%SC>7jNi_|BNM>G$&em{kyl|( z4;?#MrEl0ccCsqLJjp{%%dpR}lU1gKQ`&P74Y zUTLQ5IwSq6C0VyXBa~+@P|$U#k#!tFP1R~IUnqK5th!C>j=WX%{%Sf$3g?JPdF*6W zkC$@zfLUByuSl#9EiEURj-9N+8tCR!`8(k~9`&gkHp)?+B)cz%Zm>tX4VQSO<5Nq^ zuQOeaovcc)G;4h9WRpo~L<2}h^v~1HitDIqNK49=G6Jss1WL z)WJc%+vQNky_?g!-0euGjQ-rYQhh!je~~XlUzmcGuJ23wd#Bb!+J)_|Zz&DefE&Kw z+8I*4Brm|=d6|h~DFPhTH0f1W*r>1CoFI%#&N^T2y+nO$s=bVp)JX{lF;pl&*-I)t zlr&b_QOio{7)#oOovo>7z{dkc(k?eHHNqf-ttKd|y7j*IyvQI~3XY>}mTQsq0Tb>` zl$$l@8eEki7q@b2jhtuOz~}OolU6k@hLdA4W;{_>KUi>@-1sNwR8TLbOhyX)9F84z z3TI@5{B0I9f)<^zNqqI+h#x2BI8IYD=yCk1Q*0Df@)rc9TdrI{GzcrPmmRii94SKxv#muA`a6Px2OJv#9 z`A>BiG@6z^PZ(Iy%w$m128P}%Ouu`YPJ2F@rc*O_KFYx|xV*?7lsqH1LABJg+VZ&^ z9;um^gD9iN@JxDaMaK3U8gba7h>>}<7?BJ}L*QkanYF^@Jx`DNQ-f+?7z$DA*J!pZ zxjkNpG*_FQo9DlFT%u|!DPe9rBE{ZXF6s(EH9Qh3rskKue%7edoOQ>_{4cjk^%>2K z*<<|2tw4%C+k`HHgZg$G+vKpL)mS~6>7BpiwdQKVu3`-EYw~DsieB`<6 z;e#PZfkh;X7M#(ifUCMs#Mdy99vZ0Yp|wVc&ej;BN1BtDNU4=v9=2Tk9z)h}&6T$T z3Qt{s7VSN$oYSv~iq87z@4YAt7cm^0G{VV%FtvE{X%qm^W6c-QNc~cPR{zn$jr}`l zYQ)7=-4E%UBJBd)`68~{?0$AFetnSS3%bYirBNe&zLD1gb$y&TWgyx#n)cE4no@RZ?rtTWUr$Dn7~hmfixE+W+4E(5i}vAsIRd%zp?=kzD@*SOK=$rg1sQda0&Xn>MHx$kXUfarysh-iF_Lw!A{5reJdc2%Yy(9?= zB-P~(Tyof!L-g~^G5(+h+AWKRM7Zz({p>NBo&JaO-<;P^AntK-7>)*Ivek;&i;dO2Eu4@Dy`&cvwBy(oa6yww`7Q z?C9?-f5+?3ptEyKFhX@~#-IUFL0P6em>|x~f_xAkRaSpq%|{#MMU5=uDMQn|ItF4u z$jIl{cbUosAoy!6Wb|Gcu$7BK)Xh{*D`@eSnQ^P$;4L-sene$9@)t-56L9Eg9Bsv0 zjl!BZAO@HW7W+K?tTpP&k=8^nK&Sp+2AF)DL6xb=p(y=|oAw;8ld5Q#cidoJa5(Z1 zUZdGHDyFFoSB+zsb1R8c=Ou*tild+|H!cWZq>yz!c3Dea*W*|R9PUn5 z=1`Z+8%LhIc|CazCf7%s5P_VCCljmhevH;i91}io$;;sCQbN~S4CGQ}NYiL8&EoXx z%YPse)Jx!*>&NDrQS}pe39EosUVXue3Jq}TQ6Z`B zt)(XKo(%xbeY5l3-?^O+6m#;1lV-qmLSU?)s8%WZ6f)LY7y)vCu?~@=t2tO~nTJ|T z755R(aNKIuny($d*9Y5`1>u-SqxT5_W<49HK5a3o_Wg9 zwnlw+oOsRx&fKP*Yt-86Z=$1?YAtZ7n3KLd1yVHCsYm?r#?W4meRavuU^7trgWFfM z=#4s|@gWf?19^aut)@lo|iU^)oOlZ`{>S5S=P&O9bu$8gHL`Upajy zOh%n9tcwKj5eyLqYb~iyh5?|Ea@0orpyl!QB#Fd~2sg$uqcdn?i07{XO4yp5ddRl z9T-V?Cp_fqf4pJKANGC0JLEgJ-+a#xp7&OJa^JwI2)x*XotTrc-kbJ)_))JqZ`9xA zzxM$%@38vAyZ@*Ec-Oao|A$Mi**3Lj>8@+fTlLGqZR^e-IJx6&YiPi`?$MW?`lI)} z+~4ud*}}hWd3k?$1AqVC_x$eN$35)&C;Z|IgWvzuD_-%LtL8FG3Z5|wJMbR)tNU$h z|0Fo+)1O;=`Og;n!&`mXSLe=beDkEG@MWKTS>eU)XTRpJPx$Be4Llh9jB~!pyl_}e z8X*3TZ@l-z=jtAy2q=89EG1uR7%1RQ~;^udy$C?a<%u{Evf|-M%U} z@E`>@_0nkt@3tG?<8NK@)v<+}uIrEI3E#T0e(mj__~{j!o^#G)rhfCT?=&{dy?yn- zqa%2c*o~tH@mu)>zID-cKk~PpQa=61x1HA?{)!*G>;VsX$yeU@j8}|4X7x9J`_Ct? ze)~m_EDdlk33QM*EB1*#=tn5{H~sn-z|TJL8y~Cohkx7;zjo31t5-f?{Dax6{^^XB zkIvluqwKcdB;YUm=0<^k=HuV_0{6}@-qe9Dt>ivC?&mX;gQq=d<;~BXd->@vTk-L` zKQw&TS(gqxD#l;I7vEFIHe&Lq^*r-EZ@UHjCr)|lnY>Uw`boiWyFcA`(!`y=f9TYq zZ(sb(;yHKLuN(SH!za+kL|8gt72M&051#|v(eee4{%!;{jraY2_309=`(Qa^x9v4 z;6-EqnHhQ3#NR#l!hN}yZ@BI40}qSfR)vUsgW!ic#PnKlI@DFSDM$;L55D`nx4ijtU;py&Pki^I zfAo@{-Z*e}f==c+!kQ)un4*}>=j@iV(%*XWZ`RoJ*Y#hIf!E&ngnxU^4JY6B8)x4q zwti*HZx7agb?EAWKZ~A&A!%M(?yY~oLiR;_f8y^7PpLff(+^(;-sR5mU%dJ4Z#@24 zQ{D~3e{tqV?*EqC9(qZK-#anSXs;?fKmQ*1J(w#$@Qh{n=KddD`q;02_tg{rVcoNy z^ra_U@BHV`?mzzg)g3w6f!pyw^b`CGCT`2U>zs%C7fjCH|Ggi(Wf{C*^WHNy4leGw z=JVHIwe3Ai&-u!hul@B6?;kilqJsot4V4Yz{-zV3c;=Zt{C@IJSDZ5Qlm2jzd&QUb z?%wy)n?Lc1`+w)}KJ$*}uDE;e@1ORm4!?H-yy`lyh$sLPx;*ZTub%+?AC&*@ht@Li zb2rWY{J>qacisKczxdDFPrddl)33bv)(rz^B=OeopO*k~0=$O*suxzV11>8qeDKTt z;oooHo%V}={0INNzkS1}-f-f}zWZip{S!X=$$^I?;iq0eui%cn;KVWT{;Ktl-;c~f zz$fM6aZfE&Hh%H7KUzI>=9|xc{3HHx{jYC)_dVYlI4y$PsHfgp&S;^>$oDV)bKrjI zxEFnH8GU-c%ZumCJn;$Ey70!+{^8f#ulo9f5B&E0{R0p0!0p6JH8lk8==N`Z7r384 z{@`i1_NT+Zo$vp+@4WTQ;N_or;3pnd`0_Kq_q7LK_NgS?PM|db_fvnh1-Lgq=0*Q} zPk*?_Ss&W@saIXIz42F1D*bZfNyoqbYxlhL(y#+J8Kv#OT{ZlZIpE&($inBpyA0gN z-twATUXED3{nj6U{fu9J>Yk6>cJ3|j=-5TL-sv!I%o;+ERgL3!0sn^Mw>)nd`+eXK zjqfh~-2;C*b@Im3n-kBs8Uwo@_t}qh^bhbmA!G$x!Tr&P?g8%g#mi24?J{`(@iou- zgZmFZzjg5ESD*g8>J2MicGgoK`>2k+0^HQ)pfTEtKUTX>|99ZO@vM*i=E?ox-~XZ? z|Ll&3z2c4ke*F9D@0^+a(7JD{{EA<{;M~vNTKmbH2Ob;o9dNs&-wF7uzqMA@^VN_2)pIh-;QcS|!yovD zFZdgm9@)6~*=L+~$HFdq-Se&U zL;Jvm$B(|^tL~2vzI3#efZrXvPs6|c_O}85*$x~F*QhdcX7g_Bd3mUrzBE?l*zxrN_Pf9!9cw+vkd)@<5*>!s+u6zDdPX6r1&w1CqAandhr~IHlod^Er=TrMOec*ZDx$9qk zK7aQIhTiq=S3T)bCv@zS-fN>HLI|D5)@%?u?6-dVl|Nqw{++MB@U;(o(Pz(p+TM@7 z;SDd$AG-c4fAh8Xb@pZIvRDOL!F~51Z@{kFICyB^a`O6?m%a4KZy5`}c=c~zeEVTW8;x*hsmUi+~J@9N3(9mGoI0*<<`X9;-co~$#1;;1^$kEo_^ZT{FnEK`+y(6dFAOh z{jxfG-f6X4PyFl0zVPIeZu6E5dqS7O&(}=2^d9^ru$dzUHP^zO6sr4?g+&SNvl2 zPkuOf!`#8&ziMLqN9&F(Eyjz|)!PZk>|FAa(AIC0x@%@kg?xy~5Px$ER z`(O7Tk9yFv|M{bjE#G|m`)|vA{eh>=4GfXr*wo;9?N&P)Cv09sn zkB{ux{`@B&`00&*w)Bh7yy?w1pLOP>TdPmD=7!E1I?LKnC+6#@c;;NAvCq=sI0?m( zHT3oos|%#cc!98;+(o@0LF-w<`h@Q5yrmZi&f?7)~R4cd=kOykyBI;bEepS#Uk`7x_Mo9f1QDVw5mn5R<)b%q6Q*(bCm1z+Q z)Zf5G5pOkmY6Wb#+;sid72U zV?-cLbTW!w^3>tZ?8g^cv%?cZLlf3)tv%kF8)q9WEy7DeJic2uymFLp0JDFb7%p+r z@p0)1>E;w=T3l!+eFe~};USd*8NbpRUKxWJwjTF5mMiemAFe!PKYn=SdBax^tr`07 zSY2pfO+hcH#m)S~g0x0qST7hk74ikMOT0L_J*H@`2&1mBry>k00zhSW=FFAWdU&*S z$+aK_XmYut2wvzFmCM7F{ zbmMj2W;c0hb#!9&`s%8Q)hj1c(^z9w?a9TFRXmMXuP$2SSG26*OIHGV7@oC5XmBnJf&*E@|PBQ&w*_F)MFI2T5LA8Nrs0>ImqskCyrd2 z>bb@mF%KRZv?wTOGY?W*S6Jg-G^4;8nY?tbHF(KtTmGH&M^-634-E|}RM$T)Yi&9_ z9)pU1?V+n>|1GteO2SGWa%hP1LrEyry!KkvKHxO#ENM&swRP9jnl(EYgL-zY&|rCK zT%)*mR!*Z>7Yk_?lvo^<*F&^;KZIn$T!hpFdv$Kfov1Y?514L~tMsOoT`Xd9F<=#! z7D+p{$y$R6kFCplC`hxB3ew4I*~5@m6huObQejE1O;|TdB8`%zM=VNak}3%Sq0;y! zAJuN4BmkikPr_}gkXWdp1Up&OrS{@dB)@%~VishQ00b;R*s)5q$Q}9Q*wkhEuDn(! zMw&8N@`18{lEWt~QXO-onYn@=FjNS4SI#yiS8IeIIOk_PLW!ttU)8j{2 zn}vhc=t{E^W7bNc{EVLYjH3K1cEx!cc3*IjVy%uSl9F9NaF=Fh_3EQn5m0-kH*Ma% zo4t~;BA|U>RynUMj2dOLBMmF1=O!Jia*$Gm5+etH345@g{90fQUsyMHj6qaAtImX# zh>EytBtm3lg6CQj>|lO|&xaL+fn2i7ilsfLE?a71Lb|PG6AEcoLb@4Q&Kb3qs$xj} zO-};v&Cyj%MEa2zCJQfj>FU2P=V-yq;=b9nLjf1H2-cK*d56@WN&sAa zwSc=?2r5{lMj0GNSE_+EpOI>eV!9dTGMLnUDVB?IHV~yNH3)TUR3;V9jakF%dD;B1 zV*Y4;JnGJT;y2eiN2VM9Wu}l|1Gy=p9 z*m>bJ4~}6ONCpVN^#{Y%j64a7!5=Hfgaz~``fL3t#fL(+Xa+M1Otf}V#!g{}B+IY3 zG8Wc?7)(8!X5QgRo~E|W`Iy!08ss=3degav7)2?khr~N(@Ce&QPU5XR*E*AO0HFn& zVX0ZSV)hR@ALj4KNw}lXxv!`!y54%6&FTxTm-dsYH72h)zwp5wr!eG z1UBuhJI1V$XrwiMIreb9F^=WZZXd*g7?fQk@-*f^$t!;icnNZh*+}fty7Adm97z<^3a3BjnxV)pnD<-50%D$*Eh^Jcfatv>AImIN z(FJqnediOR?(4lsb?62#DN1QK1Wvfr1g$1otBz8qu3c$gEmklelq6yc@ZD%H$;PDa z(q3f+SMVZ}VJ(s;(2Fhm1h%$i0>7JE+hl>2wdZ5x4HJ;$B)BnvWT!wPGxvM3os? zH@Vh2C)&sBMPu=VWef|&3Tj^PtcKN@*RoPR>blIlqOW_WrX4SA zMHL}%C1XR3zW3S^>lQNneX-exc%FD|&O8;rEwdF9ejHYd$Ua>Ot|S%?y2963A?jNx z3m;AtOcEr3h1v&)t#F<*Ea)&%w8DSLDMly&F#;OwmqYc-ZcpjmbMO{W(t<0c*L9RGZ&1CraSCd6 z+v7TnAkl0UZI&&dKO(5z zpaWq?9qM7R#yfd|J~;t8=!qXiPC$U^&Z(S03?i8mNPKu-aso%QPO#Hqa|75}QEGrg z0-flgj`K6PH`0GEz)7&QMLHI zR-QbeW>=kzktg!{OQ3Tct0`|W2Nl)`Lqjg@;22`9J<<{&GJoc$k7nk?Hf-CrZb~LS?pq^!t?{Q{Qq7>Wtpgs3nN=zrWp)?IAN>02=AGvcZ5GdD4Y!y` z0Rc-HCDPJNqrw^NWtC4NEW#U+MLWW9y!>l{G+KJkh_=@YyBIXou^!A}rZ4Xh*Ssou zrfH?EG|h>az*f-O@p(zN&Jv5CBNR}Clb{M?%;wxzC+VkjpKMhjzOQn6@|U1Tads!u ztds649JFSLYl}o0na!xu0O<{=cJPppCQ3lXVnJpgSz0XHITC%ErInRM&`HMuWQ|Ea z!r3bL)rkZNze}*q>|nt`t*DMUvF55WAYS`;amUAx+McO#vAqC$4*e&O_cyhHkR{FCKuGP2}JwHw_BOYfMxrp z$^)3(hGlC%4zoOqOD#4$sy$sHAVQUI$ZP594av}PKb?82nXsA^fg%cZQeS7P-2h!6 zc{XzxPKHQM&j3@8VHYXIWeQWod@zF8QQ9I|IYIzdox)RYr`!dkaW#2Nc5IXZm)E%< zwX{43x6V0V$@VRf8f~_yr2vnWHuB8cAzRy|2+cf@KI|-tUSw|aAdv`KE6LGQ8Jd-$ z7w+CBlIrk%>CHR^iflze3rEgGg_$N#mr$0XA73HOVjGLjNNnbca&XwOg0s}G$t&aK z4T#3r21jk>Ks$xCQUXecY9a~tl9rn{XP2cMLF#G%Clh4V^j%7|ItklIL&#$^nJnuZ z9U|nI-ukGGLZ@x;)?b)ENETvsJaq)H@=&exQM@*V6&t_e!XawM(4!Bws3 z@Woqq4O^p1vZKq8{8R?CTC0%B`uUjM_VCbBbDlfQqRd4$hl+qQ%_)*$hfrI`THft`X80TEk-)H<4<9OIa(w2+b$ zQTT?qz#UYY9E|>7pJoUD|J|v3RhlE}R<0q~ZRm;+Xtfww^!% zO2e9BQHi~=!{FO#7?wB%I z#k7bvk!%+sqf+e6#)1V@$(W1FEvQFA2N+$&ct)u){=SM%dG^vGDWJe1ZNwi$5Ne2) z1IT*TTF!?{&Wr~cfhm17lNxcVXX{&|aE5l9ICU=OFq9I^)$DW~iW$gG*F+Veb{OG8 z$zaVhV?^4i!}+3+IP&cHQrxH%wDM0z>Rews5@Dv&e1xVH=?sGCG|oSZt*M*>L9HfE z%K>#Y9TJFSyRcV`xOoix1K5iK(oWX4(x!eXK-&X=mAW^)N+J4Twi zA#L(2cUShVI`cieQaxdq3Celx2!V6Yom|a+T)TEie(7zp+#{6LEonn~2Q9}FuW^Ui z&Z6!__K{kFrb@))FeTP5%_t0$&@$zq=nZ{V9CKwWmOmGaJW-UfUNHVXSDvw{q1GO) zqCm3r^LQ~zzMVUy2!>8l#2P168O@UbBVoXfAlX4})e`1_VO`VB%vmbKcoI11XM}_h z4knmOV|nfn(q^VspV5D=Q>)dHcqTQz4(mb{3tp> z5fruGADOif6-NuV6uX1`4OM~&K(&IlSwU`l;Yt<7?0l_FIv&GX0hK_|B7P3Fg~B6= zxl1fRF?C_^b6Fnl_h_hKhN%b@!K;e3%r2KIMR6}@WWbEwMVy!xmqzQe@{rj=S4*8A z&hll6;n`(|OX^4e^cfyecX(w253OoDAF$yxr49MjdUrjIf=Ko8u;I?jI)(tga=dc7 zPizGATe?Vske7h1m1|$**7kDOlKGrkXe8Y5>ZphEDpZ*?{31(7D9!c~yy4pv; zkDi@CU9z1E&Z3Iq4^Cb>8d-CXUuCJ>;ovAn|GM>ZYY|9XO*n`k%jjgaK1r3GLeIWL zeI=%f;EqwYK=D!pvJ0l9Iag}HgL^gPm02~vzOb{Gm?AB)VMfnXVu*}z0{=tmf#d6; z($zYtq3oT}l~OmZXC*H*P89XYH!>G~%N3&up7kW52eVOLRHGsQK(uPNi1bGZ;B?Y*QGhc1VIFfQ8a8&r-H+@ zlpGUzB`&rx1t2T;(2{YKSgti1;Hx3ebPN=k4ogUKP$Hu92gT!9=DD%l^~fuNsF-HS zCqyWW$)kB3{k8Egt~bI`qDOTptI&Q3%PR%3sKel zCh09t@X&px)K%yr+SXA3m?LpdrBJ0AA*TZTjN|{TK2D;PIYWf_awDY^%nT$4uXJ#L z*#ONFS;b0R zU}@+wtT|S9FpQ(43u3{kNymYaF~S&4U&`LZJQPP?nQD=i7teeMkSHn*RVzWgUQlDd zqyYF{)gSPw4&^O1RltughgL?x8WZGOK+1E6RttN0=weulheF(lt;f`|YkN|HQHq9y z7h&&FDyb-dl}J?=hl|8iWYpEt5AyJ_jp&|iY1yxu^MSJAYN#57t*JuG18WP}uZQw0q zY)3&7^=OAErmAI+BDX4%%hWa!t7yos*DGRB3aC~Uo>GKV00fnYpv{16F-I$~H-<(j zTV9^3ilE)rQ@l46;A!zxOgQ;H3XclA-kah`i6PNs{ zf=DEZrmV3Qi5JOYittd|ML%d1WlxI1gzW?YG`W#@80Ckx6RIMm2`( z7?o?xmf5Of%DubJjE$7Gpkk!4%uD`+U6e;J0uxaZX;Sr^DfJwY00xzgih$MdZbTG| zX(7%|BqX%cLk3I1Gcrkz2!`VSLlJo@g}Uq~j!O=0?0N9CDCh-Zsey&)7A6)?Gj{eO zf96t6P0?7(^e{Z3dT2j_b5k54lM*Zr=P8#~R6t^a*e%js(w%yGNo2CU$Y{b&OekPr ziabziNj9ORu_Ga{yeJ%s%)g^88Bq#T6}9NFxVdjps##R5EIKEquHwU4=SZ1|F=Cl2 z6t8b*G|EOr$#mFYL^{g3k#!uPQESu;bQ(Gu3KSJx5-CL_MZO$P!W32lFAPo3g_r30O&c%Q6dgCy&R(ExEbyf9K zRo&W(Ch8hGO6nI(WYu*q=p61NZKS|CeQ1FB04la&W#$D)(*O7#0fa0Qpz^m^QCAI1 zUHV%WY&Ov5@Bq0%J%mDTz-xyLg76yjpCJ7Xs@VIH*^Y)OQA6Q{Ja~}i>VsD@D2X6up2TBuz7>I5Of=C6xcPMBF>{tMz%V7hZtjh_0N5QB7DEL$P05m}LjVL1n zA)BD>U*Z9fl>9Y3g@QkAz*M5P$I#@WqO}Jh9aI+lfn$R5^T7KDtsazOLNWJ)l2L$} zLht`_a^YcQ2>l9p_uwU9vD|+q^M8m+2&?%uPml#S* zIarJ!-$w`ZkIv_WbUhk5I%Fv8NoEb;B7%W~Tn@f)3sLFAOp%BT?^&)6|7f720&^J)Vs5!`&MGF;h62N01_xm8X6w0)KKwUrqdP*SW zg<>Nlwl?5il0zj1vRJ@m{X>N-WHtUmI7&u=D+!tb!Iy);A2?DI6)8o{511lXurPq5 z3~omOx7wjfgu(R5s;j91HKV4jU?Q)iDksGzaQKzBx~`Ti_(G6STTw2mZ^Ty7GUYQ+_@^@YqQBq>dIQXXMB>L!Xli)a zAX-o==_E5V&-KF-BY2>~V({;u2?R3%sde-}G^MPl#Cv8GlKPJsD?cQ~6ue0Qxw?Q_ zeh^g$)nU-t*xcOAQlK{KpNMA$Dh~7plGsrn4k7Emmr%XxYEQDX-;e+4N{DzhZ5Hv`x{x|0S!c))| z3z|bF5E#wP{ZAYM&HY8EgTMdhoC9=%DG=L(qyebn4@6smeu2W+s7x5hwjVB{AG!!& z3XYyA3!8UdSpNDqP#;!aGo0J|GAT98{KpmJe(rI&S+5A5iWxbWAd| zp3waI=^OkQD`?=?(V{h=1bQxzUM-Lu_W}y6C z)YBmT4749KVrau_(oGI)nC|9llR1Ke;>LJs8`LR?3MN1(kjG|wQx z&j!4EP|XgK-azukp{O4i{{uNeH-BK|QSQvo+>&1~x&x*`#G{1?NR2i6FbUM2<$!nM z2M3fu1_3;)1S}draZuPTs_nnI8IY_WY;zzMpd^dqaEU=y5wzmwgxV57CHLrk2Xw9g z+HFGTkbyBnFGIN2q5J`?6e@%O1qMF9hSk`(eng$nF*J1mu%d}X?GYeB`~f#YIh!Dd z5;dv6w~tIr-ZKq3U-KyCd8*8U=j(9=JY zAP%;IkoSAQ&|fl^&@(I#*m2+spoAOkWI^+Au)Tqj0MOe*GYg>UflB1{VCHo|1#f}I z2e~ZJh=At-lGUJLSUPw>cn|6wD@*8Po|3g-c>Krgs~#sMW@tk7R5<$%)g zkd{RMhLRn$w4%0QP*M#95u-!|w1&j?ltX)saEuT@AJEwss9t`Wx&xU2 znF!FP0%GNl&EK!={uLZN1V#YVhn5oX0mUGwu=rpYe|;B)z(PJO3JeBpG_x=Ri3Sh^ ziDDtDR@xQHO@+`=OFnBbBvg%v1u9>a)!YI=v%p<K?@$z?kKiGg7Bx1 z1rn$)P(kPj4l8kjObc*M%&ZSWkI?oKGDMJw{{~$Ax~vc2iyz6Ks9OIii+^|4al3%Yk}TC|(2n%^!yrq0^;Nfmg`m`(@-Pf*`Nq ze;Yg6aQ*4<56#^FLl!`r7IfJ7k4Qo9CV+Q<9x?EO|3(vN5#%7FM}O$49PYt>7Y!hK zkXA&?6C}LgH6XD-g3-y2(AE@6M}yV~I&}`L5#acs^M1iHL4OuP0TIxP+8`ML6x5)! zJ)|8$X$q8)a}cEkRXq}rtN=xUf<#%*qvi&3ssN$`c4er$Onw?m$VrE`RS+4#RH2Yj z^oyXh=VuuTI`)Uorb6Xld!tTY1Nr`_&Y*0~zrM^24ru~;)ljB2dOY9*dN9)9=rVLS zXt)*1z4|$f15N<^*aT44UDiCY`e|5FpcKmQjhz*_!K@1w->hl)CQ`-ispqql!N&51(F zek4eP&&cBQZ-s~!OgME8tDFhr2&OjLp}@yilRbvz!v;fEPl=FL@iR(a8TECgJlb( zlnpI@(2@ohe#1cE9r_R2N&;6I;6iAeAJ|_sQ^8k2p!xo9v-eTU1EepZl)*2V^FP-* z`X>`qEhM_@gQVJDe?a>}VB>z^Nx2^m2krPAF#K=@@*H-EY84%O0l&HN1G#eJ=i)(+ z6$+dHh{uulFFphK666WExoAT4R2w?V^mEKyJm~2`^X))NKu^E10{sK{{y#F} zJe08kISy#!{VzuRzfuXhMw9say#6|2Ki2+VsDzMd$YqBj#UM%p*a;3xL5Tsg^w0WW zbb0b`^$x74sRevLefY|0U^>xpadevDp^f@=#?(;Q&A;HmFOB>&6Ch9icNsr$9)5`I zpuhpXnVIGAOgA)0(i3M>liJ0 zA^1fKbsi#g@CN_E*T8D30?!f}8ib)ixH1~)I(-tXY%o~Jia>xgv~7|HKnVy099V7# zaLNbp!U23Fi-sJ3RzRW?UBDjYAb<#k8l0>^3kSVINn>EQ>gdMI0Z=G(50IYtUy*J?> z(_{&QBZMqO%#jEnp5|}?I8q2{g)kEouo6bX;Ru+RnXn+-%o6#ph!+zQ5&WHaw7vqE z59(@Ylm`VCE6Uy-T&u-=9$=F;=AiJ*oA8gxvV;pFkivqNFf%iR2pldXC@f@-K*EuL zZc8CCVT72lfT)lV9PzK{N5BLSztb-Rz~2LcL6j7LzaCKB1?VJ@XpB0e6DVN9Kc)r- z@{R>9tb~9dTOx$a5J+=T3j{(CEImsL@Fzk{3@&OZDE2QFARLTbNK8QFH<{70gn(>7 zDSF+V_XbWlC?kYc;$gtn^6>f{868!^KPF57s5l`6P!}RdFlu2SuLuia0U?+rLc|=b zNQ8xefS>>zSf4*ucW^-w7y_t~-$o#dLYF~4i#@oX*UTEE6ajS&ZiR<v(H0dHgPVgH7cvusnF%4y;DT_N zppXSZ$lO8@A!H?HCiHK}7ZnzTiT*A-hwJlD!Vhj9hw9USKtT~8j>Dk=z~WD-val2t zgo&65BF#jtM1gffz{TKJVlbGQFkDm&NU*3mSiV-m=KqF#I06n6`>UNiRF{D5vd}5E zpcEaX9Q<+TW@0d5xR9tNkP!r+2q_3YnFFmTA`C-_0Qo=wa|5L4UojaPDMIWw8IeU_ z84m3zp^zaePzK}!I7ra_;RmdTa`Paj6aFz-K#VP5f=E#TAPrWcaKLO)VRM*}h?pP( zAu1pY24XG%QBvjji$@}ckkkq*{WgqZs?Sm{vkz5J>GI79D&6TQQFh6gb;`9Ep832e z*@eShtel{sSZZ!{_cgUh$o4$3U@;Z_<+>{mGB@^Z77(^R>Z5fJ)i3h)*w)+C-+ked z-A}C&-ex(jR`JOudD{AEtb@ZNmG|^@)#EO)nMdxvAtD!XjNhsu4#|(ziSm8GE~YZy z8&vC=fANi?hAb`17dBzH7Jf6&s*t{5x@WyFzTc5)p{kgzEGdO4;8Z<$r^=aT>Fcud zt;h4^mviw26WdX4&PL-*>s6Km1r5TdYt9gSeF3|;^?gz@`dcPBrtyX-qUhx~O|UJs zTK3R8Z;^u0DrB;c>L=fbN|~Ev-KB&KYkIa%`qLz7K9f$~+nUxG)E0c&j89xYNBp`a zy(fi!#_+qpld}=OoTfpU>3I`1ea)rf+6&+015zs{m#isu$bL2Yh^(BeE(U@!%s6W)S{2X)z=8E z*7HR()1PlHBrVyCO<%m4us**dIy^E*AJ_Szc7MVsm)_RUTJVukw}PhK$kQCXr^;?T zZSI7sUp$*@?aL=-2xtxPV{k4U$#aW`$s%*$_3Nrw;s{=0vQjDYSMza?2#hjbT5>f{ z;Pjv6#_;um@o6#CKM*fZHW|Bo2G=4i$@lmSkw4ZdBiDEAcLYLg6@mDbN3-+X?)Mg5 zw3oIu@V)2b$>Z1996G7PR`VKD?e@{4e!te&^ipH5+QPK9{QfC4cxV{TNeZ}K76iNN^ z-I{blFNK$3jBFB9MfQaa9DGSr`aF2}cRb<(CdTX*Cq#F&gpb70$F(Y_6!0DHYQC!? zyDT6#C==-}P2A6gW7qv)C%QTIV&HDXLyIlVw_M+@JSENEq&fx9B#Uj3E=gsdRDV?C zVu<(XtXZbODGB{} z1ShP)KtY2A^9Tu7k*OWG<8!b2Bnz=c#{leHQe21JRjt@(=C$b)dH7j(IY{qo26G`B zLMJki&$!4=M(ZiE+t%YMv3}q8_32s~@#)sW#*mK8;(1JR5}w#-@r~JlkgaA?hpe3L z+5LN%y1oKevtph-8{AtGCNCp=6}`Uq0d;Urweps8-zW>36!eT)rsx+FxDdc(gXPa@#qHd+=(vq1^4`-be41 zl2la|izZUhvRhJcq%JBwI;Kv1O?;-SYm3`kf_sfq&-R8h<+ea*E|yY+KGIJn&v-=L z?wSaVguWz+f?H{H#(B4kr)Ev>I(jDe?dg2%`Zmc&#K17NwMu72VCu}ntfYuNLm1Zn z&CZSbHPM6OlR1JCN{n$QMz8f@jk4Aggx`sl(b7@;I@Yd~q+Fd+~wPJer{5^hG+^v~6Z8D&?BcH4lV9#>j%mC`&UBGpAaA&$8w`P$+5Sxv*GJOEA#?YIBaO z!;vedWrkd*;dPg|P`L*Ng_zt6xAob<P-|C*%W+Q-fJzy`c^7W z+VVFS_9ZWGJ&6~eriEzoZLsS&SbeGd+tuhC3vbhW=@Jp~eQW5wu2UB1x%=_$)U!x7 zbNY(&cXRj)^xx!le)xJ}!JzNKOa5}c5hG^JLCSKs(HA#HdroYtOI~0y>brD{Y1|^@ zz9!=*vY61lsfjFdhsF<>8$#{hr`2B-zphSyzg$BRiN_kBiGgWKZyogbI^CyZ!8$Kf zmTv2gdZ_g)aPq9MMbc7V`Cey9%k_|8wMbk<&G5RNkABD(`G`>Lm^^x`K1NK+!jnl*} zC!IC0WrAD@ERBwDo%GJS6D@_P3&elF5IEe>?Pyanagqun<0Toc3Wiw)zMRA;QP<|c z(7NTd`EOH^vZMJ$(wk*k(p4DZZrwzk@c}3I-@i4jejG|~k2@7|)<#d5G{khHr})${ z&0H7t{)Dw{Ph6K>t%1r051iexqAR(w5AXRRqh4zmk*Ru!Uq2EZ<1^kWA!RJwR~m`< zl79=EEmZ&Vfl7?_V;6E zmFUHHGmaP8->0t}#HyELB~W}6SwJ*P`*>q#5P4ytuxs?RFNH(F?$F$>%jl=hxJ$UV z^OcX?V9p)n%x1U!@=Ya#bibwpKI)gB(bT~m*=(26(NfXgZtUfb*_V*JuUYVJnMCrj z%6OQW5gWTKJT_0;^d{|owuQzMRV%la6E}v%t2_+#r9CG`gRY2?Fs_f^cvVKfdlfTC zT}{0XM!Qk57vB5;Lm~0x1L~va?-@r@$iC*eRkHkCmoU{qK<3kp7r04@&dVEB-PXr* zqZ+pOs_97#Sl4Y;(tD47T1~rtu3T@_pkpmfbLZ>{&C(|Cytfu111cgGt(CLUdLji1 z4<_kU22C5p%^JG~uG@TOD3COvRCRFvAhCa?rJ6AB)*GF#sZTFHmz=zgIoY-u*yDDj zYiF5vp|;AP&v2bZ(#*RL8L%H0PSoG=@*`2_cw*NH^K)cPIyB|qBEK6k&OXI3q;KE9 z`GWJ>y}sAC8Q|+m-N^LjyeCViIW@$-pBhysp}{D(rHrXopAs+I8M7_fw8$KU zJKQDJyKJZEhNMrH`Kr5zWi+5(combW?HOSmj0{8L-DmFT0F`GYQ6DFAST3+moMKfv z)}NtYl<6`v#@)4qK;jj=FPPIJRQNzNCanXM7w7J-bGx6?1p`ILBCRjuFy)#a(0MfLAxHE-wMlj~|p5@{Ii zsj2B`IM0GO!_O;Z%wPWKri@V48=i0PdGE-vZjL6r!6AA`t|&|#Fkmh-uanWd?6q5dqfWvcd7f(ShwMP`pyx|cVF zJ_(=dzkg+3cwymLKh|XNStM1XpWjz$2QFSoX{iz6?qk{b$vaa)=Vg3!28;3U5&J*a z!l4d*>(orPsU0F&3wZFIla+xaH^G^Tj4upEt)rCwlCbLxUY zcyr&i;Ig|SiSFaOi8HJQ_BXdPcZZ&3*||)m-#nr3oE)i+742?)MO}tuuxW%{ih5+wHegpe1tTSDs^%-nwm^=wUm?75zg0(q*dm2Bo{>-c zmA#h0Kw7%^)0G#6-(I;px$C_&_y8;3u+o~%iFul}mK`DJEvT>1$>4WkQRphBhjypq zFpPL~z>n}Ge^32WS+aQzxUmNFY?_T1J*-7^f&8vqV0y8o%$RTdg7Dpbx~CW`J1p$s zL0PO9`KqrgtJuBnUai=E`${V&MP1z{DRTVr`oni#q&BX~cR1ZQvrkfg2-eWb2%5Jm z!_R-1y1?LmM!pG|#i!)zCL~_VJRCvJQ{4YWS-{vmb@iC+<5&AhQ_6`v3PGGX_gZZP zIj@yaRh&9~8kfnL_}*t*`)k2bX7cKb8#WT=Fj{}!*m>gWOS5=uJbR&y0RvpV{OhVWqHL=%4$x`zW$BZyGPBo2{9u{YR80HrOpLjzL}PEvOD@Tk36lB zc#Q(nDzja_9gh#U>_a{^EspH6VzOXU1z893YgHfN_u9%Vo}{c#Zk@JY-^DriCe{Dz z+ne0GRYKJt5|mR(n5yX*pO$+kRqiyM_QcqD;`eR@X8x_Za1V3cN;UxOd86Bv8_tqp zNOkM4k#gMeCJoJJ{ybr`a_YFa6qC@))?1^7Z>q({K9)WTPcJJh4GfzqBob<ua7LTIZeiZOrA5DxowZK&WzzrsH*8r&h1RCp`btluyujlRcYF3OYFO_% zt~TOqSv&Qa_=#QO#&pEVad6vxO>mn-tH{B}&qw#hNecs3;L6`tQ>i~o7F@Zw7w)2N z#KW6Q!}-7-|ML0sudxYUeGs5~)%kWPjI3dQG5m4%<>~vI?Ljk-UY1K=>?m=9}{L*+1itAsv2US-NKW?GqvTe5pGXQ@RJ>1#w+7C zYrcwEYUJQF45z3n+9+cFo>h67;l=QdEALTw^Tw&#$t=abQVcqrwCsh zxlw(8JVG%{Io1B1Vt_$CowQI2jcbl2%f0!|O~=e zq_3Y)-7!3Q|3jE^%{#7YD$aJUaVbq_w3>pV}` zrg5$(vk21{4vvvtF23`eT9<&-qLs+=2@4}xzFn)Mn@clX<*buVu{;~@lnV2c*H&LD zMynWZA3MU@OMBF!ls-Au_Vw!Psgcrkr?IzdhS{gZBH4#tZ6Q)A-klNV^_VUg8w()H`uCH9v^nkKyQ=&@@fN zi(Cu^jJih@`yVFnDxL{b_RktTGxQ};Y)Pt)O|5qI;SHR&7cV}l?aNLScG!K5tQsSz z^2nHJ4KCVRnz@s7=Yfks!xXnIUjv zxh;dcM_duzl120Wp3_ zbfc-kP+|SyfUyh>m~!BNB≠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͆`pcs|Xn!zSL!<8-{p8Hyx-!Zsd^og0%e(;xJ=S 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 literal 0 HcmV?d00001 diff --git a/@GMS_EDEN/addons/3DEN_plugin/$PBOPREFIX$ b/@GMS_EDEN/addons/3DEN_plugin/$PBOPREFIX$ new file mode 100644 index 0000000..b696452 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/$PBOPREFIX$ @@ -0,0 +1 @@ +addons\3DENplugin \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Cfggms3DENDisplay-1.h b/@GMS_EDEN/addons/3DEN_plugin/Cfggms3DENDisplay-1.h new file mode 100644 index 0000000..05792eb --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Cfggms3DENDisplay-1.h @@ -0,0 +1,265 @@ +#include "Core\gms3DEN_defines.hpp" + +// Include Eden Editor UI macros +// For attributes, you'll be interested in these: +// ATTRIBUTE_TITLE_W - title width +// ATTRIBUTE_CONTENT_W - content width +#include "\a3\3DEN\UI\macros.inc" + + +#include "Core\gms3DEN_defines.hpp" + +// Include Eden Editor UI macros +// For attributes, you'll be interested in these: +// ATTRIBUTE_TITLE_W - title width +// ATTRIBUTE_CONTENT_W - content width +#include "\a3\3DEN\UI\macros.inc" + +class Default; +class Title: Default; +{ + class Controls + { + class Title; + }; +}; +class Checkbox; +class ctrlMenuStrip; +class ctrlMenu; + +class display3DEN +{ + class Controls + { + class MenuStrip: ctrlMenuStrip + { + class Items + { + // Additions to the menu strip to export missions and seek help + // ************************************************************ + items[] += {"GMS_configure","GMS_export","GMS_support"}; + + /* + The menu for exporting missions is defined here + */ + class GMS_export { + items[]= { + "GMS_exportDynamic" + }; + text = "Export Mission"; + toolTip = "Export GMS Missions"; + }; + class GMS_exportDynamic { + text = "Export Mission"; + //toolTip = "Export Dynamic Mission"; + action = "call gms3DEN_fnc_exportDynamic"; + picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + /* + menus for those seeking support are here + */ + class GMS_support { + items[] = { + "GMS_help", + "GMS_about" + }; + text = "Plugin Support"; + }; + class GMS_help { + text = "Help"; + action = "call gms3DEN_fnc_Help"; + //picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + class GMS_about { + text = "3EDEN Plugin Version 1.0 for GMS by Ghostrider-GRG-"; + action = "call blck3EDEN_fnc_about"; + }; + + + /* + All menus for configuring a GMS mission are defined here + */ + + class GMS_configure { + items[] = { + "GMS_difficulty", + "GMS_crateSpawn", + "GMS_lootSpawn", + "GMS_location_Respawns", + "GMS_MissionCompletionMode" + //"GMS_editMissionSettings" + }; + text = "Configure Mission"; + toolTip = "Adjust Mission Settings"; + }; + + class GMS_difficulty { + text = "Difficulty"; + toolTip = "Set Mission Difficulty"; + items[] = { + "GMS_difficultyBlue", + "GMS_difficultyRed", + "GMS_difficultyGreen", + "GMS_difficultyOrange" + }; + }; + class GMS_difficultyBlue + { + text = "Set Mission Difficutly to EASY (Blue)"; + action = "['Blue'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_blue; + }; + class GMS_difficultyRed + { + text = "Set Mission Difficulty to MEDIUM (Red)"; + action = "['Red'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_red; + }; + class GMS_difficultyGreen + { + text = "Set Mission Difficult To HARD (Green)"; + action = "['Green'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_green; + }; + class GMS_difficultyOrange + { + text = "Set Mission Difficulty to Very HARD (Orange)"; + action = "['Orange'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_orange; + }; + + class GMS_MissionCompletionMode + { + text = "Set the Criterial for Mission Completion"; + items[] = { + "GMS_playerNear", + "GMS_allUnitsKilled", + "GMS_allKilledOrPlayerNear", + "GMS_assetSecured" + }; + }; + class GMS_allUnitsKilled + { + text = "All AI Dead"; + toolTip = "Mission is complete only when All AI are Dead"; + action = "['allUnitsKilled'] call gms3DEN_fnc_setCompletionMode;"; + value = allUnitsKilled; + }; + class GMS_playerNear + { + text = "Player near mission center"; + toolTip = "MIssion is Complete when a player reaches the mission center"; + action = "['playerNear'] call gms3DEN_fnc_setCompletionMode;"; + value = playerNear; + }; + class GMS_allKilledOrPlayerNear + { + text = "Units Dead / Player @ Center"; + toolTip = "Mission is Complete when all units are dead or a player reaches mission center"; + action = "['allKilledOrPlayerNear'] call gms3DEN_fnc_setCompletionMode;"; + value = allKilledOrPlayerNear; + }; + class GMS_assetSecured + { + text = "Asset Secured"; + toolTip = "Mission is Complete when the asset is secured"; + action = "[assetSecured] call gms3DEN_fnc_setCompletionMode;"; + value = allKilledOrPlayerNear; + }; + class GMS_location_Respawns + { + text = "Set Mission Spawns (static vs random)"; + //action = "edit3DENMissionAttributes 'setAsStaticMission'"; + items[] = { + "GMS_dynamicMission", + "GMS_staticMission" + }; + }; + class GMS_dynamicMission + { + text = "Configure as Dynamic Mission"; + action = "['dynamic'] call gms3DEN_fnc_setSpawnLocations"; + }; + class GMS_staticMission + { + text = "Configure Static Mission"; + action = "['static'] call gms3DEN_fnc_setSpawnLocations"; + }; + class GMS_crateSpawn { + text = "Set When Crates Spawn"; + toolTip = "Set when crates are spawned"; + items[] = { + "GMS_atMissionSpawnGround", + "GMS_atMissionSpawnAir", + "GMS_atMissionEndGround", + "GMS_atMissionEndAir" + }; + }; + class GMS_atMissionSpawnGround + { + text = "At Spawn Ground"; + toolTip = "Crates are spawned on the ground at mission startup"; + action = "['atMissionSpawnGround'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + class GMS_atMissionSpawnAir + { + text = "At Spawn Air"; + toolTip = "Crates are spawned in the air at mission startup"; + action = "['atMissionSpawnAir'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + class GMS_atMissionEndGround + { + text = "At End Ground"; + toolTip = "Crates are spawned on the ground at mission completion"; + action = "['atMissionEndGround'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + class GMS_atMissionEndAir + { + text = "At End Air"; + toodTip = "Crates are spawned in the air at mission completion"; + action = "['atMissionEndAir'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + + class GMS_lootSpawn { + text = "Set timing for loading crates"; + items[] = { + "GMS_atMissionSpawn", + "GMS_atMissionCompletion" + }; + }; + class GMS_atMissionSpawn + { + text = "At Spawn"; + toolTip = "Load crates when the mission spawns"; + action = "['atMissionSpawn'] call gms3DEN_fnc_setLoadCratesTiming"; + }; + class GMS_atMissionCompletion + { + text = "At Completion"; + toolTip = "Load crates when the mission is complete"; + action = "['atMissionCompletion'] call gms3DEN_fnc_setLoadCratesTiming"; + }; + + class GMS_static { + text = "Set if Mission is Static/Dynamic"; + toolTip = "Toggle between static and random mission locations"; + items[] = { + "GMS_setToDynamic", + "GMS_setToStatic" + }; + }; + class GMS_setToDynamic { + text = "Dynamic"; + toolType = "Set mission to be spawned at random location"; + action = "['dynamic'] call gms3DEN_fnc_toggleStaticSpawns"; + }; + class GMS_setToStatic { + text = "Static"; + toolTip = "Set mission to respawn at the same location each time"; + action = "['static'] call gms3DEN_fnc_toggleStaticSpawns"; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_AttributeSaveLootVehColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_AttributeSaveLootVehColor.sqf new file mode 100644 index 0000000..e245ee3 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_AttributeSaveLootVehColor.sqf @@ -0,0 +1,6 @@ + + + _object setVariable["gmsGarrisonColor",_colorOn]; + if (_colorOn) then { + {_object setObjectTexture [_x,gms3DENlootVehicleTexture]} forEach (count (getObjectTextures _object)); + }; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_about.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_about.sqf new file mode 100644 index 0000000..297b61b --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_about.sqf @@ -0,0 +1,4 @@ + +private _m= format["About called at %1",diag_tickTime]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer copy.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer copy.sqf new file mode 100644 index 0000000..e15af7a --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer copy.sqf @@ -0,0 +1,23 @@ +/* + Returns the builing containing an object or objNull + By Ghostrider-GRG- + Copyright 2020 +*/ + +params["_u",["_category","House"]]; +private _pos = getPosASL _u; +private _building = objNull; +private _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10]; + +{ + if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; +} forEach _surfacesAbove; +if (_building isEqualTo objNull) then +{ + private _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; + { + if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; + } forEach _surfacesBelow; +}; + +_building \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer.sqf new file mode 100644 index 0000000..41f360b --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_buildingContainer.sqf @@ -0,0 +1,15 @@ +/* + Returns the builing containing an object or objNull + By Ghostrider-GRG- + Copyright 2020 +*/ +params["_u",["_category","House"]]; +private _pos = getPosASL _u; +private _building = objNull; +private _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10]; +private _surfacesBelow = lineIntersectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 100],_u,_u,true,10]; +{ + if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; +} forEach _surfacesAbove + _surfacesbelow; +diag_log format["_buildingContainer: _u = %1| _buildig = %2",_u,_building]; +_building diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_configureGarrisonATL.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_configureGarrisonATL.sqf new file mode 100644 index 0000000..8f08148 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_configureGarrisonATL.sqf @@ -0,0 +1,87 @@ + +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params[ + "_building", // An object to be evaluated as a possible location of a garrison + "_turrets", // A list of turrets known to be inside something + "_groups"]; // A list of groups that are known to be inside something + +diag_log format["configureGarrisonATL Line 10: _this = %1",_this]; +diag_log format["configureGarrisonATL Line 11: _building = %1",_building]; +diag_log format["configureGarrisonATL Line 12: _center = %1",_center]; +diag_log format["configureGarrisonATL Line 13: _turrets = %1",_turrets]; +diag_log format["configureGarrisonATL Line 14: count _groups = %1 | _groups = %2",count _groups, _groups]; + +private _pos = _building get3DENAttribute "position"; + +private _count = 0; +private _staticsText = []; +private _unitsText = []; +private _buildingGarrisonATL = []; +private _configuredStatics = []; +private _configuredUnits = []; +private _lineBreak = toString [10]; + +for "_i" from 1 to (count _turrets) do +{ + if (_turrets isEqualTo []) exitWith {}; + private _tur = _turrets deleteAt 0; + //_configuredStatics pushBackUnique _tur; + private _pos = getPosATL _tur; + private _dir = getDir _tur; + private _center = getPosATL _container; + private _offset = _center vectorDiff _pos; + diag_log format["fn_configureGarisonATL Line 39: getPosATL _tur = %1 | getPosATL _container = %2",_pos,_center]; + _staticsText pushBack [format['%1',typeOf _tur],_offset,_dir]; + diag_log format["fn_configureGarisonATL Line 41: updated _staticsText to %1",_staticsText]; +}; +_staticsText joinString _lineBreak; + +for "_i" from 1 to (count _groups) do +{ + if (_groups isEqualTo []) exitWith {}; + private _grp = _groups deleteAt 0; + private _inside = false; + // assume there is a group of 1 and that the leader of the group is in the position to be guarded + private _unit = leader _group; + //_configuredUnits pushBackUnique _unit; + private _pos = getPosATL _unit; + private _center = getPosATL _container; + private _offset = _pos vectorDiff _center; + private _dir = getDir _unit; + _unitsText pushBack [_offset,_dir]; + diag_log format["configureGarrisonATL Line 50: added unit %1 to garison for building %2",_unit,_container]; + diag_log format["configureGarrisonATL Line 53: updated _unitsText to %1",_unitsText]; +}; +_unitsText joinString _lineBreak; + +if !((_staticsText isEqualTo []) && (_unitsText isEqualTo [])) then +{ + private _allowDamage = (_building get3DENAttribute "allowDamage") select 0; + private _enableSimulation = (_building get3DENAttribute "enableSimulation") select 0; + diag_log format["configureGarrisonATL: _building %1 | damage %2 | simulation %3",_allowDamage,_enableSimulation]; + _buildingGarrisonATL = [ + format["%1", + typeOf _building], + (getPosATL _building) vectorDiff _center, + getDir _building, + _allowDamage, + _enableSimulation, + _staticsText, + _unitsText + ]; +}; + +private "_return"; +if (_buildingGarrisonATL isEqualTo []) then +{ + _return = []; +} else { + _return = [_buildingGarrisonATL,_configuredStatics,_configuredUnits]; +}; +_return diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_display.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_display.sqf new file mode 100644 index 0000000..62ed6b0 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_display.sqf @@ -0,0 +1,13 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +params["_message"]; + +// As found in fn_3DENExportTerrainBuilder.sqf +//private _message = ["this is ","an array"]; +private _lineBreak = toString [10]; +uiNameSpace setVariable ["Display3DENCopy_data", ["missionName.sqf", _message joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_displayGarrisonMarkers.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_displayGarrisonMarkers.sqf new file mode 100644 index 0000000..c94aa26 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_displayGarrisonMarkers.sqf @@ -0,0 +1,30 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +params["_state"]; +all3DENEntities params ["_objects"]; +_objects = _objects select {_x getVariable["garrisoned",false]}; + +missionNameSpace setVariable["blck_displayGarrisonMarkerOn",_state]; +{ + if (_state) then // if the request was to show the markers then .... + { + private _marker = _x getVariable["marker",""]; + diag_log format["_x = %1 | _marker = %2",_x,_marker]; + if (_marker isEqualto "") then + { + [_x] call gms3DEN_fnc_createGarrisonMarker; + [_x] call gms3DEN_fnc_setEventHandlers; + }; + } else { + blck_displayGarrisonMarkerOn = false; + if !(_x getVariable["marker",""] isEqualTo "") then + { + [_x] call gms3DEN_fnc_removeMarker; + }; + }; + +} forEach _objects; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_displayLootMarkers.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_displayLootMarkers.sqf new file mode 100644 index 0000000..97b1ed2 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_displayLootMarkers.sqf @@ -0,0 +1,27 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +params["_state"]; +all3DENEntities params ["_objects"]; +_objects = _objects select {_x getVariable ["lootVehicle",false]}; + +missionNamespace setVariable["blck_displayLootMarkerOn",_state]; +{ + if (_state) then // if the request was to show the markers then .... + { + if (_x getVariable["marker",""] isEqualto "") then + { + [_x] call gms3DEN_fnc_createLootMarker; + [_x] call gms3DEN_fnc_setEventHandlers; + }; + } else { + if !(_x getVariable["marker",""] isEqualTo "") then + { + [_x] call gms3DEN_fnc_removeMarker; + }; + }; + +} forEach _objects; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_endMessage.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_endMessage.sqf new file mode 100644 index 0000000..543bf6b --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_endMessage.sqf @@ -0,0 +1,10 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_end"]; +missionNamespace setVariable["blck_endMessage",_end]; +systemChat format["End Message set to %1",_end]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic copy.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic copy.sqf new file mode 100644 index 0000000..a25182d --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic copy.sqf @@ -0,0 +1,558 @@ +/* + GMS 3DEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +private _m = "Staring exportDynamic.sqf"; +systemChat _m; +diag_log _m; +Mission_CENTER = [0,0,0]; +#define oddsOfGarrison 0.67 +#define maxGarrisonUnits 4 +GMS_objectAtMissionCenter = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "objectAtMissionCenter"); +GMS_minAI = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "minAI"); +GMS_maxAI = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxAI"); +GMS_minPatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "minPatroRadius"); +GMS_maxPatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxPatrolRadius"); +GMS_maxVehiclePatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxVehiclePatrolRadius"); +GMS_aircraftPatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "aircraftPatrolRadius"); +GMS_garisonMarkerObject = "Sign_Sphere100cm_F"; +GMS_oddsOfGarison = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "oddsOfGarison"); +GMS_maxGarrisonStatics = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxGarrisonStatics"); +GMS_typesGarrisonStatics = getArray(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "typesGarrisonStatics"); +GMS_lootVehicleVariableName = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "lootVehicleVariableName"); +GMS_buildingPosGarrisonVariableName = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "buildingPosGarrisonVariableName"); +GMS_buildingATLGarrisionVariableName = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "buildingATLGarrisionVariableName"); + +/* + Set Default Values Where not Defined using Menu Commands +*/ +if (isNil "GMS_missionLocations") then +{ + GMS_missionLocations = "random"; +}; +if (isNil "GMS_difficulty") then +{ + GMS_difficulty = "Red"; +} else { + diag_log format["Line 36: typeName GMS_difficulty = %1 | GMS_difficulty = %2",typeName GMS_difficulty, GMS_difficulty]; + if (GMS_difficulty in [1,2,3,4]) then + { + GMS_difficulty = ["Blue","Red","Green","Orange"] select GMS_difficulty; + }; + diag_log format["Line 41: typeName GMS_difficulty = %1 | GMS_difficulty = %2",typeName GMS_difficulty, GMS_difficulty]; +}; +if (isNil "GMS_dynamicStartMessage") then +{ + GMS_dynamicStartMessage = "TODO: Change approiately"; +}; +if (isNil "GMS_dynamicEndMessage") then +{ + GMS_dynamicEndMessage = "TODO: Change Appropriately"; +}; +if (isNil "GMS_dynamicCrateLoot") then +{ + GMS_dynamicCrateLoot = format["_crateLoot = blck_BoxLoot_%1;",GMS_difficulty]; +}; +if (isNil "GMS_dynamicCrateLootCounts") then { + GMS_dynamicCrateLootCounts = format["_lootCounts = bGMS_lootCounts%1;",GMS_difficulty]; +}; +if (isNil "GMS_dynamicmarkerMissionNamet") then +{ + GMS_dynamicmarkerMissionName = "TODO: Update appropriately"; +}; +if (isNil "GMS_spawnCratesTiming") then +{ + GMS_spawnCratesTiming = "atMissionStartGround"; +}; +if (isNil "GMS_loadCratesTiming") then +{ + GMS_loadCratesTiming = "atMissionStart"; +}; +if (isNil "GMS_missionEndCondition") then +{ + GMS_missionEndCondition = "allUnitsKilled"; +}; +switch (GMS_missionEndCondition) do +{ + case "GMS_playerNear": {GMS_missionEndCondition = playerNear}; + case "GMS_allUnitsKilled": {GMS_missionEndCondition = allUnitsKilled}; + case "GMS_allKilledOrPlayerNear": {GMS_missionEndCondition = allKilledOrPlayerNear}; + case "GMS_assetSecured": {GMS_missionEndCondition = assetSecured}; +}; + +/* + Look for an object defined in Cfggms3DEN \ configs \ that marks the center of the mission + and set the coords of the center if such an object is found +*/ +all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; + +// Relax what is an object at mission center somehow? +// Maybe using inheritsFrom? +diag_log format["exportDynamic line 90: GMS_objectAtMissionCenter = %1",GMS_objectAtMissionCenter]; +private _centerMarkerObject = objNull; +{ + diag_log format["exportDynamic: evaluating objects for one that is to set mission center where the object is of typeOf %1", typeOf _x]; + if ((typeOf _x) isEqualTo GMS_objectAtMissionCenter) exitwith + { + _centerMarkerObject = _x; + diag_log format["exportDynamic Line 97: _x = %1 | _centerMarkerObject = %2", _x, _centerMarkerObject]; + }; +} forEach _objects; + +diag_log format["Line 100: _centerMarkerObject = %1 | GMS_objectAtMissionCenter = %2",_centerMarkerObject, GMS_objectAtMissionCenter]; + +if !(isNull _centerMarkerObject) then +{ + private _objPos = (_centerMarkerObject get3DENAttribute "position") select 0; + private _objType = typeOf _centerMarkerObject; + Mission_CENTER = _objPos; + diag_log format["CENTER defined by object %1 typeOf %2 located at %3",_obj,_objType,_objPos]; +} else { + diag_log format[" No object marking the center of the mission was found: using an object defined in 'objectAtMissionCenter' is recommended",getText(configFile >> "CfgVehicles" >> objectAtMissionCenter >> "displayName")]; + diag_log format["Place such an object or a marker to ensure the mission is accurately stored and spawned"]; +}; + +private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha"]; +/* + pull info on the first marker found + If Mission_CENTER was not set above then try to set it based on the first marker identified. +*/ + +if (_markers isEqualTo []) then +{ + diag_log "No Marker Found, no Marker Definitions Will Be generated"; +} else { + private _m1 = _markers select 0; + _markerPosition = (_m1 get3DENAttribute "Position") select 0; // Returns expected value + _markerText = (_m1 get3DENAttribute "Text") select 0; // Returns expected value + _markerColor = (_m1 get3DENAttribute "baseColor") select 0; //Returns Null + _markerShape = (_m1 get3DENAttribute "markerType") select 0; // Returns [-1] if not a rectangular or elipsoid marker] + _markerAlpha = _m1 get3DENAttribute "alpha"; + _markerType = (_m1 get3DENAttribute "itemClass") select 0; // Returns "" if not an icon type marker + _markerBrush = (_m1 get3DENAttribute "brush") select 0; + _markerSize = (_m1 get3DENAttribute "size2") select 0; + _markerRotation = (_m1 get3DENAttribute "rotation") select 0; + + /* + use the coordinates of that marker as mission center of no object demarkating the center is found + */ + if (Mission_CENTER isEqualTo [0,0,0]) then { + Mission_CENTER = _markerPosition; + diag_log format["Position of marker %1 used for position of CENTER = %2",_m,Mission_CENTER]; + }; + if (count _markers > 1) then + { + diag_log format[" More than one marker was found; only the first marker was processed"]; + }; +}; + +_m = format["Line 152: Mission_CENTER = %1",Mission_CENTER]; +systemChat _m; +diag_log _m; + +diag_log format["Line 156: _objects = %1",_objects]; +GMS_defaultMissionLocations = if (toLower(missionNameSpace getVariable["GMS_missionSpawnMode","dynamic"]) isEqualTo "StaticWeapon") then {Mission_Center} else {[]}; +diag_log format["Line 161: GMS_defaultMissionLocations = %1",GMS_defaultMissionLocations]; +GMS_simpleObjects = []; +GMS_uavs = []; +GMS_ugvs = []; +_tanks = []; +GMS_carsTrucks = []; +GMS_submersibles = []; +GMS_aircraft = []; +GMS_boats = []; +GMS_carsTrucks = []; +GMS_turrets = []; +GMS_buildings = []; +GMS_landscape = []; +GMS_crates = []; +GMS_garrisonGroups = []; +GMS_infantryGroups = []; +GMS_garrisonATL = []; +GMS_missionLandscape = []; + +// Remove any groups that were assigned to vehicles or turrets as the mission system will add these. + +private _countGroups = count _groups; +private _totalGroups = count _groups; +private _groupsProcessed = 0; +private _totalObjectsCount = count _objects; +private _objectsProcessed = 0; + +// Run through objects and move any turrents to a separate array. +for "_i" from 1 to (count _objects) do +{ + if (_i > (count _objects)) exitWith {}; + private _obj = _objects deleteAt 0; + if (_obj isKindOf "StaticWeapon") then + { + GMS_turrets pushBack _obj; + diag_log format["exportDynamic Line 197: adding object %1 to GMS_turrets",_obj]; + } else { + _objects pushBack _obj; + }; +}; + +// Run through Objects and remove any vehicles (land, air or sea), ammo crates or simple objects +for "_i" from 1 to (count _objects) do +{ + if (_i > (count _objects)) exitWith {}; + private _obj = _objects deleteAt 0; + private _processed = false; + if ((_obj get3DENAttribute "objectIsSimple") select 0 && !_processed) then { + GMS_simpleObjects pushBack _obj; + diag_log format["exportDynamic Line 242: adding %1 to _simpleObjects | _simpleObjects = %2",typeOf _obj, GMS_simpleObjects]; + _processed = true; + }; + private _vehicleClass = getText(configFile >> "CfgVehicles" >> typeOf _obj >> "vehicleclass"); + diag_log format["exportDynamic Line 210: typeOf _obj %1 | _vehicleClass %1",typeOf _obj, _vehicleclass]; + if ((_obj isKindOf "Car" || _obj isKindOf "Tank") && !_processed) then + { + // vehicleClass = "Autonomous"; + if (_vehicleClass isEqualTo "Autonomous") then + { + diag_log format["exportDynamic Line 211: object %1 added to GMS_ugvs",_obj]; + GMS_ugvs pushBack _obj; + } else { + diag_log format["exportDynamic Line 213: object %1 added to GMS_carsTrucks",_obj]; + GMS_carsTrucks pushBack _obj; + }; + _processed = true; + }; + if (_obj isKindOf "Air" && !_processed) then + { + if (_vehicleClass isEqualTo "Autonomous") then + { + diag_log format["exportDynamic Line 228: object %1 added to GMS_uavs",_obj]; + GMS_uavs pushBack _obj; + } else { + GMS_aircraft pushBack _obj; + }; + _processed = true; + }; + if (_obj isKindOf "Ship" && !_processed) then + { + if (toLower (_vehicleClass) isEqualTo "submarine") then + { + diag_log format["exportDynamice Line 237: object %1 added to GMS_submersibles",_obj]; + GMS_submersibles pushBack _obj; + } else { + diag_log format["exportDynamic Line 240: object %1 added to GMS_carsTrucks",_obj]; + GMS_carsTrucks pushBack _obj; + }; + _processed = true; + }; + if (_obj isKindOf "FloatingStructure_F" && !_processed) then { + GMS_landscape pushBack _obj; + diag_log format["exportDynnamic case of FloatingStructure Line 247: adding %1 | type of %2 to GMS_landscape",_obj, typeOf _obj]; + _processed = true; + }; + if (_obj isKindOf "Items_base_F" && !_processed) then { + diag_log format["exportDynamic case of thing isKindOf Items_base_F line 253 - adding object %1 to GMS_landscape",_obj]; + GMS_landscape pushBack _obj; + _processed = true; + }; + if (_obj isKindOf "ReammoBox_F" && !_processed) then { + if (_obj isKindOf "VirtualReammoBox_F") then { + diag_log format["exportDynamic case of thing isKindOf VirtualReammoBox_F line 258 - adding object %1 to GMS_landscape",_obj]; + GMS_landscape pushBack _obj; + _processed = true; + } else { + diag_log format["exportDynamic case of thing isKindOf ReammoBox line 263 - adding object %1 to GMS_crates",_obj]; + GMS_crates pushBack _obj; + _processed = true; + }; + }; + if (_obj isKindOf "Static" && !_processed) then { + diag_log format["exportDynamic case of static is typeOf %1 line 282 - adding object to GMS_landscape",typeOf _obj]; + GMS_landscape pushBack _obj; + _processed = true; + }; + + // if !_process then the object did not qualify for any of these and should be added back to the list for further processing + if !(_processed) then {_objects pushBack _obj}; +}; + +// Run through the buildings first to pull out and properly position any groups or turrets inside them. +for "_i" from 1 to (count _objects) do +{ + if (_i > (count _objects)) exitWith {}; + if (_obj isKindOf "Building") then + { + diag_log format["exportDynamic case of Building with _obj = %1 | typeOf _obj = %2",_obj, typeOf _obj]; + private _isGarrisoned = false; + // Search for any turrets located within the building + private _turretsATL = []; + for "_i" from 1 to (count GMS_turrets) do + { + if (_i > (count GMS_turrets)) exitWith {}; + private _tur = GMS_turrets deleteAt 0; + if [_tur] call gms3DEN_fnc_isInside then + { + _isGarrisoned = true; + _turretsATL pushBack _tur; + }; + }; + diag_log format["exportDynamic %1 turrets found in _obj %2",count _turretsATL,_obj]; + + private _groupsATL = []; + for "_i" from 1 to (count _groups) do + { + if (_i > (count _groups)) exitWith {}; + private _grp = _groups deleteAt 0; + private _inside = false; + { + if ([_x] call gms3DEN_fnc_isInside) then {_inside = true}; + if (_inside) exitWith {}; + } forEach (units _grp); + if (_inside) then {_groupsATL pushBack _grp}; + }; + diag_log format["exportDynamic %1 groups found in _obj %2",count _groupsATL,_obj]; + + if (_turretsATL isEqualTo [] && _groupsATL isEqualTo []) then + { + diag_log format["exportDynamic: no garrison found for %1, addiing it to GMS_buildings",_obj]; + GMS_buildings pushBack _obj; + } else { + private _gar = [_obj, _turretsATL, _groupsATL] call gms3DEN_fnc_configureGarrisonATL; + diag_log format["exportDynamic: garrison found for %1, adding configs for it to GMS_garrisonATL",_obj]; + diag_log format["exportDynamice: usiing the folloing config: %1",_gar]; + GMS_garrisonATL pushBack _gar; + }; + _objectsProcessed = _objectsProcessed + 1; + }; +}; + +// setup an array with any static weapons not placed in buildings +for "_i" from 1 to (count _objects) do +{ + if (_objects isEqualTo []) exitWith {}; + private _obj = _objects deleteAt 0; + if (_obj isKindOf "StaticWeapon") then { + GMS_turrets pushBack _obj; + diag_log format["exportDynamic case of StaticWeapon Line 241: adding %1 to GMS_turrets", typeOf _obj]; + } else { + _objects pushBack _obj; + }; +}; + +// At this point we can assume that any groups left in _groups is neither in a vehicle nor inside a building so just do the assignment of the global variable +// without scanning for where each group is. + +GMS_groups = _groups; +_groupsProcess = _groupsProcessed + (count _groups); + +// Do some housekeeping - logging the output so far. +{ + private _var = missionNameSpace getVariable[_x,[]]; + diag_log format["Line 364: _var %1 | count %2 | values %3",_x,count _var,_var]; +} forEach["GMS_crates","GMS_landscape","GMS_buildings","GMS_turrets","GMS_carsTrucks","GMS_boats","GMS_aircraft","GMS_simpleObjects","GMS_groups","GMS_uavs","GMS_ugvs"]; + +GMS_missionSimpleObjects = []; +{ + GMS_missionSimpleObjects pushBack format[' ["%1",%2,%3]', + (_x get3DENAttribute "ItemClass") select 0, + ((_x get3DENAttribute "position") select 0) vectorDiff Mission_CENTER, + ((_x get3DENAttribute "rotation") select 0) select 2 + ]; + diag_log format["_object = %1",_object]; +} forEach GMS_simpleObjects; +diag_log format["Line 425: GMS_simpleObjects -> count %1 | contents %2",count GMS_simpleObjects,GMS_simpleObjects]; + +/* +private _missionLootVehicles = []; +private _lootVehicles = _objects select { + ((typeOf _x) isKindOf "AllVehicles") && + !((typeOf _x) isKindOf "Man") && + (_x getVariable["lootvehicle",false]) +}; + +diag_log format["_lootVehicles = %1",_lootVehicles]; +{ + _missionLootVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; +} forEach _lootVehicles; +*/ + + +GMS_missionPatrolVehicles = []; +{ + GMS_missionPatrolVehicles pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER,getDir _x]; +}forEach GMS_carsTrucks + GMS_ugvs; +diag_log format["Line 446: GMS_missionPatrolVehicles -> count %1 | contents %2",count GMS_missionPatrolVehicles,GMS_missionPatrolVehicles]; + +GMS_subPatrols = []; +{ + GMS_subPatrols pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER,getDir _x]; +} forEach GMS_submersibles; +diag_log format["Line 452: count GMS_submersibles = %1 | GMS_submersibles = %2",count GMS_submersibles, GMS_submersibles]; + +GMS_airPatrols = []; +{ + GMS_airPatrols pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER,getDir _x]; +} forEach GMS_aircraft + GMS_uavs; +diag_log format["Line 452: count GMS_airPatrols = %1 | GMS_airPatrols = %2",count GMS_airPatrols, GMS_airPatrols]; + +GMS_staticWeapons = []; +{ + GMS_staticWeapons pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER,getDir _x]; +} forEach GMS_turrets; +diag_log format["Line 375: GMS_staticWeapons -> count %1 | contents %2",count GMS_staticWeapons,GMS_staticWeapons]; + +diag_log format["Line 392: count GMS_groups = %1 | GMS_groups = %2",count GMS_groups,GMS_groups]; +GMS_infantryGroups = []; +GMS_scubaGroups = []; +{ + _unit = leader _x; + if (_surfaceIsWater) then { + diag_log format["Line 472: adding group %1 to GMS_scubaGroups",_x]; + GMS_scubaGroups pushBack format[' [%1,%2,%3,"%4"]',(getPosATL _unit) vectorDiff Mission_CENTER,blck_minAI,blck_maxAI,GMS_difficulty]; + } else { + diag_log format["Line 475: adding group %1 to GMS_infantryGroups",_x]; + GMS_infantryGroups pushBack format[' [%1,%2,%3,"%4"]',(getPosATL _unit) vectorDiff Mission_CENTER,blck_minAI,blck_maxAI,GMS_difficulty]; + }; +} forEach GMS_groups; +diag_log format["Line 479: GMS_infantryGroups -> count %1 | contents %2",count GMS_infantryGroups,GMS_infantryGroups]; +diag_log format["Line 480: GMS_scubaGroups -> count %1 | contents %2",count GMS_scubaGroups,GMS_scubaGroups]; + +GMS_lootContainers = []; +{ + diag_log format["Line 484: adding %1 to GMS_lootContainers",_x]; + GMS_lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER, '_crateLoot','_lootCounts',getDir _x]; +}forEach GMS_crates; +diag_log format["Line 487: GMS_lootContainers -> count %1 | contents %2",count GMS_lootContainers,GMS_lootContainers]; + +GMS_objectsToSpawn = []; +{ + diag_log format["Line 442: adding %1 to GMS_objectsToSpawn",_x]; + GMS_objectsToSpawn pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER,getDir _x]; +} forEach GMS_landscape; + +diag_log format["exportDynamic Line 489: all data organized, formating text output"]; +private _lines = []; +private _lineBreak = toString [10]; + +_lines pushBack "/*"; +_lines pushBack " Dynamic Mission Generated"; +_lines pushBack " Using 3DEN Plugin for blckeagls"; +_lines pushBack format[" %1",['dynamic'] call gms3DEN_fnc_versionInfo]; +_lines pushBack " By Ghostrider-GRG-"; +_lines pushBack "*/"; +_lines pushBack ""; + +//GMS_missionLocations +switch (GMS_missionLocations) do +{ + case 'random': {GMS_defaultMissionLocations = []}; + case 'fixed': {GMS_defaultMissionLocations = [Mission_CENTER]}; +}; +_lines pushBack '#include "\GMS\Compiles\Init\GMS_defines.hpp"'; +_lines pushBack '#include "\GMS\Missions\GMS_privateVars.sqf" '; +_lines pushBack ""; +_lines pushBack format["_defaultMissionLocations = %1;",GMS_defaultMissionLocations]; +_lines pushBack format["_maxMissionRespawns = -1; // Chage this to either zero for no respawns or a positive number if you want to limit the number of times a mission spawns at the same location"]; + +if (_markerType isEqualTo "") then +{ + _markerType = ["rectangle","elipse"] select _markerShape; +}; +_lines pushBack format["_markerType = %1",format['["%1",%2,"%3"];',_markerType,_markerSize,_markerBrush]]; +_lines pushBack format['_markerColor = "%1";',_markerColor]; + +_lines pushBack format['_startMsg = "%1";',GMS_dynamicStartMessage]; +_lines pushBack format['_endMsg = "%1";',GMS_dynamicEndMessage]; +_lines pushBack format['_markerMissionName = "%1";',_markerText]; +_lines pushBack format['_crateLoot = GMS_BoxLoot_%1;',GMS_difficulty]; +_lines pushBack format['_lootCounts = GMS_lootCounts%1;',GMS_difficulty]; +_lines pushBack ""; +_lines pushBack "_garrisonedBuilding_ATLsystem = ["; +_lines pushBack (GMS_garrisonATL joinString (format[",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLandscape = ["; +_lines pushback (GMS_objectsToSpawn joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_simpleObjects = ["; +_lines pushback (GMS_missionSimpleObjects joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootVehicles = ["; +_lines pushBack (GMS_missionLootVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionPatrolVehicles = ["; +_lines pushback (GMS_missionPatrolVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_submarinePatrolParameters = ["; +_lines pushback (GMS_subPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_airPatrols = ["; +_lines pushback (GMS_airPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionEmplacedWeapons = ["; +_lines pushback (GMS_staticWeapons joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionGroups = ["; +_lines pushback (GMS_infantryGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_scubaGroupParameters = ["; +_lines pushback (GMS_scubaGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootBoxes = ["; +_lines pushback (GMS_lootContainers joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "/*"; +_lines pushBack " Use the parameters below to customize your mission - see the template or blck_configs.sqf for details about each them"; +_lines pushBack "*/"; +_lines pushBack format["_chanceHeliPatrol = GMS_chanceHeliPatrol%1;",GMS_difficulty]; +_lines pushBack format["_noChoppers = GMS_noPatrolHelis%1;",GMS_difficulty]; +_lines pushBack format["_missionHelis = GMS_patrolHelis%1;",GMS_difficulty]; +_lines pushBack format["_chancePara = GMS_chancePara%1;",GMS_difficulty]; +_lines pushBack format["_noPara = GMS_noPara%1;",GMS_difficulty]; +_lines pushBack format["_paraTriggerDistance = 400;"]; +//_lines pushBack format["_paraSkill = '%1';",0.7]; +_lines pushBack format["_chanceLoot = 0.0;"]; +_lines pushBack format["_paraLoot = GMS_BoxLoot_%1;",GMS_difficulty]; +_lines pushBack format["_paraLootCounts = GMS_lootCounts%1;",GMS_difficulty]; +_lines pushBack format['_missionLandscapeMode = "precise";']; +_linse pushBack "_useMines = GMS_useMines;"; +_lines pushBack "_uniforms = GMS_SkinList;"; +_lines pushBack "_headgear = GMS_headgear;"; +_lines pushBack "_vests = GMS_vests;"; +_lines pushBack "_backpacks = GMS_backpacks;"; +_lines pushBack "_sideArms = GMS_Pistols;"; +_lines pushBack format['_spawnCratesTiming = "%1";',GMS_spawnCratesTiming]; +_lines pushBack format['_loadCratesTiming = "%1";',GMS_loadCratesTiming]; +diag_log format["Line 520: typeName GMS_missionEndCondition = %1 | GMS_missionEndCondition = = %2",typeName GMS_missionEndCondition,GMS_missionEndCondition]; +_lines pushBack format['_endCondition = %1;', GMS_missionEndCondition]; +_lines pushBack format["_minNoAI = GMS_MinAI_%1;",GMS_difficulty]; +_lines pushBack format["_maxNoAI = GMS_MaxAI_%1;",GMS_difficulty]; +_lines pushBack format["_noAIGroups = GMS_AIGrps_%1;",GMS_difficulty]; +_lines pushBack format["_noVehiclePatrols = GMS_SpawnVeh_%1;",GMS_difficulty]; +_lines pushBack format["_noEmplacedWeapons = GMS_SpawnEmplaced_%1;",GMS_difficulty]; +_lines pushBack "_submarinePatrols = 0; // Default number of submarine patrols at pirate missions"; +_lines pushBack "_scubaPatrols = 0; // Default number of scuba diver patrols at pirate missions"; +_lines pushBack ""; + +_lines pushBack '#include "\GMS\Compiles\Missions\GMS_fnc_missionSpawner.sqf";'; + +diag_log ["dynamic"] call blck3EDEN_fnc_versionInfo; +uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; + +private _m = format["exportDynamic.sqf: reached line 367"]; +systemChat _m; +diag_log _m; +_m = "Exported Mission copied to clipboard"; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic.sqf new file mode 100644 index 0000000..8c734e5 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_exportDynamic.sqf @@ -0,0 +1,463 @@ +/* + GMS 3DEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +private _m = "Staring exportDynamic.sqf"; +systemChat _m; +diag_log _m; +Mission_CENTER = [0,0,0]; +#define oddsOfGarrison 0.67 +#define maxGarrisonUnits 4 +GMS_objectAtMissionCenter = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "objectAtMissionCenter"); +GMS_minAI = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "minAI"); +GMS_maxAI = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxAI"); +GMS_minPatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "minPatroRadius"); +GMS_maxPatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxPatrolRadius"); +GMS_maxVehiclePatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxVehiclePatrolRadius"); +GMS_aircraftPatrolRadius = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "aircraftPatrolRadius"); +GMS_garisonMarkerObject = "Sign_Sphere100cm_F"; +GMS_oddsOfGarison = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "oddsOfGarison"); +GMS_maxGarrisonStatics = getNumber(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "maxGarrisonStatics"); +GMS_typesGarrisonStatics = getArray(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "typesGarrisonStatics"); +GMS_lootVehicleVariableName = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "lootVehicleVariableName"); +GMS_buildingPosGarrisonVariableName = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "buildingPosGarrisonVariableName"); +GMS_buildingATLGarrisionVariableName = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "buildingATLGarrisionVariableName"); + +/* + Set Default Values Where not Defined using Menu Commands +*/ +if (isNil "GMS_missionLocations") then +{ + GMS_missionLocations = "random"; +}; +if (isNil "GMS_difficulty") then +{ + GMS_difficulty = "Red"; +} else { + diag_log format["Line 36: typeName GMS_difficulty = %1 | GMS_difficulty = %2",typeName GMS_difficulty, GMS_difficulty]; + if (GMS_difficulty in [1,2,3,4]) then + { + GMS_difficulty = ["Blue","Red","Green","Orange"] select GMS_difficulty; + }; + if (GMS_difficulty isEqualTo "") then { + GMS_difficulty isEqualTo "Red"; + }; + diag_log format["Line 41: typeName GMS_difficulty = %1 | GMS_difficulty = %2",typeName GMS_difficulty, GMS_difficulty]; +}; +if (isNil "GMS_dynamicStartMessage") then +{ + GMS_dynamicStartMessage = "TODO: Change approiately"; +}; +if (isNil "GMS_dynamicEndMessage") then +{ + GMS_dynamicEndMessage = "TODO: Change Appropriately"; +}; +if (isNil "GMS_dynamicCrateLoot") then +{ + GMS_dynamicCrateLoot = format["_crateLoot = blck_BoxLoot_%1;",GMS_difficulty]; +}; +if (isNil "GMS_dynamicCrateLootCounts") then { + GMS_dynamicCrateLootCounts = format["_lootCounts = bGMS_lootCounts%1;",GMS_difficulty]; +}; +if (isNil "GMS_dynamicmarkerMissionNamet") then +{ + GMS_dynamicmarkerMissionName = "TODO: Update appropriately"; +}; +if (isNil "GMS_spawnCratesTiming") then +{ + GMS_spawnCratesTiming = "atMissionStartGround"; +}; +if (isNil "GMS_loadCratesTiming") then +{ + GMS_loadCratesTiming = "atMissionStart"; +}; +if (isNil "GMS_missionEndCondition") then +{ + GMS_missionEndCondition = "allUnitsKilled"; +}; +switch (GMS_missionEndCondition) do +{ + case "GMS_playerNear": {GMS_missionEndCondition = playerNear}; + case "GMS_allUnitsKilled": {GMS_missionEndCondition = allUnitsKilled}; + case "GMS_allKilledOrPlayerNear": {GMS_missionEndCondition = allKilledOrPlayerNear}; + case "GMS_assetSecured": {GMS_missionEndCondition = assetSecured}; +}; + +/* + Look for an object defined in Cfggms3DEN \ configs \ that marks the center of the mission + and set the coords of the center if such an object is found +*/ +all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; + +// Relax what is an object at mission center somehow? +// Maybe using inheritsFrom? +diag_log format["exportDynamic line 90: GMS_objectAtMissionCenter = %1",GMS_objectAtMissionCenter]; +private _centerMarkerObject = objNull; +{ + diag_log format["exportDynamic: evaluating objects for one that is to set mission center where the object is of typeOf %1", typeOf _x]; + if ((typeOf _x) isEqualTo GMS_objectAtMissionCenter) exitwith + { + _centerMarkerObject = _x; + diag_log format["exportDynamic Line 97: _x = %1 | _centerMarkerObject = %2", _x, _centerMarkerObject]; + }; +} forEach _objects; + +diag_log format["Line 100: _centerMarkerObject = %1 | GMS_objectAtMissionCenter = %2",_centerMarkerObject, GMS_objectAtMissionCenter]; + +if !(isNull _centerMarkerObject) then +{ + private _objPos = (_centerMarkerObject get3DENAttribute "position") select 0; + private _objType = typeOf _centerMarkerObject; + Mission_CENTER = _objPos; + diag_log format["CENTER defined by object %1 typeOf %2 located at %3",_obj,_objType,_objPos]; +} else { + diag_log format[" No object marking the center of the mission was found: using an object defined in 'objectAtMissionCenter' is recommended",getText(configFile >> "CfgVehicles" >> objectAtMissionCenter >> "displayName")]; + diag_log format["Place such an object or a marker to ensure the mission is accurately stored and spawned"]; +}; + +private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha"]; +/* + pull info on the first marker found + If Mission_CENTER was not set above then try to set it based on the first marker identified. +*/ + +if (_markers isEqualTo []) then +{ + diag_log "No Marker Found, no Marker Definitions Will Be generated"; +} else { + private _m1 = _markers select 0; + _markerPosition = (_m1 get3DENAttribute "Position") select 0; // Returns expected value + _markerText = (_m1 get3DENAttribute "Text") select 0; // Returns expected value + _markerColor = (_m1 get3DENAttribute "baseColor") select 0; //Returns Null + _markerShape = (_m1 get3DENAttribute "markerType") select 0; // Returns [-1] if not a rectangular or elipsoid marker] + _markerAlpha = _m1 get3DENAttribute "alpha"; + _markerType = (_m1 get3DENAttribute "itemClass") select 0; // Returns "" if not an icon type marker + _markerBrush = (_m1 get3DENAttribute "brush") select 0; + _markerSize = (_m1 get3DENAttribute "size2") select 0; + _markerRotation = (_m1 get3DENAttribute "rotation") select 0; + + /* + use the coordinates of that marker as mission center of no object demarkating the center is found + */ + if (Mission_CENTER isEqualTo [0,0,0]) then { + Mission_CENTER = _markerPosition; + diag_log format["Position of marker %1 used for position of CENTER = %2",_m,Mission_CENTER]; + }; + if (count _markers > 1) then + { + diag_log format[" More than one marker was found; only the first marker was processed"]; + }; +}; + +private _m = format["Line 152: Mission_CENTER = %1",Mission_CENTER]; +systemChat _m; +diag_log _m; + +diag_log format["Line 156: _objects = %1",_objects]; +GMS_defaultMissionLocations = if (toLower(missionNameSpace getVariable["GMS_missionSpawnMode","dynamic"]) isEqualTo "StaticWeapon") then {Mission_Center} else {[]}; +diag_log format["Line 161: GMS_defaultMissionLocations = %1",GMS_defaultMissionLocations]; + +// Pull the list of Turrets out of _objects +GMS_staticWeapons = []; +GMS_turretsATL = []; +private _turrets = _objects select {_x isKindOf "StaticWeapon"}; +{ + private _obj = _x; + //private _isGarrison = _obj getVariable["gmsIsGarrison",false]; + private _isGarrison = _obj call gms3DEN_fnc_isInside; + diag_log format["_exportDynamic (188): for StaticWeapon _obj %` _isGarrison = %2",_obj,_isGarrison]; + if (_isGarrison) then { + GMS_turretsATL pushBack _obj; + } else { + GMS_staticWeapons pushBack format[' ["%1",%2,%3]',typeOf _obj,(getPosATL _obj) vectorDiff Mission_CENTER,getDir _obj]; + }; +} forEach _turrets; + +diag_log format["Line 181: count GMS_staticWeapons = %1 | count GMS_turretsATL = %2",count GMS_staticWeapons, count GMS_turretsATL]; +diag_log format["Line 182: count _groups = %1",count _groups]; +GMS_units = []; +GMS_unitsATL = []; +{ + private _group = _x; + private _units = units _group; + { + private _unit = _x; + if (vehicle _unit isEqualTo _unit) then + { + //private _isGarrisoned = _unit getVariable["gmsIsGarrison",false]; + private _isGarrisoned = _unit call gms3DEN_fnc_isInside; + if (_isGarrisoned) then { + GMS_unitsATL pushBack _unit; + } else { + GMS_units pushBack _unit; + }; + }; + } forEach _units; + //GMS_units pushBack (units _x); +} forEach _groups; +diag_log format["Line 198: count GMS_units = %1 | count GMS_unitsATL = %2",count GMS_units, count GMS_unitsATL]; + +private _props = _objects select {!(_x isKindOf "ReammoBox_F") && (_x isKindOf "FloatingStructure_F" || _x isKindOf "Items_base_F" || _x isKindOf "Thing" || _x isKindOf "Static")}; +diag_log format["Line 201: count _props = %1",count _props]; +GMS_garrisonedBuildings = []; +GMS_objectsToSpawn = []; +GMS_missionSimpleObjects = []; +// Get list of garrisoned buildings based on their attributes +{ + private _obj = _x; + if (_obj get3DENAttribute "objectIsSimple" select 0) then { + diag_log format["Line 209: adding simpleObject displayName %1",getText(configFile >> "CfgVehicles" >> typeOf _obj >> "displayName")]; + GMS_missionSimpleObjects pushBack format[' ["%1",%2,%3]', + (_obj get3DENAttribute "ItemClass") select 0, + ((_obj get3DENAttribute "position") select 0) vectorDiff Mission_CENTER, + ((_obj get3DENAttribute "rotation") select 0) select 2 + ]; + } else { + private _isGarrison = _obj getVariable["gmsIsGarrison",false]; + diag_log format["_exportDynamic(207): for Object %1 typeOf %3 _isGarrison = %2",_obj,_isGarrison,getText(configFile >> "CfgVehicles" >> typeOf _obj >> "displayName")]; + private _turrets = []; + private _units = []; + { + private _building = [_x] call gms3DEN_fnc_buildingContainer; + diag_log format["Line 225: _obj = %1 | _building = %2", _obj,_building]; + if (_obj isEqualTo _building) then { + private _unit = _x; + private _pos = getPosATL _unit; + private _center = getPosATL _building; + private _offset = _pos vectorDiff _center; + private _dir = getDir _unit; + _units pushBack [_offset,_dir]; + }; + } forEach GMS_unitsATL; + diag_log format["Line 234: for building %1 located at %2 _units = %3",_building,getPos _building,_units]; + { + private _building = [_x] call gms3DEN_fnc_buildingContainer; + diag_log format["Line 225: _obj = %1 | _building = %2", _obj,_building]; + if (_obj isEqualTo _building) then { + private _tur = _x; + private _pos = getPosATL _tur; + private _dir = getDir _tur; + private _center = getPosATL _building; + private _offset = _center vectorDiff _pos; + _turrets pushBack [format['%1',typeOf _tur],_offset,_dir]; + }; + } forEach GMS_turretsATL; + diag_log format["Line 246: for building %1 located at %2 _turrets = %3",_building, getPos _building,_turrets]; + + if ((_turrets isEqualTo []) && (_units isEqualTo [])) then + { + /* + Treat this like an ordinary building + */ + GMS_objectsToSpawn pushBack format[' ["%1",%2,%3]',typeOf _obj,(getPosATL _obj) vectorDiff Mission_CENTER,getDir _obj]; + } else { + /* + Treat this like a garrisoned building + */ + private _building = _obj; + private _allowDamage = (_building get3DENAttribute "allowDamage") select 0; + private _enableSimulation = (_building get3DENAttribute "enableSimulation") select 0; + diag_log format["Line 249: _building %1 | damage %2 | simulation %3",_allowDamage,_enableSimulation]; + _buildingGarrisonATL = [ + format["%1", + typeOf _building], + getPosATL _building, + getDir _building, + _allowDamage, + _enableSimulation, + _turrets, + _units + ]; + GMS_garrisonedBuildings pushBack _buildingGarrisonATL; + diag_log format["Line 274: count ", count GMS_garrisonedBuildings, [_buildingGarrisonATL,_configuredStatics,_configuredUnits]]; + }; + }; +} forEach _props; + +private _vehicles = _objects select {_x isKindOf "Car" || _x isKindOf "Tank" || _x isKindOf "Ship"}; +GMS_missionPatrolVehicles = []; +GMS_lootVehicles = []; +GMS_subPatrols = []; +{ + private _obj = _x; + private _isLoot = _obj getVariable["gmsIsLootVehicle",false]; + diag_log format["_exportDynamic (227): for LandVehicle %1 _isLoot = %2",_obj,_isLoot]; + if (_isLoot) then + { + GMS_lootVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _obj,(getPosATL _obj) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _obj]; + } else { + if (_obj isKindOf "SDV_01_base_F") then { + GMS_subPatrols pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff Mission_CENTER,getDir _x]; + } else { + GMS_missionPatrolVehicles pushBack format[' ["%1",%2,%3]',typeOf _obj,(getPosATL _obj) vectorDiff Mission_CENTER,getDir _obj]; + }; + }; +} forEach _vehicles; + +private _aircraft = _objects select {_x isKindOf "Air"}; +// Run through objects and format any for output +GMS_airPatrols = []; +{ + private _obj = _x; + GMS_airPatrols pushBack format[' ["%1",%2,%3]',typeOf _obj,(getPosATL _obj) vectorDiff Mission_CENTER,getDir _obj]; +} forEach _aircraft; + +diag_log format["Line 254: GMS_difficulty = %1 | GMS_minAI = %2 | GMS_maxAI = %3", GMS_difficulty, GMS_minAI, GMS_maxAI]; +// Run through groups and sort them based on whether they still have units and if they are/are not in a building. +GMS_infantryGroups = []; +GMS_scubaGroups = []; +{ + private _unit = _x; + private _isInVehicle = if (vehicle _unit isEqualTo _unit) then {false} else {true}; + private _isSurfaceWater = surfaceIsWater (position _unit); + diag_log format["Line 261: _unit = %1 | _isInVehicle = %2 | _isSurfaceWater = %3",_unit, _isInVehicle, _isSurfaceWater]; + if !(_isInVehicle) then { + if (_isSurfaceWater) then { + GMS_scubaGroups pushBack format[' [%1,%2,%3,"%4"]',(getPosATL _unit) vectorDiff Mission_CENTER,GMS_minAI,GMS_maxAI,GMS_difficulty]; + } else { + GMS_infantryGroups pushBack format[' [%1,%2,%3,"%4"]',(getPosATL _unit) vectorDiff Mission_CENTER,GMS_minAI,GMS_maxAI,GMS_difficulty]; + }; + }; +} forEach GMS_units; + +diag_log format["_exportDynamic (288): count _objects = %1",count _objects]; // are there any objects left to process ? + +private _lootBoxes = _objects select {_x isKindOf "ReammoBox_F"}; +// Run through objects and put any Ammo Crates in a separate array +GMS_lootContainers = []; +{ + private _obj = _x; + GMS_lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _obj,(getPosATL _obj) vectorDiff Mission_CENTER, '_crateLoot','_lootCounts',getDir _obj]; +} forEach _lootBoxes; + +diag_log format["_exportDynamic (303): count _objects = %1",count _objects]; // did we capture them all? + +diag_log format["exportDynamic Line 489: all data organized, formating text output"]; +private _lines = []; +private _lineBreak = toString [10]; + +_lines pushBack "/*"; +_lines pushBack " Dynamic Mission Generated"; +_lines pushBack " Using 3DEN Plugin for GMS by Ghostrider"; +_lines pushBack format[" %1",['dynamic'] call gms3DEN_fnc_versionInfo]; +_lines pushBack " By Ghostrider-GRG-"; +_lines pushBack "*/"; +_lines pushBack ""; + +//GMS_missionLocations +switch (GMS_missionLocations) do +{ + case 'random': {GMS_defaultMissionLocations = []}; + case 'fixed': {GMS_defaultMissionLocations = [Mission_CENTER]}; +}; +_lines pushBack '#include "\GMS\Compiles\Init\GMS_defines.hpp"'; +_lines pushBack '#include "\GMS\Missions\GMS_privateVars.sqf" '; +_lines pushBack ""; +_lines pushBack format["_defaultMissionLocations = %1;",GMS_defaultMissionLocations]; +_lines pushBack format["_maxMissionRespawns = -1; // Chage this to either zero for no respawns or a positive number if you want to limit the number of times a mission spawns at the same location"]; + +if (_markerType isEqualTo "") then +{ + _markerType = ["rectangle","elipse"] select _markerShape; +}; +_lines pushBack format["_markerType = %1",format['["%1",%2,"%3"];',_markerType,_markerSize,_markerBrush]]; +_lines pushBack format['_markerColor = "%1";',_markerColor]; + +_lines pushBack format['_startMsg = "%1";',GMS_dynamicStartMessage]; +_lines pushBack format['_endMsg = "%1";',GMS_dynamicEndMessage]; +_lines pushBack format['_markerMissionName = "%1";',_markerText]; +_lines pushBack format['_crateLoot = GMS_BoxLoot_%1;',GMS_difficulty]; +_lines pushBack format['_lootCounts = GMS_lootCounts%1;',GMS_difficulty]; +_lines pushBack ""; +_lines pushBack "_garrisonedBuilding_ATLsystem = ["; +_lines pushBack (GMS_garrisonedBuildings joinString (format[",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLandscape = ["; +_lines pushback (GMS_objectsToSpawn joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_simpleObjects = ["; +_lines pushback (GMS_missionSimpleObjects joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootVehicles = ["; +_lines pushBack (GMS_lootVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionPatrolVehicles = ["; +_lines pushback (GMS_missionPatrolVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_submarinePatrolParameters = ["; +_lines pushback (GMS_subPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_airPatrols = ["; +_lines pushback (GMS_airPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionEmplacedWeapons = ["; +_lines pushback (GMS_staticWeapons joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionGroups = ["; +_lines pushback (GMS_infantryGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_scubaGroupParameters = ["; +_lines pushback (GMS_scubaGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootBoxes = ["; +_lines pushback (GMS_lootContainers joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "/*"; +_lines pushBack " Use the parameters below to customize your mission - see the template or blck_configs.sqf for details about each them"; +_lines pushBack "*/"; +_lines pushBack format["_chanceHeliPatrol = GMS_chanceHeliPatrol%1;",GMS_difficulty]; +_lines pushBack format["_noChoppers = GMS_noPatrolHelis%1;",GMS_difficulty]; +_lines pushBack format["_missionHelis = GMS_patrolHelis%1;",GMS_difficulty]; +_lines pushBack format["_chancePara = GMS_chancePara%1;",GMS_difficulty]; +_lines pushBack format["_noPara = GMS_noPara%1;",GMS_difficulty]; +_lines pushBack format["_paraTriggerDistance = 400;"]; +//_lines pushBack format["_paraSkill = '%1';",0.7]; +_lines pushBack format["_chanceLoot = 0.0;"]; +_lines pushBack format["_paraLoot = GMS_BoxLoot_%1;",GMS_difficulty]; +_lines pushBack format["_paraLootCounts = GMS_lootCounts%1;",GMS_difficulty]; +_lines pushBack format['_missionLandscapeMode = "precise";']; +_linse pushBack "_useMines = GMS_useMines;"; +_lines pushBack "_uniforms = GMS_SkinList;"; +_lines pushBack "_headgear = GMS_headgear;"; +_lines pushBack "_vests = GMS_vests;"; +_lines pushBack "_backpacks = GMS_backpacks;"; +_lines pushBack "_sideArms = GMS_Pistols;"; +_lines pushBack format['_spawnCratesTiming = "%1";',GMS_spawnCratesTiming]; +_lines pushBack format['_loadCratesTiming = "%1";',GMS_loadCratesTiming]; +diag_log format["Line 520: typeName GMS_missionEndCondition = %1 | GMS_missionEndCondition = = %2",typeName GMS_missionEndCondition,GMS_missionEndCondition]; +_lines pushBack format['_endCondition = %1;', GMS_missionEndCondition]; +_lines pushBack format["_minNoAI = GMS_MinAI_%1;",GMS_difficulty]; +_lines pushBack format["_maxNoAI = GMS_MaxAI_%1;",GMS_difficulty]; +_lines pushBack format["_noAIGroups = GMS_AIGrps_%1;",GMS_difficulty]; +_lines pushBack format["_noVehiclePatrols = GMS_SpawnVeh_%1;",GMS_difficulty]; +_lines pushBack format["_noEmplacedWeapons = GMS_SpawnEmplaced_%1;",GMS_difficulty]; +_lines pushBack "_submarinePatrols = 0; // Default number of submarine patrols at pirate missions"; +_lines pushBack "_scubaPatrols = 0; // Default number of scuba diver patrols at pirate missions"; +_lines pushBack ""; + +_lines pushBack '#include "\GMS\Compiles\Missions\GMS_fnc_missionSpawner.sqf";'; + +diag_log ["dynamic"] call blck3EDEN_fnc_versionInfo; +uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; + +private _m = format["exportDynamic.sqf: reached line 367"]; +systemChat _m; +diag_log _m; +_m = "Exported Mission copied to clipboard"; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getLootVehicleInfo.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getLootVehicleInfo.sqf new file mode 100644 index 0000000..5aa7721 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getLootVehicleInfo.sqf @@ -0,0 +1,31 @@ + +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "Car" || (typeOf _x) isKindOf "Ship" || (typeOf _x) isKindOf "ThingX"}; +private "_message"; + + if (_objects isEqualTo []) then + { + _message = "No Cars/Ships/ThingX Selected"; +} else { + if (count _objects == 1) then + { + if ((_objects select 0) getVariable["lootvehicle",false]) then + { + _message = format["Vehicle %1 IS a Loot Vehicle",typeOf (_objects select 0)]; + } else { + _message = format["Vehicle %1 is NOT a Loot Vehicle",typeOf (_objects select 0)]; + }; + } else { + _message = format["% Vehicles Selected. Select a single vehicle then try again",count _objects]; + }; +}; + systemChat _message; + diag_log _message; +[_message,"Status"] call BIS_fnc_3DENShowMessage; + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionGarrisonInfo.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionGarrisonInfo.sqf new file mode 100644 index 0000000..19ebc9f --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionGarrisonInfo.sqf @@ -0,0 +1,11 @@ + +private _objects = get3DENSelected "object" select {((typeOf _x) isKindOf "House") && [_x] call BIS_fnc_isBuildingEnterable}; +private _lines = []; +private _lineBreak = toString [10]; +{ + _message pushBack format["Garrison Flag for Building type %1 at %2 = %3",typeOf _x,getPosATL _x,_x getVariable["garrisoned",false]]; +} forEach _objects; + +uiNameSpace setVariable ["Display3DENCopy_data", ["garrisonedBuildings.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf new file mode 100644 index 0000000..1b81631 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf @@ -0,0 +1,11 @@ + + +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "Car"}; +private _lines = []; +private _lineBreak = toString [10]; +{ + _message pushBack format["Loot Vehicle Flag for Vehicle type %1 at %2 = %3",typeOf _x,getPosATL _x,_x getVariable["garrisoned",false]]; +} forEach _objects; + +uiNameSpace setVariable ["Display3DENCopy_data", ["lootVehicles.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_help.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_help.sqf new file mode 100644 index 0000000..ae4af38 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_help.sqf @@ -0,0 +1,9 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +private _m = format["Help called at %1",diag_tickTime]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_initialize.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_initialize.sqf new file mode 100644 index 0000000..87b18ae --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_initialize.sqf @@ -0,0 +1,5 @@ + + +diag_log format["fn_initialize loaded at %1",diag_tickTime]; +call gms3DEN_fnc_initializeAttributes; +diag_log call gms3DEN_fnc_versioninfo; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_initializeAttributes.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_initializeAttributes.sqf new file mode 100644 index 0000000..b08aed8 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_initializeAttributes.sqf @@ -0,0 +1,23 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +GMS_difficulty = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "defaultMissionDifficulty"); +diag_log format["configs returned defaultMissionDifficulty = %1",GMS_difficulty]; +GMS_lootcrateSpawnTiming = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "defaultLootcrateSpawnTiming"); +diag_log format["configs returned defaultLootcrateSpawnTiming = %1",GMS_lootcrateSpawnTiming]; +GMS_lootcrateLoadTiming = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "defaultLootcrateLoadTiming"); +diag_log format["configs returned defaultLootcrateLoadTiming = %1",GMS_lootcrateLoadTiming]; +GMS_missionEndState = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "defaultMissionEndState"); +diag_log format["configs returned defaultMissionEndState = %1",GMS_missionEndState]; +GMS_startMessage = "TODO: Add a start message"; +GMS_endMessage = "TODO: Add an end message"; +GMS_missionLocations = "random"; +gms3DENGarrisonTexture = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "colorGarrisonObject"); +diag_log format["configs returned %1 as the color for garrisoned objects",gms3DENGarrisonTexture]; +gms3DENlootVehicleTexture = getText(configFile >> "CfgGMS3DEN" >> "CfgDefaults" >> "colorLootObject"); +diag_log format["configs returned %1 as the color for loot objects such as vehicles",gms3DENlootVehicleTexture]; +diag_log format["Mission Attributes Initialized for GMS at time %1",diag_tickTime]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInVehicle.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInVehicle.sqf new file mode 100644 index 0000000..b51a420 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInVehicle.sqf @@ -0,0 +1,6 @@ + + +params["_unit"]; +private _vehicle = vehicle _unit; +private _isInVehicle = if (_unit isEqualTo _vehicle) then {true} else {false}; +_isInVehicle \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryGroup.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryGroup.sqf new file mode 100644 index 0000000..d25b526 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryGroup.sqf @@ -0,0 +1,17 @@ + +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + + private _group = _this select 0; + private _units = units _group; + private _isInfantry = true; + { + private _isInside = [_u] call gms3DEN_fnc_isInside; + _isInfantry = if ((_u isKindOf "Man") && (vehicle _u) isEqualTo _u && !(_isInside)) then {true} else {false}; + if !(_isInfantry) exitWith {}; + } forEach _units; + _isInfantry \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryUnit.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryUnit.sqf new file mode 100644 index 0000000..b167ef7 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInfantryUnit.sqf @@ -0,0 +1,14 @@ + +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + + private _u = _this select 0; + private _isInside = [_u] call gms3DEN_fnc_isInside; + private _isInVehicle = [_u] call gms3DEN_fnc_isInVehicle; + private _isInfantry = if (_isInside || _isInVehicle) then {false} else {true}; + + _isInfantry \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInside.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInside.sqf new file mode 100644 index 0000000..51cfbe5 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_isInside.sqf @@ -0,0 +1,19 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_u"]; +diag_log format["fn_isInside: _u = %1",_u]; + +private _pos = getPosASL _u; +private _above = AGLToASL [_pos select 0, _pos select 1, (_pos select 2) + 100]; +private _below = AGLtoASL [_pos select 0, _pos select 1, (_pos select 2) - 10]; +private _objAbove = lineIntersects [_pos, _above, _u,_u]; +private _objBelow = lineIntersects [_pos, _below, _u,_u]; +private _isInside = if (_objAbove || _objBelow) then {true} else {false}; +diag_log format["fn_isInside: _u = %4 | _objAbove = %1 | _objBelow = %2 | _isInside %3",_objAbove,_objBelow,_isInside,_u]; +_isInside + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrison.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrison.sqf new file mode 100644 index 0000000..986a0c9 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrison.sqf @@ -0,0 +1,4 @@ + + +params["_control","_value"]; +diag_log format["_onAttributeLoadGarrisons: _control = %1 | _value = %2",_control,_value]; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrisonColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrisonColor.sqf new file mode 100644 index 0000000..9c706ea --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadGarrisonColor.sqf @@ -0,0 +1,4 @@ + + +params["_control","_value"]; +diag_log format["_onAttributeLoadGarrisonsColor: _control = %1 | _value = %2",_control,_value]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVeh.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVeh.sqf new file mode 100644 index 0000000..a4158e6 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVeh.sqf @@ -0,0 +1,4 @@ + + +params["_control","_value"]; +diag_log format["_onLoadAttributeLoadLootVeh: _control = %1 | _value = %2",_control,_value]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVehColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVehColor.sqf new file mode 100644 index 0000000..223eaca --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeLoadLootVehColor.sqf @@ -0,0 +1,4 @@ + + +params["_control","_value"]; +diag_log format["_onLoadAttributeLoadLootVehColor: _control = %1 | _value = %2",_control,_value]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrison.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrison.sqf new file mode 100644 index 0000000..d2669b2 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrison.sqf @@ -0,0 +1,10 @@ + +params["_isGarrison"]; +private _isGarrison; +private _selectedObjects = get3DENSelected "object"; +diag_log format["onAttributeSaveGarrison: _isGarrison %1 | _selectedObjects %2",_isGarrison,_selectedObjects]; +if (count _selecteObjects == 1) then { + private _object = _selectedObjects select 0; + private _isGarrison = _object getVariable["gmsIsGarrison",false]; + _object setVariable["gmsIsGarrison",_isGarrison]; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrisonColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrisonColor.sqf new file mode 100644 index 0000000..02a2aff --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveGarrisonColor.sqf @@ -0,0 +1,15 @@ + +params["_control"]; +private _isColorOn = ctrlChecked _control; +private _selectedObjects = get3DENSelected "object"; +diag_log format["onAttributeSaveGarrisonColor: _control %1 | _isGarrison %2 | _selectedObjects %3",_control,_isColorOn,_selectedObjects]; +if (count _selecteObjects == 1) then { + private _object = _selectedObjects select 0; + private _isGarrison = _object getVariable["gmsIsGarrison",false]; + _object setVariable["gmsGarrisonColor",_isColorOn]; + if (_isColor && _isGarrison) then { + {_object setObjectTexture [_x,gms3DENGarrisonTexture]} forEach (count (getObjectTextures _object)); + } else { + {_object setObjectTexture [_x,""]} forEach (count (getObjectTextures _object)); + }; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVeh.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVeh.sqf new file mode 100644 index 0000000..6931fa5 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVeh.sqf @@ -0,0 +1,12 @@ + + +params["_control"]; +private _isLootVeh = ctrlChecked _control; +private _selectedObjects = get3DENSelected "object"; +diag_log format["onAttributeSaveLootVeh: _control %1 | _isGarrison %2 | _selectedObjects %3",_control,_isLootVeh,_selectedObjects]; +if (count _selecteObjects == 1) then { + private _object = _selectedObjects select 0; + _object setVariable["gmsIsLootVehicle",_isLootVeh]; +} else { + ["Changes not applied: you can only configure one object at a time","ERROR"] call BIS_fnc_3DENShowMessage; +}; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVehColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVehColor.sqf new file mode 100644 index 0000000..ea7183e --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onAttributeSaveLootVehColor.sqf @@ -0,0 +1,16 @@ + +params["_control"]; +private _isColorOn = ctrlChecked _control; +private _selectedObjects = get3DENSelected "object"; +diag_log format["onAttributeSaveLootVehColor: _control %1 | _isGarrison %2 | _selectedObjects %3",_control,_isColorOn,_selectedObjects]; +if (count _selecteObjects == 1) then { + private _object = _selectedObjects select 0; + private _isLootVeh = _object getVariable["gmsIsLootVehicle",false]; + _object setVariable["gmsLootVehicleColor",_isColorOn]; + if (_isColor && gmsIsLootVehicle) then { + {_object setObjectTexture [_x,gms3DENlootVehicleTexture]} forEach (count (getObjectTextures _object)); + } else { + {_object setObjectTexture [_x,""]} forEach (count (getObjectTextures _object)); + }; +}; + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onDrag.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onDrag.sqf new file mode 100644 index 0000000..353942d --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onDrag.sqf @@ -0,0 +1,13 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +params["_object"]; +if !(_object getVariable["marker",""] isEqualTo "") then +{ + private _marker = _object getVariable["marker",""]; + private _markerPos = getPosATL _object; + _marker setPosATL[_markerPos select 0, _markerPos select 1, (_markerPos select 2) + sizeOf _object]; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrison.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrison.sqf new file mode 100644 index 0000000..0345382 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrison.sqf @@ -0,0 +1,33 @@ +/* + + +params ["_displayOrControl", ["_config", configNull]]; +ⓘ +The order of initialisation is as follows: + + Topmost config class (control class) + Last config class + Display + +This means that during the onLoad event of the upper controls the lower controls do not exist! + +*/ + +params ["_displayOrControl", ["_config", configNull]]; +private _selectedObjects = get3DENSelected "object"; +diag_log format["onLoadGarrison: _selectedObjects = %1",_selectedObjects]; + +private "_isGarrison"; +if (count _selectedObjects == 1) then { + private _object = (_selectedObjects select 0); + _isGarrison = _object getVariable["gmsIsGarrison",true]; + _displayOrControl cbSetChecked _isGarrison; + diag_log format["_isGarrisson = %1 | _obj = %2",_isGarrison,_object]; +} else { + _displayOrControl cbSetChecked false; + ["You can configure Garrison Status for only ONE vehicle at a time","ERROR"] call BIS_fnc_3DENShowMessage; +}; + + + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrisonColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrisonColor.sqf new file mode 100644 index 0000000..de1d6e6 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadGarrisonColor.sqf @@ -0,0 +1,16 @@ + + +params ["_displayOrControl", ["_config", configNull]]; +private _selectedObjects = get3DENSelected "object"; +diag_log format["onLoadGarrisonColor: _selectedObjects = %1",_selectedObjects]; + +private "_colorOn"; +if (count _selectedObjects == 1) then { + private _object = (_selectedObjects select 0); + _colorOn = _object getVariable["gmsGarrisonColor",false]; + _displayOrControl cbSetChecked _colorOn; + diag_log format["_colorOn = %1 | _obj = %2",_colorOn,_object]; +} else { + _displayOrControl cbSetChecked false; + ["You can configure Garrison Status for only ONE vehicle at a time","ERROR"] call BIS_fnc_3DENShowMessage; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVeh.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVeh.sqf new file mode 100644 index 0000000..cba5f48 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVeh.sqf @@ -0,0 +1,12 @@ + + +params ["_displayOrControl", ["_config", configNull]]; +private _selectedObjects = get3DENSelected "object"; + +if (count _objects == 1) then +{ + _displayOrControl cbSetChecked ((_objects select 0) getVariable["gmsIsLootVehicle",false]); +} else { + _displayOrControl cbSetChecked false; + ["You can configure Loot Vehicle Status for only ONE vehicle at a time","ERROR"] call BIS_fnc_3DENShowMessage; +}; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVehColor.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVehColor.sqf new file mode 100644 index 0000000..7381b22 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onLoadLootVehColor.sqf @@ -0,0 +1,12 @@ + + +params ["_displayOrControl", ["_config", configNull]]; +private _selectedObjects = get3DENSelected "object"; + +if (count _objects == 1) then +{ + _displayOrControl cbSetChecked ((_objects select 0) getVariable["gmsLootVehicleColor",false]); +} else { + _displayOrControl cbSetChecked false; + ["You can configure Loot Vehicle Status for only ONE vehicle at a time","ERROR"] call BIS_fnc_3DENShowMessage; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onRegistered.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onRegistered.sqf new file mode 100644 index 0000000..363c5f4 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onRegistered.sqf @@ -0,0 +1,28 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_object"]; + +switch (true) do +{ + case ((typeOf _object) isKindOf "ThingX" && blck_displayLootMarkerOn): { + if !(_object getVariable["lootVehicle",""] isEqualTo "") then + { + [_object] call gms3DEN_fnc_createLootMarker; + [_object] call gms3DEN_fnc_setEventHandlers; + }; + }; + case ((typeOf _object) isKindOf "House" && blck_displayGarrisonMarkerOn): { + if !(_object getVariable["garrisoned",""] isEqualTo "") then + { + [_object] call gms3DEN_fnc_createGarrisonMarker; + [_object] call gms3DEN_fnc_setEventHandlers; + }; + }; +}; + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onUnregister.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onUnregister.sqf new file mode 100644 index 0000000..bac4646 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_onUnregister.sqf @@ -0,0 +1,12 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +params["_object"]; +if !(_object getvariable["marker",""] isEqualTo "") then +{ + [_object] call gms3DEN_fnc_removeMarker; + _object setVariable ["marker",nil]; +}; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_removeMarker.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_removeMarker.sqf new file mode 100644 index 0000000..be4fc79 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_removeMarker.sqf @@ -0,0 +1,18 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_object"]; + +private _marker = _object getVariable["marker",""]; +if !(_marker isEqualTo "") then +{ + private _id = get3DENEntityID _marker; + delete3DENEntities [_id]; + _object setVariable["marker",nil]; +}; + +true \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setCompletionMode.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setCompletionMode.sqf new file mode 100644 index 0000000..b896b89 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setCompletionMode.sqf @@ -0,0 +1,12 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +params["_mode"]; +missionNameSpace setVariable["GMS_missionEndCondition",_mode]; +private _m = format["Mission End State updated to %1",GMS_missionEndCondition]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setDifficulty.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setDifficulty.sqf new file mode 100644 index 0000000..6fe075b --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setDifficulty.sqf @@ -0,0 +1,13 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +params["_difficulty"]; +GMS_difficulty = _difficulty; +private _m = format["Mission Difficulty updated to %1",GMS_difficulty]; +systemChat _m; +diag_log _m; + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setEventHandlers.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setEventHandlers.sqf new file mode 100644 index 0000000..9681fe6 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setEventHandlers.sqf @@ -0,0 +1,14 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +params["_object"]; + +_object removeAllEventHandlers "UnregisteredFromWorld3DEN"; +_object removeAllEventHandlers "RegisteredToWorld3DEN"; +_object removeAllEventHandlers "Dragged3DEN"; +_object addEventHandler ["Dragged3DEN",{_this call gms3DEN_fnc_onDrag;}]; +_object addEventHandler ["UnregisteredFromWorld3DEN",{_this call gms3DEN_fnc_onUnregister;}]; +_object addEventHandler ["RegisteredToWorld3DEN", {_this call gms3DEN_fnc_onRegistered;}]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setGarrison.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setGarrison.sqf new file mode 100644 index 0000000..b3502be --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setGarrison.sqf @@ -0,0 +1,11 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_object","_state"]; +_object setVariable["Garrisoned",_state]; +[format["Object Garrison State set to %1",_state], 0] call BIS_fnc_3DENNotification; + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setLoadCratesTiming.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setLoadCratesTiming.sqf new file mode 100644 index 0000000..6dec803 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setLoadCratesTiming.sqf @@ -0,0 +1,12 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +params["_timing"]; +missionNamespace setVariable["GMS_loadCratesTiming", _timing]; +private _m = format["Mission Load Crates Timing set to %1",GMS_loadCratesTiming]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setLootVehicle.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setLootVehicle.sqf new file mode 100644 index 0000000..62180f9 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setLootVehicle.sqf @@ -0,0 +1,50 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + + sets a flag stored through setVariable for each selected object that meets the filter criteria + only objects of type "Car"or "ThingX" are allowed. +*/ + +params["_state"]; +private _markerStateON = missionNameSpace getVariable["blck_displayLootMarkerOn",false]; +[false] call gms3DEN_fnc_displayLootMarkers; +private "_message"; +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "Car" || (typeOf _x) isKindOf "Ship"}; // +if (_objects isEqualTo []) exitWith +{ + _message = "Select one or more vehicles or items of type ThingX to configure"; + systemChat _message; +}; +{ + if ((typeOf _x) isKindOf "Car" || (typeOf _x) isKindOf "Ship") then + { + _x setVariable["lootvehicle",_state]; + if (blck_displayLootMarkerOn && _state) then + { + [_x] call gms3DEN_fnc_createLootMarker; + [_x] call gms3DEN_fnc_setEventHandlers; + } else { + if !(_state) then + { + [_x] call gms3DEN_fnc_removeLootMarker; + }; + }; + _message = format["Vehicle type %1 set to Loot Vehicle = %1",typeOf _x,_state]; + systemChat _message; + diag_log _message; + } else { + _message = format["Object with type %1 ignored:: only objects of type Car can be used as loot vehicles",typeOf _x]; + diag_log _message; + systemChat _message; + }; +} forEach _objects; + +if (_markerStateON) then +{ + [true] call gms3DEN_fnc_displayLootMarkers; +}; +_m = format["Loot Vehicle State of %1 objects updated to %2",count _objects,_state]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setSpawnLocations.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setSpawnLocations.sqf new file mode 100644 index 0000000..b86a117 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_setSpawnLocations.sqf @@ -0,0 +1,16 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +params["_mode"]; +switch (_mode) do +{ + GMS_missionLocations = "random"; + GMS_missionLocations= "fixed"; +}; +private _m = format["Mission Locations updated to %1",_mode]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_spawnCratesTiming.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_spawnCratesTiming.sqf new file mode 100644 index 0000000..bbe233f --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_spawnCratesTiming.sqf @@ -0,0 +1,12 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ +#include "gms3DEN_defines.hpp" +params["_timing"]; +GMS_spawnCratesTiming = _timing; +private _m= format["Loot Chest Spawn Timing updated to %1",GMS_spawnCratesTiming]; +systemChat _m; +diag_log _m; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_startMessage.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_startMessage.sqf new file mode 100644 index 0000000..63642b6 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_startMessage.sqf @@ -0,0 +1,10 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_start"]; +missionNamespace setVariable["blck_startMessage",_start]; +systemChat format["Start Message set to %1",_start]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_test.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_test.sqf new file mode 100644 index 0000000..4445bcc --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_test.sqf @@ -0,0 +1 @@ +diag_log format["executing test.sqf at %1",diag_tickTime]; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_toggleStaticSpawns.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_toggleStaticSpawns.sqf new file mode 100644 index 0000000..ef436b4 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_toggleStaticSpawns.sqf @@ -0,0 +1,6 @@ + +params["_mode"]; +_m = format["GMS_missionSpawnMode set to %1",_mode]; +missionNameSpace setVariable["GMS_missionSpawnMode",_mode]; +diag_log _m; +systemChat _m; diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/fn_versionInfo.sqf b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_versionInfo.sqf new file mode 100644 index 0000000..d475cde --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/fn_versionInfo.sqf @@ -0,0 +1,19 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params[["_mode",""]]; + +private _header = format + ["GMS 3DEN Plugin Version %1 : Build %2 : Build Date %3", + getNumber(configFile >> "CfgGMS3DENVersion" >> "version"), + getNumber(configFile >> "CfgGMS3DENVersion" >> "build"), + getText(configFile >> "CfgGMS3DENVersion" >> "date"), + _mode +]; + +_header + diff --git a/@GMS_EDEN/addons/3DEN_plugin/Core/gms3DEN_defines.hpp b/@GMS_EDEN/addons/3DEN_plugin/Core/gms3DEN_defines.hpp new file mode 100644 index 0000000..f82f413 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Core/gms3DEN_defines.hpp @@ -0,0 +1,15 @@ + +#define GMS_blue 1 +#define GMS_red 2 +#define GMS_green 3 +#define GMS_orange 4 + +// Defines for mission characteristics +#define playerNear 0 +#define allUnitsKilled 1 +#define allKilledOrPlayerNear 2 +#define assetSecured 3 +#define atMissionSpawnGround 0 +#define atMissionSpawnAir 1 +#define atMissionEndGround 2 +#define atMissionEndAir 3 \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Static/pullMarkerInfo.sqf b/@GMS_EDEN/addons/3DEN_plugin/Static/pullMarkerInfo.sqf new file mode 100644 index 0000000..a32417b --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Static/pullMarkerInfo.sqf @@ -0,0 +1,45 @@ +diag_log format["<< ---- START %1 ---- >>",diag_tickTime]; + +all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; +private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha"]; +if (_markers isEqualTo []) then +{ + diag_log "No Marker Found, no Marker Definitions Will Be generated"; +} else { + private _m1 = _markers select 0; + diag_log format["_m1 = %1",_m1]; + _markerPosition = _m1 get3DENAttribute "Position"; // Returns expected value + _markerText = _m1 get3DENAttribute "Text"; // Returns expected value + _markerColor = _m1 get3DENAttribute "baseColor"; //Returns Null + _markerShape = (_m1 get3DENAttribute "markerType") select 0; // Returns [-1] if not a rectangular or elipsoid marker] + _markerAlpha = _m1 get3DENAttribute "alpha"; + _markerType = (_m1 get3DENAttribute "itemClass") select 0; // Returns "" if not an icon type marker + _markerBrush = _m1 get3DENAttribute "brush"; + _markerSize = _m1 get3DENAttribute "size2"; + _markerRotation = _m1 get3DENAttribute "rotation"; + diag_log format["typeName _markerType = %1 | markerType = %2 | typeName _markerShape = %3 | markerShape = %4", typeName _markerType, _markerType, typeName _markerShape, _markerShape]; + diag_log format["typeName _markerPosition = %1 | _markerPosition = %2 | typeName _markerRotation = %3 | _markerRotation = %4",typeName _markerPosition,_markerPosition,typeName _markerRotation,_markerRotation]; +}; + + /* + if (_markerShape == -1) then + { + // The marker is an icon + + } else { + _markerSize = _m1 get3DENAttribute "size2"; // Returns Null + _markerBrush = _m1 get3DENAttribute " brush"; + }; + + /* +_lines pushBack format["_markerPosition = %1",_markerPosition]; +_lines pushBack format["_markerText = %1",_markerText]; +_lines pushBack format["_markerColor = %1",_markerColor]; +_lines pushBack format["_markerType = %1", _markerType]; +_lines pushBack format["_markerShape = %1",_markerShape]; +_lines pushBack format["_markerAlpha = %1",_markerAlpha]; +_lines pushBack format["_markerBrush = %1",_markerBrush]; +_lines pushBack format["_markerSize = %1",_markerSize]; +_lines pushBack format["_markerRotation = %1",_markerRotation]; +*/ + */ \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Static/setCenterAtPlayer.sqf b/@GMS_EDEN/addons/3DEN_plugin/Static/setCenterAtPlayer.sqf new file mode 100644 index 0000000..6db9def --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Static/setCenterAtPlayer.sqf @@ -0,0 +1 @@ +CENTER = getPos player; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/Static/template.sqf b/@GMS_EDEN/addons/3DEN_plugin/Static/template.sqf new file mode 100644 index 0000000..a691f02 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/Static/template.sqf @@ -0,0 +1,81 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = bGMS_lootCountsGreen; +_startMsg = "An enemy research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Sector at the Green Marker is under survivor control!"; + +_markerMissionName = "Research Center"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue +_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults +_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults +_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Setting this in the mission file overrides the defaults +_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults +_headgear = blck_headgear; // Setting this in the mission file overrides the defaults +_vests = blck_vests; +_backpacks = blck_backpacks; +_weaponList = ["blue"] call blck_fnc_selectAILoadout; +_sideArms = blck_Pistols; +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; + +_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults +_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_chanceLoot = 0.0; +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = bGMS_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = GMS_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = GMS_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set GMS_spawnCratesTiming = "atMissionSpawnGround" && GMS_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set GMS_spawnCratesTiming = "atMissionSpawnGround" && GMS_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set GMS_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set GMS_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = GMS_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS_EDEN/addons/3DEN_plugin/To Do List b/@GMS_EDEN/addons/3DEN_plugin/To Do List new file mode 100644 index 0000000..73ea1c3 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/To Do List @@ -0,0 +1,39 @@ + +Build 10 +Test that mission center is defined in the following cases: +- no marker and no object pre-identified as defining the mission center: works. +- no marker and an object pre-identified as defining the mission center: works. +- the mission marker is present with a text label +- the mission marker is present without a text label + +Build 11 +- reorganize and rename the Cfg Files in a way that makes more sense. Done. +- test that coding of static and random spawn positions is properly done: Done. +- Moved menus for mission configuration to the Attributes Menu + +Build 12. +-Add option to set an attribute for loot vehicles. +-Check that all necessary default configs are present and consistently spelled thorughout the code. + +Build 13 +Test that mission objects are added to proper arrays excluding units and garrisoned buildings. + +- wheeled vehicles: working +- tracked vehicles other than tanks: working +- tanks: working +- helis and planes: working +- surface vessels: working +- subs: working +- turrets - working for turrets outisde of any structure. + +- loot crates +- simple objects +- anything that is not a building (landscape) +- everything that is a building + + +Long-term TODO: + + + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/To Do List copy b/@GMS_EDEN/addons/3DEN_plugin/To Do List copy new file mode 100644 index 0000000..6fb66a5 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/To Do List copy @@ -0,0 +1,6 @@ + + + + + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/config.cpp b/@GMS_EDEN/addons/3DEN_plugin/config.cpp new file mode 100644 index 0000000..342075f --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/config.cpp @@ -0,0 +1,20 @@ +/* + GMS 3EDEN Editor Plugin + by Ghostrider-GRG- + + Parts of config.cpp were derived from the Exile_3EDEN editor plugin + * and is licensed as follows: + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. +*/ +#include "Core\gms3DEN_defines.hpp" +#include "gmsCfgPatches.h" +#include "gmsCfgFunctions.h" +#include "gmsCfg3DENVersion.h" +#include "gmsCfg3DENsettings.h" +//#include "settings.h" +#include "gmsCfg3DEN.h" +#include "gmsCfg3DENDisplay.h" + + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DEN.h b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DEN.h new file mode 100644 index 0000000..b30ebc2 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DEN.h @@ -0,0 +1,179 @@ +class Default; +class Title: Default +{ + class Controls + { + class Title; + }; +}; +class RscCheckBox; +class Checkbox; + +class cfg3DEN +{ + class EventHandlers + { + class gms3DEN + { + OnMissionLoad = "diag_log format['Mission loaded at %1',diag_tickTime]; call gms3DEN_fnc_initialize"; + OnMissionNew = "diag_log format['New Mission Created at %1',diag_tickTime]; call gms3DEN_fnc_initialize"; + //onHistoryChange = "call gms3DEN_fnc_updateObjects"; + }; + }; + class Mission + { + class gms3DENmissionSettings + { + displayName = "Mission Settings"; + // display = "Display3DENEditAttributesPreview"; // Optional - display for attributes window. Must have the same structure and IDCs as the default Display3DENEditAttributes + class AttributeCategories + { + class gms3DENCategory + { + class Attributes + { + class missionStartMessage + { + property = "gmsMissionStartMessage"; + }; + class missionEndMessage + { + property = "gmsMissionEndMessage"; + }; + class missionDifficulty + { + property = "gmsMissionDifficulty"; + }; + }; + }; + }; + }; + }; + class Attributes + { + + class gms3DENCheckBoxGarrisonsControl: Title + { + onload = "call gms3DEN_fnc_onLoadGarrison;"; + onUnload = "diag_log 'onUnload for garrisons'"; + onCheckedChanged = "diag_log format['onCheckedChanged %1',_this];"; + attributeLoad = "(_this controlsGroupCtrl 100) ctrlSetText _value; [_this,_value] call gms3DEN_fnc_onAttributeLoadGarrison;"; + attributeSave = "[cbChecked (this controlsGroupCtrl 100)] call gms3DEN_fnc_onAttributeSaveGarrison;"; + + class Controls: Controls + { + class Title: Title {}; + class Value: CheckBox {}; + }; + + }; + class gmsGarrisonColorControl: Title + { + onload = "call gms3DEN_fnc_onLoadGarrisonColor;"; + //onUnload = "diag_log 'onUnload for garrisons'"; + attributeLoad = "[_this,_value] call gms3DEN_fnc_onAttributeLoadGarrisonColor;"; + attributeSave = "[_this,_value] call gms3DEN_fnc_onAttributeSaveGarrisonColor;"; + class Controls: Controls + { + class Title: Title {}; + class Value: CheckBox + { + idc = 101; + }; + }; + }; + class gms3DENCheckboxLootVehControl: Title + { + onload = "call gms3DEN_fnc_onLoadLootVeh;"; + //onUnload = "diag_log 'onUnload for loot veh'"; + onAttributeLoad = "[_this,_value] call gms3DEN_fnc_onAttributeLoadLootVeh;"; + onAttributeSave = "[_this,_value] call gms3DEN_fnc_onAttributeSaveLootVeh;"; + class Controls: Controls + { + class Title: Title {}; + class Value: CheckBox + { + idc = 102; + }; + }; + }; + class gms3DENCLootVehicleColorControl: Title + { + onload = "call gms3DEN_fnc_onLoadLootVehColor;"; + //onUnload = "diag_log 'onUnload for loot veh'"; + onAttributeLoad = "[_this,_value] call gms3DEN_fnc_onAttributeLoadLootVehColor;"; + onAttributeSave = "[_this,_value] call gms3DEN_fnc_onAttributeSaveLootVeh;"; + class Controls: Controls + { + class Title: Title {}; + class Value: CheckBox + { + idc = 103; + }; + }; + }; + }; + + class Object + { + class AttributeCategories + { + class gms3DENgarrisonedAttribute + { + displayName = "Garrisons"; + collapsed = 1; + class Attributes + { + class GarrisonedAttribute + { + displayName = "Garrison"; + tooltip = "Mark as part of a garrison"; + property = "gmsIsGarrison"; + control = "gms3DENCheckBoxGarrisonsControl"; + //condition = ""; + expression = "_this setVariable ['%s',_value];"; + defaultValue = "false"; + }; + class GarrisonedColorAttribute + { + displayName = "Color On"; + tooltip = "Check to color this garrisoned object" + property = "gmsGarrisonColor"; + control = "gmsGarrisonColorControl"; + //condition = ""; + expression = "_this setVariable ['%s',_value];"; + defaultValue = "false"; + }; + }; + }; + class gms3DENlootVehicles + { + displayName = "Loot Vehicle"; + collapsed = 1; + class Attributes + { + class lootVehicleAttribute + { + displayName = "Loot Vehicle"; + tooltip = "Set box to checked for loot vehicles"; + property = "gmsIsLootVehicle"; + control = "gms3DENCheckboxLootVehControl"; + //condition = ""; + expression = "_this setVariable ['%s',_value];"; + defaultValue = "false"; + }; + class lootVehicleColorAttribute + { + displayName = "Color On"; + tooltip = "Check box to color this loot vehicle"; + property = "gmsLootVehicleColor"; + control = "gms3DENCLootVehicleColorControl"; + //condition = ""; + expression = "_this setVariable ['%s',_value];"; + defaultValue = "false"; + }; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENDisplay.h b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENDisplay.h new file mode 100644 index 0000000..a85dda2 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENDisplay.h @@ -0,0 +1,239 @@ + + +class ctrlMenuStrip; +class display3DEN +{ + class Controls + { + class MenuStrip: ctrlMenuStrip + { + class Items + { + // Additions to the menu strip to export missions and seek help + // ************************************************************ + items[] += {"GMS_configure","GMS_export","GMS_support"}; + + /* + The menu for exporting missions is defined here + */ + class GMS_export { + items[]= { + "GMS_exportDynamic" + }; + text = "Export Mission"; + toolTip = "Export GMS Missions"; + }; + class GMS_exportDynamic { + text = "Export Mission"; + //toolTip = "Export Dynamic Mission"; + action = "call gms3DEN_fnc_exportDynamic"; + picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + /* + menus for those seeking support are here + */ + class GMS_support { + items[] = { + "GMS_help", + "GMS_about" + }; + text = "Plugin Support"; + }; + class GMS_help { + text = "Help"; + action = "call gms3DEN_fnc_Help"; + //picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + class GMS_about { + text = "3EDEN Plugin Version 1.0 for GMS by Ghostrider-GRG-"; + action = "call blck3EDEN_fnc_about"; + }; + + + /* + All menus for configuring a GMS mission are defined here + */ + + class GMS_configure { + items[] = { + "GMS_difficulty", + "GMS_crateSpawn", + "GMS_lootSpawn", + "GMS_location_Respawns", + "GMS_MissionCompletionMode" + //"GMS_editMissionSettings" + }; + text = "Configure Mission"; + toolTip = "Adjust Mission Settings"; + }; + + class GMS_difficulty { + text = "Difficulty"; + toolTip = "Set Mission Difficulty"; + items[] = { + "GMS_difficultyBlue", + "GMS_difficultyRed", + "GMS_difficultyGreen", + "GMS_difficultyOrange" + }; + }; + class GMS_difficultyBlue + { + text = "Set Mission Difficutly to EASY (Blue)"; + action = "['Blue'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_blue; + }; + class GMS_difficultyRed + { + text = "Set Mission Difficulty to MEDIUM (Red)"; + action = "['Red'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_red; + }; + class GMS_difficultyGreen + { + text = "Set Mission Difficult To HARD (Green)"; + action = "['Green'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_green; + }; + class GMS_difficultyOrange + { + text = "Set Mission Difficulty to Very HARD (Orange)"; + action = "['Orange'] call gms3DEN_fnc_setDifficulty;"; + value = GMS_orange; + }; + + class GMS_MissionCompletionMode + { + text = "Set the Criterial for Mission Completion"; + items[] = { + "GMS_playerNear", + "GMS_allUnitsKilled", + "GMS_allKilledOrPlayerNear", + "GMS_assetSecured" + }; + }; + class GMS_allUnitsKilled + { + text = "All AI Dead"; + toolTip = "Mission is complete only when All AI are Dead"; + action = "['allUnitsKilled'] call gms3DEN_fnc_setCompletionMode;"; + value = allUnitsKilled; + }; + class GMS_playerNear + { + text = "Player near mission center"; + toolTip = "MIssion is Complete when a player reaches the mission center"; + action = "['playerNear'] call gms3DEN_fnc_setCompletionMode;"; + value = playerNear; + }; + class GMS_allKilledOrPlayerNear + { + text = "Units Dead / Player @ Center"; + toolTip = "Mission is Complete when all units are dead or a player reaches mission center"; + action = "['allKilledOrPlayerNear'] call gms3DEN_fnc_setCompletionMode;"; + value = allKilledOrPlayerNear; + }; + class GMS_assetSecured + { + text = "Asset Secured"; + toolTip = "Mission is Complete when the asset is secured"; + action = "[assetSecured] call gms3DEN_fnc_setCompletionMode;"; + value = allKilledOrPlayerNear; + }; + class GMS_location_Respawns + { + text = "Set Mission Spawns (static vs random)"; + //action = "edit3DENMissionAttributes 'setAsStaticMission'"; + items[] = { + "GMS_dynamicMission", + "GMS_staticMission" + }; + }; + class GMS_dynamicMission + { + text = "Configure as Dynamic Mission"; + action = "['dynamic'] call gms3DEN_fnc_setSpawnLocations"; + }; + class GMS_staticMission + { + text = "Configure Static Mission"; + action = "['static'] call gms3DEN_fnc_setSpawnLocations"; + }; + class GMS_crateSpawn { + text = "Set When Crates Spawn"; + toolTip = "Set when crates are spawned"; + items[] = { + "GMS_atMissionSpawnGround", + "GMS_atMissionSpawnAir", + "GMS_atMissionEndGround", + "GMS_atMissionEndAir" + }; + }; + class GMS_atMissionSpawnGround + { + text = "At Spawn Ground"; + toolTip = "Crates are spawned on the ground at mission startup"; + action = "['atMissionSpawnGround'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + class GMS_atMissionSpawnAir + { + text = "At Spawn Air"; + toolTip = "Crates are spawned in the air at mission startup"; + action = "['atMissionSpawnAir'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + class GMS_atMissionEndGround + { + text = "At End Ground"; + toolTip = "Crates are spawned on the ground at mission completion"; + action = "['atMissionEndGround'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + class GMS_atMissionEndAir + { + text = "At End Air"; + toodTip = "Crates are spawned in the air at mission completion"; + action = "['atMissionEndAir'] call gms3DEN_fnc_spawnCratesTiming;"; + }; + + class GMS_lootSpawn { + text = "Set timing for loading crates"; + items[] = { + "GMS_atMissionSpawn", + "GMS_atMissionCompletion" + }; + }; + class GMS_atMissionSpawn + { + text = "At Spawn"; + toolTip = "Load crates when the mission spawns"; + action = "['atMissionSpawn'] call gms3DEN_fnc_setLoadCratesTiming"; + }; + class GMS_atMissionCompletion + { + text = "At Completion"; + toolTip = "Load crates when the mission is complete"; + action = "['atMissionCompletion'] call gms3DEN_fnc_setLoadCratesTiming"; + }; + + class GMS_static { + text = "Set if Mission is Static/Dynamic"; + toolTip = "Toggle between static and random mission locations"; + items[] = { + "GMS_setToDynamic", + "GMS_setToStatic" + }; + }; + class GMS_setToDynamic { + text = "Dynamic"; + toolType = "Set mission to be spawned at random location"; + action = "['dynamic'] call gms3DEN_fnc_toggleStaticSpawns"; + }; + class GMS_setToStatic { + text = "Static"; + toolTip = "Set mission to respawn at the same location each time"; + action = "['static'] call gms3DEN_fnc_toggleStaticSpawns"; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENVersion.h b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENVersion.h new file mode 100644 index 0000000..155273c --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENVersion.h @@ -0,0 +1,8 @@ + + + class CfgGMS3DENVersion + { + version = 1.02; + build = 15; + date = "09/22/23"; + }; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENsettings.h b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENsettings.h new file mode 100644 index 0000000..24c4da3 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/gmsCfg3DENsettings.h @@ -0,0 +1,51 @@ + + +class CfgGMS3DEN +{ + class CfgDefaults + { + objectAtMissionCenter = "RoadCone_L_F"; + minAI = 3; + maxAI = 6; + minPatroRadius = 30; + maxPatrolRadius = 45; + maxVehiclePatrolRadius = 75; + aircraftPatrolRadius = 1000; + oddsOfGarison = 0.67; + maxGarrisonStatics = 3; + typesGarrisonStatics = []; + defaultMissionDifficulty = "Blue"; + defaultLootcrateSpawnTiming = "atMissionSpawnGround"; + defaultLootcrateLoadTiming = "atMissionSpawn"; + defaultMissionEndState = "allKilledOrPlayerNear"; + + // Enter the string shown here under Atributes\Variable Name + // to demarcate this vehicle as a loot vehicle + lootVehicleVariableName = "lootVehicle"; + + // Enter the string shown here under Atributes\Variable Name + // To indicate that a garrison should be placed at standard Arma + // building positions + buildingPosGarrisonVariableName = "pos"; + + // Enter the string shown here under Atributes\Variable Name + // To indicate that a garrison should be placed using setPosATL + // relative to the spawn position of the building + buildingATLGarrisionVariableName = "atl"; + + aiRespawnTime = 600; // respawn time for infantry + vehicleRespawnTime = 900; // respawn time for vehicle patrols + aircraftRespawnTime = 1200; // respawn time for aircraft patrols + + // colors used to highlight garrison objects and loot objects + colorGarrisonObject = "#(argb,8,8,3)color(0,1,0,1)"; // Lime + colorLootObject = "#(argb,8,8,3)color(1,0,1,1)"; // Fucshia + }; + + /**************************************** + DO NOT TOUCH ANYTHING BELOW THIS LINE + *****************************************/ +}; + + + diff --git a/@GMS_EDEN/addons/3DEN_plugin/gmsCfgFunctions.h b/@GMS_EDEN/addons/3DEN_plugin/gmsCfgFunctions.h new file mode 100644 index 0000000..aa9b022 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/gmsCfgFunctions.h @@ -0,0 +1,55 @@ + +class CfgFunctions +{ + class gms3DEN + { + class Export + { + file = "3DEN_plugin\Export"; + + //class exportStatic {}; + }; + + class Core + { + file = "3DEN_plugin\Core"; + + class about {}; + class buildingContainer {}; + class configureGarrisonATL {}; + class display {}; + class displayGarrisonMarkers {}; + class displayLootMarkers {}; + class exportDynamic {}; + class initialize {}; + class initializeAttributes {}; + class isInfantryUnit {}; + class isInVehicle {}; + class isInside {}; + class onAttributeLoadGarrison {}; + class onAttributeLoadGarrisonColor {}; + class onAttributeLoadLootVeh {}; + class onAttributeLoadLootVehColor {}; + class onAttributeSaveGarrison {}; + class onAttributeSaveGarrisonColor {}; + class onAttributeSaveLootVeh {}; + class onAttributeSaveLootVehColor {}; + class onDrag {}; + class onLoadGarrison {}; + class onLoadGarrisonColor {}; + class onLoadLootVeh {}; + class onLoadLootVehColor {}; + class onRegistered {}; + class onUnregister {}; + class removeMarker {}; + class setDifficulty {}; + class setCompletionMode {} + class setGarrison {}; + class setLoadCratesTiming {}; + class setLootVehicle {}; + class setSpawnLocations {}; + class spawnCratesTiming {}; + class versionInfo {}; + }; + }; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/gmsCfgPatches.h b/@GMS_EDEN/addons/3DEN_plugin/gmsCfgPatches.h new file mode 100644 index 0000000..b5b4f9b --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/gmsCfgPatches.h @@ -0,0 +1,12 @@ +class CfgPatches +{ + class GMS_3DEN + { + requiredVersion = 0.1; + requiredAddons[] = {3DEN}; + units[] = {}; + weapons[] = {}; + magazines[] = {}; + ammo[] = {}; + }; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/3DEN_plugin/testIntersects.sqf b/@GMS_EDEN/addons/3DEN_plugin/testIntersects.sqf new file mode 100644 index 0000000..fc720b4 --- /dev/null +++ b/@GMS_EDEN/addons/3DEN_plugin/testIntersects.sqf @@ -0,0 +1,15 @@ +private _obj = cursorObject; +private _pos = getPosATL _obj; +private _startPos = _pos; +private _endPos = [_pos select 0, _pos select 1, (_pos select 2) + 100]; +private _objIntersect = lineIntersectsObjs [_startPos, _endPos,_obj,_obj,true]; +private _count = count _ojbIntersect; +systemChat format["count = %1",_count]; +if !(_count isEqualTo 0) then +{ + private _firstObj = _objIntersect select 0; + private _lastObj = _objIntersect select ((count _objIntersect) - 1); + _m = format["first Obj = %1 | last Obj = %2 | cursorObj = %3",_firstObj,_lastObj, _obj]; + systemChat _m; + diag_log _m; +}; \ No newline at end of file diff --git a/@GMS_EDEN/addons/Guidelines.txt b/@GMS_EDEN/addons/Guidelines.txt new file mode 100644 index 0000000..90afcfc --- /dev/null +++ b/@GMS_EDEN/addons/Guidelines.txt @@ -0,0 +1,7 @@ +Features: + +Exports static or dynamic missions preformated in .sqf code. Simply paste the output of the editor into a new .sqf file, edit entires to refine mission parameters and add the name of the mission file to GMS_missionLists. +Captures simple objects, sets allow dammage and allow similation according to editor settings, and captures marker configurations. + + +