From c049cf4c5eea52ec383c48109023196384b8c03a Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 4 Sep 2025 23:02:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=AB=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 71168 -> 70656 bytes .../Defs/BackstoryDefs/ARA_BackstoryDef.xml | 5 -- .../HediffDefs/ARA_Hediffs_Possession.xml | 49 ++++++++++++++++-- .../Possession/CompAbilityEffect_Possess.cs | 43 ++++++++------- .../Possession/Hediff_Possession.cs | 40 +++++++------- .../Possession/PawnDataUtility.cs | 13 +++-- 6 files changed, 95 insertions(+), 55 deletions(-) diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index b9c9af055e777c78d1877d90420b59cd85b3b75d..889af9cba2f19cf6c2aeb73fd85b54b076078de7 100644 GIT binary patch delta 21590 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 a5|vfk6Ya{+2KBii+Z}G@J7ry&`TqeHkrT`S delta 21499 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%0AgZJ<>;lBsB*H3=C{MFTyVka3YV&@TzZ zQ_(=@1nGHdpri${_Gs9JX91&y^oV*09WxVXk#fj?73B-kXKg%{U4Uv6nq1xEY0Y_= z0<=?*KEMfdI)QkA6KGc}KH9dAZ~}eO%I@{*o~IoYn~?F%HHkJR5IdYiTLtMeI*DEtq)*c%dP~qkydVAr{rFY*8=ek2B^&+~ zJo_{23JcRy8q=kCAW`YzDsH!yv~zTRJKdeme5Hcv4Y~XlJqU9heLFb!1et#-rGswF z;kNXRUEpkKxx=B-qj-MnFywG3lIjRe}kQSsj3LY;Qbuw))gXU*SC4u^q8 ziiOxD8+T)>Ql&W1O~2w~ejmwAXIg>;sx;n@f50H2Uzk!oy}AWXul}b!ug+q&xjn#i zZ$8^u8bhiT+L*)R?u{ouU4V620%{Ry=joW_V4cqNryAx=lgTR7+mbCk?Vaf~;diE! z9Ed`pRWd_5?QB|aA1{ngxa&_iC@A>o!N-zxP#a#N9w~HCrEms=dT9x0fYu6U1AUH? z-$GpKcDl1$DcZYH*;~-AAP>D-coFRe?N6B^%@kJ4yJchEk=m0fpX<2_RN zG3daqrF6hho_mnm3~k9@K$DM?hYibo0c9UvxCWIuN~t-POLLUNIR(lI!T;zV$xlzQXv>=VjhqdDc2a?0>k@@eS*Tt?~~!V8bGrtOn(6jFm?}!7xYpYw2u5 zy<+UzWSFTm`R7B2tK@|7>7x4$r;OiKy=1tX!hyeovX>PyfcY`Gte`)OX{Pnc>lvE5 z8vH@V6*N@)7@-`)EA$5CTJvm!Vj8E8GFnYdCF6}wQ&IMK@E^>YVqBtpnK>JDCv=u5 zJ*wszAA<$1iTk{9*kPCHrZ)o5q0K?8rq$JW5od~BT(rY@%4jw-9a^x*xLkQQkV}V+ zADG@V7Mq6U{KGh3f*2_Y+(eTzem3&lpElN+YO)QcQ*dK3Z4v2FafDE zpAIYK6;^GzX||RE+NB~zJE{z;@@j__e$jS7sVE3)ZOSXYSOHjzwQf)<3f5_>OwZ%Z z6pwE>_-y(_f^y-Ul6D)V7fsRDnr_yv(X49Mj2R}Y+A|}njWk`^^&S|#-@jJdha5bq zIo0+4r?s7u{G&3A4W_@>y`pWwVD^Cz`!U*WYOXqs8_#GDD0K#>`3Our;y$LOt4qs& zhSEnRzk_le?4-V~-!YC`>Y||hu4tze;~pu-Im)?=0`ndzx}y^4Zspn3)5>nsyE*!h z`kLF6JnvBRJ`8eqV&OZb#n!!^N6uVo zqtx7amNqKv(rl^J?DpF&b=o@nVoSYt(zz7;oAYvMmGQx>70{m&o?#lSJ>B&YwE32< zS8oV!Lz~|-)vNq|X%)pBU56XfO(%0+wT#qW^zOCHQQpIMtOo5V@5fN(3TOaz&>Zc{ z?q+L)dPhdGb)Gi9z+-Kr*}e>Gn;JCdfX)M*Bl^d9Ug;;H`{dP68{JvbU|pi^ubX5& zCiyt6=Rb}5zFuljQ%4$?(%TZFyd#$UqNqPIN zhYj6rf48nu`E|}J^`Q3%XjS@eRuATW2W`-D(o<~>$|vU0wpOJ}Zi8)$HYqg8mZ|Xa zl`r9B^{OAfT>y5mFYuyOn=H? zy1%BuvP4F_Tb*5#OB>X;@I7q4EH7KsJ3YVJ+O%1LnMsGWel<-=r;LMAVo7sgt;(=P zeH8SRvDCISmUK#+UAGN0v8wCJB*lE7e6i(}u~pk)Y*l*au1>O=pS0zY)BK;pbxEyC z$ns=Ty7_3?)6lH)vgVy#Ur5R|KNff`X@k0>da;F9`?r%0sK4SRo?_mHfDUVy=Y5*A z-Pp(f4T9*Ad@gCX42(6C?6Jez$xNSp6@6gOrDAiiAj__pje+6DN^@FS$lj{{n2sHR zuJ&{3ohvP~*O>$O_Q%^*m3^)Dqvs;@{n*zBba#&d_QTpIWrOYM%7z*qCD*}VbDd*~ zeXx182ilvQhd`fqeq-+`b3D>CHJ~I9koHcRpHZB=&p=hx$y3aAITJzS_KC@D)B{_T z)nM#8HF>7_)#B@txgAL!lCTh4Q+1Di!JzPD$?$O_7u1| zkvz|Qr0`czV^>4UJo86pd&(5$54oGq1~MNNa{$^_msVs zO{sS)1IqVW_mRW&QtBMG5JQY_r_V6WGw=#E&+tKdRGVioV^g_XR)Q50$_Dd?S!YtW zn;&(mj&xIV*Xu0v49B23NBPB*;#eU$n`3wY=O|u`y^h^Tb%BEy>~hB(!{YSQSnD6k zc*HWt5UkyXzMQi<)1#RNQ*0k`N>^iK4GzV?#{|U?4x~5^m@|u~J9aDlnoBXHnf6MFboJW_a{vsImo1-n%p zoUzT)s$P`&AoOK#6gzD+py*-e9%WN#qw^h^$`8bX)w0RC$7!`(n)9}Et!caU?@p)X zQ21kKx+QkF=rd=o<%6PsJ3kf2pNiuzq+70~t;ZSX7YWms7i+F!%P5yd$Hc);;^4Gs z7F(XE%ZKzYb)~L0N=vSCRa&kL)w+xb`Xk(gvx*11>MgIN4g*b3y#n-C%VKO-zs15= zx*9BVx=#eXtNT=Rjuv0%nrT_zJp%fC_nW{e%bM?+XSt|*E9i*sce?7ef9rc)&b_WB zmgzZh&>M1Afp2#49{5Jx8rO2mmEOl)c9qj^S9#6%sJy3aFdWR><=SBQ(enm$wkOB_ z>hh?(wJf)&WgodRMKxbkw-^Fl|Kr+X;HQA)mcp*Ty7Cj6-{7~339#ag@ zeS7hLWH5)`2W^H?-#EekSErN8 z-TJB*(-Y|}(w=Hq56(ivMyAHC%N$-&sgJT{;mX-5qmDCXEP>yL?8Kzp#v`aJ%@x+x+n?lD|E8ZLqaKo zrIUrW2wfv|m(W8(DIgYvP8QlCbdAtmLJtX@oDI#Gr-d(`LqaJ>It%S9bh1u^%x@8T zNGRosrqI4ZCkt&6x<)8<5gnm@g-#aQB6N+=yj^mkJW&jQSde0osO3yma^YJaKua9}dXYuOj7q1}=|8^#f@6Gsk5O&ZrE~jw( zpxs@%G*dXapznnXL7z)ydQn1Jg7))TSI{TRm^!MMe&?zJJOO^ySiFpt(No_D0?~P-l1|Xk{&Prex_sOhwxhoC!MD8v(u2d=scQJWps0beRm` z_uwDVuBl+hRh3IYw^ZDBzTH%@LfRtuzm$Hdc<6t0SQ@|lk*{KJ;;V&<7c;{_|BipN zqtb`?393q;&=}CqXdLJ-c!8}F9*#lH%0y7B@&`}{es`(j|8#3AXqqw|G((wzFO`cG zH|Sl87xZ4m54ucA2mO;009~PEfj*$*VA)v{gKAG&2i2bRguW_XFuTGzZdu zpgE9!QnEmQhUR5tQDbggY^oPDMa>0usOg|CH2~^S^FV!S4!(J1sBX|qXkJc1wGy-o zG%u%oXkJc*Y87Y*nnNfI%^_3{%^_5w7Jznx<`C>k0nqMh5oj$m3-Ipv()crLrp&&= zIo`Rzd53eI^Eu~E=P~C`&Lo$|mFcQ?J>%NuI_x^?a=LTf#qLe+9qu;wA@?1gdp*V$ z{RLbCMOe@>+cPTDNyl4`yE2>GJsYwWl(k zH$3a;qXgWg_`BAa?OAJl((@+%5^eqKx+}DJ{)T(EzOms}MVT6}*zVnWA-_37w8 z{rblqs-cUZW4JqXQxI=18*zHS0amVoWdsC^H^EAfv~#q+=W$Aq#D(;b7^KK;X4?ZZ(kUIsF?aQI5s4s9M(r3@-C>bFUqQ}oFArNhgS zsPcH>_rX}sgH`}k|emJJhAq)fliPSyE*cJ8t0 z=EUqIW(j$y``&)_g(I6jgQw}n={HQhW63{mPMH61(^Z`av$OHvXRjGmG3xu9&DV}V z8gD^LH{NSYgtzs>@6D>iJuUpo(vN-}{&a5X=a1y|>%H~Z@jD#G?4YK`-#(SGa-E{M z3=wm|%592L=JPsRmMgB-{rI2ibxlO`0RFe~w4%I~tpydkt973_sDi!EZq!_htW1)b zI9Gn9Dj~(Y(qT|CV-|GM^$u8Anr_j&t{TO)D9fCeY5qtf+~ zF&5#Dam^M}4J?}IG@D$r@n6das@FM3akd;yCWEWxq^tE|<{p7kYim-_XmPb{N6WG@ zW>k8Qnr#;4MRQVu2G!MaPXeiCvq`n6s;ZB<3|gGjvizV;NpUT@$+>8r*R`lwaV~0w zIlI@@@}Y{h>RR;2m8mABSi6Z+vV3K4lQKhjc;yo&<&$l9Xo_8xj3Uf!%Pq=I&`IHyHzX?=>WJ{lyONbf+k!4-fU+$mMfuI3-q>@S)1~~NEUz&CKi!|` A)Bpeg diff --git a/1.6/1.6/Defs/BackstoryDefs/ARA_BackstoryDef.xml b/1.6/1.6/Defs/BackstoryDefs/ARA_BackstoryDef.xml index 596747c..5cecb6f 100644 --- a/1.6/1.6/Defs/BackstoryDefs/ARA_BackstoryDef.xml +++ b/1.6/1.6/Defs/BackstoryDefs/ARA_BackstoryDef.xml @@ -91,7 +91,6 @@ 工艺种 [PAWN_nameDef]是一只阿拉克涅工艺种督虫。能够产出专门用来孵化阿拉克涅武器种的孵化茧,负责阿拉克涅虫巢的基础维护。\n\n[PAWN_nameDef]在战斗中并不是一个值得正视的对手,她没有可以接入武装器官的副肢,脆弱臃肿的特性也决定了她几乎无法躲开任何攻击。 Adulthood - Cooking
  • ArachnaeNode_spawnCategories_WeaponSmith
  • @@ -104,10 +103,6 @@ 原虫种 [PAWN_nameDef]是一只阿拉克涅原虫种督虫。[PAWN_nameDef]通过独特的神经链接管伸入受害者身体来接管受害者的身体。不同于普通阿拉克涅虫族,阿拉克涅原虫种拥有自我意识,不需要女皇种的监管。 Adulthood - Cooking - - -
  • ArachnaeNode_spawnCategories_Facehugger
  • diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Possession.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Possession.xml index 6dfe6f3..b2252d6 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Possession.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Possession.xml @@ -3,15 +3,58 @@ ARA_Possession - - 这个生物的身体正被另一个实体所控制。 + + 这个生物的身体被阿拉克涅原虫所夺取了,这具身体原本的主人已经没有可能再回来了。 ArachnaeSwarm.Hediff_Possession + (0.6, 0.4, 0.8) false false 1.0 + +
  • + PawnRenderNode_AttachmentHead + PawnRenderNodeWorker_FlipWhenCrawling + ArachnaeSwarm/Things/ARA_HiveNode/Heads/Average_Normal + Skin + Head + true + true + Fresh, Rotting + + + 70 + + +
  • +
  • + PawnRenderNode_AttachmentHead + PawnRenderNodeWorker_FlipWhenCrawling + ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Addons_Base + Skin + Head + true + true + Fresh, Rotting + + + 70 + + +
  • +
  • - + 0 + +
  • Mood
  • +
  • Joy
  • +
  • Beauty
  • +
  • Comfort
  • +
  • Outdoors
  • +
  • Indoors
  • +
  • DrugDesire
  • +
  • RoomSize
  • +
    diff --git a/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs b/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs index 31cab75..f162724 100644 --- a/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs +++ b/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs @@ -12,34 +12,33 @@ namespace ArachnaeSwarm Pawn caster = this.parent.pawn; Pawn targetPawn = target.Pawn; - if (targetPawn == null) + if (targetPawn == null || caster == null) return; + + Log.Message($"[夺舍] 开始执行。施法者: {caster.LabelShort}, 目标: {targetPawn.LabelShort}"); + + // 步骤 1: 创建Hediff实例 + Hediff_Possession hediff = (Hediff_Possession)HediffMaker.MakeHediff(HediffDef.Named("ARA_Possession"), targetPawn); + + // 步骤 2: 使用SplitOff(1)将施法者的一个安全、独立的副本存入容器。 + // 这是从地图上移除Pawn并将其存入容器的标准、原子性操作。 + if (hediff.GetDirectlyHeldThings().TryAdd(caster.SplitOff(1), true)) { + Log.Message($"[夺舍] 成功将 {caster.LabelShort} 的副本存入Hediff。"); + } + else + { + Log.Error($"[夺舍] 无法将 {caster.LabelShort} 的副本存入Hediff。中止操作。"); return; } - - // Optional: Add checks here. E.g., cannot possess mechanical, already possessed, etc. - // if (targetPawn.RaceProps.IsMechanoid) - // { - // Messages.Message("Cannot possess a mechanoid.", MessageTypeDefOf.RejectInput); - // return; - // } - Log.Message("[夺舍] Apply方法开始执行。施法者: " + caster.LabelShort + ", 目标: " + targetPawn.LabelShort); + // 步骤 3: 使用原始施法者的数据覆盖目标Pawn。 + // 即使caster的stackCount变为0,其数据在当前Tick中依然可读。 + PawnDataUtility.TransferSoul(caster, targetPawn); - Log.Message("[夺舍] 步骤1: 创建Hediff实例..."); - Hediff_Possession hediff = (Hediff_Possession)HediffMaker.MakeHediff(HediffDef.Named("ARA_Possession"), targetPawn); - - Log.Message("[夺舍] 步骤2: 将施法者 " + caster.LabelShort + " 安全地转移到Hediff容器中..."); - // 使用标准的游戏框架方法,将施法者从其当前的持有者(地图)转移到Hediff的内部容器中。 - // 这会自动处理施法者从地图上消失的逻辑。 - caster.holdingOwner.TryTransferToContainer(caster, hediff.GetDirectlyHeldThings(), 1); - - Log.Message("[夺舍] 步骤3: 调用Hediff的PostPossessionApply方法来执行数据覆盖..."); - // 我们创建一个新的方法来处理夺舍后的逻辑,而不是依赖PostAdd - hediff.PostPossessionApply(caster, targetPawn); - - Log.Message("[夺舍] 步骤4: 将Hediff添加到目标Pawn身上..."); + // 步骤 4: 将准备好的Hediff添加到目标身上。 targetPawn.health.AddHediff(hediff); + + Log.Message($"[夺舍] {targetPawn.LabelShort} (原 {caster.LabelShort}) 夺舍完成。"); } } } \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs b/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs index a596151..0d8903b 100644 --- a/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs +++ b/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs @@ -7,7 +7,6 @@ namespace ArachnaeSwarm public class Hediff_Possession : HediffWithComps, IThingHolder { private ThingOwner innerContainer; - private Pawn originalCaster; public Hediff_Possession() { @@ -28,20 +27,8 @@ namespace ArachnaeSwarm return innerContainer; } - // PostAdd在游戏加载时也会被调用,因此不适合放置一次性的夺舍逻辑。 - // 我们创建一个新的公共方法,由CompAbilityEffect在正确的时机调用。 - public void PostPossessionApply(Pawn caster, Pawn target) - { - Log.Message("[夺舍] Hediff.PostPossessionApply 开始执行,施法者: " + caster.LabelShort + ", 目标: " + target.LabelShort); - - // 将施法者的引用保存下来,用于将来的重生逻辑 - this.originalCaster = caster; - - Log.Message("[夺舍] 步骤5: 调用 TransferSoul 将灵魂从 " + caster.LabelShort + " 转移到 " + target.LabelShort); - PawnDataUtility.TransferSoul(caster, target); - - Log.Message($"[夺舍] {target.LabelShort} 已被 {StoredCasterPawn.LabelShort} 夺舍成功!"); - } + // PostAdd现在只在游戏加载时起作用,我们不需要在这里做任何特殊操作。 + // 所有的夺舍逻辑都在CompAbilityEffect_Possess中处理了。 public override void Notify_PawnDied(DamageInfo? dinfo, Hediff culprit = null) { @@ -61,24 +48,33 @@ namespace ArachnaeSwarm this.EjectContents(); } - public void SetCaster(Pawn caster) - { - this.originalCaster = caster; - } public void EjectContents() { - if (StoredCasterPawn != null) + if (StoredCasterPawn == null) return; + + // 采用更稳健的方式获取地图和位置,防止因宿主死亡导致Map为null + Map map = this.pawn.MapHeld ?? Find.AnyPlayerHomeMap; + if (map == null) { - this.innerContainer.TryDropAll(this.pawn.Position, this.pawn.Map, ThingPlaceMode.Near); + Log.Error("[夺舍] 无法找到一个有效的地图来重生抱脸虫。"); + return; } + + IntVec3 cell = this.pawn.PositionHeld; + if (!cell.IsValid) + { + cell = map.Center; + } + + Log.Message($"[夺舍] 准备在地图 {map.ToString()} 的位置 {cell.ToString()} 处重生 {StoredCasterPawn.LabelShort}。"); + this.innerContainer.TryDropAll(cell, map, ThingPlaceMode.Near); } public override void ExposeData() { base.ExposeData(); Scribe_Deep.Look(ref innerContainer, "innerContainer", this); - Scribe_References.Look(ref originalCaster, "originalCaster", false); } } } \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs b/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs index a202dc8..62cb26a 100644 --- a/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs +++ b/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs @@ -56,9 +56,12 @@ namespace ArachnaeSwarm { foreach (RecordDef recordDef in DefDatabase.AllDefs) { + // 根据您的指示,我们不再处理时间类型的记录,以避免警告 + if (recordDef.type == RecordType.Time) + { + continue; + } float sourceValue = soulSource.records.GetValue(recordDef); - // For Time records, we must set them directly to avoid warnings. - // The AddTo(delta) trick works for all types and is the standard way to "set" a value. bodyTarget.records.AddTo(recordDef, sourceValue - bodyTarget.records.GetValue(recordDef)); } } @@ -81,7 +84,11 @@ namespace ArachnaeSwarm bodyTarget.workSettings.EnableAndInitialize(); foreach (WorkTypeDef workDef in DefDatabase.AllDefs) { - bodyTarget.workSettings.SetPriority(workDef, soulSource.workSettings.GetPriority(workDef)); + // 在设置优先级之前,检查目标Pawn是否禁用了该工作类型 + if (!bodyTarget.WorkTypeIsDisabled(workDef)) + { + bodyTarget.workSettings.SetPriority(workDef, soulSource.workSettings.GetPriority(workDef)); + } } }