暂存拟线虫药物
This commit is contained in:
Binary file not shown.
@@ -90,11 +90,18 @@
|
|||||||
<showRemainingTime>true</showRemainingTime>
|
<showRemainingTime>true</showRemainingTime>
|
||||||
</li>
|
</li>
|
||||||
<li Class="ArachnaeSwarm.HediffCompProperties_NecroticTransformation">
|
<li Class="ArachnaeSwarm.HediffCompProperties_NecroticTransformation">
|
||||||
<!-- 3. 在这里指定你希望转化成的MutantDef的defName -->
|
|
||||||
<!-- 例如: Shambler, Ghoul, 或者您自己定义的其他变异体 -->
|
|
||||||
<mutantDef>ARA_MimicNematodeShambler</mutantDef>
|
<mutantDef>ARA_MimicNematodeShambler</mutantDef>
|
||||||
<triggerSeverity>0.7</triggerSeverity>
|
<triggerSeverity>0.7</triggerSeverity>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<!-- ==================== 新增的共生组件 ==================== -->
|
||||||
|
<li Class="ArachnaeSwarm.HediffCompProperties_Symbiosis">
|
||||||
|
<!-- "钥匙": 只有当Pawn拥有这个Hediff时,共生效果才会激活 -->
|
||||||
|
<requiredHediff>ARA_SymbioticStabilizer</requiredHediff>
|
||||||
|
|
||||||
|
<!-- "新的上限": 在共生状态下,此Hediff的严重性最高只能达到0.8 -->
|
||||||
|
<newMaxSeverity>0.8</newMaxSeverity>
|
||||||
|
</li>
|
||||||
<li Class="HediffCompProperties_DisappearsOnDeath" />
|
<li Class="HediffCompProperties_DisappearsOnDeath" />
|
||||||
</comps>
|
</comps>
|
||||||
|
|
||||||
|
|||||||
169
1.6/1.6/Defs/Thing_Misc/ARA_Drugs.xml
Normal file
169
1.6/1.6/Defs/Thing_Misc/ARA_Drugs.xml
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<Defs>
|
||||||
|
|
||||||
|
<!-- ==================== 1. 物品定义:阿拉克涅信息素溶剂 ==================== -->
|
||||||
|
|
||||||
|
<ThingDef ParentName="MakeableDrugPillBase">
|
||||||
|
<defName>ARA_PheromoneSolvent</defName>
|
||||||
|
<label>阿拉克涅信息素溶剂</label>
|
||||||
|
<description>一种合成的化学制剂,能够模拟阿拉克涅虫群内部用于区分敌我的信息素。定期注射可以欺骗宿主体内的寄生虫,使其进入休眠的共生状态,从而抑制其致命的增殖行为。</description>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<HediffDef>ARA_SymbioticStabilizer</HediffDef>
|
||||||
|
<HediffDef>ARA_MimicNematode</HediffDef>
|
||||||
|
</descriptionHyperlinks>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/Drug/WakeUp</texPath> <!-- 暂时使用WakeUp的贴图,可后续替换 -->
|
||||||
|
<graphicClass>Graphic_StackCount</graphicClass>
|
||||||
|
<color>(1.0, 0.647, 0.0, 0.5)</color> <!-- 橙色 -->
|
||||||
|
</graphicData>
|
||||||
|
<rotatable>false</rotatable>
|
||||||
|
<statBases>
|
||||||
|
<WorkToMake>1000</WorkToMake>
|
||||||
|
<MarketValue>50</MarketValue>
|
||||||
|
<Mass>0.01</Mass>
|
||||||
|
</statBases>
|
||||||
|
<techLevel>Industrial</techLevel>
|
||||||
|
<ingestible>
|
||||||
|
<drugCategory>Medical</drugCategory> <!-- 定义为医疗品,而非娱乐品 -->
|
||||||
|
<outcomeDoers>
|
||||||
|
<li Class="IngestionOutcomeDoer_GiveHediff">
|
||||||
|
<hediffDef>ARA_SymbioticStabilizer</hediffDef>
|
||||||
|
<severity>1.0</severity> <!-- 每次服用直接将效果补满 -->
|
||||||
|
</li>
|
||||||
|
</outcomeDoers>
|
||||||
|
</ingestible>
|
||||||
|
<recipeMaker>
|
||||||
|
<researchPrerequisite>MedicineProduction</researchPrerequisite> <!-- 假设需要基础制药解锁 -->
|
||||||
|
<recipeUsers>
|
||||||
|
<li>DrugLab</li>
|
||||||
|
</recipeUsers>
|
||||||
|
</recipeMaker>
|
||||||
|
<costList>
|
||||||
|
<Neutroamine>2</Neutroamine>
|
||||||
|
<ARA_InsectJelly>5</ARA_InsectJelly> <!-- 使用虫胶作为特色材料 -->
|
||||||
|
</costList>
|
||||||
|
<comps>
|
||||||
|
<li Class="CompProperties_Drug">
|
||||||
|
<chemical>ARA_Pheromone</chemical>
|
||||||
|
<addictiveness>0.05</addictiveness>
|
||||||
|
<needLevelOffset>1</needLevelOffset>
|
||||||
|
<listOrder>1000</listOrder>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<!-- ==================== 2. Hediff定义:共生稳定器效果 ==================== -->
|
||||||
|
|
||||||
|
<HediffDef>
|
||||||
|
<defName>ARA_SymbioticStabilizer</defName>
|
||||||
|
<label>信息素抑制</label>
|
||||||
|
<labelNoun>一种信息素抑制效果</labelNoun>
|
||||||
|
<description>阿拉克涅信息素溶剂的效果正在生效,它模拟了虫群的共生信号,抑制了体内寄生体的活性。</description>
|
||||||
|
<hediffClass>HediffWithComps</hediffClass>
|
||||||
|
<defaultLabelColor>(0.7, 1.0, 0.7)</defaultLabelColor>
|
||||||
|
<isBad>false</isBad>
|
||||||
|
<comps>
|
||||||
|
<li Class="HediffCompProperties_SeverityPerDay">
|
||||||
|
<severityPerDay>-0.34</severityPerDay> <!-- 严重性每天降低0.34,大约3天从1.0掉到0 -->
|
||||||
|
<showHoursToRecover>true</showHoursToRecover>
|
||||||
|
</li>
|
||||||
|
</comps>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
<!-- ==================== 3. 物品定义:阿拉克涅拟线种虫卵 ==================== -->
|
||||||
|
|
||||||
|
<ThingDef ParentName="MakeableDrugPillBase">
|
||||||
|
<defName>ARA_NematodeEgg</defName>
|
||||||
|
<label>阿拉克涅拟线种虫卵</label>
|
||||||
|
<description>一个经过特殊处理的阿拉克涅拟线种虫卵,可以被直接服用。服用后,虫卵会迅速在宿主体内孵化并释放大量阿拉克涅拟线虫,导致极其严重的感染。</description>
|
||||||
|
<descriptionHyperlinks>
|
||||||
|
<HediffDef>ARA_MimicNematode</HediffDef>
|
||||||
|
</descriptionHyperlinks>
|
||||||
|
<graphicData>
|
||||||
|
<texPath>Things/Item/Drug/Luciferium</texPath>
|
||||||
|
<graphicClass>Graphic_StackCount</graphicClass>
|
||||||
|
<color>(100,50,100)</color> <!-- 深紫色 -->
|
||||||
|
</graphicData>
|
||||||
|
<statBases>
|
||||||
|
<MarketValue>75</MarketValue>
|
||||||
|
<Mass>0.05</Mass>
|
||||||
|
</statBases>
|
||||||
|
<techLevel>Industrial</techLevel>
|
||||||
|
<ingestible>
|
||||||
|
<drugCategory>None</drugCategory> <!-- 修正:这不是药物,不应被药物政策管理 -->
|
||||||
|
<foodType>AnimalProduct</foodType>
|
||||||
|
<outcomeDoers>
|
||||||
|
<li Class="IngestionOutcomeDoer_GiveHediff">
|
||||||
|
<hediffDef>ARA_MimicNematode</hediffDef>
|
||||||
|
<severity>0.5</severity> <!-- 直接给予0.7的严重性 -->
|
||||||
|
</li>
|
||||||
|
</outcomeDoers>
|
||||||
|
</ingestible>
|
||||||
|
<recipeMaker IsNull="True" /> <!-- 明确声明此物品不可制造,以覆盖父类的设置 -->
|
||||||
|
</ThingDef>
|
||||||
|
|
||||||
|
<!-- ==================== 3. 阿拉克涅信息素成瘾机制 ==================== -->
|
||||||
|
|
||||||
|
<ChemicalDef>
|
||||||
|
<defName>ARA_Pheromone</defName>
|
||||||
|
<label>阿拉克涅信息素</label>
|
||||||
|
<addictionHediff>ARA_PheromoneAddiction</addictionHediff>
|
||||||
|
</ChemicalDef>
|
||||||
|
|
||||||
|
<NeedDef ParentName="DrugAddictionNeedBase">
|
||||||
|
<defName>Chemical_ARA_Pheromone</defName>
|
||||||
|
<needClass>Need_Chemical</needClass>
|
||||||
|
<label>信息素依赖</label>
|
||||||
|
<description>由于长期使用阿拉克涅信息素溶剂,此人的身体已经习惯了这种外部信息素的存在。如果中断使用,体内的拟线虫将因为失去抑制而猛烈反扑。</description>
|
||||||
|
<fallPerDay>0.333</fallPerDay>
|
||||||
|
<listPriority>50</listPriority>
|
||||||
|
</NeedDef>
|
||||||
|
|
||||||
|
<HediffDef ParentName="AddictionBase">
|
||||||
|
<defName>ARA_PheromoneAddiction</defName>
|
||||||
|
<label>信息素依赖</label>
|
||||||
|
<description>对阿拉克涅信息素溶剂产生了化学依赖。需要定期使用来维持体内的拟线虫生态平衡,否则会产生严重的戒断反应。</description>
|
||||||
|
<hediffClass>Hediff_Addiction</hediffClass>
|
||||||
|
<chemicalNeed>Chemical_ARA_Pheromone</chemicalNeed>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<!-- 需求满足时,无效果 -->
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>戒断反应</label>
|
||||||
|
<capMods>
|
||||||
|
<li>
|
||||||
|
<capacity>Consciousness</capacity>
|
||||||
|
<offset>-0.1</offset>
|
||||||
|
</li>
|
||||||
|
</capMods>
|
||||||
|
<hediffGivers>
|
||||||
|
<!-- 核心戒断效果:给予一次严重的寄生感染 -->
|
||||||
|
<li Class="ArachnaeSwarm.HediffGiver_RandomWithSeverity">
|
||||||
|
<hediff>ARA_MimicNematode</hediff>
|
||||||
|
<mtbDays>1</mtbDays>
|
||||||
|
<severityRange>0.1~0.2</severityRange> <!-- 使用我们新的严重性范围标签 -->
|
||||||
|
</li>
|
||||||
|
</hediffGivers>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</HediffDef>
|
||||||
|
|
||||||
|
<ThoughtDef>
|
||||||
|
<defName>ARA_PheromoneWithdrawal</defName>
|
||||||
|
<workerClass>ThoughtWorker_Hediff</workerClass>
|
||||||
|
<hediff>ARA_PheromoneAddiction</hediff>
|
||||||
|
<validWhileDespawned>true</validWhileDespawned>
|
||||||
|
<stages>
|
||||||
|
<li>
|
||||||
|
<visible>false</visible>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<label>信息素戒断</label>
|
||||||
|
<description>我感觉很糟糕,体内的某些东西正在变得活跃......我需要信息素溶剂。</description>
|
||||||
|
<baseMoodEffect>-15</baseMoodEffect>
|
||||||
|
</li>
|
||||||
|
</stages>
|
||||||
|
</ThoughtDef>
|
||||||
|
|
||||||
|
</Defs>
|
||||||
@@ -191,6 +191,7 @@
|
|||||||
<Compile Include="ProphecyGearEffect.cs" />
|
<Compile Include="ProphecyGearEffect.cs" />
|
||||||
<Compile Include="Hediff_ConfigurableMutant.cs" />
|
<Compile Include="Hediff_ConfigurableMutant.cs" />
|
||||||
<Compile Include="HediffComp_Symbiosis.cs" />
|
<Compile Include="HediffComp_Symbiosis.cs" />
|
||||||
|
<Compile Include="HediffGiver_RandomWithSeverity.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- 自定义清理任务,删除obj文件夹中的临时文件 -->
|
<!-- 自定义清理任务,删除obj文件夹中的临时文件 -->
|
||||||
|
|||||||
54
Source/ArachnaeSwarm/HediffGiver_RandomWithSeverity.cs
Normal file
54
Source/ArachnaeSwarm/HediffGiver_RandomWithSeverity.cs
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
using Verse;
|
||||||
|
|
||||||
|
namespace ArachnaeSwarm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A custom HediffGiver that is similar to HediffGiver_Random,
|
||||||
|
/// but allows specifying a random severity range for the given hediff.
|
||||||
|
/// </summary>
|
||||||
|
public class HediffGiver_RandomWithSeverity : HediffGiver
|
||||||
|
{
|
||||||
|
// XML configurable fields
|
||||||
|
public float mtbDays;
|
||||||
|
public FloatRange severityRange = new FloatRange(0.01f, 1f);
|
||||||
|
|
||||||
|
public override void OnIntervalPassed(Pawn pawn, Hediff cause)
|
||||||
|
{
|
||||||
|
// Calculate the chance based on Mean Time Between (MTB) days and pawn-specific factors
|
||||||
|
float mtb = this.mtbDays;
|
||||||
|
float chanceFactor = ChanceFactor(pawn);
|
||||||
|
if (chanceFactor != 0f && Rand.MTBEventOccurs(mtb / chanceFactor, 60000f, 60f))
|
||||||
|
{
|
||||||
|
// Try to apply the hediff with our custom logic
|
||||||
|
if (TryApplyWithCustomSeverity(pawn))
|
||||||
|
{
|
||||||
|
// If successful, send a letter to the player
|
||||||
|
SendLetter(pawn, cause);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Applies the hediff and then sets its severity to a random value within the specified range.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pawn">The pawn to apply the hediff to.</param>
|
||||||
|
/// <returns>True if the hediff was successfully applied, false otherwise.</returns>
|
||||||
|
private bool TryApplyWithCustomSeverity(Pawn pawn)
|
||||||
|
{
|
||||||
|
// First, apply the hediff using the base class logic.
|
||||||
|
// This will add the hediff with its default initial severity.
|
||||||
|
if (base.TryApply(pawn))
|
||||||
|
{
|
||||||
|
// If the hediff was successfully added, find it.
|
||||||
|
Hediff hediff = pawn.health.hediffSet.GetFirstHediffOfDef(this.hediff);
|
||||||
|
if (hediff != null)
|
||||||
|
{
|
||||||
|
// Set its severity to a random value from our configured range.
|
||||||
|
hediff.Severity = this.severityRange.RandomInRange;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user