From 6b5ddec07e9c53d7f132e8e47897a74a46e1fe07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Mon, 10 Apr 2023 19:18:12 +0200 Subject: [PATCH] Implement fuel recharge faster --- Projects/TerraTech/TerraTech/Class1.cs | 64 +++++++++++++++++- .../TerraTech/bin/Debug/TerraTech.dll | Bin 14336 -> 14848 bytes .../TerraTech/bin/Debug/TerraTech.pdb | Bin 32256 -> 32256 bytes .../TerraTech/obj/Debug/TerraTech.dll | Bin 14336 -> 14848 bytes .../TerraTech/obj/Debug/TerraTech.pdb | Bin 32256 -> 32256 bytes 5 files changed, 61 insertions(+), 3 deletions(-) diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index a92e5c6..a230cfe 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -7,10 +7,8 @@ using HarmonyLib; using HarmonyLib.Tools; using UnityEngine; -// 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)] @@ -30,6 +28,7 @@ namespace TerraTech { public static ConfigEntry magnetRadiusMultiplier; public static ConfigEntry beamStrenghtMultiplier; public static ConfigEntry beamRadiusMultiplier; + public static ConfigEntry fuelTankRefillMultiplier; public void Awake() { xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange(1f, 32f))); @@ -50,6 +49,8 @@ namespace TerraTech { new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange(1f, 16f))); beamRadiusMultiplier = Config.Bind("General", "Beam Radius Multiplier", 1f, new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange(1f, 16f))); + beamRadiusMultiplier = Config.Bind("General", "Fuel Tank Refill Rate Multiplier", 1f, + new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange(1f, 32f))); allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false); @@ -57,6 +58,9 @@ namespace TerraTech { energyGenMultiplier.SettingChanged += (sender, args) => GeneratorPropertiesManager.DoPatch(); magnetStrenghtMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch(); magnetRadiusMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch(); + beamStrenghtMultiplier.SettingChanged += (sender, args) => BeamPropertiesManager.DoPatch(); + beamRadiusMultiplier.SettingChanged += (sender, args) => BeamPropertiesManager.DoPatch(); + fuelTankRefillMultiplier.SettingChanged += (sender, args) => FuelPropertiesManager.DoPatch(); Logger.LogInfo("Cyka mod loaded"); HarmonyFileLog.Enabled = true; @@ -69,18 +73,21 @@ namespace TerraTech { [HarmonyPatch] public class Patches { + [HarmonyPrefix] [HarmonyPatch(typeof(ManLicenses), "AddXP")] static void XPMulti(FactionSubTypes corporation, ref int xp, bool showUI = true) { xp = (int)(xp * Main.xpMultiplier.Value); } + [HarmonyPrefix] [HarmonyPatch(typeof(ManPlayer), "AddMoney")] static void MoneyMulti(ref int amount) { amount = (int)(amount * Main.moneyMultiplier.Value); } + [HarmonyPrefix] [HarmonyPatch(typeof(TechHolders), "SetHeartbeatInterval")] - static void MoneyMulti(ref float interval) { + static void HeartbeatMulti(ref float interval) { interval *= Main.heartbeatIntervalMultiplier.Value; } } @@ -193,6 +200,57 @@ namespace TerraTech { } } + [HarmonyPatch] + public class FuelPropertiesManager { + private static Dictionary tanks = new Dictionary(); + + [HarmonyPostfix] + [HarmonyPatch(typeof(ModuleFuelTank), "OnAttached")] + static void PostfixCreate(ModuleFuelTank __instance) { + if (!tanks.ContainsKey(__instance)) { + tanks.Add(__instance, GetValue(__instance)); + DoPatchSingle(__instance); + } + } + + [HarmonyPostfix] + [HarmonyPatch(typeof(ModuleFuelTank), "OnDetaching")] + static void PostfixDestroy(ModuleFuelTank __instance) { + DoRestoreSingle(__instance); + tanks.Remove(__instance); + } + + public static void DoPatch() { + // Console.WriteLine("Modifying " + generators.Count + " generators"); + // Console.WriteLine("Should patch: " + ShouldPatch()); + foreach (KeyValuePair keyValuePair in tanks) { + DoRestoreSingle(keyValuePair.Key); + DoPatchSingle(keyValuePair.Key); + } + } + + static void DoPatchSingle(ModuleFuelTank moduleFuelTank) { + // Console.WriteLine("Patching " + moduleEnergy.name); + // Console.WriteLine("Old value " + GetValue(moduleEnergy)); + SetValue(moduleFuelTank, GetValue(moduleFuelTank) * Main.energyGenMultiplier.Value); + // Console.WriteLine("New value " + GetValue(moduleEnergy)); + } + + static void DoRestoreSingle(ModuleFuelTank moduleFuelTank) { + if (tanks.ContainsKey(moduleFuelTank)) { + SetValue(moduleFuelTank, tanks[moduleFuelTank]); + } + } + + private static float GetValue(ModuleFuelTank moduleFuelTank) { + return moduleFuelTank.m_RefillRate; + } + + private static void SetValue(ModuleFuelTank moduleFuelTank, float value) { + moduleFuelTank.m_RefillRate = value; + } + } + [HarmonyPatch] public class MagnetPropertiesManager { private static Dictionary strenghts = new Dictionary(); diff --git a/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll b/Projects/TerraTech/TerraTech/bin/Debug/TerraTech.dll index 53cb99a465e8d41170c24884b161271cbbf6fffe..88a1909c5deb8fb8ebd4dbab9148619aee710313 100644 GIT binary patch delta 4439 zcmds5dvH|M8UN0?yLa!sd2imy0vk4u%_bW+8Xgg?LAHh%2$4rbd_W{xDB?v3rIxU} z0;8fhlHTz#owlH@w6=~TUD_Fjw1TyRl=@&s9j!AK)OO5NM{B2}R%`n^-@Tg^`cG&4 zuRD|9{od#MzVn@Pcazza8QpjH%+vF_M#%e|A=ywM3WzR*KzD`3gX2FN5)+OPE&kmD zL?Nd^wma8|7ONrwi!lB!bnX#tqRaV}Xc2RrH^ofxp(A9ue@z3CaLy*?WC!I*E!{+9 zty;f4Hb7Edxgq5z^4U4r6(pMmQh_PaP;9!4Hp3xCK9xuXl+upF4zcSg#k}0!0fBvi3L~Rs+{D-r$RH%TXJjXwhCu!0oe&kY zH3mf#-L@D88t|-qhQ(oK#>&nOZPqZ^okz^d@`bRbRJD@GC}vr=7dj`+ zY3uq_G*@mj9m_QhJExkag4kEW%57RdC~n#!5K*Mg6Tl445PVR^VyN;>D{`AQV71or z8HzS4J1>h=p$gyR?6bn6*EwXBx8UGfu8Ehf-3v*+!CZnp;QZAJxefl&S8ecAfO8s* zLnLVw&BReJ%k9OHbJptHiebXpjxKRCEHdNsNq2Yc)H#;m-e9-r;A=&v;83TSL z2{U#xE@!kEf8xK}Z_!c4lPr0QF__l>?cYGnn0Sj;=(BW-wgPo>^n;M>*G~YCGya3+ zj|V=*cs|YeD&xDrDz?$7(Wo%$XxJD8-ers#RrIj2N>j1yExWRAhD2v|k+rjjfLT}|8YVzOwTxk_3z!SdH3x99`V7S&oO(4jDPCP**P zA*a9W#HBCjC8CT%0fkE#cQW292XNb+mFs}r+IHYZ?IGYc#*JE5(aw@!OWWhRAq1@q zW1DE4N&|+_XpP4$0OzN59``NhkzlLncTNTC*Zxsnja**9D}dvt29``Z0Fnz+DyL-d(cWNW3I!boS;^E)Z;z|7o%sHbCYPJuC`nf z6VyiQJT9b7;Jend9=Ah#hT>F;J6ol@M|+MsDB*DrK$oDWJZ``9S%td~>QoE*rLMl0 zOaT8k`ZqYsl76q1mTL4oXhAPCzQOnoYd->N^cm1c5*LP_ETB#`KtWADO1lrBGRh$o zQ}P7U=cA-czhvXuFJQ^}n6u2wa}wos5odwLRm^01GA#r-E?DXM4tth0RY!(e7 zC_6-%_&hLI2+&uF3KGWk!lW)^M0AVGjBkqhVv}KuK4?!kFhVbx+kNdEC&>|#?3-lYB>OI6 z-{tU47s*BJoMgA-;w^K#|G1bmcLI~z9{+XpPlUdX0#=bcE*5J)^d~v=2!|fw&?6jr zghSuLp+`BbTR8FvM?Nb$tzYOP>^sK3W6F1?Hpb3l?7W+u_pEJQ(p6Ejd+PVcwbwEbMPTw)fW}rXt9n+ZBBH}Us8DL01!;-K+B3{(Pex>aJoecE& z*E;vrJ|w>9G}X0K_NrGnzq8d-eFXj18Lq3yZmC-&&4o7&Zyvqzrs2`-k|YNay&=1|1o5;16cr zFD#T^hyaA|%Uhh&9jl$A9d}Jbpw3*N&U~OwH}%yQOjhRp?}4v76cR)S@Du5PbA6&( z7}>3ffC#>W-ygZp7m5y#H&o$28;^Ca&xU6o6WQVm|E`&XM1|0mCbDI-KM>=Iz<&Vp C&dQYl delta 4347 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 E3kDE+x&QzG delta 3514 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 C&dQYl delta 4347 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 E3kDE+x&QzG delta 3514 zcmaKueNdFw6~^Cp*@ay{CcFh*7NK1vM3F^Ym(Kv24Jh)l3Ib8P+F*;$1~4Ln)=r_~ zG-fibb|eR;X=_Gfk{M03jor{lQ^z>dSQ9nTX__X}G}TO;N+&8dV-s48eI7VF<*)Ae z@Vn>S`<`>(bI)G4Z`|w~H}~J~vKfZ46v{u5`$yB^{ruj&gHg+N%M`C|hBL)(7%he| z8uPdg$J-81vpwxxk@aM#D|q1bqU1BzMx*hI?_9X2pBE5oF%$>IOMhaL?CsuZWy6{e zEr4<$pZK@G+h0Hb*E5_>S5ol@&!21m(2N%=d6oUmtmjrnTa({*+7cYmMd>fZNr%^I z7Rz6~UK#W*m4`C!x2g@J&qSCS@M~bLY|jW-E7iM7z4bDj5pXxEw+T$d+Ga4{D3G|h zerFGY%r@ezXz|?531){J%s!8-(wUYleGB@6v&_jfv%#5o^yaOvCPL7*V7tLgFa<0C zJzyD_3YLR&B$!j1@eNqqtQT~G8DKIv7xaReay+NBI!jm02YDuBEa!b{yOk+mHs-Uy z1t9C40|q!RexKX)NwqKRSqL99`#}%581#era>`eRkb* z!CMV7Gc&PsXtQ%_z|CMS*an8cE^wu6Sy)?A4~rQaKt@>&PK`pFQ5wPJU=vscHp}gW zRjx!>(_mQ=%*zQ4AkZt&Ip{ir;z&}UMNl2o3OxZGfKEb}pwA#X+CB}+hw7kKs3$s{ zm**(?srKPBVC-O7cG_&FpMja+&p~eU7a+eX2PC7Q%5w-7_wgLaCOQoAke-*_1x3{_ z>g*8^yD-RD4mJ;MHV?_>ISR6QUIN)XFN18JBVrc1&12#z3|qg1j~P#ZY@Vp>DGd0B z)cYH7YSYl>eqIAv^phZ)W>`iFE3DUHG1l)uHp3|?FA7+v)%ym>W;i3eivp&|P|>{d z0Tk{P=p1w%GH?^|Hd+MLL9Nge&;jUG=mPX9G!7+4J;h0J8`o?24IqoaZsKJ@n|=N* zkVSbEWKmi`_A}R&tIf@Bg#Qun+h8mB9dHxaD*H;q<~L=eblyy#!!RnL^-y;-z3iZ) zWDAz@ogW8dXTgfm=6P=gGr>-f=e-T&d3VX3V3lVFEI$2R&NwT^TS2e-`Ck* zkmpUta`07Y^VLYc+7G}ia2Lq)?!!Nxckje`@0J@6hpivN$Ba*ceC8=xR}t|4NWDJ> zr=B-$?q@H^$ooK^`%mOlMTPm8n3eN#_o5g_pf{i^(3enRJgz9H5?T-SKm*XRXmjPS z9A=_8YBD`oH~Ieum;g798F&dS2QN#op*G`Buo&fikR|^!$XEOT^nxGC@rKgszv!xuL6)A3MyaKZHS3#EkD;6LQl>Y{a@>Ff<~>JiZ9{%(Q~ zfVV(?f%vY=u0Ri0k;FR0&0PJpaJMr=mK;dGH|YGP(D-#wL(46 z0CY@-n;UoW0=E#28w}wtA&2lJIf6eV3ql^pQ{-i}bJ4f7@v~uq%QVg&jWeQgJm?#) zYtZLBL(aus{+QMdi9`b}MTS?xi!2PgCH zGB)To@5bI=-^-(c($zky>#EfsQa`>(6Lo%5Uu2)I8`Swh-T1Q_|Dw_WZBBWA?Q+TA zo*Z4YZrn5@k{fo%zlSI6HmM1xN+jGVha#!bo8c}~S{^-QCiVy2$sIPs#-He^t~^`> zlOOT5EuMX!@ey{x&tA>a;@IYt?zVha?r#^~MqI;?ZS8ZUxP7fTQ~KN8X0{w{pJSFy z{9PqiF>aB&?Qxuf*6!sB-(wNGk%GZ97$nkTZ|ksMp{KhoV&BifmA11rr|mBy z7yoDH$28svPmVY~Z9n;c=FVfz(#3o(I@