From db4d08e4bd5026744a333e294c7065505d46b928 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Wed, 23 Jul 2025 18:50:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=89=E4=B8=80=E7=82=B9=E8=87=AA=E7=A7=81?= =?UTF-8?q?=E7=9A=84=E6=8A=A4=E7=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/Assemblies/WulaFallenEmpire.dll | Bin 45568 -> 56832 bytes 1.6/Defs/ThingDefs_Misc/WULA_Apparel.xml | 162 ++++++-- .../.vs/WulaFallenEmpire/v17/.suo | Bin 90624 -> 63488 bytes .../WulaFallenEmpire/v17/DocumentLayout.json | 69 +++- .../CompApparelInterceptor.cs | 358 ++++++++++++++++++ .../HarmonyPatches/Projectile_Launch_Patch.cs | 42 ++ .../WulaFallenEmpire/WulaFallenEmpire.csproj | 4 +- 7 files changed, 581 insertions(+), 54 deletions(-) create mode 100644 Source/WulaFallenEmpire/CompApparelInterceptor.cs create mode 100644 Source/WulaFallenEmpire/HarmonyPatches/Projectile_Launch_Patch.cs diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll index 23dcb6dccde4cfdfdf49cf761e04aaa32930d5e4..a6de9b87a4422537ac8aa42c1e350a35821cf451 100644 GIT binary patch literal 56832 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 z z;*m|vz=_MgYxg3EUjm~44;McXuc~PyoRn*GD7N65Lxc+n4DZ5i;SPp= z2qPeq=`OBLtj|DvyaOtA=krJ;&5U^38BfHszEj4~zmW^-(SD1U1kY`>k&1Pj!D z>A7dtZTs1)8El>`>tm#XE`csOsWGd>EZpz1I_WXXXGmNYGle4`v!8$d`R|b3_$v&l zK>%w=25YUw@%bKK*skYRb*vA_#kc@2xZb2<^e*M14^{Y&rB$?o zROAAs8t*9dXSa~tZhDC*MvSoW7n(fY4(LounT~4wNLBxqOSC|r&#Rmk@)kRxyr1au zvsNuzbAK<3KpF%G87&>cT6ds?J6QiPhu+r0&nSKekxnt8n6GgG3Bl5Yak5JJ1muKw zgFEbEzVHznuUPlp42S>NKpENo?`WRcYM>kY2UD6zk@{zYpv&a|bfcDN#G$ZX1-yg2 z6EvH2c{rza!eP4}H35AL_L9BeCx2L5Q!yLEl=dx^tkidnCB$$yQ`_tz;$q^k)=3ZK zHZFGuagb6BoVk(?GFs?L8yCMaVa0<2Wn2OL4!%^B6}Ys)a4Fc zYOC&Ji{L)?RSKdDmnf(7O}acxMlpAvVN%zlgyR;*mH!=;Z(LSt;{s)SEq|fF=ZTpO z&TY`Q$&UoLJt%*=dCe@>!)oC9#+Bd6{yC!kR z3caV(9$sw6CEnhgcdq$J#*L*OuQ~-Rb|tyNo#&tBb-uyTSthqTrcqS;u5f9Rpn2ge@VzGdguZPm>?cHYdk z;h$gozr;Vk)y6+xGtW(Do@nb=!#pL)wbtQovR!Z9T)w$72y6PajH{;-+rOjGztw+XF0D*gxyShbo0ND?3+edx+^TJap5e*; z2-iXU6Q9O6_8{I2Bix_l(e*(qc_I6s|E)!~|F0y49pA0+zbrQiy7u2bA{knhw}8A% z<&Y#V13jqM?{24B-Zw%IK(Jc_ph?)%vv(P##kc*838Dp=XlA6l8sjNAX)hUWx0 z;A<$thxfglFb4qhz_q4-r7ch1Ir7talDoO|wqfM@=&;S`u(XZk)L2f79ad*I j^pZEtg!$#jx9nQ=JSJ|?_2(?6Y3emi*ROy7?=bK`9BDep literal 45568 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 diff --git a/1.6/Defs/ThingDefs_Misc/WULA_Apparel.xml b/1.6/Defs/ThingDefs_Misc/WULA_Apparel.xml index 631c6d3f..8f3f41d6 100644 --- a/1.6/Defs/ThingDefs_Misc/WULA_Apparel.xml +++ b/1.6/Defs/ThingDefs_Misc/WULA_Apparel.xml @@ -479,13 +479,31 @@ -

  • - 3600 - 2.5 - 2.8 - 0.01 - 4.0 - false +
  • + + + 2.5 + 500 + 2800 + + + true + false + true + + + (0.9, 0.8, 0.2, 0.5) + Interceptor_BlockedProjectile + Shield_Break + BulletShieldGenerator_Reactivate + + + false + 600 + + + 60 +
  • @@ -533,13 +551,31 @@
  • RewardStandardHighFreq
  • -
  • - 3600 - 2.5 - 2.8 - 0.01 - 4.0 - false +
  • + + + 2.5 + 500 + 2800 + + + true + false + false + + + (0.9, 0.8, 0.2, 0.5) + Interceptor_BlockedProjectile + Shield_Break + BulletShieldGenerator_Reactivate + + + false + 600 + + + 60 +
  • @@ -904,13 +940,31 @@ 炮弹 false -
  • - 3600 - 2.5 - 2.8 - 0.01 - 4.0 - false +
  • + + + 2.5 + 500 + 2800 + + + true + false + false + + + (0.9, 0.8, 0.2, 0.5) + Interceptor_BlockedProjectile + Shield_Break + BulletShieldGenerator_Reactivate + + + false + 600 + + + 60 +
  • @@ -1039,13 +1093,31 @@ 炮弹 false -
  • - 3600 - 2.5 - 2.8 - 0.01 - 4.0 - false +
  • + + + 2.5 + 500 + 2800 + + + true + false + false + + + (0.9, 0.8, 0.2, 0.5) + Interceptor_BlockedProjectile + Shield_Break + BulletShieldGenerator_Reactivate + + + false + 600 + + + 60 +
  • WULA_Heavy_Infantry_PowerArmor_PowerFist @@ -1290,13 +1362,31 @@ 梭镖 false
  • -
  • - 3600 - 2.5 - 2.8 - 0.01 - 4.0 - false +
  • + + + 2.5 + 500 + 2800 + + + true + false + false + + + (0.9, 0.8, 0.2, 0.5) + Interceptor_BlockedProjectile + Shield_Break + BulletShieldGenerator_Reactivate + + + false + 600 + + + 60 +
  • @@ -1345,4 +1435,4 @@ 275 - \ No newline at end of file + diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo index f4e6a58615a29d775caee2b14ff9af6176c6f170..d3416850b7c4038ae4b9411ac00a3fd2fa440ff9 100644 GIT binary patch delta 5589 zcmds5dvKG-5&!nHB+Ih=mY?`-1GcfSY>QyPjpYZ%3C4&=%p)YWumy$)TQyP&!i}7? z4IP*%Sle=*hIGJX%1j7puxQj_CdETDooR+iaHeU26ik^yGbsCA(m{_p&M+l<_3F(PPPRXAu)eh#*80QV6UlmZ**pLr5fyBWMX}gam?v@I68} zA(D_m$R*ebnS>ky>v0ktPlzH+B#>z2X`%(AeEx_lAmj&J(gXF905t|E9#Jn;vc}at z^CqG>OsifJe9{_Lp7jD%_-Px_4#ExA6)2Obz7}83i;H=YxMadQ!g@j;?rR?Bk=I0w zG_3p`8LEIsEC^Ge-!+9dd1ra_woWkH*8T}29* zh6X6xL``6mOdzn`O9^a}Nd#^i7NE)iB~j0_dQ>R$U?u96leCKi50(uf3J+lhXc;I|afPQnI45+R##m)%Ildb@~zpYRgF9gwk{5i(lGC|xp|bqdg8 zr7lj%{uE1G;u6-)Yr&pnC9spSC3&{&O_>BXc~Bo)l0Atn!=98!;ALQ|v2_Xwyd;xZ zdm6h9_k4orR6-eHT0nNQ$5I_pPn9`@2Etr+gRn;877-S+0(8WeE2#en?vKwKWlqIs z_QyH^qu)~CI{llNoAlSX#nKwdCYdFR)Ix@}NGl~PzCJYv4YCGJF=_=*Qk<-T1U#jR zRq|r4!olPsJe8b^HOb|kggQm-?MJ-WQd$JV)lS&cxv*BR*sCC8L=cs1&pig(5=8NVoS zsTLCZRt&mgT%IO{_exCHBU~T@y<0;IRDGWX^3+}OR4DLDY8S+zGtG_7TNJR%do^Q& z4B_a^c7p~lXS-Fr`LzNf2NNvf;rSrR^bZ}#brwZu1AUJI4F_q<_@Cwbw@E3|{7BVy{R{;AjRlcYvRBGgsw zPBdJWq5FCks78-I{#T%2@{_+&h$;BHz(bvhfz?f@)1o>L@!hvWXzuU3ww5w%M*X`=?m_h&pg)DHa!B^6kIDnFx*2H8o^JE+}yYGtA9 z)*`i0zqQgbX@-a?fGivw`ZfB7Qt`c)FDDXJN$C;zIYQoL~{9}oPaTvX+O4nRN#RP@c4J*js)pmG-v zqi0@@H?#3Hpd8s5*k>yLK9jv)WVr6-o_){D?4jj;4`nq}G!&e5M02N>O>3EEY_aIe zO3PO0jm1`re)+ViM*Z>?ma?hK%gUx%EmPFeAX?7V;`Zya<6An`*e!OurPFF#)$Xu% zwpi_s4*c+9AqZ--=xd(;EubU4uS~`R*Y#O#md-UD?d$CpM@yS^?J|33$7*YfW0lR? zWV1NiTiTj%%fAhl}_F(nP=UN45=#Ac8AjM7rfUmB%;)F@^)*W{M9;1I=HnEg!MsA>FSvf{lv z-O_}1w`G-;s7 zr-*_kAQ!9C_d zzwwR`uMTXP=ltFv7NtR#_-_gnY59`GM_(>tC<;F3ig>vZz7x9mLk&xDr)i2XG=f45 zq(h##kOxU&e1GE=ZSbqpS1+jMma6i0r_J^xvs{)*b(E7@Da)>)Up3_`&S@WDrEw3Q zTcpE}&KMp|Mllq8vsnM|!r55FT(A2=7ko`ve~6=htfRfre}FxLmRFs)wLV)!W`hb( z8YBI_s(LP(Hiphe2b6rko~FcynHuu^SQ!dMu;$EfQ^T#73M-1-c|%A7A;m#%C-5U zqEC?s{|O01c^^gj2Jna6lG{V>|BsPZ_bQiFM{N4Z8)5wu^t&Sti>;aPHujlx!d3!0 z&s>8THi8*V8yk4WCD^<+T5O#KD)=nuy-Vu8a!KGD|LvCqGnt@6T1^INA^9pYlT~Vx z>Zz5J%*B_9CjVE0(LOL3Uz{9)rJWcz{#Tyl)4A{drR!4j=J|(y-kbQt(i7=$6MMVKamQMO6szlPo2H4uWa8@q0`y35OaTNl77cxMR=kkUC|`X8Yp6x#p* literal 90624 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 diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json index 225913d5..1d9714bd 100644 --- a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json +++ b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json @@ -3,20 +3,28 @@ "WorkspaceRootPath": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\ingestpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:ingestpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\compapparelinterceptor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:compapparelinterceptor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\hediffcomp_regeneratebackstory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:hediffcomp_regeneratebackstory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\harmonypatches\\projectile_launch_patch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:harmonypatches\\projectile_launch_patch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\compuseeffect_wulaskilltrainer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:compuseeffect_wulaskilltrainer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\ingestpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:ingestpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\building_wula_darkenergy_engine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:building_wula_darkenergy_engine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\compuseeffect_wulaskilltrainer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:compuseeffect_wulaskilltrainer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\hediffcomp_regeneratebackstory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:hediffcomp_regeneratebackstory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\wulafallenempiremod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -34,15 +42,41 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Projectile_Launch_Patch.cs", + "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\HarmonyPatches\\Projectile_Launch_Patch.cs", + "RelativeDocumentMoniker": "HarmonyPatches\\Projectile_Launch_Patch.cs", + "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\HarmonyPatches\\Projectile_Launch_Patch.cs", + "RelativeToolTip": "HarmonyPatches\\Projectile_Launch_Patch.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABwAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-23T10:23:38.948Z", + "EditorCaption": "" + }, { "$type": "Document", "DocumentIndex": 0, + "Title": "CompApparelInterceptor.cs", + "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\CompApparelInterceptor.cs", + "RelativeDocumentMoniker": "CompApparelInterceptor.cs", + "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\CompApparelInterceptor.cs", + "RelativeToolTip": "CompApparelInterceptor.cs", + "ViewState": "AQIAABoAAAAAAAAAAADwv2UBAAABAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-07-23T10:03:31.989Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, "Title": "IngestPatch.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\IngestPatch.cs", "RelativeDocumentMoniker": "IngestPatch.cs", @@ -55,7 +89,7 @@ }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 2, "Title": "CompUseEffect_WulaSkillTrainer.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\CompUseEffect_WulaSkillTrainer.cs", "RelativeDocumentMoniker": "CompUseEffect_WulaSkillTrainer.cs", @@ -63,11 +97,12 @@ "RelativeToolTip": "CompUseEffect_WulaSkillTrainer.cs", "ViewState": "AQIAAEAAAAAAAAAAAAAUwFMAAAABAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-22T07:52:56.407Z" + "WhenOpened": "2025-07-22T07:52:56.407Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 4, "Title": "Building_Wula_DarkEnergy_Engine.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Building_Wula_DarkEnergy_Engine.cs", "RelativeDocumentMoniker": "Building_Wula_DarkEnergy_Engine.cs", @@ -79,7 +114,7 @@ }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 5, "Title": "HediffComp_RegenerateBackstory.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\HediffComp_RegenerateBackstory.cs", "RelativeDocumentMoniker": "HediffComp_RegenerateBackstory.cs", @@ -91,7 +126,7 @@ }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 6, "Title": "WulaFallenEmpireMod.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\WulaFallenEmpireMod.cs", "RelativeDocumentMoniker": "WulaFallenEmpireMod.cs", @@ -101,13 +136,9 @@ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-18T10:23:17.898Z" }, - { - "$type": "Bookmark", - "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}" - }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 7, "Title": "MechanitorPatch.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\MechanitorPatch.cs", "RelativeDocumentMoniker": "MechanitorPatch.cs", @@ -116,6 +147,10 @@ "ViewState": "AQIAAAAAAAAAAAAAAAAAACEAAAAJAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-18T10:20:31.368Z" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{269a02dc-6af8-11d3-bdc4-00c04f688e50}" } ] } diff --git a/Source/WulaFallenEmpire/CompApparelInterceptor.cs b/Source/WulaFallenEmpire/CompApparelInterceptor.cs new file mode 100644 index 00000000..c4395323 --- /dev/null +++ b/Source/WulaFallenEmpire/CompApparelInterceptor.cs @@ -0,0 +1,358 @@ +using HarmonyLib; +using RimWorld; +using System; +using System.Collections.Generic; +using System.Text; +using UnityEngine; +using Verse; +using Verse.Sound; + +namespace WulaFallenEmpire +{ + public class CompProperties_ApparelInterceptor : CompProperties + { + public float radius = 3f; + public int startupDelay = 0; + public int rechargeDelay = 3200; + public int hitPoints = 100; + + public bool interceptGroundProjectiles = false; + public bool interceptNonHostileProjectiles = false; + public bool interceptAirProjectiles = true; + + public SoundDef soundIntercept; + public SoundDef soundBreak; + public EffecterDef reactivateEffect; + + public Color color = new Color(0.5f, 0.5f, 0.9f); + public bool drawWithNoSelection = true; + public bool isImmuneToEMP = false; + + public int cooldownTicks = 0; + public int chargeDurationTicks = 0; + public int chargeIntervalTicks = 0; + public bool startWithMaxHitPoints = true; + public bool hitPointsRestoreInstantlyAfterCharge = true; + public int rechargeHitPointsIntervalTicks = 60; + public bool activated = false; + public int activeDuration = 0; + public SoundDef activeSound; + public bool alwaysShowHitpointsGizmo = false; + public float minAlpha = 0f; + public float idlePulseSpeed = 0.02f; + public float minIdleAlpha = 0.05f; + public int disarmedByEmpForTicks = 0; + + public CompProperties_ApparelInterceptor() + { + compClass = typeof(CompApparelInterceptor); + } + } + + [StaticConstructorOnStartup] + public class CompApparelInterceptor : ThingComp + { + // ״̬ + private int lastInterceptTicks = -999999; + private int startedChargingTick = -1; + private bool shutDown; + private StunHandler stunner; + private Sustainer sustainer; + public int currentHitPoints = -1; + private int ticksToReset; + private int activatedTick = -999999; + + // ӾЧ + private float lastInterceptAngle; + private bool drawInterceptCone; + + // ̬Դ + private static readonly Material ForceFieldMat = MaterialPool.MatFrom("Other/ForceField", ShaderDatabase.MoteGlow); + private static readonly Material ForceFieldConeMat = MaterialPool.MatFrom("Other/ForceFieldCone", ShaderDatabase.MoteGlow); + private static readonly MaterialPropertyBlock MatPropertyBlock = new MaterialPropertyBlock(); + private static readonly Color InactiveColor = new Color(0.2f, 0.2f, 0.2f); + + // + public CompProperties_ApparelInterceptor Props => (CompProperties_ApparelInterceptor)props; + private Pawn PawnOwner => (parent as Apparel)?.Wearer; + + public bool Active + { + get + { + if (PawnOwner == null || !PawnOwner.Spawned) return false; + if (OnCooldown || Charging || stunner.Stunned || shutDown || currentHitPoints <= 0) return false; + if (Props.activated && Find.TickManager.TicksGame > activatedTick + Props.activeDuration) return false; + return true; + } + } + + protected bool ShouldDisplay + { + get + { + if (PawnOwner == null || !PawnOwner.Spawned || PawnOwner.Dead || PawnOwner.Downed || !Active) + { + return false; + } + if (PawnOwner.Drafted || PawnOwner.InAggroMentalState || (PawnOwner.Faction != null && PawnOwner.Faction.HostileTo(Faction.OfPlayer) && !PawnOwner.IsPrisoner)) + { + return true; + } + if (Find.Selector.IsSelected(PawnOwner)) + { + return true; + } + return false; + } + } + + public bool OnCooldown => ticksToReset > 0; + public bool Charging => startedChargingTick >= 0 && Find.TickManager.TicksGame < startedChargingTick + Props.startupDelay; + public int CooldownTicksLeft => ticksToReset; + public int ChargingTicksLeft => (startedChargingTick < 0) ? 0 : Mathf.Max(startedChargingTick + Props.startupDelay - Find.TickManager.TicksGame, 0); + public int HitPointsMax => Props.hitPoints; + protected virtual int HitPointsPerInterval => 1; + + public override void PostPostMake() + { + base.PostPostMake(); + stunner = new StunHandler(parent); + if (Props.startupDelay > 0) + { + startedChargingTick = Find.TickManager.TicksGame; + currentHitPoints = 0; + } + else + { + currentHitPoints = HitPointsMax; + } + } + + public override void PostExposeData() + { + base.PostExposeData(); + Scribe_Values.Look(ref lastInterceptTicks, "lastInterceptTicks", -999999); + Scribe_Values.Look(ref shutDown, "shutDown", defaultValue: false); + Scribe_Values.Look(ref startedChargingTick, "startedChargingTick", -1); + Scribe_Values.Look(ref currentHitPoints, "currentHitPoints", -1); + Scribe_Values.Look(ref ticksToReset, "ticksToReset", 0); + Scribe_Values.Look(ref activatedTick, "activatedTick", -999999); + Scribe_Deep.Look(ref stunner, "stunner", parent); + + if (Scribe.mode == LoadSaveMode.PostLoadInit) + { + if (stunner == null) stunner = new StunHandler(parent); + if (currentHitPoints == -1) currentHitPoints = HitPointsMax; + } + } + + public bool TryIntercept(Projectile projectile, Vector3 lastExactPos, Vector3 newExactPos) + { + if (PawnOwner == null || !PawnOwner.Spawned || !Active) + { + return false; + } + + if (!GenGeo.IntersectLineCircleOutline(PawnOwner.Position.ToVector2(), Props.radius, lastExactPos.ToVector2(), newExactPos.ToVector2())) + { + return false; + } + + if (!InterceptsProjectile(Props, projectile)) + { + return false; + } + + bool isHostile = (projectile.Launcher != null && projectile.Launcher.HostileTo(PawnOwner)) || (projectile.Launcher == null && Props.interceptNonHostileProjectiles); + if (!isHostile) + { + return false; + } + + // --- Interception Success --- + lastInterceptAngle = projectile.ExactPosition.AngleToFlat(PawnOwner.TrueCenter()); + lastInterceptTicks = Find.TickManager.TicksGame; + drawInterceptCone = true; + if (Props.soundIntercept != null) Props.soundIntercept.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map)); + EffecterDefOf.Interceptor_BlockedProjectile.Spawn(PawnOwner.Position, PawnOwner.Map); + + if (projectile.DamageDef == DamageDefOf.EMP && !Props.isImmuneToEMP) + { + BreakShieldEmp(new DamageInfo(projectile.DamageDef, projectile.DamageAmount, instigator: projectile.Launcher)); + } + else if (HitPointsMax > 0) + { + currentHitPoints -= projectile.DamageAmount; + if (currentHitPoints <= 0) + { + BreakShieldHitpoints(new DamageInfo(projectile.DamageDef, projectile.DamageAmount, instigator: projectile.Launcher)); + } + } + return true; + } + + public override void CompTick() + { + base.CompTick(); + if (PawnOwner == null || !PawnOwner.Spawned) return; + + stunner.StunHandlerTick(); + + if (OnCooldown) + { + ticksToReset--; + if (ticksToReset <= 0) Reset(); + } + else if (Charging) + { + // Charging logic handled by property + } + else if (currentHitPoints < HitPointsMax && parent.IsHashIntervalTick(Props.rechargeHitPointsIntervalTicks)) + { + currentHitPoints = Mathf.Clamp(currentHitPoints + HitPointsPerInterval, 0, HitPointsMax); + } + + if (Props.activeSound != null) + { + if (Active && (sustainer == null || sustainer.Ended)) sustainer = Props.activeSound.TrySpawnSustainer(SoundInfo.InMap(parent)); + sustainer?.Maintain(); + if (!Active && sustainer != null && !sustainer.Ended) sustainer.End(); + } + } + + public void Reset() + { + if (PawnOwner.Spawned) Props.reactivateEffect?.Spawn(PawnOwner.Position, PawnOwner.Map).Cleanup(); + currentHitPoints = HitPointsMax; + ticksToReset = 0; + } + + private void BreakShieldHitpoints(DamageInfo dinfo) + { + if (PawnOwner.Spawned) + { + if (Props.soundBreak != null) Props.soundBreak.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map)); + EffecterDefOf.Shield_Break.SpawnAttached(PawnOwner, PawnOwner.MapHeld, Props.radius); + } + currentHitPoints = 0; + ticksToReset = Props.rechargeDelay; + } + + private void BreakShieldEmp(DamageInfo dinfo) + { + BreakShieldHitpoints(dinfo); + if (Props.disarmedByEmpForTicks > 0) stunner.Notify_DamageApplied(new DamageInfo(DamageDefOf.EMP, (float)Props.disarmedByEmpForTicks / 30f)); + } + + public static bool InterceptsProjectile(CompProperties_ApparelInterceptor props, Projectile projectile) + { + if (projectile.def.projectile.flyOverhead) return props.interceptAirProjectiles; + return props.interceptGroundProjectiles; + } + + // --- DRAWING LOGIC --- + public override void CompDrawWornExtras() + { + base.CompDrawWornExtras(); + if (PawnOwner == null || !PawnOwner.Spawned || !ShouldDisplay) return; + + Vector3 drawPos = PawnOwner.Drawer.DrawPos; + drawPos.y = AltitudeLayer.MoteOverhead.AltitudeFor(); + + float alpha = GetCurrentAlpha(); + if (alpha > 0f) + { + Color color = Props.color; + color.a *= alpha; + MatPropertyBlock.SetColor(ShaderPropertyIDs.Color, color); + Matrix4x4 matrix = default(Matrix4x4); + matrix.SetTRS(drawPos, Quaternion.identity, new Vector3(Props.radius * 2f * 1.1601562f, 1f, Props.radius * 2f * 1.1601562f)); + Graphics.DrawMesh(MeshPool.plane10, matrix, ForceFieldMat, 0, null, 0, MatPropertyBlock); + } + + float coneAlpha = GetCurrentConeAlpha_RecentlyIntercepted(); + if (coneAlpha > 0f) + { + Color color = Props.color; + color.a *= coneAlpha; + MatPropertyBlock.SetColor(ShaderPropertyIDs.Color, color); + Matrix4x4 matrix = default(Matrix4x4); + matrix.SetTRS(drawPos, Quaternion.Euler(0f, lastInterceptAngle - 90f, 0f), new Vector3(Props.radius * 2f, 1f, Props.radius * 2f)); + Graphics.DrawMesh(MeshPool.plane10, matrix, ForceFieldConeMat, 0, null, 0, MatPropertyBlock); + } + } + + private float GetCurrentAlpha() + { + float idleAlpha = Mathf.Lerp(0.3f, 0.6f, (Mathf.Sin((float)Gen.HashCombineInt(parent.thingIDNumber, 35990913) + Time.realtimeSinceStartup * 2f) + 1f) / 2f); + float interceptAlpha = Mathf.Clamp01(1f - (float)(Find.TickManager.TicksGame - lastInterceptTicks) / 40f); + return Mathf.Max(idleAlpha, interceptAlpha); + } + + private float GetCurrentConeAlpha_RecentlyIntercepted() + { + if (!drawInterceptCone) return 0f; + return Mathf.Clamp01(1f - (float)(Find.TickManager.TicksGame - lastInterceptTicks) / 40f) * 0.82f; + } + + // --- GIZMO --- + public override IEnumerable CompGetWornGizmosExtra() + { + if (PawnOwner != null && Find.Selector.SingleSelectedThing == PawnOwner) + { + yield return new Gizmo_EnergyShieldStatus { shield = this }; + } + } + + public override string CompInspectStringExtra() + { + StringBuilder sb = new StringBuilder(); + if (OnCooldown) + { + sb.Append("Cooldown: " + CooldownTicksLeft.ToStringTicksToPeriod()); + } + else if (stunner.Stunned) + { + sb.Append("EMP Shutdown: " + stunner.StunTicksLeft.ToStringTicksToPeriod()); + } + return sb.ToString(); + } + } + + public class Gizmo_EnergyShieldStatus : Gizmo + { + public CompApparelInterceptor shield; + private static readonly Texture2D FullShieldBarTex = SolidColorMaterials.NewSolidColorMaterial(new Color(0.2f, 0.8f, 0.85f), ShaderDatabase.MetaOverlay).mainTexture as Texture2D; + private static readonly Texture2D EmptyShieldBarTex = SolidColorMaterials.NewSolidColorMaterial(new Color(0.2f, 0.2f, 0.24f), ShaderDatabase.MetaOverlay).mainTexture as Texture2D; + + public override float GetWidth(float maxWidth) => 140f; + + public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms) + { + Rect rect = new Rect(topLeft.x, topLeft.y, GetWidth(maxWidth), 75f); + Rect rect2 = rect.ContractedBy(6f); + Widgets.DrawWindowBackground(rect); + + Rect labelRect = rect2; + labelRect.height = rect.height / 2f; + Text.Font = GameFont.Tiny; + Widgets.Label(labelRect, shield.parent.LabelCap); + + Rect barRect = rect2; + barRect.yMin = rect2.y + rect2.height / 2f; + float fillPercent = (float)shield.currentHitPoints / shield.HitPointsMax; + Widgets.FillableBar(barRect, fillPercent, FullShieldBarTex, EmptyShieldBarTex, false); + + Text.Font = GameFont.Small; + Text.Anchor = TextAnchor.MiddleCenter; + + TaggedString statusText = shield.OnCooldown ? "Broken".Translate() : new TaggedString(shield.currentHitPoints + " / " + shield.HitPointsMax); + Widgets.Label(barRect, statusText); + + Text.Anchor = TextAnchor.UpperLeft; + + return new GizmoResult(GizmoState.Clear); + } + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/HarmonyPatches/Projectile_Launch_Patch.cs b/Source/WulaFallenEmpire/HarmonyPatches/Projectile_Launch_Patch.cs new file mode 100644 index 00000000..8b094b13 --- /dev/null +++ b/Source/WulaFallenEmpire/HarmonyPatches/Projectile_Launch_Patch.cs @@ -0,0 +1,42 @@ +using HarmonyLib; +using RimWorld; +using System.Linq; +using System.Reflection; +using UnityEngine; +using Verse; + +namespace WulaFallenEmpire.HarmonyPatches +{ + [HarmonyPatch(typeof(Projectile), "CheckForFreeInterceptBetween")] + public static class Projectile_CheckForFreeInterceptBetween_Patch + { + private static readonly MethodInfo ImpactMethod = AccessTools.Method(typeof(Projectile), "Impact"); + + public static bool Prefix(Projectile __instance, Vector3 lastExactPos, Vector3 newExactPos) + { + if (__instance.Map == null || __instance.Destroyed) return true; + + foreach (Pawn pawn in __instance.Map.mapPawns.AllPawnsSpawned) + { + if (pawn.apparel != null) + { + foreach (Apparel apparel in pawn.apparel.WornApparel) + { + if (apparel.TryGetComp(out var interceptor)) + { + if (interceptor.TryIntercept(__instance, lastExactPos, newExactPos)) + { + + ImpactMethod.Invoke(__instance, new object[] { null, true }); + + return false; + } + } + } + } + } + + return true; + } + } +} \ No newline at end of file diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj index 97b2c355..9eb95358 100644 --- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj +++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj @@ -62,6 +62,7 @@ + @@ -86,6 +87,7 @@ + @@ -94,4 +96,4 @@ - \ No newline at end of file +