From 59641de2d7e1efcac217a81f80c0ef6ca0823a89 Mon Sep 17 00:00:00 2001 From: Nathaniel Cosford Date: Wed, 4 Jun 2025 16:16:45 +0930 Subject: [PATCH] Upload from upload_mods.ps1 --- .gitignore | 80 +++++++++++++++++++++++++++++++++++++ CustomMuzzleFlash.csproj | 67 +++++++++++++++++++++++++++++++ CustomMuzzleFlash.dll | Bin 0 -> 5632 bytes CustomMuzzleFlash.pdb | Bin 0 -> 24064 bytes Harmony/Init.cs | 16 ++++++++ Harmony/Patches.cs | 27 +++++++++++++ ModInfo.xml | 9 +++++ Properties/AssemblyInfo.cs | 36 +++++++++++++++++ 8 files changed, 235 insertions(+) create mode 100644 .gitignore create mode 100644 CustomMuzzleFlash.csproj create mode 100644 CustomMuzzleFlash.dll create mode 100644 CustomMuzzleFlash.pdb create mode 100644 Harmony/Init.cs create mode 100644 Harmony/Patches.cs create mode 100644 ModInfo.xml create mode 100644 Properties/AssemblyInfo.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f69e0d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,80 @@ +# Build and Object Folders +bin/ +obj/ + +# Nuget packages directory +packages/ + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +x64/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.log +*.vspscc +*.vssscc +.builds + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper* + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help +UpgradeLog*.XML + +# Lightswitch +_Pvt_Extensions +GeneratedArtifacts +*.xap +ModelManifest.xml + +#Backup file +*.bak + +#zzzili +v15/ + diff --git a/CustomMuzzleFlash.csproj b/CustomMuzzleFlash.csproj new file mode 100644 index 0000000..3706c60 --- /dev/null +++ b/CustomMuzzleFlash.csproj @@ -0,0 +1,67 @@ + + + + + Debug + AnyCPU + {6B763422-D3CD-4136-9C64-E3D34B7A1FA8} + Library + Properties + CustomMuzzleFlash + CustomMuzzleFlash + v4.8 + 512 + true + + + true + full + false + .\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + .\ + TRACE + prompt + 4 + Off + + + + ..\0_TFP_Harmony\0Harmony.dll + False + + + ..\..\7DaysToDie_Data\Managed\Assembly-CSharp.dll + False + + + ..\..\7DaysToDie_Data\Managed\LogLibrary.dll + False + + + + + + + + + + + + ..\..\7DaysToDie_Data\Managed\UnityEngine.dll + False + + + + + + + + + \ No newline at end of file diff --git a/CustomMuzzleFlash.dll b/CustomMuzzleFlash.dll new file mode 100644 index 0000000000000000000000000000000000000000..eb5f9bdeb7e4e91f9334a94a44189a20ae51ebca GIT binary patch literal 5632 zcmeHLU2Ggz75-+{b{x0aCU*W)(s7(r`LVa_pEy4>tsSqOZsR1zyK$P<$e!K3-koH2 zW|^5yy{S|=R8)i?l^_xN&n?yLWc& zwYO?oDKAL9>p64o`Mc+wd+)h-eB#M(AOfI?&+Xg5b-raAQt+d}0@=|AUWwwTtKaIp zu8qIdnJ!qqQS#ipXBLgD={Rm+WQ5_B9m8^r#Ho}~baNuMW=-49s_BVQU|fr!*#F!s zwb5>2hjEVwt5_O*S$!Iiv^>Kj079lw?R$LjjAK+Fg1za)*5r(&)8&7NuoFdOrH zFUy|tZHS1RC>0Oi)iy-$W1g^G3QBXBK6gtj?25m)Y)LtUjX`2n& ziqfdPM6T0*p+Q?w8nu_mQhV=qefK8$W*$1?5j6q9R#u67-@-HhzB z(Uf*(6I!`MfPZWKV89dsedB%$ak)e(r|5JS>#DevlRO})OI+^SL)z%!MEU&e!nK+2MYhX!p|z`DflBrzl4`5Go#=wMY)L^S{weUZKIu7q(JVIDCki< zM9XbB8`;Lq_Ala5Y*g?tJ&7uBqj-QpwBVLj(A)7>I@yM=P`(8V5tp(6S2SCg@wNCn zB}P?GW9A;EuIxn^@k2O=2}8gi6|dw%m3`lDl3_5Pv_!e{Sib-XZ(>-f^} z2yLCkYFuHy))BT~3t=1f5Uxe9f`=3wRxqjH=M+4vph>s^mcqZFU`4@8ge{P8E557n zYiNsfvVIgIal#pW5U=Anju7sT9K~fNa~WrFjQHEyIDU)GkqP_(r^$VX+_iWYL1c>f zkp2`5Jcn7$z*lioi{Tzr5JLyPNVtvT#n6S93HRYwg#8MBR>2WPKaQKErxfKW1+(}g zDd(}8)_iQ#M(_+R??KZ-xX!THnmAA4Dho*_9#n{qHH$L9Wtrv`?UI_|<-~8+Dl1Y~_XnZp%zL5J-qjIiHsTOSBQUIA!_PGTN~3i({T1v|G=p>5N&nm=d1PP?xl7%n{d_v+`xnl$mH`CxoB% ztkQBO{Vp+BNt_h6Ij=CkQF+2+IG_s|v-cVX_h;?S>^0<8B@&$`>!%V!{lvh1%SPosqI1xW$k?W}AKiNlxx? z$-;!|2Xof^%%m`LW1d@_NphfJwP5I+nLQ6>Vc53OU?i3!m6M`$5c*hs#U{m^EtDD5 z=AdUJRWQ90V%fm;YH|t7%sceK%K9}@Ey|=52+u90gm=NpiUxK#J;Gb$hii{XVQ3Uj zR2;KtWjQ+~;RO~cQ>IX@tFOJb^V4N0A~X`)vEW~?eZ{8>l@E_X6dBsjLv6;Dgo(&=RWOglncx1Mjl}ei=S5%O-|n?4eg5? z-T3u2!|03m^#OY{>>SJ-80;VD>+8w&XLCIRz5Rndhq8kMJ)%F?Kae?K_Rg8Sncu5n zRWI*8{PBLFVQcKJ#oYl<-jxTZeyaHv8^nZb=o~IoFh)zwp(lEf(Mq$ z0u%AZ@BjRsOo+_c0-qcF?zmBZaFMp+`j5#}BIUXty#MMOSCe1<-H(5`_Udm`R!0v{ zrvhOXtJ`Fn)z2)NrIJ6Lb&EW*rVkhiv*H_R*GO1mnj7AqZkVBIH*;>9m0Os;XynF9 zxeV;;Hw0b7^Aa~C*4S#_8X;$9#Pt%keS*6^JU4|sr8xHTg@eiR(Ir;7Q#1JrDyDPCj9T^~;;vH^=a1@iolKj#>$$pY>Ed1)mFPr}H z-|z-k+X3PGQEJO3Z*pP%P+bKQgc_~NdOyZWDXV*u^>U82Q?{K-D^0FRs!zVGp%%H0 z;sZZv`UQ<@^eLcJSZf=+fm0Wsqrg})>Lv; z5!U#2O4Y_o(1OnjFa0Pj^K*o!mrsfu=S1B}Hl`x-c_x7VwAR_0qAia)OR@Iy)*N4a z_`eo@uxTn=fs%FTn_cJOoyUyvbh7!A^Dg5Ur=7gAA~RCrOs7YCKjFr)KTtgNKWp23y9d=^*gF}%CijPQR(FFt(t MOnz$V|0e_g11-db+W-In literal 0 HcmV?d00001 diff --git a/CustomMuzzleFlash.pdb b/CustomMuzzleFlash.pdb new file mode 100644 index 0000000000000000000000000000000000000000..6857f779391cfc5a30c252e62c4e173d0a60a34e GIT binary patch literal 24064 zcmeHOYitzP6~2A|ew4=sFbyHmra%EZ-j^S{4kQG2y}}fyfN5IDN_ciXi?{6Vn4KlY zQB=7qZKzVUNUf4aB2o})|0F4q!Vi=*5>hKiHB}Qq#jjRL6Z*&#sPe;6TIl!9!z`|C zPm@kIQZxLmf)FZ+hqkNPV@9LE+}2tuP&8?*{nGd~$M zD&?i5Eg=10((Wr-`LXzpjU)5UyN>pVGhaVZdHlDXUwiibznya(-Du|PpZmccSMt2; z^+qAaYPw!u_}023r(KITKl#+)g6}``VuRb#;PZKP_eRfuw0Y0R-R~ZM^PBFKk3KW_ zn-d?8ZhQ95RPHYHDgXNhGW(bIoLljSk)!Jmoo#vf;^Gq*A9`QgldsoD zA9z!HYetlpLW{P5Q~p1>ZPleeH=H@!5&g$swtSxX^k2ueuQ>4g15bud<&Mb_}#O-T=$=3f%u>&mJ|J}aYOU;V4z-0bkCjDQm zSxe@Ar{;gT{x2Dq-=L^d{+H|j8_ZfV8K?X&*Z(Es@*5PrdgOu|F`XG@U_g&0v`j|J#)9sMGNikAY3@i$jdg2%dMtcU&uf|PgO5L+R-g%k!DNCv|x@z%n$9Ae|RngU$=i$y>(VUV|2esV(`yNqqdP>Va@ECV&n{-{x z#M48Y^7&jUelTx3!kLCqg`BNIR?R2JRd}pW1;tW9xj_YItgt<&4XC+%O4Va_OS`g3 z%{k`{Tz`Pwj+FHP7haWKyfl1o9tFOK#2(PeAc^lM-T!O7tVmdfJF}D$oYn#O9sz;Y&^ArLD-zxk4^kbDMWz-`lT|m%bn`>k4^MRJK6>Z555|(&9zS3ZGe&1ZJgs z4gZPlnx0Rl4(;8kDt*zMmf72tS2LRuc?>!jW|YK!AsR%Li!u)ZZ8?x37Kl}@Z&)(} zrWbrxG*@^;b@lHyelYUN?h9SNUR_)H+6$+8!792%LJ7puYfJ0{SXw1L%98Uj`imT@G3$zALIl zr>GJ?1nmO-9%vNwDbTIZrAmAX-Wnj=M_`)ZGf7EYY2Se5|6`WMTMIPDvS2Q4Y_yTn zBPM-T+kWPIMSh#7fqw28!pb4z*{LSes?j_64cY(h@ASC*3gcPG8nMb=CIGPeFk_eK z1H<$I{STjudQg71#(uC7bUtVoDEmV#ygwgUE0zKMzzA@?m;*g+zj7QRQ05k3FL1U2 z{m=ID^N(JuBXgXTP#zZGw?4~jy;t05?h^Q20cAJvTa;-c-y71K!L9I2C!@&w|1Uk4 z<3YIt=VZ*6VpX{tqQu+p5vz^0ALoIJTUg*Vh;;@0zIGo0gGEDuoJw(hp-{+QDJ=e$ z5;xi`QlInwRAA2yQ`O7z(zgJ8JXq_m;JkZ>xaY@<#pS^zNdFuK8$j;^o-UY_u~!mz z0)_bGj6ra@cFjyt7E^ZKEL|vGHWPyTivm$bsTnvlLWLrIvU-ewEZNk0TL|`4u?Y*AOOTJ3{%{K}v-~+QI zVdQHpMeQ=uYNI9Gn^(dIyvbzRjnqkC07cG3{3Z!2J1dwygz-aXq!tyXbw-70Vx+>3 z`&({?r!1gTO{g=RZ>H^9NoSb_ež)a>~@izSch2Cwc?0yb$!n>0>F&J_o9G&{S)w8sPh5cD33q}*NcaM>>VqBcLO29STnMB+y&&? zhu@oW@4?L^;j6I6I4sm*;r*S<>J-PPedTAL@f-@Gd&+MF$CZ&|B1-QN^ z*woC)>uk4xJpZ5V9-h8^TX~%3$ zmzGETmwT|Oz@8hXs+Z-ZZvh$qAOBum#{b!!`O=#pZgHD$Nw2u=6S(7Amjhs zCw>*U23Q#XzZZGN|J^{IAo0|QX9wJ47smg;g8WM0YM_k&!w3#RqeF6}7-<1%0cing N0cingfzq+Se*nr8P51x+ literal 0 HcmV?d00001 diff --git a/Harmony/Init.cs b/Harmony/Init.cs new file mode 100644 index 0000000..375ad52 --- /dev/null +++ b/Harmony/Init.cs @@ -0,0 +1,16 @@ +using System.Reflection; + +public class CustomMuzzleFlashInit : IModApi +{ + private static bool inited = false; + public void InitMod(Mod _modInstance) + { + if (inited) + return; + inited = true; + Log.Out(" Loading Patch: " + GetType()); + var harmony = new HarmonyLib.Harmony(GetType().ToString()); + harmony.PatchAll(Assembly.GetExecutingAssembly()); + } +} + diff --git a/Harmony/Patches.cs b/Harmony/Patches.cs new file mode 100644 index 0000000..aedf776 --- /dev/null +++ b/Harmony/Patches.cs @@ -0,0 +1,27 @@ +using HarmonyLib; + +[HarmonyPatch] +class MuzzlePatch +{ + [HarmonyPatch(typeof(ItemActionAttack), nameof(ItemActionAttack.ReadFrom))] + [HarmonyPostfix] + private static void Postfix_ReadFrom_ItemActionAttack(DynamicProperties _props) + { + if (_props.Values.ContainsKey("Particles_muzzle_fire") && !ParticleEffect.IsAvailable(_props.Values["Particles_muzzle_fire"])) + { + ParticleEffect.LoadAsset(_props.Values["Particles_muzzle_fire"]); + } + if (_props.Values.ContainsKey("Particles_muzzle_fire_fpv") && !ParticleEffect.IsAvailable(_props.Values["Particles_muzzle_fire_fpv"])) + { + ParticleEffect.LoadAsset(_props.Values["Particles_muzzle_fire_fpv"]); + } + if (_props.Values.ContainsKey("Particles_muzzle_smoke") && !ParticleEffect.IsAvailable(_props.Values["Particles_muzzle_smoke"])) + { + ParticleEffect.LoadAsset(_props.Values["Particles_muzzle_smoke"]); + } + if (_props.Values.ContainsKey("Particles_muzzle_smoke_fpv") && !ParticleEffect.IsAvailable(_props.Values["Particles_muzzle_smoke_fpv"])) + { + ParticleEffect.LoadAsset(_props.Values["Particles_muzzle_smoke_fpv"]); + } + } +} \ No newline at end of file diff --git a/ModInfo.xml b/ModInfo.xml new file mode 100644 index 0000000..9bf2e5d --- /dev/null +++ b/ModInfo.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b8396ca --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CustomMuzzleFlash")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CustomMuzzleFlash")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("6b763422-d3cd-4136-9c64-e3d34b7a1fa8")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")]