This commit is contained in:
2025-09-04 21:01:54 +08:00
parent 760ddee0cc
commit 0982682cc9
11 changed files with 300 additions and 210 deletions

Binary file not shown.

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ==================== Ability Def ==================== -->
<AbilityDef>
<defName>ARA_Ability_Possess</defName>
<label>阿拉克涅寄生</label>
<description>将你的意识注入另一个生物的身体,完全占据它。</description>
<iconPath>UI/Abilities/Possess</iconPath>
<cooldownTicks>600</cooldownTicks>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<warmupTime>1.5</warmupTime>
<range>5.9</range>
<targetParams>
<canTargetPawns>true</canTargetPawns>
<canTargetBuildings>false</canTargetBuildings>
<canTargetSelf>false</canTargetSelf>
<canTargetLocations>false</canTargetLocations>
</targetParams>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityPossess"/>
</comps>
</AbilityDef>
</Defs>

View File

@@ -97,4 +97,20 @@
<li>ArachnaeNode_spawnCategories_WeaponSmith</li>
</spawnCategories>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
<defName>Arachnae_Node_BS_Adult_Facehugger</defName>
<title>阿拉克涅原虫种</title>
<titleShort>原虫种</titleShort>
<description>[PAWN_nameDef]是一只阿拉克涅原虫种督虫。[PAWN_nameDef]通过独特的神经链接管伸入受害者身体来接管受害者的身体。不同于普通阿拉克涅虫族,阿拉克涅原虫种拥有自我意识,不需要女皇种的监管。</description>
<slot>Adulthood</slot>
<requiredWorkTags>Cooking</requiredWorkTags>
<forcedHediffs Insert="false">
</forcedHediffs>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_Facehugger</li>
</spawnCategories>
</AlienRace.AlienBackstoryDef>
</Defs>

View File

@@ -5,7 +5,7 @@
<defName>ARA_Possession</defName>
<label>阿拉克涅原虫寄生</label>
<description>这个生物的身体正被另一个实体所控制。</description>
<hediffClass>ArachnaeSwarm.Possession.Hediff_Possession</hediffClass>
<hediffClass>ArachnaeSwarm.Hediff_Possession</hediffClass>
<isBad>false</isBad>
<scenarioCanAdd>false</scenarioCanAdd>
<maxSeverity>1.0</maxSeverity>

View File

@@ -1,166 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ==================== Ability Def ==================== -->
<AbilityDef>
<defName>ARA_Ability_Possess</defName>
<label>阿拉克涅寄生</label>
<description>将你的意识注入另一个生物的身体,完全占据它。</description>
<iconPath>UI/Abilities/Possess</iconPath>
<cooldownTicks>600</cooldownTicks>
<verbProperties>
<verbClass>Verb_CastAbility</verbClass>
<warmupTime>1.5</warmupTime>
<range>5.9</range>
<targetParams>
<canTargetPawns>true</canTargetPawns>
<canTargetBuildings>false</canTargetBuildings>
<canTargetSelf>false</canTargetSelf>
<canTargetLocations>false</canTargetLocations>
</targetParams>
</verbProperties>
<comps>
<li Class="ArachnaeSwarm.Abilities.CompProperties_AbilityPossess"/>
</comps>
</AbilityDef>
<ThinkTreeDef>
<defName>ARA_Facehugger</defName>
<insertTag>Humanlike_PostMentalState</insertTag>
<insertPriority>100</insertPriority>
<thinkRoot Class="ThinkNode_Priority">
<subNodes>
<!-- TODO: Add custom AI logic for the facehugger if needed -->
<!-- e.g., seek out hosts when idle -->
<li Class="ThinkNode_ConditionalHasDuty">
<duty>Possess</duty>
<subNode Class="JobGiver_AIFightEnemy" />
</li>
</subNodes>
</thinkRoot>
</ThinkTreeDef>
<!-- ==================== Pawn Kind Def ==================== -->
<PawnKindDef>
<defName>ARA_Facehugger</defName>
<label>阿拉克涅原虫</label>
<race>ARA_FacehuggerRace</race> <!-- We will need to define this race -->
<combatPower>25</combatPower>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Things/Pawn/Animal/ARA_Facehugger</texPath>
<drawSize>0.8</drawSize>
</bodyGraphicData>
<dessicatedBodyGraphicData>
<texPath>Things/Pawn/Animal/Dessicated/CritterDessicated</texPath>
<drawSize>0.8</drawSize>
</dessicatedBodyGraphicData>
</li>
</lifeStages>
<aiThinkTree>ARA_Facehugger</aiThinkTree>
<abilities>
<li>ARA_Ability_Possess</li>
</abilities>
</PawnKindDef>
<!-- ==================== Race Def ==================== -->
<ThingDef ParentName="AnimalThingBase">
<defName>ARA_FacehuggerRace</defName>
<label>阿拉克涅原虫</label>
<description>一种小型的、脆弱的寄生生物,其唯一的生存目的就是寻找并占据一个更强大的宿主。它通过将自己的意识注入目标来完成这一过程。</description>
<statBases>
<MoveSpeed>4.0</MoveSpeed>
<MarketValue>50</MarketValue>
<ComfyTemperatureMin>-10</ComfyTemperatureMin>
<ComfyTemperatureMax>50</ComfyTemperatureMax>
</statBases>
<tools>
<li>
<label>tiny claws</label>
<capacities>
<li>Scratch</li>
</capacities>
<power>2</power>
<cooldownTime>1.5</cooldownTime>
</li>
</tools>
<race>
<thinkTreeMain>Animal</thinkTreeMain>
<body>ARA_FacehuggerBody</body> <!-- We will need to define this body -->
<baseBodySize>0.2</baseBodySize>
<baseHealthScale>0.3</baseHealthScale>
<baseHungerRate>0.1</baseHungerRate>
<lifeStageAges>
<li>
<def>AnimalAdult</def>
<minAge>0</minAge>
</li>
</lifeStageAges>
</race>
</ThingDef>
<BodyDef>
<defName>ARA_FacehuggerBody</defName>
<label>facehugger</label>
<corePart>
<def>Body</def>
<height>20</height>
<depth>20</depth>
<parts>
<li>
<def>Head</def>
<coverage>0.3</coverage>
<parts>
<li>
<def>Skull</def>
<coverage>0.2</coverage>
<depth>Inside</depth>
<parts>
<li>
<def>Brain</def>
<coverage>0.1</coverage>
<depth>Inside</depth>
</li>
</parts>
</li>
<li>
<def>Eye</def>
<customLabel>left eye</customLabel>
<coverage>0.07</coverage>
</li>
<li>
<def>Eye</def>
<customLabel>right eye</customLabel>
<coverage>0.07</coverage>
</li>
</parts>
</li>
<li>
<def>Leg</def>
<customLabel>front left leg</customLabel>
<coverage>0.1</coverage>
</li>
<li>
<def>Leg</def>
<customLabel>front right leg</customLabel>
<coverage>0.1</coverage>
</li>
<li>
<def>Leg</def>
<customLabel>rear left leg</customLabel>
<coverage>0.1</coverage>
</li>
<li>
<def>Leg</def>
<customLabel>rear right leg</customLabel>
<coverage>0.1</coverage>
</li>
</parts>
</corePart>
</BodyDef>
</Defs>

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- ==================== Pawn Kind Def ==================== -->
<PawnKindDef ParentName="ArachnaeNodeABasePawnKind">
<defName>ArachnaeNode_Race_Facehugger</defName>
<label>阿拉克涅原虫种</label>
<race>ArachnaeNode_Race_Facehugger</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<invNutrition>0</invNutrition>
<backstoryFiltersOverride>
<li>
<categories>
<li>ArachnaeNode_spawnCategoriesA</li>
<li>ArachnaeNode_spawnCategories_Facehugger</li>
</categories>
</li>
</backstoryFiltersOverride>
<abilities>
<li>ARA_Facehugger</li>
</abilities>
<apparelTags>
</apparelTags>
<apparelMoney>0</apparelMoney>
</PawnKindDef>
<!-- 定义阿拉克涅节点虫种族 -->
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Facehugger</defName>
<label>阿拉克涅原虫种</label>
<description>阿拉克涅原虫,通过独特的神经链接管伸入受害者身体来接管受害者的身体。不同于普通阿拉克涅虫族,阿拉克涅原虫种拥有自我意识,不需要女皇种的监管。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
<alienPartGenerator>
<!-- 额外身体部件 -->
<bodyAddons>
<li>
<path>ArachnaeSwarm/Things/ARA_HiveNode/Addons/ArachnaeNode_Race_Myrmecocystus_Addons_Stomach</path>
<inFrontOfBody>false</inFrontOfBody>
<!-- <conditions>
<BodyPart>
<bodyPart>WULA_Addons_Antenna_Bodypart</bodyPart>
</BodyPart>
</conditions> -->
</li>
</bodyAddons>
</alienPartGenerator>
</generalSettings>
<!-- 种族的允许和禁止特化设置 -->
<raceRestriction>
<!-- 食物列表 -->
<whiteFoodList Inherit="False"/>
<blackFoodList>
<li>ARA_InsectJelly</li>
</blackFoodList>
<onlyEatRaceRestrictedFood>false</onlyEatRaceRestrictedFood>
</raceRestriction>
</alienRace>
<comps>
<li Class="ArachnaeSwarm.CompProperties_MilkableArachnae">
<milkDef>ARA_InsectJelly</milkDef>
<milkIntervalDays>3</milkIntervalDays>
<milkAmount>4</milkAmount>
</li>
</comps>
<!-- 基础属性设置 -->
<statBases>
<!-- 移动速度 -->
<MoveSpeed>2</MoveSpeed>
<!-- <RestRateMultiplier>1</RestRateMultiplier> -->
<!-- <HungerRateMultiplier>1</HungerRateMultiplier> -->
<EatingSpeed>5</EatingSpeed>
<MaxNutrition>1</MaxNutrition>
<CarryingCapacity>100</CarryingCapacity>
<MeatAmount>70</MeatAmount>
<LeatherAmount>10</LeatherAmount>
<MeleeDodgeChance>0.5</MeleeDodgeChance>
<!-- <MeleeHitChance>1</MeleeHitChance> -->
<!-- <NegotiationAbility>1</NegotiationAbility> -->
<!-- <SellPriceFactor>1</SellPriceFactor> -->
<!-- <SocialImpact>1</SocialImpact> -->
<!-- <TradePriceImprovement>0.5</TradePriceImprovement> -->
<!-- 自带的甲壳可以防御外部攻击 -->
<ArmorRating_Blunt>0.18</ArmorRating_Blunt>
<ArmorRating_Sharp>0.27</ArmorRating_Sharp>
<ArmorRating_Heat>0.2</ArmorRating_Heat>
</statBases>
<race>
<foodType>OmnivoreHuman,CarnivoreAnimal,OvivoreAnimal,VegetarianRoughAnimal</foodType>
<!-- 身体类型 -->
<body>ArachnaeMyrmecocystus_Body</body>
<!-- 身形大小 -->
<baseBodySize>2.5</baseBodySize>
<!-- 血量上限 -->
<baseHealthScale>3</baseHealthScale>
<!-- 蜜罐虫的寿命很低 -->
<lifeExpectancy>1.5</lifeExpectancy>
<lifeStageAges Inherit="False">
<li>
<def>ArachnaeNode_Myrmecocystus_Adult</def>
<minAge>0</minAge>
</li>
</lifeStageAges>
</race>
</AlienRace.ThingDef_AlienRace>
</Defs>