From c5d0a20e0ea0b9cf3a3eb7ff2dd077917414ff81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 10 Apr 2023 18:20:56 +0200 Subject: [PATCH] Implement magnet radius/strength --- Projects/TerraTech/TerraTech/Class1.cs | 133 +++++++++++++++--- .../TerraTech/bin/Debug/TerraTech.dll | Bin 10752 -> 12800 bytes .../TerraTech/bin/Debug/TerraTech.pdb | Bin 22016 -> 28160 bytes .../TerraTech/obj/Debug/TerraTech.dll | Bin 10752 -> 12800 bytes .../TerraTech/obj/Debug/TerraTech.pdb | Bin 22016 -> 28160 bytes 5 files changed, 110 insertions(+), 23 deletions(-) diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index a80f3c8..116f030 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -7,11 +7,10 @@ using HarmonyLib; using HarmonyLib.Tools; using UnityEngine; -// TODO: Make magnet better -// TODO: Make more energy generate // TODO: Make attractor more range // TODO: Make battery bigger // TODO: Make shield and repair bigger +// TODO: Make turbo more turbo namespace TerraTech { [BepInPlugin(pluginGuid, pluginName, pluginVersion)] @@ -23,20 +22,35 @@ namespace TerraTech { public static ConfigEntry xpMultiplier; public static ConfigEntry moneyMultiplier; public static ConfigEntry energyGenMultiplier; + public static ConfigEntry magnetStrenghtMultiplier; + public static ConfigEntry magnetRadiusMultiplier; public static ConfigEntry allProjectilesHoming; public static ConfigEntry shootingSpeedMultiplier; public static ConfigEntry muzzleVelocityMultiplier; + public static ConfigEntry heartbeatIntervalMultiplier; public void Awake() { - xpMultiplier = Config.Bind("General", "XP Multiplier", 1); - moneyMultiplier = Config.Bind("General", "Money Multiplier", 1); - energyGenMultiplier = Config.Bind("General", "Energy Generation Multiplier", 1f); - shootingSpeedMultiplier = Config.Bind("General", "Shooting Speed Multiplier", 1f); - muzzleVelocityMultiplier = Config.Bind("General", "Muzzle Velocity Multiplier", 1f); + xpMultiplier = Config.Bind("General", "XP Multiplier", 1, new ConfigDescription("XP Multiplier", new AcceptableValueRange(1, 32))); + moneyMultiplier = Config.Bind("General", "Money Multiplier", 1, new ConfigDescription("Money Multiplier", new AcceptableValueRange(1, 32))); + energyGenMultiplier = Config.Bind("General", "Energy Generation Multiplier", 1f, + new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange(1f, 64f))); + shootingSpeedMultiplier = Config.Bind("General", "Shooting Speed Multiplier", 1f, + new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange(0.5f, 8f))); + magnetStrenghtMultiplier = Config.Bind("General", "Magnet Strength Multiplier", 1f, + new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange(1f, 16f))); + magnetRadiusMultiplier = Config.Bind("General", "Magnet Radius Multiplier", 1f, + new ConfigDescription("Magnet Radius Multiplier", new AcceptableValueRange(1f, 16f))); + muzzleVelocityMultiplier = Config.Bind("General", "Muzzle Velocity Multiplier", 1f, + new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(1f, 32f))); + heartbeatIntervalMultiplier = Config.Bind("General", "Heartbeat Interval Multiplier", 1f, + new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange(0.1f, 2f))); + allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false); shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); energyGenMultiplier.SettingChanged += (sender, args) => GeneratorPropertiesManager.DoPatch(); + magnetStrenghtMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch(); + magnetRadiusMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch(); Logger.LogInfo("Cyka mod loaded"); HarmonyFileLog.Enabled = true; @@ -58,6 +72,11 @@ namespace TerraTech { static void MoneyMulti(ref int amount) { amount *= Main.moneyMultiplier.Value; } + + [HarmonyPatch(typeof(TechHolders), "SetHeartbeatInterval")] + static void MoneyMulti(ref float interval) { + interval *= Main.heartbeatIntervalMultiplier.Value; + } } [HarmonyPatch(typeof(Projectile), "Fire")] @@ -96,7 +115,7 @@ namespace TerraTech { } public static void DoPatch() { - Console.WriteLine("Modifying " + weapons.Count + " weapons"); + // Console.WriteLine("Modifying " + weapons.Count + " weapons"); foreach (KeyValuePair keyValuePair in weapons) { DoRestoreSingle(keyValuePair.Key); DoPatchSingle(keyValuePair.Key); @@ -104,10 +123,10 @@ namespace TerraTech { } static void DoPatchSingle(ModuleWeaponGun weapon) { - Console.WriteLine("Patching " + weapon.name); - Console.WriteLine("Old value " + weapon.m_ShotCooldown); + // Console.WriteLine("Patching " + weapon.name); + // Console.WriteLine("Old value " + weapon.m_ShotCooldown); weapon.m_ShotCooldown /= Main.shootingSpeedMultiplier.Value; - Console.WriteLine("New value " + weapon.m_ShotCooldown); + // Console.WriteLine("New value " + weapon.m_ShotCooldown); } static void DoRestoreSingle(ModuleWeaponGun weapon) { @@ -126,9 +145,7 @@ namespace TerraTech { static void PostfixCreate(ModuleEnergy __instance) { if (!generators.ContainsKey(__instance)) { generators.Add(__instance, GetValue(__instance)); - if (ShouldPatch()) { - DoPatchSingle(__instance); - } + DoPatchSingle(__instance); } } @@ -140,8 +157,8 @@ namespace TerraTech { } public static void DoPatch() { - Console.WriteLine("Modifying " + generators.Count + " generators"); - Console.WriteLine("Should patch: " + ShouldPatch()); + // Console.WriteLine("Modifying " + generators.Count + " generators"); + // Console.WriteLine("Should patch: " + ShouldPatch()); foreach (KeyValuePair keyValuePair in generators) { DoRestoreSingle(keyValuePair.Key); DoPatchSingle(keyValuePair.Key); @@ -149,10 +166,10 @@ namespace TerraTech { } static void DoPatchSingle(ModuleEnergy moduleEnergy) { - Console.WriteLine("Patching " + moduleEnergy.name); - Console.WriteLine("Old value " + GetValue(moduleEnergy)); + // Console.WriteLine("Patching " + moduleEnergy.name); + // Console.WriteLine("Old value " + GetValue(moduleEnergy)); SetValue(moduleEnergy, GetValue(moduleEnergy) * Main.energyGenMultiplier.Value); - Console.WriteLine("New value " + GetValue(moduleEnergy)); + // Console.WriteLine("New value " + GetValue(moduleEnergy)); } static void DoRestoreSingle(ModuleEnergy moduleEnergy) { @@ -161,10 +178,6 @@ namespace TerraTech { } } - static bool ShouldPatch() { - return Math.Abs(Main.energyGenMultiplier.Value - 1f) > 0.0001f; - } - private static float GetValue(ModuleEnergy moduleEnergy) { return Traverse.Create(moduleEnergy).Field("m_OutputPerSecond").GetValue() as float? ?? 0f; } @@ -173,4 +186,78 @@ namespace TerraTech { Traverse.Create(moduleEnergy).Field("m_OutputPerSecond").SetValue(value); } } + + [HarmonyPatch] + public class MagnetPropertiesManager { + private static Dictionary strenghts = new Dictionary(); + private static Dictionary radii = new Dictionary(); + + [HarmonyPostfix] + [HarmonyPatch(typeof(ModuleItemHolderMagnet), "OnAttached")] + static void PostfixCreate(ModuleItemHolderMagnet __instance) { + if (!strenghts.ContainsKey(__instance)) { + strenghts.Add(__instance, GetStrength(__instance)); + radii.Add(__instance, GetRadius(__instance)); + DoPatchSingle(__instance); + } + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(ModuleItemHolderMagnet), "OnDetaching")] + static void PostfixDestroy(ModuleItemHolderMagnet __instance) { + DoRestoreSingle(__instance); + strenghts.Remove(__instance); + radii.Remove(__instance); + } + + public static void DoPatch() { + // Console.WriteLine("Modifying " + generators.Count + " generators"); + // Console.WriteLine("Should patch: " + ShouldPatch()); + foreach (KeyValuePair keyValuePair in strenghts) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleItemHolderMagnet moduleEnergy) { + // Console.WriteLine("Patching " + moduleEnergy.name); + // Console.WriteLine("Old value " + GetValue(moduleEnergy)); + SetStrength(moduleEnergy, GetStrength(moduleEnergy) * Main.magnetStrenghtMultiplier.Value); + SetRadius(moduleEnergy, GetRadius(moduleEnergy) * Main.magnetRadiusMultiplier.Value); + // Console.WriteLine("New value " + GetValue(moduleEnergy)); + } + + static void DoRestoreSingle(ModuleItemHolderMagnet moduleEnergy) { + if (strenghts.ContainsKey(moduleEnergy)) { + SetStrength(moduleEnergy, strenghts[moduleEnergy]); + } + if (radii.ContainsKey(moduleEnergy)) { + SetRadius(moduleEnergy, radii[moduleEnergy]); + } + } + + private static float GetStrength(ModuleItemHolderMagnet moduleEnergy) { + return Traverse.Create(moduleEnergy).Field("m_Strength").GetValue() as float? ?? 0f; + } + + private static void SetStrength(ModuleItemHolderMagnet moduleEnergy, float value) { + Traverse.Create(moduleEnergy).Field("m_Strength").SetValue(value); + } + + private static float GetRadius(ModuleItemHolderMagnet moduleEnergy) { + ModuleItemPickup moduleItemPickup = Traverse.Create(moduleEnergy).Field("m_Pickup").GetValue() as ModuleItemPickup; + if (moduleItemPickup) { + float radius = Traverse.Create(moduleItemPickup).Field("m_PickupRange").GetValue() as float? ?? 0f; + return radius; + } + return 0f; + } + + private static void SetRadius(ModuleItemHolderMagnet moduleEnergy, float value) { + ModuleItemPickup moduleItemPickup = Traverse.Create(moduleEnergy).Field("m_Pickup").GetValue() as ModuleItemPickup; + if (moduleItemPickup) { + Traverse.Create(moduleItemPickup).Field("m_PickupRange").SetValue(value); + } + } + } } \ No newline at end of file diff --git a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll index ddc9f7c3cd6e26a66dd9655d048a766dfff0ee45..43e7169d0e33325b6649d8de5511e3dde5607284 100644 GIT binary patch literal 12800 zcmd^F3ve9udH?=@%`KvV9lX5*UMUEa@a$VA(>F&C5kT>DH%1ce}^# zp0OZkF3*Nnid!Hs$+S=s2-A|mDNJc5G!T-`l*bfi+9sJa87DNIgk~n`Fin~?HT`|x z?mZ-7N~SQ=4lC`q-~0dlzyEvpMz6bvd_?5O{nlGV&)~_|Zh`L%DiFuke>Fx=MPAwP zjN13ghRNByohVsm&dL-MGa17$oy4@Bu*yavZzR$OCK5$6tEX11h;H;;j|~y+Q$Cv9 z(VMN7c8atOO{$4#GdMw)yK4l`1nwiaiCP5L+_;(HsS!N{0(`!FbmWt)%K!DJM=}f7 zPxcZ`Fmi+_%!ycfRfw9wdvXs^`%>9E(Fyo#kcUB|sM?is^y3bwbQeGZH`mpR8<<=P zM3u5^YX+3Wb_57F)K=UL*KRad%F+ua6ggI^;AUUlxErqBL<0?^pb5?^E{;v30DTkj z{Omj;CEVW~tm{OwgS2^F=W6enSoCb|4$-d=8~m>%t+SOVY5^}DuUQNB z%F8cb&epr%zTW79i>yBj>s4(g2G^EK1hNHA%)$zQWNX{$AoxLh4bop>))o?pc@7w~ zzzwhvt7@YCJxyjolOLWYr)%M?swSG<(_|Jj`Qd4DY8KE*-O^Elr^zg6^262CI?qKA z)=LQAT+89C?!*ibCF@_ou`x!X(V)4GIYDzh9!;LXe?lDUM6g@#N}&T=D>N!~Zh(U8 zW%D|%6WNPy9wy(WD;Bs@o0~viHwlgg4)@tc&i)0?sCfbF9AfJW*&6w8?e@`8JT)Fm z3!GZB6QWh8RWz6kQp~@4oEEq(#TI2&zMhILV4(SZV`djLx2V+w)lTw_ZMqd6qjl}; zZWG#7UTtoH5OY+@#?%w7Ft;HPjstuzjyQyxiJBul$+ff~w07%(76br=5X@0 zADk6er&poH*P0iDMgJtztU?=Ww1Rqe6Z!=qhuS8IPkN>#>-yU`Uc|z6L%x^Q%}sJE zX>R?@9Z(k=PSPbHDqQb+k{0I((;jlP6KZabgqH3TG%p1giNT1d<_Kc}IdW|-gS0V6 z=suhy7MgvKxjDL=J#&tB0qGR`D&hJ?jy?=gJxAy!@0g<-Nps_qG3j>3PK*jn^^zlW zJTFJ}y16-OLylbDZVpClXme|~Mxe3cAbzd0A0lf#28uZV%p3$LV>(#-MFvfXHVsZP zgg%U66#+d2dTtI~n1Y*cS?0iZ7n(qs!%(^a?Xd^X3dgXxJ&+tPW-K>okG)Vsdn9Q= zXsxpY^)pAnr3I`)eq;ax)#GS9q`8GYh0+lhTFCWs1sCe-n}Tny_Gf5wTd|sXCA8eO z+Q+4GTa5y7Jyi*}1k`pvMD?~pr+vq^dXd|TV_)D|(QB)X9HLi)1&oL){{rT_ZHQ8q z<)hw)ZtV_mkmAeBiDa#=C3!MMOFZ*{d%LzC{NJ{9&B3C!ma-hw12wPpt7{jRg<*#Y zvU3bILEI}M$$kpD9dK^3Vyy$V`s4m3Jx6mIz6!BcxB*;@lU(o0G%#_+fbw>1SSsjPZ>l@h)7`TTHRTaj0Q@|bhmHlr z6~z{r@d?Mu8#$XbzJ#IiX$`!C6V$!R-5+=CIXHqbN4r7)Ig;5iP%x)i85dO5)#qv9 z2r5ax+0;YOQ9vNj}M2pcj6dR|4b_BQsJVu`o_&tFEEEZAvmGAq$D4p+b@keQ=z(WGd0zV`0 zF@fI@_PEvorEWC`t!_M`<1~M!egKBcDf*Avfy` z`LBi6(0S+?Rq8@e5p>v)$UfvzO+pO`6^B2z`#qsr(Z)<27pjfc(N&eNqui@1FADqz zz*Q7d7Xr2k+^AB(FA;c^z*%(>IJXIYpTI8zuB5);ZvgKQ_^iNR2)tA~2>v~q3HTH3 zV}R|xKL)%2u$15$eu`dHeTd7(+y`pSt3r(>m^wkLgKt81jYlnj!uimnPJ#;1tVjJb zs1V&MUQW<2)o$eGZjU;xMsUXZlNxmZ`-qc5x#h*^Yo6?O?FNd`rI;(Lv9wW2s1s}c zEWAK%ly)h4KsyfVBOdiAsI%!_q3)-rwFP9!k9CLZ@GNAjDB)2rfm%&dLb;`{p$S(e zC9I)YPxAroPPF(#9`z`wbLbhN+!D^EPR!PB33s9|r9J8;Xs)H>9`&Yn0%zcFdem>V z&!Y8zE|gpPdV1ZJN$Kn9KRnF`w8v;Y4P5A!@F=JRWrcD}-#~xw$)1I51BH3=Ky6Yyh*>Jr~y&_;UIqtcLFKx195-G0a}q^}C)M%G1NaAgu1ql!9$JdRKL|848RXOJL1_9&yIL@#PdhQ^C!gfN5r!uo?lZZB2NUN z3ELQY-3q|4z-DSkZ%EQtDMh!^M?)$4INbqg({aF7Y6G03IlwK{0oX(@22&XAjCTmU zjJkmLh~}VhCIntj{h>j+lfFYo=#S_$&CptPnks^SoI2F^w1)(LMEK7M{(|7AAbmu= zE;y+UwL(h(7PW^J`*{xd^}grS9K1a*oKu3I0{22LHtz`Peos9psMIUE_NjB5m}K1cxqK! z4dbVNJso0vaT(jf%u7;_O42Ue1FD}YZW(=}X0}|=chRJ7S(!yWNiJQk$2|D3gsL^DcUopRme}%#Juh3MLICe5l~5_d&>E&hwjf5 zbq_tHTXxxPATp0l|*QJIG$C^K~jgFT_%LON2D&!G%(KPh=2AXS;n@43D zctwdH8)Dta%{t2jXHC;VJ|{}Lo^4PrmT$SGpdaG5v&cY$ zU{=pq&a|F!Mhr){j%5lBvi_Shb2_DFkZ!zPwDsb2VLmxHF`KbUG@L?>AWy9$kcWk&Rcpq<7B8LT_Wo?giX>|Lk8MP zhZ9S8yHz8b4#BZ$^`KPlac-yCQ${z-7;`jc=|}U&>1OFlHjSCK1A5RxW%VkR)@{c! z=P7Nv{my$%AcX}T+;PZJv`4$e3`yfruG$rC^h)PYrcl;tqKdehBj{Iq%|ceU+|EfT zOj_3_3(c8lL$|@5S+=d=;JfY3Tn|HUEty_dJ6__JzWLw?Wr}9ma47G!9v$Um;+Fin z6sOirg4;dNA8lQqLlwtin?)>osgRlXh^eW(VLKUPMn|vZta{Z&*We1uSV@he%zRN# zc>@Bjka8=hJHzG9BW}595{;x6GmVw0#yE(vUA7v6uh!B_jEp9; zG=U+NpTY1LG>eDwc7D3CzC6b)FVsuva=|br$7MpV*mNF~2l{t@#-_ABUC!k)i;8l2 zXeRVaM6)DV1XqG{t1((IWL6v33z_4B+4YdT=4U&Irt<~NDRrsLj@~3YbWAs#ek*5F zpUft^rl+R5(ftgJ2||ytNi_Cmj4T46!HJE1yLL`Z4Q8-5Wcv-%m`DG%M|Ee`%%=5% zp2OJf^RmZa=2}nHjz0 zaAU~?GM+JVIu;LC+At87D)M4R19>A$nQV3nlLSxtgR^X&tu0Uc%p4}q99CYVoGE~s zFv}LkHJ8saBpi0cWcs=vGm8 zRqw}YKQd&Li&(0mi2Aqcp(+45Ic~ z^Jas_^`d!9uSUabA*$fT#uU6uabuahh1EB7h9jfch3aPLT*Z#2IZhPfwFb{WzS@D(I{fhNr{f=JE#TMCI>IGXR_M1 z*lHX;vWTsWQ^*-&Lpf!-1%Cy2PtYO20wSG(l_T|h+iYF77kU{)i zO!9q(5_>qtIp`&*A7vHr9D|KXH-a|<4|$1&Bi;*c5nNh7h*;)emjG=_);LP89p{kF zs>-<)L9ZNx%z?LAkte`mOC3CJi7fI#9Yva=1E@W=!UD%2x6m>i1-B;roXt8D&}hs( ztz_;P;+#QDWmwbNr5w&Yw-sWiFMs;F$8Ngm(vi>IKYircmaxF)FtpFs;^$~B6jUqE zYl)xJ65kNt)S_vgWJ5D6#y9Yb4Ug63vbrE>j(6d6g^G7o9VJ~^Qe^nL30bmPDStw# z7y~T;urkkRIGFIMSS)s~qR`;{Tn0;T^%>ZPSL5CCDMYo$=Y7HWZGMH61QHald=ep7 zZdc(@LQ}0cAxGFvymI2a_Lgqt=gP06SZp0M@AgF{W@tA9)tZBdB3`*q zygtYwwfhMnMiYb*z6jCdO)ZEM#7X!JM8SDFNWNHmd;5xz7Oy-k5->TGc;#EM8x&1o zG1-SLjbZEd){yw?*2GwO8dDKw#YuBcH!e3Y zy#+8AUo(d4OUwEbsPq)Ry`rQs>`Qg)y(%Y+a^!qMR76eqWa{qD-?N&uVI|(X^h8B; zSkZX>toB}2$Ik~RFKb%J>*wfy8ombyo4xL%d?BUf6kY9}NNPu<_bQ0!0p6s`b`76h zB!~^ov+rMdO$Us$&gJnQfSS;iS5{s@ja$)=8H;adcA2l$n6EJtGlbR}@oA#lCIYlGU^&>uF1RX-i7lFhTw_ z77D~GKW=W;yiD<|`D1NF(YdMpLzA_`@Yd?Ih;O2opz&jEH4*OuG0E{ura0RqYLWzW zV~QfRw`dsZyhzY$Me*9HHSvwd6N&BJ+k1$*6m1+Dx@c&4V8?K>zc)RY?Cl-yPVT&T z$3Sv;$F`xt{_W}Bi~EQ0^E@m`vIOxW6b2!FfyhfeTE`#cCbd;pTba^+6YtLWjDpkn zO_!sQy-x-ygPv`SKpz_^2^Hk)F8nJFnjR`oDc<;PK14)7uX@}Ri^-lXdKuGcDMUMj{pt>=j&Pj&riGW z+PMV2+$VmWB$pqs!L9JpfC^rDzd!8l&UvqY6uV@;Hp(0GNl1CmYh(A$dvEtdBntGT zzXeXQ6Oo;CUUtUIJ^c)!C~SVKf4w+cVA$eI5dUVOs-MQ5+Q!b?LJ6fsusHJ73a8BS;47W=hw)>!w z6RSbwr-XA0N18)4d?;PcOVHz#z~6S1za3wH@Ec``;ecny+2Rk_f)M^0^cETY8`=`Q=C#}X&G>Hl NtckkWoE=#hTWPvPU^JF&<2olsntO-OAfdWQBFb+frkO6YzCdf;( zs}u(`t;Va)#79SqSZt?i%}gy-M;Npnp;l=}s}8jwY8~qgb?kJirL^BUcOign@63Mp zf1U6A=l{<=cXzX^v)A3XtGuP5aW!(+amccu2m<9aSe~)8W$?#K!ml<1OO;_I;5P=# zqMRDox4m-3{;lUl;Ee_y<60ZO84htqDZz-x_}TXbST$mO~5?gSFe5Udvby( zbYq6Xqeij2-pI=oI#P|uyJ*Ch98p~87|LhU*Y8&lAk;?-&seluy+xcmt4y`f9;cWF z^s_u>KTG9BGL>AUGBHx!yhxdhA;a`13iLQ*)Yw>(>kc42hnC)P6a$u1qAZpZ=Pjs4 zaKKW!?If9N2WnY~bQkqxDLo!bO{q*ypjI;*M%6X_su&LY7Fd2AEs_@Bh$W+fD^xIx z9&IqNMt6a=?N`foD(NadBLY^vg|HdB7X7MHP8H3h%)T-y+|Op4#v+GZ3)G4j7@CB! zsA~H}8b+d*->!8pIOZhj1ZpN_dQ+6L%6wiXDv`Q#iEsm$(&0*3j`|YxYh7+#AKO-d^mdj@2RM^e{k<9vo~>cBK~Z`P&J@bQ z+RBJXUP38=2$EANc$1t}yvZ5UNLR>TfAoXV5pkxN36(h0Xu>h5>WX}|zo%g8YA{D8 z!=yShN>W#P4-=5irHcJB1v-uN3(BgOIzTFsy!@O?R%x@|n7SV~-mWT=e&c_RP)VrD zvJp%~wRjZQpDV4`*R&)O8-;o zYK{R`@cc4)#10RmTqBz)=|;9tNM`ip?4;JbwAjg+^o?|qTmHOGdVQRSsr@5;T*GAb z_5a$a%W+W~xqh!q`qv=4YZQC~p3{{G_aIRrgH8IdKU^Pz?k%B`Ocq8s{xm4c_ZZj9;F<^Gi*lyzqa>^ z0KTLp!fKtSobOj-6B?7mahT#)qvlX{KN(e>39-zA9h!{s$m2Hzzt*nO+9(9Ic9Yh^ zBwd{S5$P6ZpV#;@u^6X#auwsW#*mmqIU%MIr)hZsu>iY#$B6HEC>Bz#lU>B`X5?*H znP8)F7uJX-PWOgtJ?vR9MjrESS+_N_a45V zRcg!VE5JuNZ7sD3Dk_!Fn<9#s)&}(qQPg=F8s$zzGf3yunN$n0OKaW~MQE%#JH<{E zVP8&L%gACJ%W3z@d)WU_wHNt_yqDSyIqgaLAjV*a*1TlKVYBDc$&BNRhGlhp>cqO0 zc%l4LsqFh@e!hX1C<`3Ycv#!tB^o$EH1R3XhrbdnoFNJXjS*BaLPuU`FE%*80B;wd zM1`>o8^jOLp|MNjEgH9KyhGz|je{D8G(JJxgQvCpGmZN-9whF=QQ|XrkJ!XhWP=#S zSI8(O4}R-o2vKGI1z*tN7a`PGg(43(StVkuSZ9@qGBIRTiykhHOjE6UgLd>uaivn$rYdNH`5?9#|%PCl#u^*R}xY^!ARKvFF!FAf* zg4^h=)80DV!vS@;-`-{1A)d4cj5_SM2aQI&V?Sjy;X_W-h|la7jUn-Gy9rMS+y8q* zrS%7me`I{jf0C$XY1RC#WX|l7t(v-3Q@3i;`I_`PO*&tbw(7zAMZN!|c~DIEe@ble zpCUdY|8BP9TK|hiJ68A)i-Y1x8T7U4X~NtYqj((qHHHx9ZW@nAF$vr8x^EJqXwUH0 zivz?R_#JU7+KKBiOf12AVui+9jX^|cnSon~v$Um6SOo?hR!>K>1B^NXzXlLJe3c+UQs*g5p`(p)Fa;6O633H_M>-%xIQ6hVoK# zrIr_ppU78?H%;LSi&w>fykEwQ$BgHVh33oVugtGax45XXXp4Fx{UR#@evdz^GfUzgL3Ej{R6=WM=yE;=?ko4Wgk z=Z^hIic8!{@dc@=nB{b@=~_FxYeOg2cJ{6C)SR`ovv*axt4Fa6PaEGY#(5FsPyxLT z$1F{E^>xng>UN(fT~XEDv5`6O`$LXwZeQm{%ybyn(TxQiee2M2bFXVoXmPtH9C9B> zOm&U2U74Z=0d#1@ndQQ`t*0Ux1dUEg0c=JU+^nk?e!o6QI>5Yb3kheX8Qf@SiG|i5ras z{E93bBw0cBH5o;eOiGHBg*@Zy=Zvo_BZtVSZ7@cwXJaMpVIO2TtT7&Uw^e_zm^7)7 z;$v(obZ%HGT<``)=b zJ2Nckwifn*|2+4;pU?Ze@AJGL_ulPDbfuC5$)0p&OKr>i`IQ~(F0Nc$Q&(3$Zfff~ z4=VBhdyBc85K(~Vop0Fa?+KuR$~WJC|IYVE>15Twlv2;z3|)4>^F zGB^{Q1HTR?27pniRwS zU-!~aEF?B~I4`8?PLQrv^5z=-!s-PYk3}v2-%E@rp!uJk^;>UKj654{Tf+ z-=64?@7x#!tdFNsvGwt;-i_I-mcH1)Kz&WufM4hiztGsALQ^VqyDN0FEi?#7tI)Ix z&0ci{g=&;)G>Ig=MwPtHC>^T?oc%Z5{(4OIf2{MOw6C>;xF8DK|5J|~ZW*CW{k{qh(W zKG*85WnFb+bsa>y5>|ONUTNv$%YXIgy;uEX`-8K}N*?&uflWkt9bT({Zcs{vg4Ul^ z$e=t<&dI(oW?iT}BGwqumvZE6jpM}Q+ zv2<6jBBYNg$o4W&dY4A}kjP{S>!Zo(L-DF6C*Idry)AbQ1-t;Nxjz-9tGpRj&)IyQ zw>7@&ld--X@y=KxMG{}v!`JsirC}X7ecxzxpz{_-q>Hv&IXtU_b&38heT<9Y_3dDN zUtslJM`J`k7IxnTosGjNWfT#v?%aT-uQuhc#B#JyurjlN_<9iT;k0 zwWg~JNsmh(Z&2V)U~DSl+n4IlGQCe1&=$|jXdE#3GFqSi`)luIbZ(}54YUM&Cj2`1 zJor}ld^q_t%e`jySqehIGj{x)2D=bPZ4@Ghc`h1|*RYH7n#zYR`q$!Er6#NW>=opf8R z3#f}S@ST2LWnRA@_7=bDPqjzn+Nd+uMz9{JEy(NL4!#SX1c$&_GF94)$C{q(qx8S5 zfl}&o{_HMWcTY$L#%J_m2D;y+ovAp}e=zTB3@ELOA8CK9^?)esZ?T8yekb1t^tT5n z+q5O(w@Y<}{S)ijj70bpT>eP*dAhxqoo*mp{^=^Xe8AQ43*buk344DL{L_SMjl2=w z4Zj8+hkpisr*{{1YS!2D6ZxdszCD-QU2_j!zXIP?fhC50wQSVrA-|ntvmrZIZJzfQ z2;2E2?w8QOPS6Yd#wy_`ov<2^{kwHuqXsvmImuBK_N8k-YT1hGV_V}FZNBze4Y$A# z9O2sKQMz$nb;XtIb`7NC+jt%qT-UTD`}#OSNF@6QYF5Yl*9vt>_bQ^+t9ozdkODF?#iRH8R$&<$kCZ^)W@?ncKtI!0zgjJx}Hg0 zI-k#}OUt3-T6em-cIK(8n!0orpHr8XT*pr?lR7N;1nMyDOVtpO)bZ@eI!0*rD^~<3_`=d7~*Ea;e z{7BF*Y6iOUiH^v~fHViRYb6f3d}fT~&xcZje59Pt=-Fn`h*#c)=?*0aR7W^gndGIO{&V^qKXCJcr z4mc~<-9Lq+$IRPs>8lC_s{NP3)t()2$#*AwG5j9*68Qb_rSQLoGtXuohqLa_JPBV0 z|4%scZe}`OsNB01{1Hfj?H2u(r{ULvt>8M)XL&7Ld!ogl5-bOo`|J7KxpNL}{2KBf z08fBdfE>m&&*%#o1V+R?rWQSeA2r9@(Alx0FYOP; z;n~aJJ-(~w$vpKSN3`12(~<0t?=n?=kb1P15rx|`hI*Plqj5E*ZClb^{@qu4x zVf;yqR=DPnRq(4>0cu>iJ(|ieZO>mun=PZ=mci~cQ|Iqh8wQnO+LgbI4qL`$whZ>g z*lQDVH0K@9TEFgLjP3^ygBQSIFjSBfy6n+M>KHy|s*PGnY*FETbu#r4_f%3R?1>~%E z=YzvPzcc5hPEKcUw*^|U{_E06AF>m&SXbnqhYvab&518~{`<16+nxVr^NsBJ@6^z^ zkWJ3UnI6CW51t!}*}rV6Ia}9J?cb#xsd4D+>Md*k%^|(Wu6muUtK(_^FrIil8<6cE z1WNDHI2p+j9vgw}yRnlKUnk#CPdUfx8>*1c?0d{JpN$M2k>1sD#QH9}&$VG)whhNK z7rQmSY*Q3IyJ1Zjebm+S0ncukZ^q8OC-ZflYp$gj>D-(~U&ysWBlG;f z$`tPZqRZ%M9JJ6R6ky&{7^(FiJ}X-1>MFASb7|ZhPL{AfhOGZ`;tQ_-mfO1B`Y)Sr zWY>S1Hyp7RjPAB_jKuSQ_Nf7#LtXb~>nghbQ$Ck=q{pG2Ws92qU-L5!StF;~ame~_ zT{;!--;(ZCtXl&bFBfbW7b}zp#3aB&y%H~zSK22@qs-lznYvA@2{yf z#%B``3&nfhwq*B?zIZ#2G&&PqTX$?%y!umn>+Q(5g8Q3n8+0BmKa?$>cOz_@wDunU zn*Eni%@g>!L2LFjwjk1c;fQaZqEFlUJ^CxG!~MwDOdh3oX`}B!Dr`gU+|o53ww@$=FpaNs95rOA8=oABSn~bDZ-l)hRR@?Uqz3wG*Uf}!rl6L zlD*d;_*=qf!XJZc2kR|aP1dfgxAAghPUy4jn?1g-sV6T`-n4hKm-X4 z$&PNf*T1mk{SvOec6$fiOW&`+XTx8Gp9lXHT)PIPTWaqwfd4DuYv8|zcfkJ*ehF_D z4c;rZaz7DBV)sm6@9bpXvr;?FT#$d?@fzi-{fFQh!>_|H_c|#f7PMJq7=N9A-|?m` z<1M)M9sdFUG;bid=NWGhCR;H+HWK*fu&ump%Qy_5M%s7a(v$Qu*WPRI{9lCk!2cV5 z9sFH*3jQ9vgB~gOGGGQFdQMc$_(+3~6Lxmco}I)QUlj@LLpIT;OrnUfnN;g-4SeuZ;aqq@n*(Q85B0SPmB-B?&me9)B({!+A7dN}E#&_! zcSHAMorFEipnd@y22(KnI?x6-fg8XcZ~#03UI9!M-Zan%)_`ts1K0!h1C5Co#w`97 z$`pUc-s@VpjdJ{J8~?byuebO5rgLgp?dz4~dmenz=KB{Kt9Ln{LZ})#jUSr5V2CiU84RXMFA|Cm;*?kv@#Jnjsw_yS2?=bKn%V|YUim^P{QO1ASJGxzdMIDsOV{q4NYx=B&}=xb6oj9Rh;Uo?Md{-2Wt6#Xhc5sQKeFf zCS6elkPs3;aUuyg1Gx4-zxMp&(4$H^sc06htpu+BzknX|_5XI#%mFu{?@9*g3k-$~ z3ci5>G?qcIfH*x%&=^sf>K1j!Oi&Hnn3=$}x=7RI{8HzZIdJ}Ha*DcPb-|MHho7zx%6K>0A6Ernce#9I6;-!;GbwoUqr@kkfN9VxdJoTY^ zOq{KUjtkdQ>JCor2VUWNN^L!LY=F+SvhAnbAdfq24b^4htqx*Y9ZXT*xkJNHdJ}Hb zZ_di5{teRG&wiY2CeG&R%F3qxR-W9$LYL3P+kD+w*@o5sYz9ZP|5+S|`z73$vNhL+ zaQ`>Z$u7^Z`=4$&<&#**x7@ z9q8GNUyps*;Oa2pHhnysUe6)?I&#vRaGM^Ras9tDs`NwGN+#T-Z=g?}rw{24Z*0vW zZ7qBX{uD)x|N3Qoz-wCEu&8mxq81Zx{-Rm|erQ3v6EXY&!q^#SJU#8Oer<*EP<6FGDFGq`%dU!wd7(^{IGld$OOpw#QTHM0}tl z)*ssvPkF7Y7BwzfvRDoqDqhz_{|r*;Cez=lOLP47W%UudMr(mDS9onRPv^Q9Sson-&?w5<)ZpUD=|>0c)8`? zG8G27{-2b$+z+S!n@jS^{NeWh%}zgg>l&HDjGoUvAuP;;efgQl_4Bx@VlZ`SeV&xj=n- zR_NN7n@`UG(*^SBnOs|eI6W_O{TD8?gjIRD6o6%DzR{Kb&fHi#h+UX?lo?;?N*Il$ zv^Em@r+oQnB>rrb`@2|H>}<6X(oh)-6?dJD|9^J1r=~u#qOP%9{dMVcPwsi?^)Ijd zvkT{*TlU$%d1NDBhfwy}(=9pJdXHy-1!cWv%Vc5O8QAKCN&nY5uA z$OoJU^qhJgm=73&Cq12w23mnT|6h%Lv!wPZ{QO7y+kk0SVzYW5OJ}XqP~d|&!U^2V zr$0=*GYIj$gv|o=KvumF)PP!`b1bUz{pbX^#-E-Ed>GFIXjN^b?gO3KXi-9;Xj_cM(;y=QY z!;+hX7{*PBn^N0yqolG^xeHOMCX%I)R%&gON>SseM7@%zR;5Jgp+u<@_cw3fQvcNl zv%fd<=FOXLX5Q?#;T0LaEYFlDRth2B1@S106q&!3@>;}Yd@8BXNVYezIL0PiG;OmZ zjywt3_M7jV{p)Abn_p?I$akK6>uuKKA?a#Us%>Rwy@ahLc`?B@8{d=s>zn_%^M3gQ z?;WZcHm*GV#qY0nT$U6_b7b4G#RRPZIY3U(T2MlyB;^lsrr#0Y%_X<~UN0MQy9kc&KbKs3j-gWHF}0IfKS=gI>$oQ@cYXK$gk&;jd3@aPgie z4gM5jEDGuq-kYx*)Ly-h=5iAfu+7YiLtL;(7j~!8Te&WoM?0+D@XbLDdAX(qmCiUi z7ieJL;{O57M?iRj~-x}Eb3f8h>{u)L7yM=AQ0IS6Tmv)At0aoFc8j)!@yRt5q4WZU7&3WV*$WE5lx#E zWtj6ojka*a)HnhIe9(7*oDP2CRLyf_@enF9cnB4lWAtW0ne3z+?i|@qvhZ7xX9~|s z6TX`>l1hv74M4PF9dxNU*UZMs=Q36mlbn?W&*L z=GnI{AP1!zm<8MlYyq-fo95erJ&<#95HJ<2UbqtGXm6)y-J1+}wd}TJN92~-UrNBP|`CO+&g;ii;!4hs+xCn?_7WM!=zK_QI?DYMdRaVqAZzW}-p`Wr|f7-_~#NAav@y>S=?;%QoKTt_`wMp)8x zRHXU^UoB`YS6Qw`oXQ4#Kn{bSj#Oo`J{B91ZMBFysTQ#>Tr0eAr%v7de_;dn2R6Wi z4S48CC6Ucac5$u51|n|uQHkZYv$Rh)G}UbFs6F#E-LTqLT}H2UJr~;wgk5u)6r3(8Mt=Pp+huI5Z8L5CQNX*yypg z@a#1s%!qe>Z7qWD_iMPXf7ApQ571Y&Y-Z z@+=YQs4bUBLE4g5TQ)AOI88H z@tD@Tv8Ec>8Q>Gh|g*ekYaMeetJKuGhy(~4D^|B>c*YQ2xN!9~pv(ax=zlaFfY zM|#&4&8O?fiI$uY59(cL`|4DVH>Tp2=DFUPpVEAlw)29vJEM8lVY(5Or--k#g1~_W z-%V=n$)$m&XuPl5@HW%)ef82$ zzv-(pyiN4=&gw{o`L4`QfjS?{-_24)zpOJvg_hB&T_>qwphAw(@PN;#9jE69YGf__ zYM@?v>B|9spiT%&n`ppe+r>8z96mNN+8;W){{YO!OhwmfeYF_g`ly$D>@)n80#Kq|v$c6lkzp04NoGJj0Z`TcoJ&-op9?ao0n~!zy>OfSTpuiSpH~6|=RN zrP63Ht%QHjIp6{h&PELF$Rr2T5OKmr7lH+}6g&|ZFPzjKI)$H|__gO8c`x#(-a;u; PBl4a*QkJ6Z@2vSRBn5+; diff --git a/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/obj/Debug/TerraTech.dll index ddc9f7c3cd6e26a66dd9655d048a766dfff0ee45..43e7169d0e33325b6649d8de5511e3dde5607284 100644 GIT binary patch literal 12800 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 PBl4a*QkJ6Z@2vSRBn5+;