暂存
This commit is contained in:
Binary file not shown.
@@ -1,112 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<Defs>
|
<Defs>
|
||||||
|
|
||||||
<!-- 首先是冷冻效果的定义 -->
|
|
||||||
<HediffDef>
|
|
||||||
<defName>ARA_Hediff_Frozen</defName>
|
|
||||||
<label>冷冻中</label>
|
|
||||||
<description>这个身体部位正在被冷冻。移动会因此减慢。如果该部位被完全冷冻,它将在下一次受到冲击时碎裂。</description>
|
|
||||||
<hediffClass>ArachnaeSwarm.Hediff_Frozen</hediffClass>
|
|
||||||
<isBad>true</isBad>
|
|
||||||
<comps>
|
|
||||||
<li Class="HediffCompProperties_SeverityPerDay">
|
|
||||||
<severityPerDay>-6</severityPerDay>
|
|
||||||
</li>
|
|
||||||
<li Class="ArachnaeSwarm.HediffCompProperties_GlobalFreeze">
|
|
||||||
<stunThreshold>0.3</stunThreshold> <!-- 全身30%的健康值被转化为冷冻值时,目标将被眩晕 -->
|
|
||||||
</li>
|
|
||||||
<li Class="HediffCompProperties_DisappearsOnDeath"/>
|
|
||||||
</comps>
|
|
||||||
<injuryProps>
|
|
||||||
<painPerSeverity>0</painPerSeverity>
|
|
||||||
<canMerge>true</canMerge>
|
|
||||||
<destroyedLabel>已碎裂</destroyedLabel>
|
|
||||||
</injuryProps>
|
|
||||||
<stages>
|
|
||||||
<li>
|
|
||||||
<label>轻微</label>
|
|
||||||
<becomeVisible>true</becomeVisible>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<label>轻微</label>
|
|
||||||
<minSeverity>0.2</minSeverity>
|
|
||||||
<statOffsets>
|
|
||||||
<ComfyTemperatureMin>40</ComfyTemperatureMin>
|
|
||||||
</statOffsets>
|
|
||||||
<capMods>
|
|
||||||
</capMods>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<label>中等</label>
|
|
||||||
<minSeverity>0.35</minSeverity>
|
|
||||||
<statOffsets>
|
|
||||||
<ComfyTemperatureMin>80</ComfyTemperatureMin>
|
|
||||||
</statOffsets>
|
|
||||||
<capMods>
|
|
||||||
<li>
|
|
||||||
<capacity>Moving</capacity>
|
|
||||||
<offset>-0.1</offset>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<capacity>Manipulation</capacity>
|
|
||||||
<offset>-0.2</offset>
|
|
||||||
</li>
|
|
||||||
</capMods>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<label>严重</label>
|
|
||||||
<minSeverity>0.5</minSeverity>
|
|
||||||
<statOffsets>
|
|
||||||
<ComfyTemperatureMin>120</ComfyTemperatureMin>
|
|
||||||
</statOffsets>
|
|
||||||
<capMods>
|
|
||||||
<li>
|
|
||||||
<capacity>Moving</capacity>
|
|
||||||
<offset>-0.3</offset>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<capacity>Manipulation</capacity>
|
|
||||||
<offset>-0.4</offset>
|
|
||||||
</li>
|
|
||||||
</capMods>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<label>极度</label>
|
|
||||||
<minSeverity>0.65</minSeverity>
|
|
||||||
<statOffsets>
|
|
||||||
<ComfyTemperatureMin>160</ComfyTemperatureMin>
|
|
||||||
</statOffsets>
|
|
||||||
<capMods>
|
|
||||||
<li>
|
|
||||||
<capacity>Moving</capacity>
|
|
||||||
<offset>-0.5</offset>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<capacity>Manipulation</capacity>
|
|
||||||
<offset>-0.6</offset>
|
|
||||||
</li>
|
|
||||||
</capMods>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<label>完全</label>
|
|
||||||
<minSeverity>0.85</minSeverity>
|
|
||||||
<statOffsets>
|
|
||||||
<ComfyTemperatureMin>200</ComfyTemperatureMin>
|
|
||||||
</statOffsets>
|
|
||||||
<capMods>
|
|
||||||
<li>
|
|
||||||
<capacity>Moving</capacity>
|
|
||||||
<setMax>0.2</setMax>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<capacity>Manipulation</capacity>
|
|
||||||
<setMax>0.2</setMax>
|
|
||||||
</li>
|
|
||||||
</capMods>
|
|
||||||
</li>
|
|
||||||
</stages>
|
|
||||||
</HediffDef>
|
|
||||||
|
|
||||||
<HediffDef>
|
<HediffDef>
|
||||||
<defName>ARA_Hediff_FrostCoverd_after</defName>
|
<defName>ARA_Hediff_FrostCoverd_after</defName>
|
||||||
<label>霜冻覆盖</label>
|
<label>霜冻覆盖</label>
|
||||||
@@ -230,14 +124,13 @@
|
|||||||
</HediffDef>
|
</HediffDef>
|
||||||
|
|
||||||
<!-- 然后是冷冻伤害本身的定义 -->
|
<!-- 然后是冷冻伤害本身的定义 -->
|
||||||
<DamageDef>
|
<DamageDef Name="ARA_Damage_Freeze">
|
||||||
<defName>ARA_Damage_Freeze</defName>
|
<defName>ARA_Damage_Freeze</defName>
|
||||||
<label>冷冻</label>
|
<label>冷冻</label>
|
||||||
<workerClass>DamageWorker_AddInjury</workerClass> <!-- 使用原版的伤害工人 -->
|
<workerClass>DamageWorker_Frostbite</workerClass> <!-- 使用原版的伤害工人 -->
|
||||||
<externalViolence>true</externalViolence>
|
<externalViolence>true</externalViolence>
|
||||||
<deathMessage>{0}的身体在极寒中化为了冰雕,随后碎裂四散。</deathMessage>
|
<deathMessage>{0}的身体在极寒中化为了冰雕,随后碎裂四散。</deathMessage>
|
||||||
<hediff>ARA_Hediff_Frozen</hediff> <!-- 核心!将伤害转化为这个Hediff的严重性 -->
|
<hediff>Frostbite</hediff> <!-- 核心!将伤害转化为这个Hediff的严重性 -->
|
||||||
<hediffSolid>ARA_Hediff_Frozen</hediffSolid> <!-- 对非血肉生物也使用这个Hediff -->
|
|
||||||
<harmsHealth>false</harmsHealth> <!-- 核心!不造成常规生命值伤害 -->
|
<harmsHealth>false</harmsHealth> <!-- 核心!不造成常规生命值伤害 -->
|
||||||
<armorCategory>Heat</armorCategory> <!-- 可以被抗热/冷的护甲减免 -->
|
<armorCategory>Heat</armorCategory> <!-- 可以被抗热/冷的护甲减免 -->
|
||||||
<overkillPctToDestroyPart>0</overkillPctToDestroyPart> <!-- 伤害足够时直接摧毁(我们的C#代码会处理这个) -->
|
<overkillPctToDestroyPart>0</overkillPctToDestroyPart> <!-- 伤害足够时直接摧毁(我们的C#代码会处理这个) -->
|
||||||
@@ -245,29 +138,21 @@
|
|||||||
<defaultArmorPenetration>0</defaultArmorPenetration>
|
<defaultArmorPenetration>0</defaultArmorPenetration>
|
||||||
<buildingDamageFactorImpassable>0</buildingDamageFactorImpassable>
|
<buildingDamageFactorImpassable>0</buildingDamageFactorImpassable>
|
||||||
<buildingDamageFactorPassable>0</buildingDamageFactorPassable>
|
<buildingDamageFactorPassable>0</buildingDamageFactorPassable>
|
||||||
|
<explosionHeatEnergyPerCell>-15</explosionHeatEnergyPerCell>
|
||||||
|
<explosionCellFleck>BlastFlame</explosionCellFleck>
|
||||||
|
<explosionColorCenter>(0.52, 0.7, 0.95,0.5)</explosionColorCenter>
|
||||||
|
<explosionColorEdge>(0.52, 1, 0.95,0.5)</explosionColorEdge>
|
||||||
|
<soundExplosion>Explosion_Flame</soundExplosion>
|
||||||
</DamageDef>
|
</DamageDef>
|
||||||
|
|
||||||
<!-- 然后是冷冻伤害本身的定义 -->
|
<!-- 然后是冷冻伤害本身的定义 -->
|
||||||
<DamageDef>
|
<DamageDef ParentName="ARA_Damage_Freeze">
|
||||||
<defName>ARA_Damage_Freeze_ex</defName>
|
<defName>ARA_Damage_Freeze_ex</defName>
|
||||||
<label>冷冻</label>
|
|
||||||
<workerClass>DamageWorker_AddInjury</workerClass> <!-- 使用原版的伤害工人 -->
|
|
||||||
<externalViolence>true</externalViolence>
|
|
||||||
<deathMessage>{0}的身体在极寒中化为了冰雕,随后碎裂四散。</deathMessage>
|
|
||||||
<hediff>ARA_Hediff_Frozen</hediff> <!-- 核心!将伤害转化为这个Hediff的严重性 -->
|
|
||||||
<hediffSolid>ARA_Hediff_Frozen</hediffSolid> <!-- 对非血肉生物也使用这个Hediff -->
|
|
||||||
<harmsHealth>false</harmsHealth> <!-- 核心!不造成常规生命值伤害 -->
|
|
||||||
<armorCategory>Heat</armorCategory> <!-- 可以被抗热/冷的护甲减免 -->
|
|
||||||
<overkillPctToDestroyPart>0</overkillPctToDestroyPart> <!-- 伤害足够时直接摧毁(我们的C#代码会处理这个) -->
|
|
||||||
<defaultDamage>3</defaultDamage>
|
|
||||||
<defaultArmorPenetration>0</defaultArmorPenetration>
|
|
||||||
<buildingDamageFactorImpassable>0</buildingDamageFactorImpassable>
|
|
||||||
<buildingDamageFactorPassable>0</buildingDamageFactorPassable>
|
|
||||||
<additionalHediffs>
|
<additionalHediffs>
|
||||||
<li>
|
<li>
|
||||||
<hediff>ARA_CryoShock</hediff>
|
<hediff>ARA_CryoShock</hediff>
|
||||||
<severityPerDamageDealt>0.01</severityPerDamageDealt>
|
<severityPerDamageDealt>0.01</severityPerDamageDealt>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<hediff>ARA_Hediff_FrostCoverd_after</hediff>
|
<hediff>ARA_Hediff_FrostCoverd_after</hediff>
|
||||||
<severityPerDamageDealt>0.01</severityPerDamageDealt>
|
<severityPerDamageDealt>0.01</severityPerDamageDealt>
|
||||||
|
|||||||
@@ -108,7 +108,6 @@
|
|||||||
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
<postExplosionSpawnChance>1</postExplosionSpawnChance>
|
||||||
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount>
|
<postExplosionSpawnThingCount>1</postExplosionSpawnThingCount>
|
||||||
<soundExplode>Explosion_Stun</soundExplode>
|
<soundExplode>Explosion_Stun</soundExplode>
|
||||||
<doExplosionVFX>false</doExplosionVFX>
|
|
||||||
</projectile>
|
</projectile>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="CompProperties_ProjectileEffecter">
|
<li Class="CompProperties_ProjectileEffecter">
|
||||||
|
|||||||
@@ -6,9 +6,6 @@ namespace ArachnaeSwarm
|
|||||||
[DefOf]
|
[DefOf]
|
||||||
public static class ARA_HediffDefOf
|
public static class ARA_HediffDefOf
|
||||||
{
|
{
|
||||||
public static HediffDef ARA_Hediff_Frozen;
|
|
||||||
public static HediffDef ARA_Hediff_FrostCoverd_after;
|
|
||||||
public static HediffDef ARA_CryoShock;
|
|
||||||
public static HediffDef ARA_HiveMindMaster;
|
public static HediffDef ARA_HiveMindMaster;
|
||||||
public static HediffDef ARA_HiveMindDrone;
|
public static HediffDef ARA_HiveMindDrone;
|
||||||
public static HediffDef ARA_HiveMindWorker; // 如果存在这个Def
|
public static HediffDef ARA_HiveMindWorker; // 如果存在这个Def
|
||||||
|
|||||||
@@ -193,8 +193,6 @@
|
|||||||
<Compile Include="Hediffs\MoharHediffs\Tools.cs" />
|
<Compile Include="Hediffs\MoharHediffs\Tools.cs" />
|
||||||
<Compile Include="Hediffs\ProphecyGearEffect.cs" />
|
<Compile Include="Hediffs\ProphecyGearEffect.cs" />
|
||||||
<Compile Include="HediffComp_TimedExplosion.cs" />
|
<Compile Include="HediffComp_TimedExplosion.cs" />
|
||||||
<Compile Include="Hediff_Frozen.cs" />
|
|
||||||
<Compile Include="HediffComp_GlobalFreeze.cs" />
|
|
||||||
<Compile Include="Hediffs\WULA_HediffDamgeShield\DRMDamageShield.cs" />
|
<Compile Include="Hediffs\WULA_HediffDamgeShield\DRMDamageShield.cs" />
|
||||||
<Compile Include="Hediffs\WULA_HediffDamgeShield\Hediff_DamageShield.cs" />
|
<Compile Include="Hediffs\WULA_HediffDamgeShield\Hediff_DamageShield.cs" />
|
||||||
<Compile Include="Thing_Comps\ARA_ThingComp_GuardianPsyField\Hediff_DynamicInterceptor.cs" />
|
<Compile Include="Thing_Comps\ARA_ThingComp_GuardianPsyField\Hediff_DynamicInterceptor.cs" />
|
||||||
@@ -275,7 +273,6 @@
|
|||||||
<Compile Include="Buildings\Building_CatastropheMissileSilo\Building_CatastropheMissileSilo.cs" />
|
<Compile Include="Buildings\Building_CatastropheMissileSilo\Building_CatastropheMissileSilo.cs" />
|
||||||
<Compile Include="Buildings\Building_CatastropheMissileSilo\WorldObject_CatastropheMissile.cs" />
|
<Compile Include="Buildings\Building_CatastropheMissileSilo\WorldObject_CatastropheMissile.cs" />
|
||||||
<Compile Include="HarmonyPatches\Patch_ForceTargetable.cs" />
|
<Compile Include="HarmonyPatches\Patch_ForceTargetable.cs" />
|
||||||
<Compile Include="HarmonyPatch_Pawn_HealthTracker_PreApplyDamage.cs" />
|
|
||||||
<Compile Include="Building_Comps\CompForceTargetable.cs" />
|
<Compile Include="Building_Comps\CompForceTargetable.cs" />
|
||||||
<Compile Include="PowerArmor\ARA_PowerArmor.cs" />
|
<Compile Include="PowerArmor\ARA_PowerArmor.cs" />
|
||||||
<Compile Include="PowerArmor\CompPowerArmorStation.cs" />
|
<Compile Include="PowerArmor\CompPowerArmorStation.cs" />
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
using HarmonyLib;
|
|
||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
using System.Linq;
|
|
||||||
using UnityEngine; // For FleckMaker
|
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
|
||||||
{
|
|
||||||
// Harmony 入口点,将在 Mod 加载时自动初始化
|
|
||||||
[StaticConstructorOnStartup]
|
|
||||||
public static class HarmonyPatches
|
|
||||||
{
|
|
||||||
static HarmonyPatches()
|
|
||||||
{
|
|
||||||
var harmony = new Harmony("ArachnaeSwarm.FreezeMod");
|
|
||||||
harmony.PatchAll();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 补丁目标:Pawn_HealthTracker 类的 PreApplyDamage 方法
|
|
||||||
[HarmonyPatch(typeof(Pawn_HealthTracker), "PreApplyDamage")]
|
|
||||||
public static class HarmonyPatch_Pawn_HealthTracker_PreApplyDamage
|
|
||||||
{
|
|
||||||
// Postfix 补丁:在原方法执行后运行
|
|
||||||
// __instance 是 Pawn_HealthTracker 的实例
|
|
||||||
// dinfo 是 DamageInfo 的引用
|
|
||||||
// absorbed 是 out bool 参数的引用
|
|
||||||
public static void Postfix(Pawn_HealthTracker __instance, ref DamageInfo dinfo, ref bool absorbed)
|
|
||||||
{
|
|
||||||
// 如果伤害已经被吸收,或者没有击中任何部位,则不处理
|
|
||||||
if (absorbed || dinfo.HitPart == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Pawn pawn = (Pawn)AccessTools.Field(typeof(Pawn_HealthTracker), "pawn").GetValue(__instance);
|
|
||||||
if (pawn == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 复制一份 dinfo,避免 ref 参数在 lambda 中使用的问题
|
|
||||||
DamageInfo currentDinfo = dinfo;
|
|
||||||
|
|
||||||
// 获取被击中部位上的 Hediff_Frozen
|
|
||||||
Hediff_Frozen frozenHediff = pawn.health.hediffSet.hediffs.OfType<Hediff_Frozen>()
|
|
||||||
.FirstOrDefault(h => h.Part == currentDinfo.HitPart);
|
|
||||||
|
|
||||||
// 如果该部位存在 Hediff_Frozen 并且已经完全冷冻
|
|
||||||
if (frozenHediff != null && frozenHediff.Severity >= currentDinfo.HitPart.def.GetMaxHealth(pawn))
|
|
||||||
{
|
|
||||||
// 检查伤害是否是我们的冷冻伤害(防止循环触发)
|
|
||||||
if (currentDinfo.Def.hediff == ARA_HediffDefOf.ARA_Hediff_Frozen)
|
|
||||||
{
|
|
||||||
return; // 忽略我们自己的冷冻伤害
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查伤害是否是会造成生命值损伤的普通伤害
|
|
||||||
if (currentDinfo.Def.harmsHealth && currentDinfo.Amount > 0.01f)
|
|
||||||
{
|
|
||||||
// 施加一个巨大的、足以摧毁该部位的伤害
|
|
||||||
DamageInfo fatalDamage = new DamageInfo(DamageDefOf.Crush, 99999f, 999f, -1f, currentDinfo.Instigator, currentDinfo.HitPart);
|
|
||||||
pawn.TakeDamage(fatalDamage);
|
|
||||||
|
|
||||||
// 播放一个破碎的特效
|
|
||||||
FleckMaker.Static(pawn.Position, pawn.Map, FleckDefOf.ExplosionFlash, 2f);
|
|
||||||
|
|
||||||
absorbed = true; // 标记原伤害已被处理,阻止其继续执行
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
|
||||||
{
|
|
||||||
public class HediffComp_GlobalFreeze : HediffComp
|
|
||||||
{
|
|
||||||
private const int CheckInterval = 60; // 每60 ticks检查一次 (1秒)
|
|
||||||
private bool isStunnedByFreeze = false; // 用于追踪是否是由我们这个组件造成的眩晕
|
|
||||||
|
|
||||||
public HediffCompProperties_GlobalFreeze Props => (HediffCompProperties_GlobalFreeze)props;
|
|
||||||
|
|
||||||
public override void CompPostTick(ref float severityAdjustment)
|
|
||||||
{
|
|
||||||
base.CompPostTick(ref severityAdjustment);
|
|
||||||
|
|
||||||
// 每隔一段时间才执行一次,避免性能问题
|
|
||||||
if (Pawn.IsHashIntervalTick(CheckInterval))
|
|
||||||
{
|
|
||||||
// 计算全身所有Hediff_Frozen的总严重性
|
|
||||||
float totalFreezeSeverity = Pawn.health.hediffSet.hediffs
|
|
||||||
.OfType<Hediff_Frozen>()
|
|
||||||
.Sum(h => h.Severity);
|
|
||||||
|
|
||||||
// 获取Pawn的总生命值作为参考
|
|
||||||
float totalBodyHealth = Pawn.health.summaryHealth.SummaryHealthPercent * Pawn.MaxHitPoints;
|
|
||||||
|
|
||||||
// 计算冷冻阈值
|
|
||||||
float stunThreshold = totalBodyHealth * Props.stunThreshold;
|
|
||||||
|
|
||||||
// 如果总冷冻值超过阈值
|
|
||||||
if (totalFreezeSeverity >= stunThreshold)
|
|
||||||
{
|
|
||||||
// 如果Pawn当前没有被眩晕,则施加一个“永久”的眩晕
|
|
||||||
// StunFor会取最大值,所以我们给一个足够长的时间(5秒),它会在下一轮检查时被刷新
|
|
||||||
if (!Pawn.stances.stunner.Stunned)
|
|
||||||
{
|
|
||||||
Pawn.stances.stunner.StunFor(300, Pawn, false, true);
|
|
||||||
isStunnedByFreeze = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 如果总冷冻值低于阈值,并且之前是由我们造成的眩晕
|
|
||||||
else if (isStunnedByFreeze)
|
|
||||||
{
|
|
||||||
// 立即停止眩晕
|
|
||||||
// 我们通过将stunTicksLeft设置为0来直接唤醒它
|
|
||||||
Pawn.stances.stunner.StunFor(0, Pawn, false, false);
|
|
||||||
isStunnedByFreeze = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存和加载我们的状态,确保读档后逻辑正确
|
|
||||||
public override void CompExposeData()
|
|
||||||
{
|
|
||||||
base.CompExposeData();
|
|
||||||
Scribe_Values.Look(ref isStunnedByFreeze, "isStunnedByFreeze", false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class HediffCompProperties_GlobalFreeze : HediffCompProperties
|
|
||||||
{
|
|
||||||
// XML中可配置的阈值,默认为全身健康的30%
|
|
||||||
public float stunThreshold = 0.3f;
|
|
||||||
|
|
||||||
public HediffCompProperties_GlobalFreeze()
|
|
||||||
{
|
|
||||||
compClass = typeof(HediffComp_GlobalFreeze);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
using RimWorld;
|
|
||||||
using Verse;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
|
||||||
{
|
|
||||||
public class Hediff_Frozen : Hediff_Injury
|
|
||||||
{
|
|
||||||
// 我们需要覆盖这个方法来改变在健康面板上显示的标签
|
|
||||||
public override string LabelInBrackets
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
// 如果严重性达到了部位的满生命值,就显示“完全冷冻”
|
|
||||||
if (Severity >= Part.def.GetMaxHealth(pawn))
|
|
||||||
{
|
|
||||||
return "Fully Frozen";
|
|
||||||
}
|
|
||||||
return base.LabelInBrackets;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当部位的疼痛感,可以根据严重性调整
|
|
||||||
public override float PainOffset
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
// 冷冻不造成额外疼痛
|
|
||||||
return 0f;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当一个部位的伤害被治疗(在这里就是冷冻值减少)时调用
|
|
||||||
public override void Heal(float amount)
|
|
||||||
{
|
|
||||||
// 减少严重性,但不让它低于0
|
|
||||||
Severity -= amount;
|
|
||||||
if (Severity < 0)
|
|
||||||
{
|
|
||||||
Severity = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 伤害拦截逻辑将通过 Harmony 补丁实现,不在 Hediff 内部处理
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user