护士装技能

This commit is contained in:
2025-09-26 11:59:41 +08:00
parent fe439885e2
commit f337d58ef2
12 changed files with 213 additions and 51 deletions

Binary file not shown.

View File

@@ -35,7 +35,7 @@
<defName>ARA_RaceBaseSwarmProduceOn</defName>
<label>取消繁育抑制</label>
<description>重启该阿拉克涅督虫自动抚育辅虫的能力。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOn</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOn</iconPath>
<cooldownTicksRange>601</cooldownTicksRange>
<hostile>false</hostile>
<showOnCharacterCard>true</showOnCharacterCard>
@@ -63,7 +63,7 @@
<defName>ARA_RaceBaseSwarmProduceOff</defName>
<label>繁育抑制</label>
<description>关闭该阿拉克涅督虫自动抚育辅虫的能力。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOff</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_RaceBaseSwarmProduceOff</iconPath>
<cooldownTicksRange>601</cooldownTicksRange>
<hostile>false</hostile>
<showOnCharacterCard>true</showOnCharacterCard>
@@ -92,7 +92,7 @@
<label>酸爆茧投射</label>
<description>发射一排阿拉克涅休眠茧,其中装有阿拉克涅酸爆种,这些危险的虫族被唤醒后就会开始寻仇,匆匆了结自己的生命.</description>
<iconPath>UI/Commands/EggSpew</iconPath>
<cooldownTicksRange>5000</cooldownTicksRange> <!-- 2 hours -->
<cooldownTicksRange>5000</cooldownTicksRange> <!-- 2 hours -->
<aiCanUse>true</aiCanUse>
<displayOrder>300</displayOrder>
<displayGizmoWhileUndrafted>true</displayGizmoWhileUndrafted>
@@ -115,7 +115,7 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
<projectileDef>ARA_Proj_Trap</projectileDef>
<numProjectiles>3</numProjectiles>
<numProjectiles>3</numProjectiles>
</li>
</comps>
</AbilityDef>
@@ -148,7 +148,7 @@
<soundCast>AcidSpray_Resolve</soundCast>
<violent>false</violent>
<targetable>false</targetable>
<drawAimPie>false</drawAimPie>
<drawAimPie>false</drawAimPie>
<targetParams>
<canTargetSelf>True</canTargetSelf>
</targetParams>
@@ -360,7 +360,7 @@
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
<projectileDef>Bullet_ARA_RW_Basic_Fist_Needle_Gun</projectileDef>
<numProjectiles>12</numProjectiles>
<numProjectiles>12</numProjectiles>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
@@ -456,7 +456,7 @@
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityLaunchMultiProjectile">
<projectileDef>Bullet_ARA_RW_Basic_SkyHive_Gun</projectileDef>
<numProjectiles>3</numProjectiles>
<numProjectiles>3</numProjectiles>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
@@ -554,7 +554,7 @@
<verbClass>Verb_CastAbility</verbClass>
<warmupTime>1</warmupTime>
<range>10</range>
<drawAimPie>false</drawAimPie>
<drawAimPie>false</drawAimPie>
<targetParams>
<canTargetSelf>true</canTargetSelf>
</targetParams>
@@ -588,7 +588,7 @@
</li> -->
</comps>
</AbilityDef>
<AbilityDef>
<defName>ARA_Ability_TrackingCharge</defName>
<label>蛮力冲撞</label>
@@ -620,11 +620,11 @@
<flyerDef>ARA_Flyer_TrackingCharge</flyerDef>
<collisionRadius>1.5</collisionRadius> <!-- Larger collision radius -->
<impactSound>Pawn_Melee_BigBash_HitPawn</impactSound>
<damageHostileOnly>true</damageHostileOnly> <!-- Set to false to damage everyone in the path -->
<damageHostileOnly>true</damageHostileOnly> <!-- Set to false to damage everyone in the path -->
</li>
<li Class="CompProperties_AbilityEffecterOnCaster">
<effecterDef>WarTrumpet</effecterDef>
<maintainTicks>20</maintainTicks> <!-- Long enough for the "2nd wave" to spawn -->
<maintainTicks>20</maintainTicks> <!-- Long enough for the "2nd wave" to spawn -->
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityNeedCost">
<needDef>Food</needDef>
@@ -641,14 +641,14 @@
<heightFactor>0</heightFactor>
</pawnFlyer>
</ThingDef>
<AbilityDef>
<defName>ARA_PsychicBrainburn</defName>
<label>心灵烧灼</label>
<description>以强大的纯净灵能冲击目标,烧毁目标的中枢神经系统——这会直接杀死目标。</description>
<abilityClass>Psycast</abilityClass>
<category>Psychic</category>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_PsychicBrainburn</iconPath>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_PsychicBrainburn</iconPath>
<cooldownTicksRange>18000</cooldownTicksRange>
<aiCanUse>false</aiCanUse>
<displayOrder>300</displayOrder>
@@ -681,7 +681,7 @@
<psychic>True</psychic>
<!-- 视觉效果 -->
<effecterDef>Skip_Entry</effecterDef>
<!-- 设为 true 则只能对血肉生物使用。设为 false 则也可以对机械体使用。 -->
<requiresFlesh>false</requiresFlesh>
</li>
@@ -771,7 +771,7 @@
<speed>40</speed>
</projectile>
</ThingDef>
<AbilityDef>
<defName>ARA_Fighter_Invisibility_jump</defName>
<label>追猎种跳跃</label>
@@ -869,8 +869,17 @@
<comps>
<li Class="CompProperties_AbilityGiveHediff">
<compClass>CompAbilityEffect_GiveHediff</compClass>
<hediffDef>ARA_Fighter_Execution_Damage</hediffDef>
<hediffDef>ARA_Heal_By_Nurse_Hediff</hediffDef>
<replaceExisting>true</replaceExisting>
<durationSecondsOverride>20~30</durationSecondsOverride>
<applicableToMechs>False</applicableToMechs>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityTerrainRestriction">
<terrainDefs>
<li>ARA_InsectCreep</li>
</terrainDefs>
<casterTerrainFailMessage>在阿拉克涅菌毯上才能使用此技能</casterTerrainFailMessage>
<disabledReasonKey>不在阿拉克涅菌毯上</disabledReasonKey>
</li>
</comps>
</AbilityDef>

View File

@@ -62,20 +62,6 @@
<minSeverity>0.01</minSeverity>
<isBad>false</isBad>
<comps>
<li Class="ArachnaeSwarm.HediffCompProperties_TerrainBasedSeverity">
<interval>180</interval>
<!-- 目标地形列表 -->
<terrainDefs>
<li>ARA_InsectCreep</li>
</terrainDefs>
<!-- 站在目标地形上时,每次检查的严重性变化量 -->
<severityOnTerrain>0.05</severityOnTerrain>
<!-- 不在目标地形上时,每次检查的严重性变化量 (负数表示减少) -->
<severityOffTerrain>-0.0249</severityOffTerrain>
</li>
<li Class="HediffCompProperties_GiveAbility">
<abilityDefs>
<li>ARA_TerrainHeal_Ability</li>
@@ -87,7 +73,28 @@
<li>
<becomeVisible>false</becomeVisible>
<minSeverity>0</minSeverity>
<label></label>
</li>
</stages>
</HediffDef>
<HediffDef>
<defName>ARA_Heal_By_Nurse_Hediff</defName>
<label>虫群治愈</label>
<description>阿拉克涅虫群的愈合素可以引起组织细胞的异常增殖以快速完成伤口治愈。</description>
<defaultLabelColor>(0.52, 1, 0.95)</defaultLabelColor>
<hediffClass>HediffWithComps</hediffClass>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<comps>
<li Class="HediffCompProperties_DisappearsOnDeath" />
<li Class="HediffCompProperties_Disappears">
<disappearsAfterTicks>6000</disappearsAfterTicks> <!-- 10 seconds -->
<showRemainingTime>true</showRemainingTime>
</li>
</comps>
<stages>
<li>
<minSeverity>0</minSeverity>
<regeneration>300</regeneration>
</li>
</stages>
</HediffDef>

View File

@@ -116,6 +116,7 @@
</thingDefs>
</fixedIngredientFilter>
<addsHediff>ARA_Huge_Stomach_Hediff</addsHediff>
<researchPrerequisite>ARA_Technology_1EVO</researchPrerequisite>
</RecipeDef>
<HediffDef ParentName="ImplantHediffBase">
<defName>ARA_Huge_Stomach_Hediff</defName>

View File

@@ -256,6 +256,18 @@
</prerequisites>
</ResearchProjectDef>
<!-- 建筑发展 -->
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_8CPE</defName>
<label>节点CPE-8"作物"</label>
<description>允许虫族在菌毯上种植一种特殊的作物。</description>
<baseCost>150</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>3.60</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Base_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_5SHL</defName>
<label>节点SHL-5"光瘤"</label>
@@ -308,7 +320,7 @@
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_7GUT</defName>
<label>节点GUT-6"消化道"</label>
<label>节点GUT-6"分泌"</label>
<description>允许虫族建造一种利用活体钜菌和生物质产出阿拉克涅虫蜜的建筑。</description>
<baseCost>150</baseCost>
<researchViewX>8.00</researchViewX>
@@ -319,6 +331,30 @@
<li>ARA_Technology_1BAC</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1NPT</defName>
<label>节点NPT-1"中央塔"</label>
<description>允许虫族建造一个中央营养供给设施,它可以自动为链接到的、需要营养的建筑自动补充营养。</description>
<baseCost>150</baseCost>
<researchViewX>10.50</researchViewX>
<researchViewY>3.20</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_2WMT</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_2NPT</defName>
<label>节点NPT-2"消化腔"</label>
<description>允许虫族建造用于存放和消化猎物的茧,溶解猎物为阿拉克涅营养供给塔网络提供额外的生物质传输效率和孵化速度。</description>
<baseCost>150</baseCost>
<researchViewX>11.50</researchViewX>
<researchViewY>3.20</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Technology_1NPT</li>
</prerequisites>
</ResearchProjectDef>
<!-- 子巢发展 -->
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6SPV</defName>
@@ -411,4 +447,17 @@
<li>ARA_Technology_5KYC</li>
</prerequisites>
</ResearchProjectDef>
<!-- 改造发展 -->
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_1EVO</defName>
<label>节点EVO-1"大胃袋"</label>
<description>允许实行新的阿拉克涅进化手术,允许阿拉克涅虫族获得更大的营养储存能力。</description>
<baseCost>150</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>4.20</researchViewY>
<requiredResearchBuilding>ARA_ResearchBench</requiredResearchBuilding>
<prerequisites>
<li>ARA_Base_Technology</li>
</prerequisites>
</ResearchProjectDef>
</Defs>

View File

@@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThingDef ParentName="PlantBase">
<defName>ARA_CreepPlant</defName>
<label>菌毯奇花</label>
<description>一种只能在阿拉克涅菌毯上生长的奇特植物。</description>
<description>一种只能在阿拉克涅菌毯上生长的奇特植物,几乎不消耗肥力即可通过菌毯的营养管道茁壮生长,并担当虫群的食物来源之一</description>
<statBases>
<MaxHitPoints>85</MaxHitPoints>
<Beauty>4</Beauty>
@@ -17,8 +16,8 @@
<selectable>true</selectable>
<pathCost>10</pathCost>
<plant>
<fertilityMin>0.5</fertilityMin>
<fertilitySensitivity>1.0</fertilitySensitivity>
<fertilityMin>0.05</fertilityMin>
<fertilitySensitivity>0.05</fertilitySensitivity>
<growDays>10</growDays>
<harvestYield>10</harvestYield>
<harvestedThingDef>ARA_CreepFungus</harvestedThingDef>
@@ -29,10 +28,12 @@
<li>ARA_Creep</li>
</wildTerrainTags>
<visualSizeRange>0.3~0.8</visualSizeRange>
<sowResearchPrerequisites>
<li>ARA_Technology_8CPE</li>
</sowResearchPrerequisites>
</plant>
</ThingDef>
<ThingDef ParentName="PlantFoodRawBase">
<ThingDef ParentName="PlantFoodRawBase">
<defName>ARA_CreepFungus</defName>
<label>菌毯真菌</label>
<description>从菌毯奇花上收获的真菌。可以直接生吃,但烹饪后味道更佳。</description>
@@ -52,6 +53,4 @@
</li>
</comps>
</ThingDef>
</Defs>

View File

@@ -30,7 +30,7 @@
<Cleanliness>0</Cleanliness>
<Flammability>0</Flammability>
</statBases>
<fertility>1.25</fertility>
<fertility>0.5</fertility>
<affordances Inherit="False">
<li>ARA_Creep</li>
<li>Light</li>

View File

@@ -1,10 +1,10 @@
{
"Version": 1,
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_addextraexp\\compproperties_addextraexp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_addextraexp\\compproperties_addextraexp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@@ -23,14 +23,14 @@
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "CompProperties_AddExtraExp.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
"RelativeToolTip": "Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAcAAAAAAAAAA==",
"Title": "CompAbilityEffect_TerrainRestriction .cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"RelativeDocumentMoniker": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"RelativeToolTip": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAEsAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-25T09:59:56.766Z",
"WhenOpened": "2025-09-26T03:32:39.017Z",
"EditorCaption": ""
}
]

View File

@@ -0,0 +1,75 @@
using RimWorld;
using Verse;
namespace ArachnaeSwarm
{
public class CompAbilityEffect_TerrainRestriction : CompAbilityEffect
{
public new CompProperties_AbilityTerrainRestriction Props => (CompProperties_AbilityTerrainRestriction)props;
// 检查能力是否可用
public override bool GizmoDisabled(out string reason)
{
if (!IsCasterOnValidTerrain())
{
reason = Props.disabledReasonKey.Translate(GetTerrainList());
return true;
}
reason = null;
return false;
}
// 验证目标是否有效
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
{
if (!base.Valid(target, throwMessages))
return false;
// 检查施法者地形
if (!IsCasterOnValidTerrain())
{
if (throwMessages)
{
Messages.Message(Props.casterTerrainFailMessage.Translate(GetTerrainList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false);
}
return false;
}
return true;
}
// 应用效果前的最终验证
public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest)
{
if (!IsCasterOnValidTerrain())
{
Messages.Message(Props.casterTerrainFailMessage.Translate(GetTerrainList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false);
return false;
}
return base.CanApplyOn(target, dest);
}
// 检查施法者地形是否有效
private bool IsCasterOnValidTerrain()
{
if (parent.pawn == null || !parent.pawn.Spawned)
return false;
TerrainDef casterTerrain = parent.pawn.Position.GetTerrain(parent.pawn.Map);
return Props.terrainDefs != null && Props.terrainDefs.Contains(casterTerrain);
}
// 获取地形列表的字符串表示
private string GetTerrainList()
{
if (Props.terrainDefs == null)
return "";
string terrainList = "";
foreach (var terrain in Props.terrainDefs)
{
if (terrainList.Length > 0)
terrainList += ", ";
terrainList += terrain.label;
}
return terrainList;
}
}
}

View File

@@ -0,0 +1,20 @@
using RimWorld;
using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_AbilityTerrainRestriction : CompProperties_AbilityEffect
{
// 允许释放技能的地形列表
public List<TerrainDef> terrainDefs;
// 失败消息配置
[MustTranslate]
public string casterTerrainFailMessage = "AbilityMustBeOnTerrain";
[MustTranslate]
public string disabledReasonKey = "AbilityDisabledNotOnTerrain";
public CompProperties_AbilityTerrainRestriction()
{
compClass = typeof(CompAbilityEffect_TerrainRestriction);
}
}
}

View File

@@ -89,6 +89,8 @@
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_ResearchPrereq.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_SprayLiquidMulti.cs" />
<Compile Include="Abilities\ARA_QueenAbility\CompProperties_AbilitySprayLiquidMulti.cs" />
<Compile Include="Abilities\ARA_TerrainRestriction\CompAbilityEffect_TerrainRestriction .cs" />
<Compile Include="Abilities\ARA_TerrainRestriction\CompProperties_TerrainRestriction.cs" />
<Compile Include="Abilities\CompAbilityEffect_DRM_Deaddustpop.cs" />
<Compile Include="Abilities\CompAbilityEffect_LaunchMultiProjectile.cs" />
<Compile Include="Abilities\PsychicBrainburn\CompAbilityEffect_PsychicBrainburn.cs" />