From 00d43cfba388a87e4df8b455c129edaa9b0c8f2e Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Thu, 4 Sep 2025 22:21:01 +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/ArachnaeSwarm.dll | Bin 70656 -> 71168 bytes .../Possession/CompAbilityEffect_Possess.cs | 14 +++++++- .../Possession/Hediff_Possession.cs | 30 +++++++----------- .../Possession/PawnDataUtility.cs | 7 ++-- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 58a9ee56b1c3a225f453243a3453bfdec2f16cc1..b9c9af055e777c78d1877d90420b59cd85b3b75d 100644 GIT binary patch delta 16773 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 delta 16449 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 diff --git a/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs b/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs index f9f7f4e..31cab75 100644 --- a/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs +++ b/Source/ArachnaeSwarm/Possession/CompAbilityEffect_Possess.cs @@ -24,9 +24,21 @@ namespace ArachnaeSwarm // return; // } + Log.Message("[夺舍] Apply方法开始执行。施法者: " + caster.LabelShort + ", 目标: " + targetPawn.LabelShort); + + Log.Message("[夺舍] 步骤1: 创建Hediff实例..."); Hediff_Possession hediff = (Hediff_Possession)HediffMaker.MakeHediff(HediffDef.Named("ARA_Possession"), targetPawn); - hediff.SetCaster(caster); + 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身上..."); targetPawn.health.AddHediff(hediff); } } diff --git a/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs b/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs index 8f8c5b9..a596151 100644 --- a/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs +++ b/Source/ArachnaeSwarm/Possession/Hediff_Possession.cs @@ -28,27 +28,19 @@ namespace ArachnaeSwarm return innerContainer; } - public override void PostAdd(DamageInfo? dinfo) + // PostAdd在游戏加载时也会被调用,因此不适合放置一次性的夺舍逻辑。 + // 我们创建一个新的公共方法,由CompAbilityEffect在正确的时机调用。 + public void PostPossessionApply(Pawn caster, Pawn target) { - base.PostAdd(dinfo); - - if (this.originalCaster == null) - { - Log.Error("Hediff_Possession was added without an original caster."); - return; - } - - // 正确的做法:从原始施法者身上“分裂”出一个副本存入容器 - // 这确保了容器里的是一个独立的对象,而不是一个会被销毁的引用 - this.innerContainer.TryAdd(this.originalCaster.SplitOff(1), true); - PawnDataUtility.TransferSoul(this.originalCaster, this.pawn); - - if (!this.originalCaster.Destroyed) - { - this.originalCaster.Destroy(DestroyMode.Vanish); - } + Log.Message("[夺舍] Hediff.PostPossessionApply 开始执行,施法者: " + caster.LabelShort + ", 目标: " + target.LabelShort); - Log.Message($"{this.pawn.LabelShort} has been possessed by {StoredCasterPawn.LabelShort}!"); + // 将施法者的引用保存下来,用于将来的重生逻辑 + this.originalCaster = caster; + + Log.Message("[夺舍] 步骤5: 调用 TransferSoul 将灵魂从 " + caster.LabelShort + " 转移到 " + target.LabelShort); + PawnDataUtility.TransferSoul(caster, target); + + Log.Message($"[夺舍] {target.LabelShort} 已被 {StoredCasterPawn.LabelShort} 夺舍成功!"); } public override void Notify_PawnDied(DamageInfo? dinfo, Hediff culprit = null) diff --git a/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs b/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs index 39f2318..a202dc8 100644 --- a/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs +++ b/Source/ArachnaeSwarm/Possession/PawnDataUtility.cs @@ -56,11 +56,10 @@ namespace ArachnaeSwarm { foreach (RecordDef recordDef in DefDatabase.AllDefs) { - // Correct way: Get value from source and add the difference to target. - // This effectively sets the value. float sourceValue = soulSource.records.GetValue(recordDef); - float targetValue = bodyTarget.records.GetValue(recordDef); - bodyTarget.records.AddTo(recordDef, sourceValue - targetValue); + // 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)); } }