From d4322361d533e3fda70e5c3188074d45a79bf3b9 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Tue, 26 Aug 2025 19:25:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/WulaFallenEmpire.dll | Bin 295936 -> 299520 bytes .../HediffDefs/Hediffs_WULA_DamageShield.xml | 14 +- .../ThingDefs_WULA_Items_DamageShield.xml | 34 + .../ThingDefs_WULA_Items_DamageShield.xml | 1 - .../Keyed/WULA_Keyed.xml | 5 + .../Keyed/WULA_Keyed.xml | 7 - MCP/vector_cache/knowledge_cache.json | 2069 +++++++++++++++++ README.md | 683 ++++++ Source/WulaFallenEmpire/DRMDamageShield.cs | 290 +++ .../HarmonyPatches/DamageShieldPatch.cs | 40 - .../WulaFallenEmpire/Hediff_DamageShield.cs | 52 +- .../WulaFallenEmpire/WulaFallenEmpire.csproj | 2 +- 12 files changed, 3134 insertions(+), 63 deletions(-) rename 1.6/{ => 1.6}/Defs/HediffDefs/Hediffs_WULA_DamageShield.xml (54%) create mode 100644 1.6/1.6/Defs/ThingDefs/ThingDefs_WULA_Items_DamageShield.xml rename 1.6/{ => 1.6}/Defs/ThingDefs_Misc/ThingDefs_WULA_Items_DamageShield.xml (93%) delete mode 100644 1.6/Languages/ChineseSimplified (简体中文)/Keyed/WULA_Keyed.xml create mode 100644 README.md create mode 100644 Source/WulaFallenEmpire/DRMDamageShield.cs delete mode 100644 Source/WulaFallenEmpire/HarmonyPatches/DamageShieldPatch.cs diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 3712a5a11af09374226f93e68a002a8eeff4b630..f4ce93a51f7c35b32f80cd037217e2a0ec830b92 100644 GIT binary patch delta 84243 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 UIevnLvAX1dwU+-NZ5UzrKNtWzk^lez delta 80990 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 - + 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 @@ - +