Files
WulaFallenEmpireRW/Source/WulaFallenEmpire/MechanitorPatch.cs

44 lines
1.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using RimWorld;
using Verse;
using HarmonyLib; // 引入Harmony库
// 定义一个新的HediffComp用于标记可以赋予机械师能力的Hediff
public class HediffComp_MakesMechanitor : HediffComp
{
// 这个组件本身不需要任何特殊逻辑,它的存在就是标记
}
// Harmony Patch类用于修改MechanitorUtility.ShouldBeMechanitor方法
[HarmonyPatch(typeof(MechanitorUtility), "ShouldBeMechanitor")]
public static class MechanitorShouldBeMechanitorPatch
{
// Postfix方法将在原始方法执行后运行
// originalResult 是原始方法的返回值
// pawn 是原始方法的参数
public static void Postfix(Pawn pawn, ref bool __result)
{
// 如果原始方法已经返回true则无需进一步检查
if (__result)
{
return;
}
// 检查Biotech DLC是否激活且Pawn属于玩家安全派系
if (ModsConfig.BiotechActive && pawn.Faction.IsPlayerSafe())
{
// 遍历Pawn的所有Hediff检查是否存在HediffComp_MakesMechanitor组件
foreach (Hediff hediff in pawn.health.hediffSet.hediffs)
{
if (hediff.TryGetComp<HediffComp_MakesMechanitor>() != null)
{
__result = true; // 如果找到则将结果设置为true
return;
}
}
}
}
}