diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll
index 7b2e5af3..a014f489 100644
Binary files a/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml
index 0c82c6b5..f8f98d6a 100644
--- a/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml
+++ b/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml
@@ -55,6 +55,23 @@
Mote_HellsphereCannon_Charge
+
+
+
+
+ 1
+
+ 1
+
+
None
diff --git a/Source/WulaFallenEmpire/CompPsychicScaling.cs b/Source/WulaFallenEmpire/CompPsychicScaling.cs
new file mode 100644
index 00000000..e4d2a045
--- /dev/null
+++ b/Source/WulaFallenEmpire/CompPsychicScaling.cs
@@ -0,0 +1,31 @@
+using RimWorld;
+using Verse;
+
+namespace WulaFallenEmpire
+{
+ ///
+ /// 这个组件的XML属性定义。允许在XML中配置加成系数。
+ ///
+ public class CompProperties_PsychicScaling : CompProperties
+ {
+ // 每点心灵敏感度(超出100%的部分)提供的伤害【增伤】乘数。
+ public float damageMultiplierPerSensitivityPoint = 0.25f;
+
+ // 每点心灵敏感度(低于100%的部分)提供的伤害【减伤】乘数。
+ // 例如,系数为1时,50%敏感度将造成 1 - (1 - 0.5) * 1 = 0.5倍伤害。
+ public float damageReductionMultiplierPerSensitivityPoint = 1f;
+
+ public CompProperties_PsychicScaling()
+ {
+ compClass = typeof(CompPsychicScaling);
+ }
+ }
+
+ ///
+ /// 附加到武器上的实际组件。它本身只是一个标记,真正的逻辑在Harmony Patch中。
+ ///
+ public class CompPsychicScaling : ThingComp
+ {
+ public CompProperties_PsychicScaling Props => (CompProperties_PsychicScaling)props;
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/HarmonyPatches/HealthTracker_PreApplyDamage_Patch.cs b/Source/WulaFallenEmpire/HarmonyPatches/HealthTracker_PreApplyDamage_Patch.cs
new file mode 100644
index 00000000..47229321
--- /dev/null
+++ b/Source/WulaFallenEmpire/HarmonyPatches/HealthTracker_PreApplyDamage_Patch.cs
@@ -0,0 +1,69 @@
+using HarmonyLib;
+using RimWorld;
+using Verse;
+
+namespace WulaFallenEmpire.HarmonyPatches
+{
+ [HarmonyPatch(typeof(Pawn_HealthTracker), "PreApplyDamage")]
+ public static class HealthTracker_PreApplyDamage_Patch
+ {
+ ///
+ /// 在伤害应用到Pawn之前执行的补丁。
+ ///
+ /// 伤害信息,可以被修改。
+ /// 输出参数,如果伤害被完全吸收则为true。
+ public static void Prefix(ref DamageInfo dinfo, out bool absorbed)
+ {
+ // 必须为out参数赋默认值
+ absorbed = false;
+
+ // 检查伤害来源是否是一个Pawn
+ Pawn instigatorPawn = dinfo.Instigator as Pawn;
+ if (instigatorPawn == null)
+ {
+ return;
+ }
+
+ // 检查这个Pawn是否装备了武器
+ if (instigatorPawn.equipment?.Primary == null)
+ {
+ return;
+ }
+
+ // 检查武器上是否有我们的心灵增幅组件
+ var psychicComp = instigatorPawn.equipment.Primary.GetComp();
+ if (psychicComp == null)
+ {
+ return;
+ }
+
+ // 获取心灵敏感度属性值
+ float psychicSensitivity = instigatorPawn.GetStatValue(StatDefOf.PsychicSensitivity);
+
+ // 根据心灵敏感度是否大于100%,使用不同的计算逻辑
+ float damageMultiplier;
+ if (psychicSensitivity > 1f)
+ {
+ // 增伤:伤害会根据XML中的增伤系数获得额外加成
+ damageMultiplier = 1 + ((psychicSensitivity - 1) * psychicComp.Props.damageMultiplierPerSensitivityPoint);
+ }
+ else if (psychicSensitivity < 1f)
+ {
+ // 减伤:伤害会根据XML中的减伤系数降低
+ damageMultiplier = 1 - ((1 - psychicSensitivity) * psychicComp.Props.damageReductionMultiplierPerSensitivityPoint);
+ }
+ else
+ {
+ // 敏感度正好为100%,伤害不变
+ damageMultiplier = 1f;
+ }
+
+ // 获取当前伤害值并应用乘数
+ float originalAmount = dinfo.Amount;
+ float newAmount = originalAmount * damageMultiplier;
+
+ // 更新伤害信息中的伤害值
+ dinfo.SetAmount(newAmount);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index 1a6de663..8dea8b0f 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -119,6 +119,8 @@
+
+