diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index 3712a5a1..f4ce93a5 100644
Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml b/1.6/1.6/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml
similarity index 54%
rename from 1.6/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml
rename to 1.6/1.6/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml
index ac879775..1ce69de1 100644
--- a/1.6/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml
+++ b/1.6/1.6/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml
@@ -1,17 +1,14 @@
-
+
WULA_DamageShield
伤害护盾
一种特殊的能量护盾,可以抵挡受到的伤害。每层护盾可以抵挡一次伤害。
WulaFallenEmpire.Hediff_DamageShield
- 10
- 999
- false
- false
- 1
- true
- false
+ 10
+ 999
+ (0.6, 0.6, 1.0)
+ false
活跃
@@ -19,6 +16,5 @@
- false
\ No newline at end of file
diff --git a/1.6/1.6/Defs/ThingDefs/ThingDefs_WULA_Items_DamageShield.xml b/1.6/1.6/Defs/ThingDefs/ThingDefs_WULA_Items_DamageShield.xml
new file mode 100644
index 00000000..bbdb55ce
--- /dev/null
+++ b/1.6/1.6/Defs/ThingDefs/ThingDefs_WULA_Items_DamageShield.xml
@@ -0,0 +1,34 @@
+
+
+
+ WULA_DamageShieldGenerator
+ 伤害护盾发生器
+ 一个便携式设备,可以激活并生成一个临时的能量护盾,抵挡即将到来的伤害。
+
+ Wula/Item/WULA_Syhth_Trainer
+ Graphic_Single
+
+ 1
+ true
+ false
+
+ 50
+ 500
+ 0.5
+ 1000
+
+
+ Items
+
+ Sellable
+
+
+ UseItem
+
+
+ WULA_DamageShield
+ 100
+
+
+
+
\ No newline at end of file
diff --git a/1.6/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml b/1.6/1.6/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml
similarity index 93%
rename from 1.6/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml
rename to 1.6/1.6/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml
index f0b696f8..b03e2b25 100644
--- a/1.6/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml
+++ b/1.6/1.6/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml
@@ -24,7 +24,6 @@
UseItem
- 使用伤害护盾发生器
WULA_DamageShield
diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml
index e711aa26..743562c7 100644
--- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml
+++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml
@@ -17,4 +17,9 @@
{PAWN_nameDef} 的维护已完成,但{PAWN_nameDef} 没有可修复的受损部位。
没有可用的零部件来搬运。
+ {0} 获得了 {1} 层伤害护盾!
+ 无法对已死亡的Pawn使用。
+ 伤害护盾已达到最大层数。
+ 使用:增加 {0} 层伤害护盾
+
\ No newline at end of file
diff --git a/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml b/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml
deleted file mode 100644
index 64c72e36..00000000
--- a/1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- {0} 获得了 {1} 层伤害护盾!
- 无法对已死亡的Pawn使用。
- 伤害护盾已达到最大层数。
- 使用:增加 {0} 层伤害护盾
-
\ No newline at end of file
diff --git a/MCP/vector_cache/knowledge_cache.json b/MCP/vector_cache/knowledge_cache.json
index 4797faf2..9b4a3b3b 100644
--- a/MCP/vector_cache/knowledge_cache.json
+++ b/MCP/vector_cache/knowledge_cache.json
@@ -22768,5 +22768,2074 @@
],
"result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\RimWorld\\CompUseEffect.txt\n\npublic abstract class CompUseEffect : ThingComp\n{\n\tprivate const float CameraShakeMag = 1f;\n\n\tprivate Effecter effecter;\n\n\tpublic virtual float OrderPriority => 0f;\n\n\tprivate CompProperties_UseEffect Props => (CompProperties_UseEffect)props;\n\n\tpublic virtual void DoEffect(Pawn usedBy)\n\t{\n\t\tif (usedBy.Map == Find.CurrentMap)\n\t\t{\n\t\t\tif (Props.doCameraShake && usedBy.Spawned)\n\t\t\t{\n\t\t\t\tFind.CameraDriver.shaker.DoShake(1f);\n\t\t\t}\n\t\t\tif (Props.moteOnUsed != null)\n\t\t\t{\n\t\t\t\tMoteMaker.MakeAttachedOverlay(usedBy, Props.moteOnUsed, Vector3.zero, Props.moteOnUsedScale);\n\t\t\t}\n\t\t\tif (Props.fleckOnUsed != null)\n\t\t\t{\n\t\t\t\tFleckMaker.AttachedOverlay(usedBy, Props.fleckOnUsed, Vector3.zero, Props.fleckOnUsedScale);\n\t\t\t}\n\t\t\tif (Props.effecterOnUsed != null)\n\t\t\t{\n\t\t\t\tProps.effecterOnUsed.SpawnMaintained(usedBy, new TargetInfo(parent.Position, parent.Map));\n\t\t\t}\n\t\t\teffecter?.Cleanup();\n\t\t}\n\t}\n\n\tpublic virtual void PrepareTick()\n\t{\n\t\tif (Props.warmupEffecter != null)\n\t\t{\n\t\t\tif (effecter == null)\n\t\t\t{\n\t\t\t\teffecter = Props.warmupEffecter.Spawn(parent, parent.Map);\n\t\t\t}\n\t\t\teffecter?.EffectTick(parent, parent);\n\t\t}\n\t}\n\n\tpublic virtual TaggedString ConfirmMessage(Pawn p)\n\t{\n\t\treturn null;\n\t}\n\n\tpublic virtual bool SelectedUseOption(Pawn p)\n\t{\n\t\treturn false;\n\t}\n\n\tpublic virtual AcceptanceReport CanBeUsedBy(Pawn p)\n\t{\n\t\treturn true;\n\t}\n}\n\n",
"timestamp": "2025-08-26 18:29:45,809"
+ },
+ "CompProperties_Shield": {
+ "keywords": [
+ "CompProperties_Shield"
+ ],
+ "question": "RimWorld CompProperties_Shield C# 代码",
+ "embedding": [
+ 0.009521562606096268,
+ 0.0188528411090374,
+ 0.051494017243385315,
+ 0.00434727780520916,
+ -0.015295976772904396,
+ 0.00892875250428915,
+ -0.040047649294137955,
+ -0.009287365712225437,
+ -0.01845763437449932,
+ 0.1018170490860939,
+ 0.027342474088072777,
+ -0.043794795870780945,
+ -0.0236246008425951,
+ -0.003856928087770939,
+ 0.02767913229763508,
+ 0.04244816675782204,
+ 0.00869455561041832,
+ -0.10187559574842453,
+ -0.0337243378162384,
+ 0.03413417935371399,
+ 0.029377058148384094,
+ 0.07974400371313095,
+ 0.03076760098338127,
+ 0.02375633642077446,
+ -0.0011654949048534036,
+ -0.011109709739685059,
+ -1.8596801965031773e-05,
+ 0.045375626534223557,
+ 0.0035330778919160366,
+ 0.009946044534444809,
+ 0.013568775728344917,
+ -0.03240697830915451,
+ 0.005628041457384825,
+ -0.017008541151881218,
+ -0.04139428213238716,
+ 0.04578547179698944,
+ -0.04578547179698944,
+ -0.00867259968072176,
+ -0.07693364471197128,
+ 0.007128364406526089,
+ -0.00873846746981144,
+ -0.01936514675617218,
+ 0.036944542080163956,
+ 0.027357110753655434,
+ 0.004822989925742149,
+ 0.03214350715279579,
+ 0.06539945304393768,
+ -0.05784660577774048,
+ -0.03466112166643143,
+ 0.07582120597362518,
+ 0.034836769104003906,
+ 0.011248763650655746,
+ -0.04765904322266579,
+ 0.021546103060245514,
+ 0.04019402340054512,
+ 0.05483132228255272,
+ 0.007110067643225193,
+ 0.05207950994372368,
+ -0.022146232426166534,
+ 0.012844229117035866,
+ 0.017140276730060577,
+ -0.00882629118859768,
+ -0.014468969777226448,
+ -0.013861522078514099,
+ 0.025102967396378517,
+ -0.029172135517001152,
+ -0.0714300200343132,
+ -0.0006586784147657454,
+ 0.0031525082886219025,
+ -0.014747078530490398,
+ 0.02914286218583584,
+ 0.004958384670317173,
+ -0.0006641673971898854,
+ 0.019467607140541077,
+ -0.006217192392796278,
+ 0.0587833896279335,
+ 0.013568775728344917,
+ -0.014403101988136768,
+ -0.046985726803541183,
+ 0.024092992767691612,
+ -0.012822273187339306,
+ -0.00819688756018877,
+ -0.027605945244431496,
+ -0.022365791723132133,
+ 0.02091670036315918,
+ 0.07658234983682632,
+ 0.010260745882987976,
+ -0.001965057337656617,
+ -0.002188276033848524,
+ 0.03984272852540016,
+ 0.05491914600133896,
+ -0.002320011844858527,
+ 0.016496235504746437,
+ -0.031909309327602386,
+ 0.0025048076640814543,
+ 0.004149673972278833,
+ -0.015530173666775227,
+ 0.04019402340054512,
+ -0.009236135520040989,
+ 0.011885486543178558,
+ -0.027898691594600677,
+ 0.01772576943039894,
+ -0.04549272358417511,
+ 0.052606452256441116,
+ -0.012119683437049389,
+ 0.03782277926802635,
+ -0.018516182899475098,
+ 0.0013932879082858562,
+ -0.011695201508700848,
+ 0.05207950994372368,
+ -0.009484969079494476,
+ -0.02280491031706333,
+ 0.014886132441461086,
+ 0.06264764070510864,
+ 0.019833538681268692,
+ -0.022746361792087555,
+ 0.010963336564600468,
+ -0.021165532991290092,
+ -0.0029768606182187796,
+ 0.019174860790371895,
+ 0.017111001536250114,
+ -0.007516252808272839,
+ -0.023126931861042976,
+ -0.03319739177823067,
+ 0.04803961515426636,
+ 0.013166249729692936,
+ 0.010751095600426197,
+ 0.024180816486477852,
+ -0.02823534980416298,
+ 0.016642607748508453,
+ -0.01067059114575386,
+ -0.028630556538701057,
+ 0.007029562722891569,
+ -0.01368587464094162,
+ -0.005053527187556028,
+ -0.01416158676147461,
+ -0.0019613979384303093,
+ 0.020799601450562477,
+ -0.10287093371152878,
+ 0.03240697830915451,
+ -0.029625892639160156,
+ 0.01683289371430874,
+ 0.017198825255036354,
+ 0.029801540076732635,
+ 0.11159476637840271,
+ -0.05948598310351372,
+ -0.030240658670663834,
+ -0.007091771345585585,
+ 0.017930690199136734,
+ -0.007465022150427103,
+ -0.0006893252721056342,
+ -0.018838202580809593,
+ -0.027488846331834793,
+ 0.05380671098828316,
+ 0.03056268021464348,
+ -0.027298562228679657,
+ 0.021399730816483498,
+ 0.006978332065045834,
+ -0.013722467236220837,
+ -0.04625386372208595,
+ -0.028425633907318115,
+ -0.026405686512589455,
+ 0.00608911644667387,
+ -0.003223865060135722,
+ 0.03269972652196884,
+ -0.023009832948446274,
+ -0.027079002931714058,
+ 0.030650503933429718,
+ 0.012939372099936008,
+ 0.001621995703317225,
+ 0.006912464275956154,
+ -0.00912635587155819,
+ -0.031440917402505875,
+ -0.005840281955897808,
+ 0.023039108142256737,
+ -0.003919136710464954,
+ 0.01570582203567028,
+ 0.08144193142652512,
+ -0.012668581679463387,
+ 0.027049727737903595,
+ 0.036944542080163956,
+ -9.868741472018883e-05,
+ 0.027532758191227913,
+ 0.005232834257185459,
+ 0.024210091680288315,
+ -0.019570067524909973,
+ -0.026186127215623856,
+ 0.029450245201587677,
+ -0.013202843256294727,
+ 0.04666370898485184,
+ -0.020111648365855217,
+ 0.0714300200343132,
+ -0.04382407292723656,
+ -0.0030335800256580114,
+ 0.002052881056442857,
+ -0.02621540240943432,
+ 0.0019559089560061693,
+ 0.05383598431944847,
+ -0.06762432307004929,
+ -0.0037325110752135515,
+ 0.013239436782896519,
+ -0.03489531949162483,
+ -0.032816823571920395,
+ -0.0246199369430542,
+ 0.04584401845932007,
+ -0.010187559761106968,
+ -0.02078496478497982,
+ 0.0033812159672379494,
+ 0.04350205138325691,
+ -0.015427712351083755,
+ 0.048098161816596985,
+ 0.004526584409177303,
+ -0.005993973929435015,
+ -0.03846682235598564,
+ 0.0051340325735509396,
+ -0.0018845521844923496,
+ -0.03870101645588875,
+ 0.023946620523929596,
+ 0.0211801715195179,
+ 0.014395782724022865,
+ -0.051113445311784744,
+ 0.007948053069412708,
+ 0.01144636794924736,
+ 0.007333286572247744,
+ 0.0377056822180748,
+ 0.00835057906806469,
+ 0.03243625536561012,
+ -0.0026164171285927296,
+ 0.04318002983927727,
+ -0.02530789002776146,
+ -0.004504628479480743,
+ -0.0006486152997240424,
+ -0.04675153270363808,
+ 0.00506816478446126,
+ 0.038496095687150955,
+ -0.012097727507352829,
+ -0.0011764728697016835,
+ -0.055504634976387024,
+ 0.011160939931869507,
+ 0.031997133046388626,
+ -0.0001453438017051667,
+ 0.04531707614660263,
+ 0.021121621131896973,
+ -0.0035824787337332964,
+ -0.020126285031437874,
+ -0.04376552253961563,
+ 0.0009880176512524486,
+ -0.015369163826107979,
+ 0.005898831412196159,
+ -0.02896721474826336,
+ 0.018428359180688858,
+ 0.03559790924191475,
+ -0.01683289371430874,
+ -0.03334376588463783,
+ 0.010290021076798439,
+ -0.00017141648277174681,
+ 0.02211695909500122,
+ -0.015383800491690636,
+ -0.005298702046275139,
+ -0.013824928551912308,
+ -0.0298308152705431,
+ 0.034280553460121155,
+ -0.00022687812452204525,
+ 0.028835479170084,
+ -0.03182148560881615,
+ 0.019057761877775192,
+ 0.055885206907987595,
+ -0.013985938392579556,
+ 0.018486907705664635,
+ -0.00014763088256586343,
+ -0.02147291786968708,
+ 0.02599584311246872,
+ 0.02568845823407173,
+ -0.006736816838383675,
+ 0.027781592682003975,
+ -0.005104757845401764,
+ 0.02956734225153923,
+ -0.002918311394751072,
+ 0.015413075685501099,
+ -0.00828471127897501,
+ 0.024210091680288315,
+ -0.014754396863281727,
+ -0.0006262019160203636,
+ 0.01910167559981346,
+ -0.03158729150891304,
+ 0.009689891710877419,
+ 0.006469686049968004,
+ -0.013605369254946709,
+ -0.0012524038320407271,
+ -0.015983929857611656,
+ 0.00725278165191412,
+ -0.00574513990432024,
+ 0.015574085526168346,
+ 0.028440270572900772,
+ -0.01760867051780224,
+ 0.030738327652215958,
+ -0.019438331946730614,
+ 0.014578749425709248,
+ -0.002925629960373044,
+ 0.003093959065154195,
+ -0.024883408099412918,
+ 0.022570714354515076,
+ -0.009258091449737549,
+ -0.013883478008210659,
+ 0.029201410710811615,
+ 0.01621812768280506,
+ -0.020301932469010353,
+ -0.10410046577453613,
+ 0.03758858144283295,
+ -0.08032949268817902,
+ 0.00938250869512558,
+ -0.0035385668743401766,
+ -0.03826189786195755,
+ -0.016364499926567078,
+ -0.05026448518037796,
+ -0.0033482820726931095,
+ -0.01634986326098442,
+ 0.008409127593040466,
+ 0.035568635910749435,
+ 0.03545153886079788,
+ -0.061301007866859436,
+ 0.0024810221511870623,
+ -0.054070182144641876,
+ 0.011197533458471298,
+ 0.007552845869213343,
+ -0.026244675740599632,
+ 0.0465758852660656,
+ 0.024737033993005753,
+ 0.007713856175541878,
+ 0.011863530613481998,
+ -0.025585997849702835,
+ -0.00014957490202505141,
+ 0.014644617214798927,
+ 0.055065516382455826,
+ -0.029420970007777214,
+ 0.0157497338950634,
+ -0.0094264205545187,
+ 0.017520846799016,
+ -0.0013420573668554425,
+ 0.027532758191227913,
+ 0.011043841950595379,
+ -0.057173289358615875,
+ -0.005679271649569273,
+ -0.045463450253009796,
+ -0.014249410480260849,
+ 0.0204043947160244,
+ 0.05246007815003395,
+ 0.056909818202257156,
+ -0.0204043947160244,
+ 0.005177944432944059,
+ -0.009243453852832317,
+ 0.02934778295457363,
+ -0.004530244041234255,
+ -0.0006792621570639312,
+ 0.009097080677747726,
+ -0.01768185757100582,
+ -0.0037215331103652716,
+ 0.0017537312814965844,
+ -0.07664089649915695,
+ 0.015105691738426685,
+ 0.03287537395954132,
+ -0.0038862028159201145,
+ 0.019306596368551254,
+ -0.00968257337808609,
+ 0.03834972158074379,
+ 0.021106984466314316,
+ 0.012427066452801228,
+ 0.05796370282769203,
+ -0.032992471009492874,
+ 0.013122337870299816,
+ -0.048098161816596985,
+ -0.05319194495677948,
+ 0.04511215537786484,
+ 0.031148171052336693,
+ -0.0031397005077451468,
+ 0.0636429712176323,
+ 0.028425633907318115,
+ 0.004709550645202398,
+ -0.045082878321409225,
+ 0.04604894295334816,
+ -0.021575378254055977,
+ 0.018106337636709213,
+ -0.00846035871654749,
+ -0.0507914274930954,
+ -0.021546103060245514,
+ 0.0009230646537616849,
+ 0.01798924058675766,
+ 0.012844229117035866,
+ 0.053133394569158554,
+ -0.04083806276321411,
+ 0.06007147207856178,
+ 0.018267348408699036,
+ 0.0025834832340478897,
+ -0.01588146947324276,
+ 0.025468898937106133,
+ 0.014000575989484787,
+ -0.0028231688775122166,
+ 0.027693768963217735,
+ 0.057817328721284866,
+ 0.004453398287296295,
+ 0.01759403385221958,
+ -0.006158643402159214,
+ -0.05366033688187599,
+ -0.001098712207749486,
+ 0.02156074158847332,
+ 0.03524661436676979,
+ 0.0022504846565425396,
+ 0.018530819565057755,
+ -0.03179221227765083,
+ -0.00011075174552388489,
+ -0.05585592985153198,
+ -0.026961904019117355,
+ 0.03673962131142616,
+ 0.0015378311509266496,
+ 0.021399730816483498,
+ 0.00881897285580635,
+ -0.011980628594756126,
+ -0.018003877252340317,
+ 0.0026603289879858494,
+ -0.017447659745812416,
+ -0.020623954012989998,
+ 0.029333146288990974,
+ -0.040223296731710434,
+ -0.01372978650033474,
+ 0.009155630134046078,
+ 0.062120694667100906,
+ -0.034836769104003906,
+ -0.01949688233435154,
+ -0.0035330778919160366,
+ 0.0034141498617827892,
+ 0.00023099486134015024,
+ -0.011336587369441986,
+ -0.08858492970466614,
+ 0.055504634976387024,
+ -0.007347923703491688,
+ -0.01914558745920658,
+ 0.02142900601029396,
+ 0.04751267284154892,
+ -0.04601966589689255,
+ -0.010795007459819317,
+ -0.05761240795254707,
+ -0.00439118966460228,
+ 0.01889675296843052,
+ -0.04358987510204315,
+ -0.040955159813165665,
+ -0.048390910029411316,
+ -0.0035678416024893522,
+ 0.007611395325511694,
+ 0.026537422090768814,
+ -0.011482960544526577,
+ -0.04285801202058792,
+ -0.0337243378162384,
+ 0.04479013383388519,
+ 0.03843754529953003,
+ -0.004577815067023039,
+ -0.0012203847290948033,
+ -0.02737174928188324,
+ -0.06510670483112335,
+ -0.03387070819735527,
+ -0.03340231627225876,
+ 0.036388322710990906,
+ 0.003300710814073682,
+ -0.03179221227765083,
+ 0.022687813267111778,
+ -0.013151613064110279,
+ -0.018560094758868217,
+ -0.02160465344786644,
+ 0.0018461293075233698,
+ 0.016803618520498276,
+ -0.04748339578509331,
+ -0.024195455014705658,
+ 0.012346561066806316,
+ -0.025468898937106133,
+ -0.009280047379434109,
+ -0.005840281955897808,
+ -0.0507914274930954,
+ -0.007691900245845318,
+ 0.07096162438392639,
+ 0.0115341916680336,
+ 0.06094971299171448,
+ 0.007461362984031439,
+ 0.021370455622673035,
+ -0.005968358367681503,
+ 0.05685126781463623,
+ -0.1574973315000534,
+ -0.01910167559981346,
+ 0.011658607982099056,
+ 0.01759403385221958,
+ 0.00949228834360838,
+ -0.030182110145688057,
+ -0.03489531949162483,
+ -0.027898691594600677,
+ 0.04350205138325691,
+ 0.05488986894488335,
+ -0.04850800707936287,
+ 0.014220135286450386,
+ -0.041160084307193756,
+ 0.006063500884920359,
+ 0.018794290721416473,
+ -0.07061032950878143,
+ 0.00759675819426775,
+ 0.021209444850683212,
+ 0.04247744008898735,
+ -0.020023824647068977,
+ -0.006670949049293995,
+ -0.022058408707380295,
+ -0.037120189517736435,
+ 0.016803618520498276,
+ 0.006078138016164303,
+ -0.009177586063742638,
+ -0.017052453011274338,
+ -0.02142900601029396,
+ 0.03834972158074379,
+ -0.010172922164201736,
+ -0.021809574216604233,
+ -0.01217823289334774,
+ 0.026669157668948174,
+ 0.006949057336896658,
+ 0.030094286426901817,
+ 0.010385163128376007,
+ 0.032465528696775436,
+ 0.016203489154577255,
+ 0.04798106476664543,
+ -0.00433629984036088,
+ -0.010560810565948486,
+ -0.009946044534444809,
+ 9.0225221356377e-05,
+ -0.04145282879471779,
+ 0.01643768697977066,
+ -0.05289919674396515,
+ -0.004910813644528389,
+ 0.026800893247127533,
+ 0.004420464392751455,
+ 0.013078426010906696,
+ 0.03542226180434227,
+ 0.039872001856565475,
+ 0.02832317352294922,
+ 0.012866185046732426,
+ 0.06762432307004929,
+ 0.0942642018198967,
+ 0.034836769104003906,
+ 0.029157498851418495,
+ 0.01293205376714468,
+ 0.01093406230211258,
+ 0.01790141686797142,
+ 0.04145282879471779,
+ 0.03624195232987404,
+ -0.01579364575445652,
+ 0.022365791723132133,
+ -0.007161298301070929,
+ 0.006092775613069534,
+ 0.0004720528668258339,
+ -0.022658538073301315,
+ -0.0629989355802536,
+ 0.04455593600869179,
+ 0.019130948930978775,
+ 0.017740406095981598,
+ 0.06452121585607529,
+ 0.002903674030676484,
+ -0.024473562836647034,
+ 0.0022980559151619673,
+ -0.009411782957613468,
+ 0.00892875250428915,
+ -0.07459167391061783,
+ -0.025966567918658257,
+ 0.022029133513569832,
+ -0.054977692663669586,
+ 0.0151935163885355,
+ -0.0204043947160244,
+ -0.0022376771084964275,
+ -0.019394420087337494,
+ 0.014564111828804016,
+ -0.04221396893262863,
+ 0.03799842670559883,
+ 0.029157498851418495,
+ -0.016686519607901573,
+ 0.015208153054118156,
+ 0.016730431467294693,
+ 0.0652238056063652,
+ 0.0186332818120718,
+ -0.009887495078146458,
+ 0.0034086608793586493,
+ 0.0067697507329285145,
+ -0.006872211582958698,
+ 0.042711637914180756,
+ 0.015530173666775227,
+ -0.006912464275956154,
+ -0.01336385402828455,
+ 0.05052795633673668,
+ 0.0038605874869972467,
+ 0.05307484418153763,
+ 0.029128223657608032,
+ -0.056441422551870346,
+ -0.01687680557370186,
+ -0.027562033385038376,
+ 0.031353093683719635,
+ -0.013144293799996376,
+ 0.027781592682003975,
+ 0.018223436549305916,
+ 0.004091124981641769,
+ -0.005642678588628769,
+ -0.019789626821875572,
+ 0.01004850585013628,
+ 0.013605369254946709,
+ 0.032465528696775436,
+ -0.03196785971522331,
+ -0.007552845869213343,
+ -0.025922656059265137,
+ 0.03697381541132927,
+ -0.004844945855438709,
+ 0.028469545766711235,
+ 0.014651935547590256,
+ 0.03357796370983124,
+ 0.004156992770731449,
+ 0.0017217122949659824,
+ -0.01570582203567028,
+ 0.009528880938887596,
+ -0.0049620443023741245,
+ 0.008299347944557667,
+ 0.0024554068222641945,
+ -0.008914114907383919,
+ 0.0033537710551172495,
+ 0.002347456756979227,
+ -0.03343158960342407,
+ -0.027620581910014153,
+ -0.03469039872288704,
+ -0.01129999477416277,
+ -0.040691688656806946,
+ 0.023083020001649857,
+ -0.033929258584976196,
+ -0.026405686512589455,
+ 0.003445254173129797,
+ -0.018911389634013176,
+ -0.0017802614020183682,
+ 0.03249480202794075,
+ -0.04423391819000244,
+ -0.02861591801047325,
+ 0.0005278575699776411,
+ 0.0182966236025095,
+ 0.03389998525381088,
+ 0.0211801715195179,
+ 0.0030335800256580114,
+ -0.003419638844206929,
+ -0.025029780343174934,
+ -0.03735438734292984,
+ -0.010904787108302116,
+ -0.021458279341459274,
+ -0.04716137424111366,
+ -0.04648806154727936,
+ -0.0052035595290362835,
+ -0.01566191017627716,
+ 0.00649896077811718,
+ 0.021677838638424873,
+ 0.007256440818309784,
+ -0.06264764070510864,
+ 0.00826275534927845,
+ -0.004354596138000488,
+ 0.0037178739439696074,
+ -0.007926097139716148,
+ -0.0016796300187706947,
+ -0.03132382035255432,
+ -0.030884699895977974,
+ -0.024166179820895195,
+ -0.040779512375593185,
+ -0.005818326026201248,
+ 0.03267044946551323,
+ -0.012405110523104668,
+ -0.007194232195615768,
+ 0.012917416170239449,
+ -0.007362561300396919,
+ -0.014959319494664669,
+ -0.026112940162420273,
+ 0.04962044209241867,
+ 0.009587430395185947,
+ 0.030094286426901817,
+ 0.027401022613048553,
+ -0.056529246270656586,
+ -0.00901657622307539,
+ 0.013598049990832806,
+ 0.0145275192335248,
+ -0.01555944886058569,
+ -0.037120189517736435,
+ -0.043970443308353424,
+ -0.038027700036764145,
+ -0.04871293157339096,
+ 0.019599342718720436,
+ -0.026200763881206512,
+ 0.024941956624388695,
+ -0.006063500884920359,
+ 0.009894813410937786,
+ 0.03911086171865463,
+ -0.06416991353034973,
+ 0.01936514675617218,
+ 0.006422114558517933,
+ -0.05243080481886864,
+ -0.021926673129200935,
+ -0.06838545948266983,
+ -0.030152834951877594,
+ 0.01967252977192402,
+ 0.027518121525645256,
+ 0.07224970310926437,
+ -0.030913975089788437,
+ 0.027781592682003975,
+ 0.024327190592885017,
+ 0.010538854636251926,
+ -0.0006870381766930223,
+ -0.013312622904777527,
+ -0.03466112166643143,
+ 0.013671237044036388,
+ -0.03791060298681259,
+ 0.0014692188706248999,
+ 0.0503523088991642,
+ 0.05462639778852463,
+ -0.022760998457670212,
+ -0.017462296411395073,
+ 0.03322666883468628,
+ 0.007933415472507477,
+ -0.021077709272503853,
+ -0.05325049161911011,
+ 0.013715148903429508,
+ -0.038027700036764145,
+ 0.03635904937982559,
+ -0.025834832340478897,
+ 0.031616564840078354,
+ -0.05755385756492615,
+ -0.0009505095658823848,
+ -0.0064038182608783245,
+ 0.004877879749983549,
+ -0.0434727780520916,
+ 0.025161515921354294,
+ -0.023639237508177757,
+ -0.0251761544495821,
+ 0.022146232426166534,
+ 0.012771042995154858,
+ 0.036300498992204666,
+ 0.030738327652215958,
+ 0.02380024828016758,
+ -0.016584059223532677,
+ -0.00025889722746796906,
+ -0.023595325648784637,
+ -0.019423695281147957,
+ -0.034456200897693634,
+ 0.054040905088186264,
+ -0.04897640272974968,
+ 0.09280047565698624,
+ -0.003911817912012339,
+ 0.007223506923764944,
+ 0.022951284423470497,
+ 0.04771759361028671,
+ -0.006985650863498449,
+ 0.02375633642077446,
+ -0.01816488802433014,
+ 0.03706163913011551,
+ -0.033460862934589386,
+ 0.014403101988136768,
+ 0.003229354042559862,
+ 0.027825504541397095,
+ -0.006455048453062773,
+ 0.050293758511543274,
+ -0.0035568636376410723,
+ -0.006253785919398069,
+ -0.03480749577283859,
+ 0.02211695909500122,
+ 0.043531324714422226,
+ 0.005562173668295145,
+ 0.03480749577283859,
+ -0.03732511028647423,
+ 0.0024462584406137466,
+ -0.018091700971126556,
+ 0.005027912091463804,
+ -0.032641176134347916,
+ -0.006308675743639469,
+ -0.03141164407134056,
+ 0.021590014919638634,
+ 0.03773495554924011,
+ 0.027298562228679657,
+ -0.002314522862434387,
+ -0.010963336564600468,
+ -0.042155418545007706,
+ 0.0022687811870127916,
+ -0.005646337755024433,
+ -0.04089661315083504,
+ 0.04642951115965843,
+ -0.017974602058529854,
+ 0.012017222121357918,
+ 0.024195455014705658,
+ -0.002720707794651389,
+ -0.024766309186816216,
+ 0.003922795876860619,
+ -0.022760998457670212,
+ -0.018311260268092155,
+ 0.004515606444329023,
+ 0.062120694667100906,
+ -0.007794361561536789,
+ 0.020843513309955597,
+ 0.06013002246618271,
+ -0.0035294187255203724,
+ 0.11071652919054031,
+ 0.018779654055833817,
+ 0.005082801915705204,
+ -0.012858866713941097,
+ -0.011453686282038689,
+ -0.039140135049819946,
+ -0.045639097690582275,
+ 0.004544881172478199,
+ -0.002729856176301837,
+ -0.014007894322276115,
+ -0.007545527536422014,
+ -0.03442692756652832,
+ 0.00509012071415782,
+ -0.04247744008898735,
+ -0.010677909478545189,
+ 0.04420464113354683,
+ 0.026230039075016975,
+ 0.04089661315083504,
+ 0.0030317504424601793,
+ -0.017023177817463875,
+ -0.018223436549305916,
+ 0.047922514379024506,
+ 0.03188003599643707,
+ 0.01366391871124506,
+ 0.033929258584976196,
+ -0.009001938626170158,
+ 0.020902061834931374,
+ 0.0019485903903841972,
+ -0.01621812768280506,
+ -0.023814884945750237,
+ 0.00584394158795476,
+ -0.004907154478132725,
+ -0.028381722047924995,
+ 0.006799024995416403,
+ 0.005170625634491444,
+ -0.010882831178605556,
+ 0.014454332180321217,
+ 0.02289273589849472,
+ 0.011343906633555889,
+ -0.004782737232744694,
+ 0.01190012414008379,
+ 0.005492646247148514,
+ -0.02879156544804573,
+ -0.05064505338668823,
+ 0.005595107562839985,
+ -0.0092068612575531,
+ -0.025717733427882195,
+ -0.0015844876179471612,
+ 0.02715218812227249,
+ -0.03328521549701691,
+ -0.020799601450562477,
+ -0.023302579298615456,
+ 0.022717086598277092,
+ -0.06516525149345398,
+ 0.0596616305410862,
+ 0.010509580373764038,
+ -0.005005956161767244,
+ -0.022760998457670212,
+ 0.03471967205405235,
+ 0.0033610896207392216,
+ 0.031528741121292114,
+ -0.038847390562295914,
+ 0.017286648973822594,
+ 0.009265409782528877,
+ -0.036300498992204666,
+ -0.01734519936144352,
+ 0.036212675273418427,
+ 0.02590801939368248,
+ -0.004555859137326479,
+ 0.06311602890491486,
+ 0.0026273950934410095,
+ -0.011373180896043777,
+ 0.038847390562295914,
+ 0.062471989542245865,
+ 0.08079788833856583,
+ -0.03205568343400955,
+ 0.02479558438062668,
+ 0.01927732303738594,
+ -0.050762150436639786,
+ -0.04789324104785919,
+ 0.002382220234721899,
+ -0.003999641630798578,
+ -0.04429246485233307,
+ -0.061476655304431915,
+ -0.04200904816389084,
+ 0.005880534648895264,
+ 0.023551413789391518,
+ 0.03179221227765083,
+ 0.027079002931714058,
+ -0.007161298301070929,
+ -0.033929258584976196,
+ -0.0964890718460083,
+ 0.056909818202257156,
+ 0.011160939931869507,
+ -0.018267348408699036,
+ 0.03226060792803764,
+ 0.03407563269138336,
+ 0.0204043947160244,
+ 0.0137517424300313,
+ -0.08062224090099335,
+ -0.014029850251972675,
+ 0.009602067992091179,
+ 0.0037215331103652716,
+ 0.01198794785887003,
+ 0.033460862934589386,
+ 0.01820879988372326,
+ -0.007205210160464048,
+ -0.026273950934410095,
+ 0.004438760690391064,
+ 0.00614400627091527,
+ -0.007424769923090935,
+ -0.011109709739685059,
+ 0.026800893247127533,
+ -0.040135473012924194,
+ -0.031235994771122932,
+ 0.027122914791107178,
+ 0.0008887584554031491,
+ -0.008357897400856018,
+ 0.0017445830162614584,
+ 0.024649210274219513,
+ 0.060832612216472626,
+ 0.06727302074432373,
+ -0.03466112166643143,
+ 0.005829303991049528,
+ -0.015105691738426685,
+ 0.038027700036764145,
+ 0.012690537609159946,
+ -0.002936607925221324,
+ 0.009850901551544666,
+ -0.012273374944925308,
+ 0.06469686329364777,
+ -0.028162162750959396,
+ -0.04165775328874588,
+ 0.011848893016576767,
+ -0.01721346378326416,
+ 0.06329167634248734,
+ 0.014417739585042,
+ 0.04464375972747803,
+ -0.009785033762454987,
+ 0.023214755579829216,
+ -0.05000101029872894,
+ -0.05184531211853027,
+ -0.022131595760583878,
+ -0.002363923704251647,
+ 0.0033592600375413895,
+ -0.00925077311694622,
+ 0.009331277571618557,
+ 0.04230179265141487,
+ -0.005598766729235649,
+ 0.018750378862023354,
+ -0.013180887326598167,
+ 0.009236135520040989,
+ 0.04757121950387955,
+ -0.03553936257958412,
+ 0.008504270575940609,
+ -0.005942743271589279,
+ -0.015691183507442474,
+ -0.011717157438397408,
+ 0.023258667439222336,
+ 0.02315620705485344,
+ 0.015003231354057789,
+ -0.015032505616545677,
+ -0.02582019381225109,
+ 0.03021138347685337,
+ 0.05134764313697815,
+ -0.0038422909565269947,
+ -0.054040905088186264,
+ 0.03984272852540016,
+ -0.013620005920529366,
+ -0.04593184217810631,
+ -0.0032055682968348265,
+ 0.044526662677526474,
+ 0.012858866713941097,
+ -0.03562718629837036,
+ 0.03176293894648552,
+ -0.0011993437074124813,
+ -0.028513457626104355,
+ -0.01239779219031334,
+ 0.012902778573334217,
+ -0.037120189517736435,
+ -0.0882921814918518,
+ -0.050030287355184555,
+ 0.006367224734276533,
+ 0.04411681741476059,
+ 0.014373826794326305,
+ -0.03963780403137207,
+ 0.028733016923069954,
+ -0.0021096006967127323,
+ -0.00895070843398571,
+ 0.017623307183384895,
+ 0.0020986227318644524,
+ 0.017491571605205536,
+ -0.028162162750959396,
+ -0.00947033241391182,
+ -0.015032505616545677,
+ 0.02621540240943432,
+ -0.013334578834474087,
+ 0.022497527301311493,
+ 0.009367871098220348,
+ 0.0009925918420776725,
+ -0.04423391819000244,
+ 0.05617795139551163,
+ -0.010363207198679447,
+ 0.06709737330675125,
+ 0.0021114302799105644,
+ 0.024136904627084732,
+ 0.008914114907383919,
+ 0.013100381940603256,
+ 0.02134118229150772,
+ -0.060364220291376114,
+ 0.023551413789391518,
+ -0.01560336071997881,
+ -0.002336478792130947,
+ 0.0785144716501236,
+ -0.007278396748006344,
+ 0.051494017243385315,
+ -0.024810221046209335,
+ 0.002396857598796487,
+ -0.022790273651480675,
+ -0.034280553460121155,
+ 0.024092992767691612,
+ 0.04716137424111366,
+ -0.027430297806859016,
+ -0.025234702974557877,
+ 0.0012862526345998049,
+ 0.013927389867603779,
+ -0.011841574683785439
+ ],
+ "result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\RimWorld\\CompProperties_Shield.txt\n\npublic class CompProperties_Shield : CompProperties\n{\n\tpublic int startingTicksToReset = 3200;\n\n\tpublic float minDrawSize = 1.2f;\n\n\tpublic float maxDrawSize = 1.55f;\n\n\tpublic float energyLossPerDamage = 0.033f;\n\n\tpublic float energyOnReset = 0.2f;\n\n\tpublic bool blocksRangedWeapons = true;\n\n\tpublic CompProperties_Shield()\n\t{\n\t\tcompClass = typeof(CompShield);\n\t}\n}\n\n",
+ "timestamp": "2025-08-26 18:34:16,279"
+ },
+ "C#-CompShield": {
+ "keywords": [
+ "CompShield",
+ "C#"
+ ],
+ "question": "RimWorld CompShield C# 代码",
+ "embedding": [
+ 0.011226645670831203,
+ 0.018389001488685608,
+ 0.04453849792480469,
+ -0.006092602852731943,
+ 0.004148644395172596,
+ -0.00831262581050396,
+ 0.0341707207262516,
+ -0.008864755742251873,
+ -0.011234314180910587,
+ 0.10643842071294785,
+ 0.020229434594511986,
+ -0.03423206880688667,
+ -0.027468474581837654,
+ -0.0059392331168055534,
+ 0.008304957300424576,
+ 0.049292951822280884,
+ 0.007035824935883284,
+ -0.09459829330444336,
+ -0.026716964319348335,
+ 0.029891712591052055,
+ -0.015490317717194557,
+ 0.05944601073861122,
+ 0.04052021726965904,
+ 0.03871045634150505,
+ 0.03432409092783928,
+ 0.003356874454766512,
+ -0.03450813516974449,
+ -0.0018461851868778467,
+ -0.013588536530733109,
+ -0.006464523728936911,
+ 0.007357900962233543,
+ -0.021839814260601997,
+ 0.020244771614670753,
+ 0.003663613460958004,
+ 0.0014876839704811573,
+ 0.058740511536598206,
+ -0.04594949632883072,
+ -0.010827885009348392,
+ -0.06545809656381607,
+ -0.006801936775445938,
+ -0.004505228716880083,
+ -0.014547095634043217,
+ 0.049078233540058136,
+ 0.023956313729286194,
+ 0.004650929477065802,
+ 0.03108799457550049,
+ 0.04579612612724304,
+ -0.05355662479996681,
+ -0.015198915265500546,
+ 0.03871045634150505,
+ 0.051317427307367325,
+ 0.006192293018102646,
+ -0.04521332308650017,
+ 0.02660960517823696,
+ 0.025858094915747643,
+ 0.046440280973911285,
+ -0.01428636722266674,
+ 0.036256544291973114,
+ -0.012852362357079983,
+ 0.01789821870625019,
+ 0.019892022013664246,
+ -0.028695430606603622,
+ -0.029692331328988075,
+ -0.006614058744162321,
+ -0.01688598096370697,
+ -0.050765298306941986,
+ -0.07827978581190109,
+ 0.020505499094724655,
+ -0.025029899552464485,
+ -0.016916653141379356,
+ -0.01891045644879341,
+ 0.00459341611713171,
+ 0.010275755077600479,
+ 0.011257319711148739,
+ -0.026103485375642776,
+ 0.06840278953313828,
+ 0.009202169254422188,
+ -0.005038187373429537,
+ -0.043403562158346176,
+ 0.036379240453243256,
+ -0.016103794798254967,
+ -0.007668474223464727,
+ -0.0336492657661438,
+ -0.016502555459737778,
+ 0.02676297537982464,
+ 0.05895522981882095,
+ 0.026793649420142174,
+ 0.007584121078252792,
+ -0.0006599680637009442,
+ 0.06478326767683029,
+ 0.03361859172582626,
+ 0.021195663139224052,
+ 0.028741441667079926,
+ -0.03383330628275871,
+ 0.013067079707980156,
+ -0.03613385185599327,
+ -0.04303547739982605,
+ 0.055826492607593536,
+ -0.019171185791492462,
+ 0.01044446136802435,
+ -0.004512897226959467,
+ 0.0034028852824121714,
+ -0.017683500424027443,
+ 0.04392502084374428,
+ -0.0269010066986084,
+ 0.027928583323955536,
+ -0.012545623816549778,
+ 0.039630673825740814,
+ -0.01493051927536726,
+ 0.03981471806764603,
+ -0.026793649420142174,
+ -0.00891843531280756,
+ 0.00956258736550808,
+ 0.07797304540872574,
+ 0.022668009623885155,
+ -0.04426243156194687,
+ 0.0006153950234875083,
+ -0.013105422258377075,
+ -0.007821843959391117,
+ 0.026578931137919426,
+ 0.012683656066656113,
+ -0.0134505033493042,
+ -0.011034933850169182,
+ -0.03438543900847435,
+ 0.05886320769786835,
+ 0.0053640976548194885,
+ 0.024646475911140442,
+ 0.020965607836842537,
+ -0.03013710305094719,
+ 0.03521363437175751,
+ -0.007434585597366095,
+ -0.018204957246780396,
+ 0.01205484103411436,
+ -0.008757397532463074,
+ -0.013373819179832935,
+ 0.03588845953345299,
+ -0.01575104519724846,
+ 0.027376452460885048,
+ -0.09005855768918991,
+ 0.024569790810346603,
+ -0.030244462192058563,
+ 0.004846475552767515,
+ 0.024232378229498863,
+ 0.03358791768550873,
+ 0.0917762964963913,
+ -0.0601208359003067,
+ -0.02397165074944496,
+ 0.042606040835380554,
+ 0.021471727639436722,
+ -0.0091484896838665,
+ -0.009163826704025269,
+ -0.017468784004449844,
+ -0.02660960517823696,
+ 0.04825003817677498,
+ 0.015114562585949898,
+ -0.029676994308829308,
+ 0.025244615972042084,
+ -0.016778621822595596,
+ -0.018818436190485954,
+ -0.04736049473285675,
+ -0.01791355572640896,
+ -0.05505964532494545,
+ 0.003956932574510574,
+ 0.0002271785488119349,
+ 0.008964446373283863,
+ -0.038557086139917374,
+ -0.02276003174483776,
+ 0.009669945575296879,
+ 0.023296823725104332,
+ -0.009677614085376263,
+ -0.003429725067690015,
+ -0.017330750823020935,
+ -0.0552743598818779,
+ -0.019339891150593758,
+ 0.011525716632604599,
+ -0.002200852148234844,
+ 0.019953370094299316,
+ 0.09613199532032013,
+ 0.010222076438367367,
+ 0.0398760661482811,
+ 0.009470565244555473,
+ 0.013757242821156979,
+ 0.03144074231386185,
+ 0.004696940537542105,
+ 0.027468474581837654,
+ -0.008642369881272316,
+ -0.008657706901431084,
+ 0.03147141635417938,
+ 0.003492990043014288,
+ 0.024554453790187836,
+ -0.020229434594511986,
+ 0.09975150972604752,
+ -0.034630827605724335,
+ -0.016364524140954018,
+ 0.014332378283143044,
+ -0.03818900138139725,
+ -0.006261309143155813,
+ 0.03236095979809761,
+ -0.09950611740350723,
+ -0.02424771524965763,
+ 0.012675987556576729,
+ -0.04328086972236633,
+ -0.03521363437175751,
+ -0.019140511751174927,
+ 0.05015182122588158,
+ 0.005088032688945532,
+ -0.009777304716408253,
+ 0.005459953565150499,
+ 0.046440280973911285,
+ -0.018603717908263206,
+ 0.053679317235946655,
+ 0.008389310911297798,
+ -0.011119287461042404,
+ -0.04426243156194687,
+ -0.008189930580556393,
+ -0.0031498258467763662,
+ -0.029508288949728012,
+ 0.048679474741220474,
+ 0.012162200175225735,
+ 0.02736111544072628,
+ -0.059814099222421646,
+ 0.014063981361687183,
+ 0.003602265613153577,
+ -0.0073502324521541595,
+ 0.032330285757780075,
+ 0.01960062049329281,
+ 0.010720526799559593,
+ 0.011073276400566101,
+ 0.06533540040254593,
+ -0.02007606439292431,
+ 0.012491944245994091,
+ 0.019217196851968765,
+ -0.037667546421289444,
+ -0.010781874880194664,
+ 0.032606352120637894,
+ -0.01573570817708969,
+ -0.02466181293129921,
+ -0.044017042964696884,
+ 0.015720371156930923,
+ 0.032115571200847626,
+ 0.0007117302739061415,
+ 0.04450782388448715,
+ 7.111311424523592e-05,
+ 0.0013256875099614263,
+ -0.03358791768550873,
+ -0.007323392666876316,
+ -0.0017953815404325724,
+ -0.004907823633402586,
+ -0.02007606439292431,
+ -0.01710069738328457,
+ -0.001586415572091937,
+ 0.005164717324078083,
+ -0.015582339838147163,
+ -0.014508753083646297,
+ -0.0007754744729027152,
+ 0.029492951929569244,
+ 0.013205112889409065,
+ -0.012752672657370567,
+ -0.017591480165719986,
+ -0.024968551471829414,
+ -0.04018280282616615,
+ 0.02829666994512081,
+ 0.014186677522957325,
+ 0.02229992300271988,
+ -0.03601115569472313,
+ 0.0074384198524057865,
+ 0.0634949654340744,
+ -0.018082261085510254,
+ 0.010896901600062847,
+ -0.008535011671483517,
+ -0.025183269754052162,
+ 0.01973865181207657,
+ 0.027729202061891556,
+ -0.03107265755534172,
+ 0.032054223120212555,
+ 0.0009930673986673355,
+ 0.0528511218726635,
+ 0.00302329589612782,
+ 0.02208520472049713,
+ 0.005425445269793272,
+ 0.00929419044405222,
+ -0.012008830904960632,
+ 0.03950797766447067,
+ -0.0010199070675298572,
+ -0.019692640751600266,
+ 0.03674732893705368,
+ 0.021180326119065285,
+ -0.03325050324201584,
+ 0.0023465531412512064,
+ -0.010360108688473701,
+ -0.01296739000827074,
+ 0.0019017815357074142,
+ 0.0017177382251247764,
+ 0.030382495373487473,
+ -0.03594980761408806,
+ 0.04837273433804512,
+ -0.0170853603631258,
+ -0.0008339465712197125,
+ 0.016855306923389435,
+ -0.022253911942243576,
+ -0.02325081266462803,
+ 0.011878466233611107,
+ -0.011073276400566101,
+ 0.010352440178394318,
+ 0.02795925736427307,
+ -0.024738498032093048,
+ -0.010513477958738804,
+ -0.06693044304847717,
+ 0.031992875039577484,
+ -0.04950767010450363,
+ -0.0168246328830719,
+ -0.02363423816859722,
+ -0.055028971284627914,
+ -0.03019845113158226,
+ -0.030750581994652748,
+ -0.028664756566286087,
+ -0.019876684993505478,
+ -0.003604182740673423,
+ 0.03383330628275871,
+ 0.04499860480427742,
+ -0.06236003339290619,
+ -0.002868009265512228,
+ -0.037054065614938736,
+ 0.010521146468818188,
+ 0.02858807146549225,
+ -0.03223826363682747,
+ 0.030244462192058563,
+ 0.020382804796099663,
+ 0.02019876055419445,
+ 0.026839658617973328,
+ -0.015382959507405758,
+ 0.0051417117938399315,
+ 0.007380906492471695,
+ 0.04647095501422882,
+ -0.0269010066986084,
+ 0.01912517473101616,
+ -0.00459341611713171,
+ 0.009079473093152046,
+ -0.00255935313180089,
+ 0.020827576518058777,
+ -0.014294035732746124,
+ -0.06527405232191086,
+ -0.005475290585309267,
+ -0.03831169754266739,
+ -0.012729667127132416,
+ 0.020229434594511986,
+ 0.04140976071357727,
+ 0.04628691077232361,
+ -0.006437683943659067,
+ -0.0034028852824121714,
+ -0.007672308478504419,
+ 0.032391633838415146,
+ 0.002785573247820139,
+ -0.002636037999764085,
+ 0.004240666050463915,
+ -0.025996128097176552,
+ -0.008228273130953312,
+ 0.002066653687506914,
+ -0.09196034073829651,
+ 0.022944074124097824,
+ 0.021793803200125694,
+ 0.015375290997326374,
+ -0.014263361692428589,
+ -0.029953060671687126,
+ 0.031778156757354736,
+ -0.018557706847786903,
+ 0.03337319940328598,
+ 0.05548907816410065,
+ 0.001982300542294979,
+ 0.008082571439445019,
+ -0.04944632202386856,
+ -0.08104043453931808,
+ 0.04803532361984253,
+ 0.03956932574510574,
+ 0.002689717337489128,
+ 0.07680743932723999,
+ 0.033741287887096405,
+ -0.010406119748950005,
+ -0.04864880070090294,
+ 0.03674732893705368,
+ -0.009102478623390198,
+ 0.002080073580145836,
+ 0.004206158220767975,
+ -0.05505964532494545,
+ -0.031241362914443016,
+ 0.00415631290525198,
+ -0.014600775204598904,
+ 0.009669945575296879,
+ 0.02587343193590641,
+ -0.04101099818944931,
+ 0.04751386493444443,
+ 0.03282107040286064,
+ 0.001040995353832841,
+ -0.013956623151898384,
+ 0.024155693128705025,
+ 0.01656390354037285,
+ 0.0029753679409623146,
+ 0.03926258906722069,
+ 0.05196158215403557,
+ 0.007867854088544846,
+ 0.005306584294885397,
+ -0.025996128097176552,
+ -0.0451519750058651,
+ -0.004547405056655407,
+ 0.02973834238946438,
+ 0.03380263224244118,
+ 0.014570101164281368,
+ 0.039753369987010956,
+ -0.016318513080477715,
+ 0.0007486348040401936,
+ -0.03420139476656914,
+ -0.022944074124097824,
+ 0.031992875039577484,
+ 0.005835708696395159,
+ 0.022990085184574127,
+ 0.008818745613098145,
+ -0.01858838088810444,
+ -0.012522618286311626,
+ 0.029063517227768898,
+ 0.002534430706873536,
+ -0.020766228437423706,
+ 0.021441053599119186,
+ -0.06809604912996292,
+ -0.011249651201069355,
+ -0.0007917699404060841,
+ 0.07754360884428024,
+ -0.03297444060444832,
+ -0.00973129365593195,
+ -0.005019016098231077,
+ 0.0026379551272839308,
+ -0.006491363514214754,
+ 0.003512161085382104,
+ -0.08208334445953369,
+ 0.05061192810535431,
+ -0.0194625873118639,
+ -0.005563477985560894,
+ 0.021042292937636375,
+ 0.051041364669799805,
+ -0.007637800183147192,
+ 0.0025785244069993496,
+ -0.06355631351470947,
+ -0.016931990161538124,
+ 0.03619519621133804,
+ -0.043802324682474136,
+ -0.01742277294397354,
+ -0.029692331328988075,
+ -0.0027683191001415253,
+ -0.0024021496064960957,
+ 0.011034933850169182,
+ -0.0077489931136369705,
+ -0.033281177282333374,
+ -0.045090626925230026,
+ 0.019094500690698624,
+ 0.02992238663136959,
+ -0.008212936110794544,
+ -0.005011348053812981,
+ -0.007108675315976143,
+ -0.0572681650519371,
+ -0.04456917196512222,
+ 0.0036118512507528067,
+ 0.05895522981882095,
+ 0.013527188450098038,
+ -0.04683903977274895,
+ 0.03392532840371132,
+ -0.008634702302515507,
+ -8.519195398548618e-05,
+ -0.012522618286311626,
+ 0.022453291341662407,
+ 0.006809604819864035,
+ -0.011357010342180729,
+ -0.013159101828932762,
+ 0.007273547817021608,
+ -0.035367000848054886,
+ -0.023419519886374474,
+ -0.010252749547362328,
+ -0.03527498245239258,
+ -0.0108125489205122,
+ 0.07656204700469971,
+ 0.01128032524138689,
+ 0.027545159682631493,
+ 0.012668319046497345,
+ 0.017514795064926147,
+ -0.002296708058565855,
+ 0.04147110879421234,
+ -0.13938218355178833,
+ -0.020996281877160072,
+ -0.02729976736009121,
+ 0.003972269594669342,
+ -0.004374864511191845,
+ -0.038465067744255066,
+ -0.04275941103696823,
+ -0.024171030148863792,
+ 0.0606422945857048,
+ 0.06797335296869278,
+ -0.024171030148863792,
+ 0.03245298191905022,
+ -0.03285174444317818,
+ 0.0041754841804504395,
+ -0.026134159415960312,
+ -0.06588753312826157,
+ -0.006410844158381224,
+ 0.036716654896736145,
+ 0.03466150164604187,
+ -0.010160728357732296,
+ 0.01445507351309061,
+ -0.011441363021731377,
+ -0.027008365839719772,
+ -0.0003357353853061795,
+ -0.005881719756871462,
+ 0.00973129365593195,
+ -0.016134468838572502,
+ -0.03690069913864136,
+ 0.0398760661482811,
+ -0.03426274284720421,
+ -0.011395352892577648,
+ -0.009439891204237938,
+ 0.034753523766994476,
+ 0.012729667127132416,
+ 0.024293726310133934,
+ 0.02513725869357586,
+ 0.026134159415960312,
+ -0.021855151280760765,
+ 0.06331092119216919,
+ -0.02803594060242176,
+ -0.0010783792240545154,
+ -0.0067252516746521,
+ -0.004213826730847359,
+ -0.01795956678688526,
+ 0.027882572263479233,
+ -0.04364895448088646,
+ -0.006242137867957354,
+ 0.03318915516138077,
+ -0.007369403727352619,
+ 0.01964663155376911,
+ 0.04263671487569809,
+ 0.026993028819561005,
+ 0.02236127108335495,
+ 0.0020244771149009466,
+ 0.06913895905017853,
+ 0.06312687695026398,
+ 0.010091711767017841,
+ 0.011034933850169182,
+ 0.009056467562913895,
+ 0.016839969903230667,
+ 0.025628039613366127,
+ 0.05045856162905693,
+ 0.044753216207027435,
+ -0.0015557416481897235,
+ 0.01595042645931244,
+ -0.024431759491562843,
+ 0.008841750212013721,
+ 0.013488845899701118,
+ -0.011257319711148739,
+ -0.07656204700469971,
+ 0.044017042964696884,
+ 0.02081223949790001,
+ 0.004183152690529823,
+ 0.09067203849554062,
+ 0.02660960517823696,
+ -0.0011253486154600978,
+ -0.015490317717194557,
+ 0.010160728357732296,
+ 0.015467312186956406,
+ -0.05113338679075241,
+ -0.00669074384495616,
+ 0.009570255875587463,
+ -0.034354764968156815,
+ 0.005647831130772829,
+ -0.04769790917634964,
+ -0.0038629937916994095,
+ -0.02688566967844963,
+ 0.022269248962402344,
+ -0.03742215409874916,
+ 0.02660960517823696,
+ 0.028741441667079926,
+ -0.019079163670539856,
+ 0.006541208364069462,
+ 0.010061037726700306,
+ 0.07962943613529205,
+ 0.028219984844326973,
+ 0.00544078228995204,
+ -0.007622463162988424,
+ 0.017238730564713478,
+ -0.00461258739233017,
+ 0.03101130947470665,
+ 0.01769883744418621,
+ 0.01196281984448433,
+ -0.01154872216284275,
+ 0.037330131977796555,
+ 0.038004957139492035,
+ 0.05708412081003189,
+ 0.03634856641292572,
+ -0.05291246995329857,
+ -0.015781719237565994,
+ -0.04938497394323349,
+ 0.059231292456388474,
+ -0.009685282595455647,
+ 0.03751417621970177,
+ 0.024830520153045654,
+ 0.01128032524138689,
+ 0.008841750212013721,
+ -0.027269093319773674,
+ 0.015252594836056232,
+ 0.021517738699913025,
+ 0.014846165664494038,
+ -0.022253911942243576,
+ -0.017867544665932655,
+ -0.01845034956932068,
+ 0.03628721833229065,
+ -0.01771417446434498,
+ 0.02087358571588993,
+ 0.0028986833058297634,
+ 0.03653261065483093,
+ 0.0008737267926335335,
+ 0.025229280814528465,
+ -0.028219984844326973,
+ -0.011518048122525215,
+ -0.024339737370610237,
+ -0.0065603796392679214,
+ -0.0017100697150453925,
+ -0.005739852786064148,
+ -0.0005219355225563049,
+ -0.023082107305526733,
+ -0.027345778420567513,
+ -0.03114934265613556,
+ -0.04723780229687691,
+ -0.014248024672269821,
+ -0.011234314180910587,
+ 0.02081223949790001,
+ -0.011978156864643097,
+ -0.01857304386794567,
+ -0.002049399772658944,
+ -0.020290782675147057,
+ 0.0025056740269064903,
+ 0.03782091289758682,
+ -0.028695430606603622,
+ -0.03196220099925995,
+ -0.006318822503089905,
+ 0.00031249033054336905,
+ 0.02559736743569374,
+ 0.03108799457550049,
+ 0.013596205040812492,
+ -0.01884911023080349,
+ -0.012675987556576729,
+ -0.023066770285367966,
+ -0.009209837764501572,
+ -0.005870216991752386,
+ -0.06932300329208374,
+ -0.054139427840709686,
+ 0.008864755742251873,
+ -0.0302751362323761,
+ 0.013634546659886837,
+ 0.004589581862092018,
+ 0.008642369881272316,
+ -0.06257475167512894,
+ 0.015919752418994904,
+ -0.01209318358451128,
+ -0.01710069738328457,
+ -0.0134505033493042,
+ 0.018741751089692116,
+ -0.019815336912870407,
+ -0.013757242821156979,
+ -0.024539116770029068,
+ -0.03147141635417938,
+ -0.01459310669451952,
+ 0.012323237955570221,
+ -0.009493570774793625,
+ 0.002451994689181447,
+ 0.029032843187451363,
+ -0.012898373417556286,
+ -0.02101161889731884,
+ -0.01154872216284275,
+ 0.023465530946850777,
+ -0.0011205557966604829,
+ -0.003654027823358774,
+ 0.03978404402732849,
+ -0.052943143993616104,
+ 0.0037843920290470123,
+ 0.022990085184574127,
+ 0.011142292991280556,
+ -0.004447714891284704,
+ -0.03168613463640213,
+ -0.029216885566711426,
+ -0.012384586036205292,
+ -0.027897909283638,
+ 0.013082416728138924,
+ -0.015321611426770687,
+ 0.04552006348967552,
+ -0.01486917119473219,
+ -0.003579260315746069,
+ 0.01668659970164299,
+ -0.07343330979347229,
+ -0.001678437227383256,
+ 0.01084322202950716,
+ -0.04061223939061165,
+ -0.01992269605398178,
+ -0.06337226927280426,
+ -0.03352656960487366,
+ 0.011272656731307507,
+ 0.02736111544072628,
+ 0.06122509762644768,
+ -0.020244771614670753,
+ 0.014309372752904892,
+ 0.04447714984416962,
+ 0.01607312262058258,
+ -0.0024366576690226793,
+ -0.016057785600423813,
+ -0.022315260022878647,
+ 0.015451975166797638,
+ -0.034293416887521744,
+ -0.004282842855900526,
+ 0.05478357896208763,
+ 0.04858745262026787,
+ -0.041103020310401917,
+ -0.011479705572128296,
+ 0.0221005417406559,
+ 0.008496669121086597,
+ -0.03552037104964256,
+ -0.05858714133501053,
+ 0.013772579841315746,
+ -0.05015182122588158,
+ 0.0432501956820488,
+ -0.04990642890334129,
+ 0.05518234148621559,
+ -0.047605887055397034,
+ -0.002998373471200466,
+ -0.009163826704025269,
+ 0.00018308481958229095,
+ -0.03616452217102051,
+ 0.014478079043328762,
+ -0.019953370094299316,
+ -0.02553601935505867,
+ 0.02358822710812092,
+ 0.015505654737353325,
+ 0.03591913357377052,
+ 0.051440123468637466,
+ 0.02682432159781456,
+ 0.028066614642739296,
+ 0.0011675251880660653,
+ -0.019953370094299316,
+ -0.018005577847361565,
+ -0.044231757521629333,
+ 0.0658261850476265,
+ -0.03208489716053009,
+ 0.11146894097328186,
+ 0.0197233147919178,
+ 0.013649883680045605,
+ 0.03414004668593407,
+ 0.062329359352588654,
+ -0.03073524497449398,
+ -0.002630286617204547,
+ 0.002384895458817482,
+ 0.07196096330881119,
+ -0.059691403061151505,
+ 0.0010668764589354396,
+ -0.015628350898623466,
+ 0.009600929915904999,
+ -0.012438264675438404,
+ 0.03404802456498146,
+ -0.012146863155066967,
+ 0.0004950958536937833,
+ -0.0442010834813118,
+ 0.01581239327788353,
+ 0.02783656120300293,
+ 0.0054062744602561,
+ 0.0384957417845726,
+ -0.020628195255994797,
+ -0.017882881686091423,
+ 0.01789821870625019,
+ 0.023465530946850777,
+ -0.030382495373487473,
+ -0.026118822395801544,
+ -0.030719907954335213,
+ 0.03371061384677887,
+ 0.01877242513000965,
+ 0.03825034946203232,
+ -0.010896901600062847,
+ 0.021732455119490623,
+ -0.03690069913864136,
+ 0.00031249033054336905,
+ 0.006847947370260954,
+ -0.010827885009348392,
+ 0.036317892372608185,
+ -0.025305964052677155,
+ 0.009685282595455647,
+ 0.011065607890486717,
+ 0.0013832009863108397,
+ -0.033465221524238586,
+ -0.02282137982547283,
+ -0.04269806295633316,
+ -0.022315260022878647,
+ 0.014109992422163486,
+ 0.0662556141614914,
+ -0.008910766802728176,
+ 0.012116189114749432,
+ 0.04736049473285675,
+ 0.017729511484503746,
+ 0.08643904328346252,
+ 0.011579396203160286,
+ -0.005582649260759354,
+ -0.009171495214104652,
+ -0.04653229936957359,
+ -0.019293880090117455,
+ -0.05269775539636612,
+ 0.017054686322808266,
+ 0.004098799545317888,
+ -0.012376917526125908,
+ 0.014002634212374687,
+ -0.023465530946850777,
+ 0.0025957785546779633,
+ -0.051317427307367325,
+ 0.0020263942424207926,
+ 0.04963036626577377,
+ 0.01128032524138689,
+ 0.0326983742415905,
+ -0.0073540667071938515,
+ -0.027269093319773674,
+ -0.010858559049665928,
+ 0.07631665468215942,
+ 0.0293242447078228,
+ 0.006928466260433197,
+ 0.030014406889677048,
+ -0.006441518198698759,
+ 0.015129899606108665,
+ -0.0024328234139829874,
+ 0.00619996152818203,
+ -0.03972269594669342,
+ -0.0036923703737556934,
+ 0.012024166993796825,
+ 0.005160883069038391,
+ 0.009769636206328869,
+ -0.003991440869867802,
+ 0.008358636870980263,
+ -0.004244500305503607,
+ 0.027253756299614906,
+ 0.0013774497201666236,
+ -0.015590008348226547,
+ -0.010889233089983463,
+ -0.02047482505440712,
+ -0.01680929586291313,
+ -0.047391168773174286,
+ 0.007300387602299452,
+ -0.008297288790345192,
+ -0.05392470955848694,
+ -0.016303176060318947,
+ 0.02006072923541069,
+ -0.006230635102838278,
+ -0.0018567292718216777,
+ -0.02345019392669201,
+ 0.025367312133312225,
+ -0.10772672295570374,
+ 0.057666923850774765,
+ 0.029339581727981567,
+ -0.004371030256152153,
+ -0.007108675315976143,
+ 0.042329978197813034,
+ -0.00476212240755558,
+ 0.023404182866215706,
+ -0.04202323779463768,
+ 0.04269806295633316,
+ 0.00365594495087862,
+ -0.030750581994652748,
+ -0.009064136072993279,
+ 0.06416979432106018,
+ 0.01239992305636406,
+ -0.019753988832235336,
+ 0.04321952164173126,
+ 0.01063617318868637,
+ -0.012269558385014534,
+ 0.03932393714785576,
+ 0.04785127937793732,
+ 0.07140883058309555,
+ -0.02924755960702896,
+ 0.025443997234106064,
+ 0.011801782064139843,
+ -0.0269470177590847,
+ -0.060488924384117126,
+ -0.006403176113963127,
+ -0.01910983771085739,
+ -0.02277536876499653,
+ -0.07104074209928513,
+ -0.034293416887521744,
+ 0.007327226921916008,
+ 0.018481021746993065,
+ 0.028204647824168205,
+ 0.009723625145852566,
+ 0.003354957327246666,
+ -0.04843408241868019,
+ -0.09042664617300034,
+ 0.061378467828035355,
+ 0.013688226230442524,
+ -0.013711231760680676,
+ 0.01575104519724846,
+ 0.021318357437849045,
+ 0.034017350524663925,
+ 0.00824361015111208,
+ -0.10018094629049301,
+ -0.021164989098906517,
+ 0.005747521296143532,
+ -0.013941286131739616,
+ 0.01536762248724699,
+ 0.026916343718767166,
+ -0.006084934342652559,
+ -0.006050426047295332,
+ -0.05321921035647392,
+ 0.00874972902238369,
+ 0.005716847255825996,
+ -0.004512897226959467,
+ 0.006932300515472889,
+ 0.010153059847652912,
+ -0.03187017887830734,
+ -0.034017350524663925,
+ 0.027468474581837654,
+ 0.011057939380407333,
+ 0.0021222501527518034,
+ 0.0079368706792593,
+ 0.019968707114458084,
+ 0.011725096963346004,
+ 0.03708473965525627,
+ -0.021395042538642883,
+ -0.0026513750199228525,
+ -0.03748350217938423,
+ 0.027483811601996422,
+ -0.018803099170327187,
+ 0.004923160187900066,
+ -0.0002839731751009822,
+ -0.023358171805739403,
+ 0.04012145847082138,
+ -0.011004260741174221,
+ -0.036256544291973114,
+ -0.003276355564594269,
+ -0.016655925661325455,
+ 0.03380263224244118,
+ 0.017484121024608612,
+ 0.026241518557071686,
+ 0.024416422471404076,
+ -0.00033070295467041433,
+ -0.03190085291862488,
+ -0.06889357417821884,
+ -0.032268937677145004,
+ 0.011556390672922134,
+ -0.010306429117918015,
+ -0.004305848386138678,
+ 0.016594577580690384,
+ 0.0317474827170372,
+ -0.0075802868232131,
+ 0.025689387694001198,
+ -0.017146708443760872,
+ -0.00444004638120532,
+ 0.03791293501853943,
+ -0.03742215409874916,
+ 0.02507591061294079,
+ -0.008051897399127483,
+ -0.012837025336921215,
+ -0.017576143145561218,
+ 0.02783656120300293,
+ 0.03647126257419586,
+ 0.008067234419286251,
+ -0.009723625145852566,
+ -0.023404182866215706,
+ 0.05892455577850342,
+ 0.04147110879421234,
+ -0.003815065836533904,
+ -0.045305345207452774,
+ 0.03156343847513199,
+ -0.020980944857001305,
+ -0.00593156460672617,
+ -0.014202014543116093,
+ 0.02722308225929737,
+ 0.009930673986673355,
+ -0.04242200031876564,
+ 0.01978466287255287,
+ 0.011218978092074394,
+ -0.016303176060318947,
+ -0.01355019398033619,
+ 0.006445352453738451,
+ -0.01783687062561512,
+ -0.07815708965063095,
+ -0.06404709815979004,
+ 0.01722339354455471,
+ 0.027376452460885048,
+ 0.00604659179225564,
+ -0.03582711145281792,
+ 0.01878776215016842,
+ 0.02323547750711441,
+ 0.011426026001572609,
+ 0.02243795618414879,
+ -0.034354764968156815,
+ -0.0033741286024451256,
+ -0.001742660766467452,
+ -0.005026684608310461,
+ -0.00871138647198677,
+ 0.026716964319348335,
+ -0.011847792193293571,
+ 0.017882881686091423,
+ 0.011893803253769875,
+ 0.012330906465649605,
+ -0.04263671487569809,
+ 0.03107265755534172,
+ -0.0011215143604204059,
+ 0.039630673825740814,
+ 0.010475135408341885,
+ 0.04318884760141373,
+ -0.013657552190124989,
+ 0.010061037726700306,
+ 0.008926103822886944,
+ -0.06220666319131851,
+ -0.006798102520406246,
+ -0.018189620226621628,
+ -0.013956623151898384,
+ 0.07165422290563583,
+ -0.02418636716902256,
+ 0.06705313920974731,
+ -0.024017661809921265,
+ 0.01371890027076006,
+ -0.014784818515181541,
+ -0.03257567808032036,
+ 0.014393726363778114,
+ 0.03825034946203232,
+ -0.04450782388448715,
+ -0.020306119695305824,
+ 0.01077420637011528,
+ 0.017514795064926147,
+ -0.0182509683072567
+ ],
+ "result": "--- 结果 1 (相似度: 1.000) ---\n文件路径: C:\\Steam\\steamapps\\common\\RimWorld\\Data\\dll1.6\\RimWorld\\CompShield.txt\n\npublic class CompShield : ThingComp\n{\n\tprotected float energy;\n\n\tprotected int ticksToReset = -1;\n\n\tprotected int lastKeepDisplayTick = -9999;\n\n\tprivate Vector3 impactAngleVect;\n\n\tprivate int lastAbsorbDamageTick = -9999;\n\n\tprivate const float MaxDamagedJitterDist = 0.05f;\n\n\tprivate const int JitterDurationTicks = 8;\n\n\tprivate int KeepDisplayingTicks = 1000;\n\n\tprivate float ApparelScorePerEnergyMax = 0.25f;\n\n\tprivate static readonly Material BubbleMat = MaterialPool.MatFrom(\"Other/ShieldBubble\", ShaderDatabase.Transparent);\n\n\tpublic CompProperties_Shield Props => (CompProperties_Shield)props;\n\n\tprivate float EnergyMax => parent.GetStatValue(StatDefOf.EnergyShieldEnergyMax);\n\n\tprivate float EnergyGainPerTick => parent.GetStatValue(StatDefOf.EnergyShieldRechargeRate) / 60f;\n\n\tpublic float Energy => energy;\n\n\tpublic ShieldState ShieldState\n\t{\n\t\tget\n\t\t{\n\t\t\tif (parent is Pawn p && (p.IsCharging() || p.IsSelfShutdown()))\n\t\t\t{\n\t\t\t\treturn ShieldState.Disabled;\n\t\t\t}\n\t\t\tCompCanBeDormant comp = parent.GetComp();\n\t\t\tif (comp != null && !comp.Awake)\n\t\t\t{\n\t\t\t\treturn ShieldState.Disabled;\n\t\t\t}\n\t\t\tif (ticksToReset <= 0)\n\t\t\t{\n\t\t\t\treturn ShieldState.Active;\n\t\t\t}\n\t\t\treturn ShieldState.Resetting;\n\t\t}\n\t}\n\n\tprotected bool ShouldDisplay\n\t{\n\t\tget\n\t\t{\n\t\t\tPawn pawnOwner = PawnOwner;\n\t\t\tif (!pawnOwner.Spawned || pawnOwner.Dead || pawnOwner.Downed)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (pawnOwner.InAggroMentalState)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (pawnOwner.Drafted)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (pawnOwner.Faction.HostileTo(Faction.OfPlayer) && !pawnOwner.IsPrisoner)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (Find.TickManager.TicksGame < lastKeepDisplayTick + KeepDisplayingTicks)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif (ModsConfig.BiotechActive && pawnOwner.IsColonyMech && Find.Selector.SingleSelectedThing == pawnOwner)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprotected Pawn PawnOwner\n\t{\n\t\tget\n\t\t{\n\t\t\tif (parent is Apparel apparel)\n\t\t\t{\n\t\t\t\treturn apparel.Wearer;\n\t\t\t}\n\t\t\tif (parent is Pawn result)\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tpublic bool IsApparel => parent is Apparel;\n\n\tprivate bool IsBuiltIn => !IsApparel;\n\n\tpublic override void PostExposeData()\n\t{\n\t\tbase.PostExposeData();\n\t\tScribe_Values.Look(ref energy, \"energy\", 0f);\n\t\tScribe_Values.Look(ref ticksToReset, \"ticksToReset\", -1);\n\t\tScribe_Values.Look(ref lastKeepDisplayTick, \"lastKeepDisplayTick\", 0);\n\t}\n\n\tpublic override IEnumerable CompGetWornGizmosExtra()\n\t{\n\t\tforeach (Gizmo item in base.CompGetWornGizmosExtra())\n\t\t{\n\t\t\tyield return item;\n\t\t}\n\t\tif (IsApparel)\n\t\t{\n\t\t\tforeach (Gizmo gizmo in GetGizmos())\n\t\t\t{\n\t\t\t\tyield return gizmo;\n\t\t\t}\n\t\t}\n\t\tif (!DebugSettings.ShowDevGizmos)\n\t\t{\n\t\t\tyield break;\n\t\t}\n\t\tCommand_Action command_Action = new Command_Action();\n\t\tcommand_Action.defaultLabel = \"DEV: Break\";\n\t\tcommand_Action.action = Break;\n\t\tyield return command_Action;\n\t\tif (ticksToReset > 0)\n\t\t{\n\t\t\tCommand_Action command_Action2 = new Command_Action();\n\t\t\tcommand_Action2.defaultLabel = \"DEV: Clear reset\";\n\t\t\tcommand_Action2.action = delegate\n\t\t\t{\n\t\t\t\tticksToReset = 0;\n\t\t\t};\n\t\t\tyield return command_Action2;\n\t\t}\n\t}\n\n\tpublic override IEnumerable CompGetGizmosExtra()\n\t{\n\t\tforeach (Gizmo item in base.CompGetGizmosExtra())\n\t\t{\n\t\t\tyield return item;\n\t\t}\n\t\tif (!IsBuiltIn)\n\t\t{\n\t\t\tyield break;\n\t\t}\n\t\tforeach (Gizmo gizmo in GetGizmos())\n\t\t{\n\t\t\tyield return gizmo;\n\t\t}\n\t}\n\n\tprivate IEnumerable GetGizmos()\n\t{\n\t\tif ((PawnOwner.Faction == Faction.OfPlayer || (parent is Pawn pawn && pawn.RaceProps.IsMechanoid)) && Find.Selector.SingleSelectedThing == PawnOwner)\n\t\t{\n\t\t\tGizmo_EnergyShieldStatus gizmo_EnergyShieldStatus = new Gizmo_EnergyShieldStatus();\n\t\t\tgizmo_EnergyShieldStatus.shield = this;\n\t\t\tyield return gizmo_EnergyShieldStatus;\n\t\t}\n\t}\n\n\tpublic override float CompGetSpecialApparelScoreOffset()\n\t{\n\t\treturn EnergyMax * ApparelScorePerEnergyMax;\n\t}\n\n\tpublic override void CompTick()\n\t{\n\t\tbase.CompTick();\n\t\tif (PawnOwner == null)\n\t\t{\n\t\t\tenergy = 0f;\n\t\t}\n\t\telse if (ShieldState == ShieldState.Resetting)\n\t\t{\n\t\t\tticksToReset--;\n\t\t\tif (ticksToReset <= 0)\n\t\t\t{\n\t\t\t\tReset();\n\t\t\t}\n\t\t}\n\t\telse if (ShieldState == ShieldState.Active)\n\t\t{\n\t\t\tenergy += EnergyGainPerTick;\n\t\t\tif (energy > EnergyMax)\n\t\t\t{\n\t\t\t\tenergy = EnergyMax;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic override void PostPreApplyDamage(ref DamageInfo dinfo, out bool absorbed)\n\t{\n\t\tabsorbed = false;\n\t\tif (ShieldState != 0 || PawnOwner == null)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif (dinfo.Def == DamageDefOf.EMP)\n\t\t{\n\t\t\tenergy = 0f;\n\t\t\tBreak();\n\t\t}\n\t\telse if (!dinfo.Def.ignoreShields && (dinfo.Def.isRanged || dinfo.Def.isExplosive))\n\t\t{\n\t\t\tenergy -= dinfo.Amount * Props.energyLossPerDamage;\n\t\t\tif (energy < 0f)\n\t\t\t{\n\t\t\t\tBreak();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tAbsorbedDamage(dinfo);\n\t\t\t}\n\t\t\tabsorbed = true;\n\t\t}\n\t}\n\n\tpublic void KeepDisplaying()\n\t{\n\t\tlastKeepDisplayTick = Find.TickManager.TicksGame;\n\t}\n\n\tprivate void AbsorbedDamage(DamageInfo dinfo)\n\t{\n\t\tSoundDefOf.EnergyShield_AbsorbDamage.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map));\n\t\timpactAngleVect = Vector3Utility.HorizontalVectorFromAngle(dinfo.Angle);\n\t\tVector3 loc = PawnOwner.TrueCenter() + impactAngleVect.RotatedBy(180f) * 0.5f;\n\t\tfloat num = Mathf.Min(10f, 2f + dinfo.Amount / 10f);\n\t\tFleckMaker.Static(loc, PawnOwner.Map, FleckDefOf.ExplosionFlash, num);\n\t\tint num2 = (int)num;\n\t\tfor (int i = 0; i < num2; i++)\n\t\t{\n\t\t\tFleckMaker.ThrowDustPuff(loc, PawnOwner.Map, Rand.Range(0.8f, 1.2f));\n\t\t}\n\t\tlastAbsorbDamageTick = Find.TickManager.TicksGame;\n\t\tKeepDisplaying();\n\t}\n\n\tprivate void Break()\n\t{\n\t\tif (parent.Spawned)\n\t\t{\n\t\t\tfloat scale = Mathf.Lerp(Props.minDrawSize, Props.maxDrawSize, energy);\n\t\t\tEffecterDefOf.Shield_Break.SpawnAttached(parent, parent.MapHeld, scale);\n\t\t\tFleckMaker.Static(PawnOwner.TrueCenter(), PawnOwner.Map, FleckDefOf.ExplosionFlash, 12f);\n\t\t\tfor (int i = 0; i < 6; i++)\n\t\t\t{\n\t\t\t\tFleckMaker.ThrowDustPuff(PawnOwner.TrueCenter() + Vector3Utility.HorizontalVectorFromAngle(Rand.Range(0, 360)) * Rand.Range(0.3f, 0.6f), PawnOwner.Map, Rand.Range(0.8f, 1.2f));\n\t\t\t}\n\t\t}\n\t\tenergy = 0f;\n\t\tticksToReset = Props.startingTicksToReset;\n\t}\n\n\tprivate void Reset()\n\t{\n\t\tif (PawnOwner.Spawned)\n\t\t{\n\t\t\tSoundDefOf.EnergyShield_Reset.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map));\n\t\t\tFleckMaker.ThrowLightningGlow(PawnOwner.TrueCenter(), PawnOwner.Map, 3f);\n\t\t}\n\t\tticksToReset = -1;\n\t\tenergy = Props.energyOnReset;\n\t}\n\n\tpublic override void CompDrawWornExtras()\n\t{\n\t\tbase.CompDrawWornExtras();\n\t\tif (IsApparel)\n\t\t{\n\t\t\tDraw();\n\t\t}\n\t}\n\n\tpublic override void PostDraw()\n\t{\n\t\tbase.PostDraw();\n\t\tif (IsBuiltIn)\n\t\t{\n\t\t\tDraw();\n\t\t}\n\t}\n\n\tprivate void Draw()\n\t{\n\t\tif (ShieldState == ShieldState.Active && ShouldDisplay)\n\t\t{\n\t\t\tfloat num = Mathf.Lerp(Props.minDrawSize, Props.maxDrawSize, energy);\n\t\t\tVector3 drawPos = PawnOwner.Drawer.DrawPos;\n\t\t\tdrawPos.y = AltitudeLayer.MoteOverhead.AltitudeFor();\n\t\t\tint num2 = Find.TickManager.TicksGame - lastAbsorbDamageTick;\n\t\t\tif (num2 < 8)\n\t\t\t{\n\t\t\t\tfloat num3 = (float)(8 - num2) / 8f * 0.05f;\n\t\t\t\tdrawPos += impactAngleVect * num3;\n\t\t\t\tnum -= num3;\n\t\t\t}\n\t\t\tfloat angle = Rand.Range(0, 360);\n\t\t\tVector3 s = new Vector3(num, 1f, num);\n\t\t\tMatrix4x4 matrix = default(Matrix4x4);\n\t\t\tmatrix.SetTRS(drawPos, Quaternion.AngleAxis(angle, Vector3.up), s);\n\t\t\tGraphics.DrawMesh(MeshPool.plane10, matrix, BubbleMat, 0);\n\t\t}\n\t}\n\n\tpublic override bool CompAllowVerbCast(Verb verb)\n\t{\n\t\tif (Props.blocksRangedWeapons)\n\t\t{\n\t\t\treturn !(verb is Verb_LaunchProjectile);\n\t\t}\n\t\treturn true;\n\t}\n}\n\n",
+ "timestamp": "2025-08-26 18:35:01,058"
}
}
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..59f231f7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,683 @@
+# RimWorld Mod: 基于次数的护盾与原版护盾视觉集成
+
+## 1. 引言
+
+本Mod旨在为《RimWorld》引入一种新型的护盾机制:基于 Hediff 层数的次数护盾。与原版基于能量的护盾不同,本护盾的抵挡能力由可叠加的“层数”决定,每层护盾可以抵挡一次受到的伤害。同时,为了提供更沉浸和熟悉的体验,我们集成了原版能量护盾(CompShield)的视觉特效和音效,使次数护盾在抵挡伤害时,能够展现出与原版护盾相似的视觉冲击力。
+
+## 2. 核心概念回顾
+
+### 2.1 Hediff_DamageShield
+
+这是我们自定义的 Hediff 类型,它代表了Pawn身上激活的次数护盾。它的核心特性是:
+- **层数管理**:通过 `ShieldCharges` 属性来跟踪剩余的护盾层数。当Pawn获得护盾时,层数增加;当护盾抵挡伤害时,层数减少。
+- **自动移除**:当护盾层数归零时,该 Hediff 会自动从Pawn身上移除。
+- **显示信息**:在Pawn的健康信息界面,会显示当前护盾的剩余层数。
+
+### 2.2 CompShield
+
+这是《RimWorld》原版用于实现能量护盾的组件。它通常附加在护盾腰带等物品上,提供以下核心功能:
+- **能量值**:护盾具有能量储备,受到伤害会消耗能量。
+- **充能与重置**:能量耗尽后,护盾会进入重置状态,并在一段时间后恢复能量。
+- **视觉和音效**:护盾拥有独特的视觉表现(如护盾泡泡)和音效(如吸收伤害时的音效)。
+
+## 3. 实现细节
+
+### 3.1 伤害抵挡逻辑与护盾渲染 (DRMDamageShield.cs & Hediff_DamageShield.cs)
+
+**核心思想**:我们利用 `ThingComp` 的 `PostPreApplyDamage` 虚方法来拦截伤害,而不是使用 Harmony Patch `Pawn_HealthTracker.PreApplyDamage`。这将使代码更简洁,更符合 RimWorld 的组件化设计。护盾的视觉渲染也将由这个 `ThingComp` 负责。
+
+- **`DRMDamageShield.cs`**: 这是一个自定义的 `ThingComp`,它将附加到 Pawn 身上。
+ - **伤害拦截**:它重写了 `PostPreApplyDamage` 方法。当 Pawn 受到伤害时,这个方法会被自动调用。在这里,我们会检查 Pawn 是否拥有 `Hediff_DamageShield` 及其层数,如果满足条件,则消耗层数并设置 `absorbed = true` 来抵挡伤害。
+ - **视觉和音效集成**:在抵挡伤害时,`DRMDamageShield` 会触发原版能量护盾的吸收音效、闪光特效和抖动效果。
+ - **护盾渲染**:`DRMDamageShield` 包含了从 `CompShield` 中提取的护盾泡泡渲染逻辑。它会在 Pawn 身上渲染一个动态的护盾泡泡,其大小和显示状态与 `Hediff_DamageShield` 的层数关联。
+ - **能量同步**:`DRMDamageShield` 的“能量”和“最大能量”属性将直接从 Pawn 身上对应的 `Hediff_DamageShield` 实例中获取其 `ShieldCharges` 和 `def.maxSeverity`。
+
+- **`Hediff_DamageShield.cs`**:
+ - **动态管理 `DRMDamageShield`**:在 `PostAdd` 方法中,当 `Hediff_DamageShield` 被添加到 Pawn 身上时,它会确保 Pawn 拥有一个 `DRMDamageShield` 实例(如果Pawn还没有)。在 `PostRemoved` 方法中,当 `Hediff_DamageShield` 被移除时,它会禁用或移除对应的 `DRMDamageShield` 实例。
+ - **层数与能量关联**:`Hediff_DamageShield` 的 `ShieldCharges` 属性将作为 `DRMDamageShield` 的能量来源。
+
+### 3.2 充能方式 (CompUseEffect_AddDamageShieldCharges.cs & WULA_DamageShieldGenerator)
+
+护盾的充能方式保持不变,通过使用特定的物品来增加护盾层数。
+
+- **`CompUseEffect_AddDamageShieldCharges`**:这是一个自定义的物品使用效果组件。
+ - 当物品被使用时,它会检查目标Pawn是否拥有 `Hediff_DamageShield`。
+ - 如果Pawn没有该Hediff,则会为其添加一个,并赋予预设的初始层数(例如10层)。
+ - 如果Pawn已有该Hediff,则会在现有层数的基础上增加预设的层数(例如每次使用增加10层)。
+- **`WULA_DamageShieldGenerator`**:这是定义在XML中的一个物品,它附加了 `CompUseEffect_AddDamageShieldCharges` 组件。玩家可以通过制作或获得这个物品,并对其Pawn使用来获取或补充护盾层数。
+
+## 4. 代码结构与内容
+
+以下是本Mod的关键文件及其作用和完整代码内容:
+
+### 4.1 Hediff_DamageShield.cs (更新)
+
+此文件定义了基于层数的护盾 Hediff。它将管理护盾层数,并在 Pawn 身上动态添加/移除 `DRMDamageShield`。
+
+```csharp
+using Verse;
+using System.Text;
+using RimWorld;
+using UnityEngine;
+using HarmonyLib; // Needed for AccessTools if you use it here directly
+
+namespace WulaFallenEmpire
+{
+ public class Hediff_DamageShield : HediffWithComps
+ {
+ // 伤害抵挡层数
+ public int ShieldCharges
+ {
+ get => (int)severityInt;
+ set => severityInt = value;
+ }
+
+ private DRMDamageShield cachedShieldComp;
+
+ // 获取或创建 DRMDamageShield 组件
+ public DRMDamageShield ShieldComp
+ {
+ get
+ {
+ if (cachedShieldComp == null || cachedShieldComp.parent != pawn)
+ {
+ cachedShieldComp = pawn.GetComp();
+ if (cachedShieldComp == null)
+ {
+ // 如果没有,动态添加一个
+ cachedShieldComp = (DRMDamageShield)Activator.CreateInstance(typeof(DRMDamageShield));
+ cachedShieldComp.parent = pawn;
+ cachedShieldComp.props = new DRMCompShieldProp(); // 确保有属性,即使是默认的
+ pawn.AllComps.Add(cachedShieldComp);
+ cachedShieldComp.Initialize(cachedShieldComp.props);
+ }
+ }
+ return cachedShieldComp;
+ }
+ }
+
+
+ public override string LabelInBrackets
+ {
+ get
+ {
+ if (ShieldCharges > 0)
+ {
+ return "层数: " + ShieldCharges;
+ }
+ return null;
+ }
+ }
+
+ public override string TipStringExtra
+ {
+ get
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.Append(base.TipStringExtra);
+ if (ShieldCharges > 0)
+ {
+ sb.AppendLine(" - 每层抵挡一次伤害。当前层数: " + ShieldCharges);
+ }
+ else
+ {
+ sb.AppendLine(" - 没有可用的抵挡层数。");
+ }
+ return sb.ToString();
+ }
+ }
+
+ public override void ExposeData()
+ {
+ base.ExposeData();
+ // severityInt 会自动保存,所以不需要额外处理 ShieldCharges
+ }
+
+ public override void PostAdd(DamageInfo? dinfo)
+ {
+ base.PostAdd(dinfo);
+ // 确保 Pawn 拥有 DRMCompShield 组件
+ DRMDamageShield comp = ShieldComp; // 访问属性以确保组件被添加
+ if (comp != null)
+ {
+ comp.IsActive = true; // 激活护盾组件
+ // 能量同步将在 Tick() 中完成
+ }
+ }
+
+ public override void PostRemoved()
+ {
+ base.PostRemoved();
+ // 禁用护盾组件
+ if (cachedShieldComp != null && cachedShieldComp.parent == pawn)
+ {
+ cachedShieldComp.IsActive = false;
+ }
+ }
+
+ public override void Tick()
+ {
+ base.Tick();
+ // 如果层数归零,移除 Hediff
+ if (ShieldCharges <= 0)
+ {
+ pawn.health.RemoveHediff(this);
+ }
+ // 同步能量到 ShieldComp
+ if (ShieldComp != null && ShieldComp.IsActive)
+ {
+ ShieldComp.Energy = ShieldCharges;
+ ShieldComp.MaxEnergy = (int)def.maxSeverity;
+ }
+ }
+ }
+}
+```
+
+### 4.2 DRMDamageShield.cs (新文件)
+
+此文件定义了自定义的 `ThingComp`,用于处理护盾的渲染和部分行为。它将从 `CompShield` 和 `PlasmaShieldImplant.cs` 中提取渲染和伤害处理逻辑。
+
+```csharp
+using RimWorld;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using UnityEngine;
+using Verse;
+using Verse.Sound;
+using System.Reflection; // For AccessTools
+using HarmonyLib; // For AccessTools
+
+namespace WulaFallenEmpire
+{
+ // 自定义 CompProperties_Shield 变体
+ public class DRMCompShieldProp : CompProperties
+ {
+ public int startingTicksToReset = 3200;
+ public float minDrawSize = 1.2f;
+ public float maxDrawSize = 1.55f;
+ public float energyLossPerDamage = 0.033f;
+ public float energyOnReset = 0.2f;
+ public bool blocksRangedWeapons = true;
+
+ public DRMCompShieldProp()
+ {
+ compClass = typeof(DRMDamageShield);
+ }
+ }
+
+ [StaticConstructorOnStartup] // 确保在游戏启动时加载
+ public class DRMDamageShield : ThingComp
+ {
+ // 从 Hediff_DamageShield 获取层数作为能量
+ public float Energy
+ {
+ get
+ {
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ return hediff?.ShieldCharges ?? 0;
+ }
+ set
+ {
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ if (hediff != null)
+ {
+ hediff.ShieldCharges = (int)value;
+ }
+ }
+ }
+
+ public float MaxEnergy
+ {
+ get
+ {
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ return hediff?.def.maxSeverity ?? 0;
+ }
+ set
+ {
+ // MaxEnergy 由 HediffDef 控制,这里不需要设置
+ }
+ }
+
+ public bool IsActive = false; // 控制护盾是否激活,由 Hediff_DamageShield 管理
+
+ // 复制自 CompShield
+ protected int ticksToReset = -1;
+ protected int lastKeepDisplayTick = -9999;
+ private Vector3 impactAngleVect;
+ private int lastAbsorbDamageTick = -9999;
+
+ private const float MaxDamagedJitterDist = 0.05f;
+ private const int JitterDurationTicks = 8;
+ private int KeepDisplayingTicks = 1000;
+
+ // 获取原版 CompShield 的 BubbleMat
+ private static readonly Material BubbleMat;
+
+ static DRMDamageShield()
+ {
+ // 使用 Harmony AccessTools 获取 CompShield 的私有静态字段 BubbleMat
+ BubbleMat = (Material)AccessTools.Field(typeof(CompShield), "BubbleMat").GetValue(null);
+ }
+
+ public DRMCompShieldProp Props => (DRMCompShieldProp)props;
+
+ public ShieldState ShieldState
+ {
+ get
+ {
+ if (PawnOwner == null || !IsActive || Energy <= 0)
+ {
+ return ShieldState.Disabled;
+ }
+ if (ticksToReset <= 0)
+ {
+ return ShieldState.Active;
+ }
+ return ShieldState.Resetting;
+ }
+ }
+
+ protected bool ShouldDisplay
+ {
+ get
+ {
+ Pawn pawnOwner = PawnOwner;
+ if (pawnOwner == null || !pawnOwner.Spawned || pawnOwner.Dead || pawnOwner.Downed)
+ {
+ return false;
+ }
+ if (pawnOwner.InAggroMentalState)
+ {
+ return true;
+ }
+ if (pawnOwner.Drafted)
+ {
+ return true;
+ }
+ if (pawnOwner.Faction.HostileTo(Faction.OfPlayer) && !pawnOwner.IsPrisoner)
+ {
+ return true;
+ }
+ if (Find.TickManager.TicksGame < lastKeepDisplayTick + KeepDisplayingTicks)
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ protected Pawn PawnOwner
+ {
+ get
+ {
+ return parent as Pawn;
+ }
+ }
+
+ public override void PostExposeData()
+ {
+ base.PostExposeData();
+ Scribe_Values.Look(ref ticksToReset, "ticksToReset", -1);
+ Scribe_Values.Look(ref lastKeepDisplayTick, "lastKeepDisplayTick", 0);
+ Scribe_Values.Look(ref IsActive, "isActive", false);
+ }
+
+ public override void CompTick()
+ {
+ base.CompTick();
+ if (PawnOwner == null || !IsActive)
+ {
+ return;
+ }
+
+ if (ShieldState == ShieldState.Resetting)
+ {
+ ticksToReset--;
+ if (ticksToReset <= 0)
+ {
+ Reset();
+ }
+ }
+ else if (ShieldState == ShieldState.Active)
+ {
+ // 护盾能量(层数)通过 Hediff_DamageShield 的 Tick 方法管理,这里不需要额外回复
+ // 如果需要自动回复层数,可以在这里实现
+ }
+ }
+
+ public override void PostPreApplyDamage(ref DamageInfo dinfo, out bool absorbed)
+ {
+ absorbed = false;
+ // 获取 Hediff_DamageShield 实例
+ Hediff_DamageShield damageShield = PawnOwner?.health?.hediffSet.GetFirstHediff();
+
+ if (ShieldState != ShieldState.Active || !IsActive || damageShield == null || damageShield.ShieldCharges <= 0)
+ {
+ return;
+ }
+
+ // 如果是 EMP 伤害,且护盾没有 EMP 抗性(这里假设我们的护盾没有),则直接击穿
+ // 为了简化,我们假设我们的次数盾没有 EMP 抗性,任何 EMP 伤害都会直接击穿
+ if (dinfo.Def == DamageDefOf.EMP)
+ {
+ Energy = 0; // 能量归零
+ Notify_ShieldBreak(); // 触发护盾击穿效果
+ absorbed = true;
+ return;
+ }
+
+ // 如果是远程或爆炸伤害,且护盾阻挡这些类型
+ if (Props.blocksRangedWeapons && (dinfo.Def.isRanged || dinfo.Def.isExplosive))
+ {
+ // 消耗一层护盾
+ damageShield.ShieldCharges--;
+
+ // 触发护盾吸收效果
+ Notify_DamageAbsorbed(dinfo);
+
+ // 护盾抖动效果
+ PawnOwner.Drawer.renderer.wiggler.SetToCustomRotation(Rand.Range(-0.05f, 0.05f));
+ // 显示抵挡文本
+ Verse.MoteMaker.ThrowText(PawnOwner.DrawPos, PawnOwner.Map, "伤害被护盾抵挡!", Color.cyan, 1.2f);
+
+ absorbed = true; // 伤害被吸收
+
+ // 如果护盾层数归零,触发护盾击穿效果
+ if (damageShield.ShieldCharges <= 0)
+ {
+ Notify_ShieldBreak();
+ }
+ }
+ }
+
+ public void Notify_DamageAbsorbed(DamageInfo dinfo)
+ {
+ // 复制自 CompShield.AbsorbedDamage
+ SoundDefOf.EnergyShield_AbsorbDamage.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map));
+ impactAngleVect = Vector3Utility.HorizontalVectorFromAngle(dinfo.Angle);
+ Vector3 loc = PawnOwner.TrueCenter() + impactAngleVect.RotatedBy(180f) * 0.5f;
+ float num = Mathf.Min(10f, 2f + dinfo.Amount / 10f);
+ FleckMaker.Static(loc, PawnOwner.Map, FleckDefOf.ExplosionFlash, num);
+ int num2 = (int)num;
+ for (int i = 0; i < num2; i++)
+ {
+ FleckMaker.ThrowDustPuff(loc, PawnOwner.Map, Rand.Range(0.8f, 1.2f));
+ }
+ lastAbsorbDamageTick = Find.TickManager.TicksGame;
+ KeepDisplaying();
+ }
+
+ public void Notify_ShieldBreak()
+ {
+ // 复制自 CompShield.Break
+ if (parent.Spawned)
+ {
+ float scale = Mathf.Lerp(Props.minDrawSize, Props.maxDrawSize, Energy / MaxEnergy); // 根据当前能量比例调整大小
+ EffecterDefOf.Shield_Break.SpawnAttached(parent, parent.MapHeld, scale);
+ FleckMaker.Static(PawnOwner.TrueCenter(), PawnOwner.Map, FleckDefOf.ExplosionFlash, 12f);
+ for (int i = 0; i < 6; i++)
+ {
+ FleckMaker.ThrowDustPuff(PawnOwner.TrueCenter() + Vector3Utility.HorizontalVectorFromAngle(Rand.Range(0, 360)) * Rand.Range(0.3f, 0.6f), PawnOwner.Map, Rand.Range(0.8f, 1.2f));
+ }
+ }
+ ticksToReset = Props.startingTicksToReset;
+ // 护盾层数归零将由 Hediff_DamageShield 负责移除 Hediff
+ }
+
+ private void Reset()
+ {
+ // 复制自 CompShield.Reset
+ if (PawnOwner.Spawned)
+ {
+ SoundDefOf.EnergyShield_Reset.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map));
+ FleckMaker.ThrowLightningGlow(PawnOwner.TrueCenter(), PawnOwner.Map, 3f);
+ }
+ ticksToReset = -1;
+ // 能量恢复由 Hediff_DamageShield 负责,这里不需要设置 Energy
+ // 这里可以添加逻辑,让 Hediff_DamageShield 恢复层数
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ if (hediff != null)
+ {
+ hediff.ShieldCharges = (int)hediff.def.initialSeverity; // 重置时恢复到初始层数
+ }
+ }
+
+ public void KeepDisplaying()
+ {
+ lastKeepDisplayTick = Find.TickManager.TicksGame;
+ }
+
+ public override void PostDraw()
+ {
+ base.PostDraw();
+ Draw();
+ }
+
+ private void Draw()
+ {
+ if (ShieldState == ShieldState.Active && ShouldDisplay)
+ {
+ float num = Mathf.Lerp(Props.minDrawSize, Props.maxDrawSize, Energy / MaxEnergy); // 根据当前能量比例调整大小
+ Vector3 drawPos = PawnOwner.Drawer.DrawPos;
+ drawPos.y = AltitudeLayer.MoteOverhead.AltitudeFor();
+ int num2 = Find.TickManager.TicksGame - lastAbsorbDamageTick;
+ if (num2 < JitterDurationTicks) // 使用 JitterDurationTicks
+ {
+ float num3 = (float)(JitterDurationTicks - num2) / JitterDurationTicks * MaxDamagedJitterDist; // 使用 MaxDamagedJitterDist
+ drawPos += impactAngleVect * num3;
+ num -= num3;
+ }
+ float angle = Rand.Range(0, 360);
+ Vector3 s = new Vector3(num, 1f, num);
+ Matrix4x4 matrix = default(Matrix4x4);
+ matrix.SetTRS(drawPos, Quaternion.AngleAxis(angle, Vector3.up), s);
+ Graphics.DrawMesh(MeshPool.plane10, matrix, BubbleMat, 0);
+ }
+ }
+ }
+}
+```
+
+### 4.3 CompUseEffect_AddDamageShieldCharges.cs (不变)
+
+```csharp
+using Verse;
+using RimWorld;
+using System.Collections.Generic;
+
+namespace WulaFallenEmpire
+{
+ public class CompUseEffect_AddDamageShieldCharges : CompUseEffect
+ {
+ public CompProperties_AddDamageShieldCharges Props => (CompProperties_AddDamageShieldCharges)props;
+
+ public override void DoEffect(Pawn user)
+ {
+ base.DoEffect(user);
+
+ // 获取或添加 Hediff_DamageShield
+ Hediff_DamageShield damageShield = user.health.hediffSet.GetFirstHediff();
+
+ if (damageShield == null)
+ {
+ // 如果没有 Hediff,则添加一个
+ damageShield = (Hediff_DamageShield)HediffMaker.MakeHediff(Props.hediffDef, user);
+ user.health.AddHediff(damageShield);
+ damageShield.ShieldCharges = Props.chargesToAdd; // 设置初始层数
+ }
+ else
+ {
+ // 如果已有 Hediff,则增加层数
+ damageShield.ShieldCharges += Props.chargesToAdd;
+ }
+
+ // 确保层数不超过最大值
+ if (damageShield.ShieldCharges > (int)damageShield.def.maxSeverity)
+ {
+ damageShield.ShieldCharges = (int)damageShield.def.maxSeverity;
+ }
+
+ // 发送消息
+ Messages.Message("WULA_MessageGainedDamageShieldCharges".Translate(user.LabelShort, Props.chargesToAdd), user, MessageTypeDefOf.PositiveEvent);
+ }
+
+ // 修正 CanBeUsedBy 方法签名
+ public override AcceptanceReport CanBeUsedBy(Pawn p)
+ {
+ // 确保只能对活着的 Pawn 使用
+ if (p.Dead)
+ {
+ return "WULA_CannotUseOnDeadPawn".Translate();
+ }
+
+ // 检查是否已达到最大层数
+ Hediff_DamageShield damageShield = p.health.hediffSet.GetFirstHediff();
+ if (damageShield != null && damageShield.ShieldCharges >= (int)damageShield.def.maxSeverity)
+ {
+ return "WULA_DamageShieldMaxChargesReached".Translate();
+ }
+
+ return true; // 可以使用
+ }
+
+ // 可以在这里添加 GetDescriptionPart() 来显示描述
+ public override string GetDescriptionPart()
+ {
+ return "WULA_DamageShieldChargesDescription".Translate(Props.chargesToAdd);
+ }
+ }
+
+ public class CompProperties_AddDamageShieldCharges : CompProperties_UseEffect
+ {
+ public HediffDef hediffDef;
+ public int chargesToAdd;
+
+ public CompProperties_AddDamageShieldCharges()
+ {
+ compClass = typeof(CompUseEffect_AddDamageShieldCharges);
+ }
+ }
+}
+```
+
+### 4.4 DamageShieldPatch.cs (将删除)
+
+此文件将不再需要,因为伤害拦截逻辑已转移到 `DRMDamageShield.cs`。
+
+```csharp
+// 此文件将被删除
+```
+
+### 4.5 Hediffs_WULA_DamageShield.xml (不变)
+
+```xml
+
+
+
+ WULA_DamageShield
+ 伤害护盾
+ 一种特殊的能量护盾,可以抵挡受到的伤害。每层护盾可以抵挡一次伤害。
+ WulaFallenEmpire.Hediff_DamageShield
+ 10
+ 999
+ false
+ false
+ 1
+ true
+ false
+
+
+ 活跃
+ 1
+
+
+
+ false
+
+
+```
+
+### 4.6 ThingDefs_WULA_Items_DamageShield.xml (修改)
+
+此文件将定义新的物品 `WULA_DamageShieldGenerator`,它将使用 `CompProperties_AddDamageShieldCharges`。
+
+```xml
+
+
+
+ WULA_DamageShieldGenerator
+ 伤害护盾发生器
+ 一个便携式设备,可以激活并生成一个临时的能量护盾,抵挡即将到来的伤害。
+
+ Things/Item/WULA_DamageShieldGenerator
+ Graphic_Single
+
+ 1
+ true
+ false
+
+ 50
+ 500
+ 0.5
+ 1000
+
+
+ Items
+
+ Sellable
+
+
+ UseItem
+ 使用伤害护盾发生器
+
+
+ WULA_DamageShield
+ 10
+
+
+
+
+```
+
+### 4.7 WULA_Keyed.xml (不变)
+
+```xml
+
+
+ {0} 获得了 {1} 层伤害护盾!
+ 无法对已死亡的Pawn使用。
+ 伤害护盾已达到最大层数。
+ 使用:增加 {0} 层伤害护盾
+
+```
+
+## 5. 安装与测试
+
+### 5.1 安装 Mod
+
+1. 将本Mod的文件夹放置在《RimWorld》的Mods目录下。
+2. 在游戏启动器中激活本Mod。
+
+### 5.2 游戏内测试
+
+1. 进入游戏,加载或开始一个殖民地。
+2. 打开开发者模式(通常按 `~` 键)。
+3. **生成护盾物品**:在开发者控制台中输入 `spawn WULA_DamageShieldGenerator 1` 来生成一个护盾发生器物品。
+4. **使用护盾物品**:让Pawn拾取并使用 `WULA_DamageShieldGenerator`。观察Pawn是否获得了 `伤害护盾` Hediff,并且层数是否正确显示。
+5. **测试伤害抵挡**:让Pawn受到伤害(例如,让敌人攻击,或使用开发者模式中的“伤害”工具)。观察护盾层数是否减少,伤害是否被抵挡,以及是否触发了护盾吸收的音效和闪光特效。
+6. **测试护盾渲染**:观察Pawn身上是否显示了护盾泡泡。
+
+## 6. 未来展望
+
+- **护盾渲染动态化**:使护盾泡泡的视觉表现(例如透明度、大小)与剩余层数更紧密地关联,层数越低,护盾视觉效果越弱。
+- **充能动画**:为 `WULA_DamageShieldGenerator` 的使用添加充能动画。
+- **平衡性调整**:根据游戏测试反馈,调整护盾的初始层数、每次充能的层数、以及护盾的最大层数,以达到更好的游戏平衡。
+- **扩展功能**:
+ - 添加护盾在特定条件下自动充能的机制。
+ - 引入不同类型的次数护盾,具有不同的抵挡特性或额外效果。
+ - 护盾被击穿时的特殊效果。
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/DRMDamageShield.cs b/Source/WulaFallenEmpire/DRMDamageShield.cs
new file mode 100644
index 00000000..441ed989
--- /dev/null
+++ b/Source/WulaFallenEmpire/DRMDamageShield.cs
@@ -0,0 +1,290 @@
+using RimWorld;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using UnityEngine;
+using Verse;
+using Verse.Sound;
+using HarmonyLib; // For AccessTools
+
+namespace WulaFallenEmpire
+{
+ // 自定义 CompProperties_Shield 变体
+ public class DRMCompShieldProp : CompProperties
+ {
+ public int startingTicksToReset = 3200;
+ public float minDrawSize = 1.2f;
+ public float maxDrawSize = 1.55f;
+ public float energyLossPerDamage = 0.033f;
+ public float energyOnReset = 0.2f;
+ public bool blocksRangedWeapons = true;
+
+ public DRMCompShieldProp()
+ {
+ compClass = typeof(DRMDamageShield);
+ }
+ }
+
+ [StaticConstructorOnStartup] // 确保在游戏启动时加载
+ public class DRMDamageShield : ThingComp
+ {
+ // 从 Hediff_DamageShield 获取层数作为能量
+ public float Energy
+ {
+ get
+ {
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ return hediff?.ShieldCharges ?? 0;
+ }
+ set
+ {
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ if (hediff != null)
+ {
+ hediff.ShieldCharges = (int)value;
+ }
+ }
+ }
+
+ public float MaxEnergy
+ {
+ get
+ {
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ return hediff?.def.maxSeverity ?? 0;
+ }
+ set
+ {
+ // MaxEnergy 由 HediffDef 控制,这里不需要设置
+ }
+ }
+
+ public bool IsActive = false; // 控制护盾是否激活,由 Hediff_DamageShield 管理
+
+ // 复制自 CompShield
+ protected int ticksToReset = -1;
+ protected int lastKeepDisplayTick = -9999;
+ private Vector3 impactAngleVect;
+ private int lastAbsorbDamageTick = -9999;
+
+ private const float MaxDamagedJitterDist = 0.05f;
+ private const int JitterDurationTicks = 8;
+ private int KeepDisplayingTicks = 1000;
+
+ // 获取原版 CompShield 的 BubbleMat
+ private static readonly Material BubbleMat;
+
+ static DRMDamageShield()
+ {
+ // 使用 Harmony AccessTools 获取 CompShield 的私有静态字段 BubbleMat
+ BubbleMat = (Material)AccessTools.Field(typeof(CompShield), "BubbleMat").GetValue(null);
+ }
+
+ public DRMCompShieldProp Props => (DRMCompShieldProp)props;
+
+ public ShieldState ShieldState
+ {
+ get
+ {
+ if (PawnOwner == null || !IsActive || Energy <= 0)
+ {
+ return ShieldState.Disabled;
+ }
+ if (ticksToReset <= 0)
+ {
+ return ShieldState.Active;
+ }
+ return ShieldState.Resetting;
+ }
+ }
+
+ protected bool ShouldDisplay
+ {
+ get
+ {
+ Pawn pawnOwner = PawnOwner;
+ if (pawnOwner == null || !pawnOwner.Spawned || pawnOwner.Dead || pawnOwner.Downed)
+ {
+ return false;
+ }
+ if (pawnOwner.InAggroMentalState)
+ {
+ return true;
+ }
+ if (pawnOwner.Drafted)
+ {
+ return true;
+ }
+ if (pawnOwner.Faction.HostileTo(Faction.OfPlayer) && !pawnOwner.IsPrisoner)
+ {
+ return true;
+ }
+ if (Find.TickManager.TicksGame < lastKeepDisplayTick + KeepDisplayingTicks)
+ {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ protected Pawn PawnOwner
+ {
+ get
+ {
+ return parent as Pawn;
+ }
+ }
+
+ public override void PostExposeData()
+ {
+ base.PostExposeData();
+ Scribe_Values.Look(ref ticksToReset, "ticksToReset", -1);
+ Scribe_Values.Look(ref lastKeepDisplayTick, "lastKeepDisplayTick", 0);
+ Scribe_Values.Look(ref IsActive, "isActive", false);
+ }
+
+ public override void CompTick()
+ {
+ base.CompTick();
+ if (PawnOwner == null || !IsActive)
+ {
+ return;
+ }
+
+ if (ShieldState == ShieldState.Resetting)
+ {
+ ticksToReset--;
+ if (ticksToReset <= 0)
+ {
+ Reset();
+ }
+ }
+ else if (ShieldState == ShieldState.Active)
+ {
+ // 护盾能量(层数)通过 Hediff_DamageShield 的 Tick 方法管理,这里不需要额外回复
+ // 如果需要自动回复层数,可以在这里实现
+ }
+ }
+
+ public override void PostPreApplyDamage(ref DamageInfo dinfo, out bool absorbed)
+ {
+ absorbed = false;
+ // 获取 Hediff_DamageShield 实例
+ Hediff_DamageShield damageShield = PawnOwner?.health?.hediffSet.GetFirstHediff();
+
+ if (ShieldState != ShieldState.Active || !IsActive || damageShield == null || damageShield.ShieldCharges <= 0)
+ {
+ return;
+ }
+
+ // 如果是 EMP 伤害,且护盾没有 EMP 抗性(这里假设我们的护盾没有),则直接击穿
+ // 为了简化,我们假设我们的次数盾没有 EMP 抗性,任何 EMP 伤害都会直接击穿
+ if (dinfo.Def == DamageDefOf.EMP)
+ {
+ Energy = 0; // 能量归零
+ Notify_ShieldBreak(); // 触发护盾击穿效果
+ absorbed = true;
+ return;
+ }
+
+ // 如果是远程或爆炸伤害,且护盾阻挡这些类型
+ if (Props.blocksRangedWeapons && (dinfo.Def.isRanged || dinfo.Def.isExplosive))
+ {
+ // 消耗一层护盾
+ damageShield.ShieldCharges--;
+
+ // 触发护盾吸收效果
+ Notify_DamageAbsorbed(dinfo);
+
+ // 护盾抖动效果
+ PawnOwner.Drawer.renderer.wiggler.SetToCustomRotation(Rand.Range(-0.05f, 0.05f));
+ // 移除文字提示
+ // 移除粒子效果
+
+ absorbed = true; // 伤害被吸收
+
+ // 如果护盾层数归零,触发护盾击穿效果
+ if (damageShield.ShieldCharges <= 0)
+ {
+ Notify_ShieldBreak();
+ }
+ }
+ }
+
+ public void Notify_DamageAbsorbed(DamageInfo dinfo)
+ {
+ // 复制自 CompShield.AbsorbedDamage
+ SoundDefOf.EnergyShield_AbsorbDamage.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map));
+ impactAngleVect = Vector3Utility.HorizontalVectorFromAngle(dinfo.Angle);
+ // 移除 FleckMaker.Static 和 FleckMaker.ThrowDustPuff
+ lastAbsorbDamageTick = Find.TickManager.TicksGame;
+ KeepDisplaying();
+ }
+
+ public void Notify_ShieldBreak()
+ {
+ // 复制自 CompShield.Break
+ if (parent.Spawned)
+ {
+ float scale = Mathf.Lerp(Props.minDrawSize, Props.maxDrawSize, Energy / MaxEnergy); // 根据当前能量比例调整大小
+ EffecterDefOf.Shield_Break.SpawnAttached(parent, parent.MapHeld, scale);
+ // 移除 FleckMaker.Static 和 FleckMaker.ThrowDustPuff
+ }
+ ticksToReset = Props.startingTicksToReset;
+ // 护盾层数归零将由 Hediff_DamageShield 负责移除 Hediff
+ }
+
+ private void Reset()
+ {
+ // 复制自 CompShield.Reset
+ if (PawnOwner.Spawned)
+ {
+ SoundDefOf.EnergyShield_Reset.PlayOneShot(new TargetInfo(PawnOwner.Position, PawnOwner.Map));
+ // 移除 FleckMaker.ThrowLightningGlow
+ }
+ ticksToReset = -1;
+ // 能量恢复由 Hediff_DamageShield 负责,这里不需要设置 Energy
+ // 这里可以添加逻辑,让 Hediff_DamageShield 恢复层数
+ Hediff_DamageShield hediff = PawnOwner?.health?.hediffSet.GetFirstHediff();
+ if (hediff != null)
+ {
+ hediff.ShieldCharges = (int)hediff.def.initialSeverity; // 重置时恢复到初始层数
+ }
+ }
+
+ public void KeepDisplaying()
+ {
+ lastKeepDisplayTick = Find.TickManager.TicksGame;
+ }
+
+ public override void PostDraw()
+ {
+ base.PostDraw();
+ Draw();
+ }
+
+ private void Draw()
+ {
+ if (ShieldState == ShieldState.Active && ShouldDisplay)
+ {
+ float num = Mathf.Lerp(Props.minDrawSize, Props.maxDrawSize, Energy / MaxEnergy); // 根据当前能量比例调整大小
+ Vector3 drawPos = PawnOwner.Drawer.DrawPos;
+ drawPos.y = AltitudeLayer.MoteOverhead.AltitudeFor();
+ int num2 = Find.TickManager.TicksGame - lastAbsorbDamageTick;
+ if (num2 < JitterDurationTicks) // 使用 JitterDurationTicks
+ {
+ float num3 = (float)(JitterDurationTicks - num2) / JitterDurationTicks * MaxDamagedJitterDist; // 使用 MaxDamagedJitterDist
+ drawPos += impactAngleVect * num3;
+ num -= num3;
+ }
+ float angle = Rand.Range(0, 360);
+ Vector3 s = new Vector3(num, 1f, num);
+ Matrix4x4 matrix = default(Matrix4x4);
+ matrix.SetTRS(drawPos, Quaternion.AngleAxis(angle, Vector3.up), s);
+ Graphics.DrawMesh(MeshPool.plane10, matrix, BubbleMat, 0);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/HarmonyPatches/DamageShieldPatch.cs b/Source/WulaFallenEmpire/HarmonyPatches/DamageShieldPatch.cs
deleted file mode 100644
index e6f28aec..00000000
--- a/Source/WulaFallenEmpire/HarmonyPatches/DamageShieldPatch.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using HarmonyLib;
-using Verse;
-using System.Reflection;
-using UnityEngine; // Add UnityEngine for MoteMaker and Color
-
-namespace WulaFallenEmpire.HarmonyPatches
-{
- [HarmonyPatch(typeof(Pawn_HealthTracker), "PreApplyDamage")]
- public static class DamageShieldPatch
- {
- // 使用 Harmony 的 AccessTools.Field 来获取私有的 pawn 字段
- private static readonly FieldInfo PawnField = AccessTools.Field(typeof(Pawn_HealthTracker), "pawn");
-
- public static bool Prefix(Pawn_HealthTracker __instance, ref DamageInfo dinfo, out bool absorbed)
- {
- // 获取 Pawn 实例
- Pawn pawn = (Pawn)PawnField.GetValue(__instance);
-
- // 查找 Pawn 身上是否有 Hediff_DamageShield
- Hediff_DamageShield damageShield = pawn.health.hediffSet.GetFirstHediff();
-
- if (damageShield != null && damageShield.ShieldCharges > 0)
- {
- // 如果有护盾层数,则消耗一层并抵挡伤害
- damageShield.ShieldCharges--;
- // MoteMaker.ThrowText(pawn.DrawPos, pawn.Map, "伤害被护盾抵挡!", Color.cyan, 1.2f); // 视觉反馈,明确指定 Verse.MoteMaker,此行将被删除
-
- // 设置 absorbed 为 true,表示伤害被完全吸收
- absorbed = true;
-
- // 返回 false,阻止原始方法执行,即伤害不会被应用
- return false;
- }
-
- // 如果没有护盾 Hediff 或者层数用尽,则正常处理伤害
- absorbed = false;
- return true; // 继续执行原始方法
- }
- }
-}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/Hediff_DamageShield.cs b/Source/WulaFallenEmpire/Hediff_DamageShield.cs
index cc870ff8..640035f3 100644
--- a/Source/WulaFallenEmpire/Hediff_DamageShield.cs
+++ b/Source/WulaFallenEmpire/Hediff_DamageShield.cs
@@ -1,20 +1,40 @@
using Verse;
+using System; // Add for Activator
using System.Text;
using RimWorld;
using UnityEngine;
+using HarmonyLib; // Needed for AccessTools if you use it here directly
namespace WulaFallenEmpire
{
public class Hediff_DamageShield : HediffWithComps
{
// 伤害抵挡层数
- // 直接将 severityInt 作为 ShieldCharges,这样外部对 severity 的修改会直接影响 ShieldCharges
public int ShieldCharges
{
get => (int)severityInt;
set => severityInt = value;
}
+ // 获取或创建 DRMDamageShield 组件
+ public DRMDamageShield ShieldComp
+ {
+ get
+ {
+ DRMDamageShield comp = pawn.GetComp();
+ if (comp == null)
+ {
+ comp = (DRMDamageShield)Activator.CreateInstance(typeof(DRMDamageShield));
+ comp.parent = pawn;
+ comp.props = new DRMCompShieldProp(); // 确保有属性,即使是默认的
+ pawn.AllComps.Add(comp);
+ comp.Initialize(comp.props);
+ }
+ return comp;
+ }
+ }
+
+
public override string LabelInBrackets
{
get
@@ -54,10 +74,25 @@ namespace WulaFallenEmpire
public override void PostAdd(DamageInfo? dinfo)
{
base.PostAdd(dinfo);
- // 初始层数由 XML 中的 initialSeverity 控制
- // 如果需要一个固定的初始值,可以在这里设置
- // 例如:如果 hediffDef.initialSeverity 设为 0,这里可以强制给一个默认值
- // 如果 initialSeverity 在 XML 中已经设置为 10,这里就不需要额外处理
+ // 确保 Pawn 拥有 DRMCompShield 组件
+ DRMDamageShield comp = ShieldComp; // 访问属性以确保组件被添加
+ if (comp != null)
+ {
+ comp.IsActive = true; // 激活护盾组件
+ // 能量同步将在 Tick() 中完成
+ }
+ }
+
+ public override void PostRemoved()
+ {
+ base.PostRemoved();
+ // 当 Hediff 被移除时,移除对应的 DRMDamageShield 组件
+ DRMDamageShield comp = pawn.GetComp();
+ if (comp != null)
+ {
+ pawn.AllComps.Remove(comp);
+ comp.IsActive = false; // 确保禁用
+ }
}
public override void Tick()
@@ -68,6 +103,13 @@ namespace WulaFallenEmpire
{
pawn.health.RemoveHediff(this);
}
+ // 同步能量到 ShieldComp
+ DRMDamageShield comp = pawn.GetComp(); // 每次 Tick 获取,确保是最新的
+ if (comp != null && comp.IsActive)
+ {
+ comp.Energy = ShieldCharges;
+ comp.MaxEnergy = (int)def.maxSeverity;
+ }
}
}
}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index 409b5b8e..77647a51 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -183,7 +183,7 @@
-
+