修改群友提出的问题

This commit is contained in:
Tourswen
2025-10-01 14:44:44 +08:00
parent 8dfec3d83a
commit f76ffb74de
11 changed files with 414 additions and 49 deletions

Binary file not shown.

View File

@@ -100,7 +100,6 @@
<skillGains>
<Shooting>-10</Shooting>
<Melee>-10</Melee>
<Plants>50</Plants>
</skillGains>
<spawnCategories>
@@ -128,9 +127,6 @@
<li>Artistic</li>
<li>Intellectual</li>
</workDisables>
<skillGains>
<Construction>50</Construction>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_ShieldHead</li>
@@ -157,9 +153,6 @@
<!-- <li>Artistic</li> -->
<li>Intellectual</li>
</workDisables>
<skillGains>
<Crafting>50</Crafting>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_WeaponSmith</li>
@@ -186,10 +179,6 @@
<li>Artistic</li>
<li>Intellectual</li>
</workDisables>
<skillGains>
<Shooting>50</Shooting>
<Melee>50</Melee>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_Fighter</li>
@@ -216,10 +205,6 @@
<li>Artistic</li>
<li>Intellectual</li>
</workDisables>
<skillGains>
<Shooting>30</Shooting>
<Melee>30</Melee>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_Smokepop</li>
@@ -246,10 +231,6 @@
<li>Artistic</li>
<li>Intellectual</li>
</workDisables>
<skillGains>
<Shooting>80</Shooting>
<Melee>50</Melee>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_Skyraider</li>
@@ -300,9 +281,6 @@
<li>Caring</li>
<!-- <li>Artistic</li> -->
</workDisables>
<skillGains>
<Intellectual>100</Intellectual>
</skillGains>
<spawnCategories>
<li>ArachnaeNode_spawnCategories_NeuroSwarm</li>

View File

@@ -1119,8 +1119,8 @@
<severity>1</severity>
</li>
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
<requiredResearch>ARA_Technology_1VTE</requiredResearch>
<failMessage>需要科技 节点VTE-1"护卫者" 以解锁进化</failMessage>
<requiredResearch>ARA_Technology_6LOD</requiredResearch>
<failMessage>需要科技 节点LOD-6"巢之主" 以解锁进化</failMessage>
</li>
</comps>
</AbilityDef>

View File

@@ -134,7 +134,7 @@
<HediffDef>
<defName>ARA_TemperatureRegulation</defName>
<label>冷血动物</label>
<description>阿拉克涅虫族是冷血动物,这代表着她们对外界的温度变化更加敏感——在适宜温度下她们将变得敏捷而致命,在不适温度下她们将难以行动。\n\n此类阿拉克涅虫族可以接受在16~26°C的温度下活动温度接近21°C时会获得额外的意识加成。</description>
<description>阿拉克涅虫族是冷血动物,这代表着她们对外界的温度变化更加敏感——在适宜温度下她们将变得敏捷而致命,在不适温度下她们将难以行动。\n\n此类阿拉克涅虫族可以接受在6~36°C的温度下活动温度接近21°C时会获得额外的意识加成。</description>
<hediffClass>Hediff_High</hediffClass>
<defaultLabelColor>(0.6, 0.8, 0.9)</defaultLabelColor>
<maxSeverity>1.0</maxSeverity>
@@ -142,8 +142,8 @@
<initialSeverity>0.5</initialSeverity>
<comps>
<li Class="ArachnaeSwarm.HediffCompProperties_Temperature">
<minComfortableTemperature>16</minComfortableTemperature>
<maxComfortableTemperature>26</maxComfortableTemperature>
<minComfortableTemperature>6</minComfortableTemperature>
<maxComfortableTemperature>36</maxComfortableTemperature>
<severityChangeIn>0.01</severityChangeIn>
<severityChangeOut>-0.01</severityChangeOut>
</li>
@@ -176,7 +176,7 @@
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.5</offset>
<setMax>0.5</setMax>
</li>
</capMods>
</li>

View File

@@ -584,7 +584,7 @@
</ResearchProjectDef>
<ResearchProjectDef ParentName="ARA_techBase">
<defName>ARA_Technology_6LOD</defName>
<label>节点LOD-6"领主种"</label>
<label>节点LOD-6"巢之主"</label>
<description>允许空天种进行定向进化,以牺牲高速和高空机动的能力换取向敌人投射大量天巢种的能力。</description>
<baseCost>2500</baseCost>
<researchViewX>10.00</researchViewX>

View File

@@ -629,6 +629,8 @@
<li>ARA_Surgery_Install_Reactive_Shell</li>
<li>ARA_Surgery_Install_Strengthening_Tendon</li>
<li>ARA_Surgery_Install_Slide_Patagium</li>
<li>ARA_Surgery_Install_Acidling_Pouch</li>
<li>ARA_Surgery_Install_Tumor_Pouch</li>
</recipes>
<comps>
@@ -658,6 +660,7 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_RaceBaseSwarmProduceSwitchHediff</li>
<li>ARA_HiveMindDrone</li>
<li>ARA_HiveStrength_Low</li>
</hediffs>
@@ -708,7 +711,8 @@
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase_Huge">
<defName>ArachnaeNode_Race_Myrmecocystus</defName>
<label>阿拉克涅蜜罐种</label>
<description>阿拉克涅大型督虫之一,拥有广泛食谱的大型虫族,可以吞下许多未经处理的生物并将其分解为阿拉克涅虫蜜,以滋养虫群。\n\n她可以进行搬运、烹饪和种植工作战斗技能非常差。\n\n作为督虫她可以繁育并监管若干阿拉克涅食腐种辅虫以协助巢穴进行收割和播种工作。</description>
<description>
阿拉克涅大型督虫之一,拥有广泛食谱的大型虫族,可以吞下许多未经处理的生物并将其分解为阿拉克涅虫蜜,以滋养虫群。\n\n她可以进行搬运、烹饪和种植工作战斗技能非常差。\n\n作为督虫她可以繁育并监管若干阿拉克涅食腐种辅虫以协助巢穴进行收割和播种工作。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -803,17 +807,36 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_RaceBaseSwarmProduceSwitchHediff</li>
<li>ARA_Myrmecocystus_Production_InsectJelly</li>
</hediffs>
<addChance>1.0</addChance>
<allowDuplicates>false</allowDuplicates>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Plants</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>36000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_ShieldHead</defName>
<label>阿拉克涅盾头种</label>
<description>阿拉克涅督虫之一,拥有过度生长而覆盖头部和腿部的甲壳,可以定时剥落甲壳素供虫巢使用。\n\n她可以进行搬运、采矿和建筑工作战斗技能平平无奇但是拥有较好的防御。\n\n作为督虫她可以繁育并监管若干阿拉克涅坚颚种辅虫以协助巢穴开采矿脉。</description>
<description>
阿拉克涅督虫之一,拥有过度生长而覆盖头部和腿部的甲壳,可以定时剥落甲壳素供虫巢使用。\n\n她可以进行搬运、采矿和建筑工作战斗技能平平无奇但是拥有较好的防御。\n\n作为督虫她可以繁育并监管若干阿拉克涅坚颚种辅虫以协助巢穴开采矿脉。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -909,6 +932,7 @@
<comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_RaceBaseSwarmProduceSwitchHediff</li>
<li>ARA_ShieldHead_Base</li>
</hediffs>
<addChance>1.0</addChance>
@@ -938,12 +962,30 @@
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Construction</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>36000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_WeaponSmith</defName>
<label>阿拉克涅工艺种</label>
<description>阿拉克涅督虫之一,是少数拥有结茧能力的非女皇种阿拉克涅虫族——她们可以排出一枚器官茧,这枚茧将按照其信息素所标定的方向定向演化出一个武装器官,以供虫群使用。\n\n她可以进行搬运、手工和艺术工作战斗技能平平无奇但本身极度脆弱。\n\n作为督虫她可以繁育并监管若干阿拉克涅家政种辅虫以协助巢穴进行清洁和搬运工作。</description>
<description>
阿拉克涅督虫之一,是少数拥有结茧能力的非女皇种阿拉克涅虫族——她们可以排出一枚器官茧,这枚茧将按照其信息素所标定的方向定向演化出一个武装器官,以供虫群使用。\n\n她可以进行搬运、手工和艺术工作战斗技能平平无奇但本身极度脆弱。\n\n作为督虫她可以繁育并监管若干阿拉克涅家政种辅虫以协助巢穴进行清洁和搬运工作。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -994,8 +1036,6 @@
<ArmorRating_Blunt>0.1</ArmorRating_Blunt>
<ArmorRating_Sharp>0.1</ArmorRating_Sharp>
<ArmorRating_Heat>0.05</ArmorRating_Heat>
<MaxNutrition>1.26</MaxNutrition>
</statBases>
<race>
@@ -1008,6 +1048,7 @@
<comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_RaceBaseSwarmProduceSwitchHediff</li>
<li>ARA_WeaponSmith_0_Stage</li>
</hediffs>
<addChance>1.0</addChance>
@@ -1038,12 +1079,30 @@
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Crafting</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>36000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Fighter</defName>
<label>阿拉克涅战士种</label>
<description>阿拉克涅督虫之一,是巢穴中真正的战士,其拥有强大的可塑性基因,随着科技的解锁其将获得更多的能力。\n\n她可以进行搬运、狩猎和驯兽工作战斗技能非常亮眼并且移动敏捷。\n\n作为督虫她可以向敌人投射寿命有限但是非常恼人的阿拉克涅酸噬种辅虫以阻止敌人的远程火力开火。</description>
<description>
阿拉克涅督虫之一,是巢穴中真正的战士,其拥有强大的可塑性基因,随着科技的解锁其将获得更多的能力。\n\n她可以进行搬运、狩猎和驯兽工作战斗技能非常亮眼并且移动敏捷。\n\n作为督虫她可以向敌人投射寿命有限但是非常恼人的阿拉克涅酸噬种辅虫以阻止敌人的远程火力开火。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -1143,12 +1202,41 @@
<InvisibilityDef>ARA_Fighter_Invisibility</InvisibilityDef>
<stealthCooldownTicks>120</stealthCooldownTicks>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Shooting</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>36000</max>
</experienceRange>
</li>
<li>
<skillDef>Melee</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>36000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase">
<defName>ArachnaeNode_Race_Facehugger</defName>
<label>阿拉克涅原虫种</label>
<description>阿拉克涅督虫之一,呈现高度未分化状态的特殊督虫,可以通过独特的神经链接管控制受害者的身体,并释放灵能信号以使得周围的人忽略其存在。然而她本身实在过于脆弱,在完成寄生前难以胜任任何工作。\n\n她可以进行所有非研究工作战斗技能约等于无。\n\n不同于普通阿拉克涅虫族高度未分化的身体决定了其无法孕育任何辅虫。</description>
<description>
阿拉克涅督虫之一,呈现高度未分化状态的特殊督虫,可以通过独特的神经链接管控制受害者的身体,并释放灵能信号以使得周围的人忽略其存在。然而她本身实在过于脆弱,在完成寄生前难以胜任任何工作。\n\n她可以进行所有非研究工作战斗技能约等于无。\n\n不同于普通阿拉克涅虫族高度未分化的身体决定了其无法孕育任何辅虫。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -1207,7 +1295,8 @@
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase_Huge">
<defName>ArachnaeNode_Race_Smokepop</defName>
<label>阿拉克涅浓雾种</label>
<description>阿拉克涅大型督虫之一,身披厚重甲壳的大型虫族,拥有在大范围内喷射信息素以召唤辅虫虫群能力,虽然移动速度比较慢,但是在战斗中就如同装甲车一样难以撼动。\n\n她可以进行搬运和医护工作拥有不错的战斗技能防御力和伤害耐受能力强大。\n\n作为督虫她可以繁育并监管大量阿拉克涅家政种辅虫以协助巢穴进行清洁和搬运工作。</description>
<description>
阿拉克涅大型督虫之一,身披厚重甲壳的大型虫族,拥有在大范围内喷射信息素以召唤辅虫虫群能力,虽然移动速度比较慢,但是在战斗中就如同装甲车一样难以撼动。\n\n她可以进行搬运和医护工作拥有不错的战斗技能防御力和伤害耐受能力强大。\n\n作为督虫她可以繁育并监管大量阿拉克涅家政种辅虫以协助巢穴进行清洁和搬运工作。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -1272,6 +1361,7 @@
<comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_RaceBaseSwarmProduceSwitchHediff</li>
<li>ARA_Smokepop_Base</li>
</hediffs>
<addChance>1.0</addChance>
@@ -1302,12 +1392,41 @@
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Shooting</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>24000</max>
</experienceRange>
</li>
<li>
<skillDef>Melee</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>24000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_NodeBase_Huge">
<defName>ArachnaeNode_Race_Skyraider</defName>
<label>阿拉克涅空天种</label>
<description>阿拉克涅大型督虫之一,众督虫中的精锐,身材巨大并且拥有引以为傲的飞行能力,是巢穴中无可争议的空中霸主。\n\n她可以进行搬运工作拥有不错的战斗技能在战场上行动时非常灵活。\n\n作为督虫她可以向敌人发射天巢种辅虫这种辅虫会自动修正姿态追踪敌军并在命中后对敌人进行持续啃咬。</description>
<description>
阿拉克涅大型督虫之一,众督虫中的精锐,身材巨大并且拥有引以为傲的飞行能力,是巢穴中无可争议的空中霸主。\n\n她可以进行搬运工作拥有不错的战斗技能在战场上行动时非常灵活。\n\n作为督虫她可以向敌人发射天巢种辅虫这种辅虫会自动修正姿态追踪敌军并在命中后对敌人进行持续啃咬。</description>
<alienRace>
<generalSettings>
<!-- 各种零件定义 -->
@@ -1398,14 +1517,43 @@
<tooltipOverride>阿拉克涅的督虫们生命如精密的发条般运转着。</tooltipOverride>
<showGizmoOnNonPlayerControlled>true</showGizmoOnNonPlayerControlled>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Shooting</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>24000</max>
</experienceRange>
</li>
<li>
<skillDef>Melee</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>18000</min>
<max>24000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="ARA_PawnBase">
<defName>ArachnaeNode_Race_NeuroSwarm</defName>
<label>阿拉克涅织域种</label>
<description>阿拉克涅督虫之一,是阿拉克涅虫群中最为特殊的虫族,织域种虽然受到女皇种监管,但仍然具有强大的高级智慧和自我意志,织域种之间能够构建一种高度互联的神经网络从而进行复杂的研究和计算工作,织域种进行计算工作时无法感知外界环境,因此她们是虫群的重要保护对象。</description>
<description>
阿拉克涅督虫之一,是阿拉克涅虫群中最为特殊的虫族,织域种虽然受到女皇种监管,但仍然具有强大的高级智慧和自我意志,织域种之间能够构建一种高度互联的神经网络从而进行复杂的研究和计算工作,织域种进行计算工作时无法感知外界环境,因此她们是虫群的重要保护对象。</description>
<alienRace>
<!-- 核心设置 -->
<generalSettings>
@@ -1745,15 +1893,15 @@
<!-- 智力水平 -->
<intelligence>Humanlike</intelligence>
<!-- 肉和皮革的定义 -->
<nameCategory>HumanStandard</nameCategory>
<bloodDef>Filth_BloodInsect</bloodDef>
<bloodSmearDef>Filth_BloodSmear</bloodSmearDef>
<nameCategory>HumanStandard</nameCategory>
<bloodDef>Filth_BloodInsect</bloodDef>
<bloodSmearDef>Filth_BloodSmear</bloodSmearDef>
<!-- 身形大小 -->
<baseBodySize>6</baseBodySize>
<baseBodySize>6</baseBodySize>
<!-- 基础血量,很高 -->
<baseHealthScale>4</baseHealthScale>
<!-- 解剖产物 -->
<leatherDef>ARA_Carapace</leatherDef>
<leatherDef>ARA_Carapace</leatherDef>
<soundMeleeHitPawn>Pawn_Melee_BigBash_HitPawn</soundMeleeHitPawn>
<soundMeleeHitBuilding>Pawn_Melee_BigBash_HitBuilding</soundMeleeHitBuilding>
@@ -1845,6 +1993,7 @@
</li>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs>
<li>ARA_RaceBaseSwarmProduceSwitchHediff</li>
<li>ARA_HiveMindDrone</li>
<li>ARA_HiveStrength</li>
<li>ARA_Psi_Master</li>
@@ -1853,6 +2002,23 @@
<addChance>1.0</addChance>
<allowDuplicates>false</allowDuplicates>
</li>
<li Class="ArachnaeSwarm.CompProperties_SkillExperienceGiver">
<addChance>1.0</addChance>
<debug>false</debug>
<skillExperiences>
<li>
<skillDef>Intellectual</skillDef>
<!-- <experienceAmount>0</experienceAmount> -->
<skillChance>1</skillChance>
<!-- <minSkillLevel>5</minSkillLevel> -->
<maxSkillLevel>10</maxSkillLevel>
<experienceRange>
<min>32000</min>
<max>48000</max>
</experienceRange>
</li>
</skillExperiences>
</li>
</comps>
</AlienRace.ThingDef_AlienRace>
</Defs>

View File

@@ -2,6 +2,14 @@
"Version": 1,
"WorkspaceRootPath": "E:\\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\\pawn_comps\\ara_compskillexperiencegiver\\compskillexperiencegiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_compskillexperiencegiver\\compskillexperiencegiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\pawn_comps\\ara_compskillexperiencegiver\\compproperties_skillexperiencegiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_compskillexperiencegiver\\compproperties_skillexperiencegiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\moharhediffs\\hediffcomp_spawner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\moharhediffs\\hediffcomp_spawner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -27,19 +35,45 @@
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "CompSkillExperienceGiver.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompSkillExperienceGiver.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompSkillExperienceGiver.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompSkillExperienceGiver.cs",
"RelativeToolTip": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompSkillExperienceGiver.cs",
"ViewState": "AgIAAEQAAAAAAAAAAAAgwHkAAAAVAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-01T06:00:46.388Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "CompProperties_SkillExperienceGiver.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs*",
"RelativeToolTip": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs*",
"ViewState": "AgIAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-10-01T06:00:42.508Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "HediffComp_Spawner.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\MoharHediffs\\HediffComp_Spawner.cs",
"RelativeDocumentMoniker": "Hediffs\\MoharHediffs\\HediffComp_Spawner.cs",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\MoharHediffs\\HediffComp_Spawner.cs*",
"RelativeToolTip": "Hediffs\\MoharHediffs\\HediffComp_Spawner.cs*",
"ViewState": "AgIAAKABAAAAAAAAAAAUwLoBAAAUAAAAAAAAAA==",
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\MoharHediffs\\HediffComp_Spawner.cs",
"RelativeToolTip": "Hediffs\\MoharHediffs\\HediffComp_Spawner.cs",
"ViewState": "AgIAAKABAAAAAAAAAAAUwLkBAAARAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-09-30T23:28:37.585Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"DocumentIndex": 3,
"Title": "StatWorker_IncubationInfo.cs",
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Stat\\StatWorker_IncubationInfo.cs",
"RelativeDocumentMoniker": "Stat\\StatWorker_IncubationInfo.cs",

View File

@@ -170,6 +170,8 @@
<Compile Include="Hediffs\WULA_HediffDamgeShield\DRMDamageShield.cs" />
<Compile Include="Hediffs\WULA_HediffDamgeShield\Hediff_DamageShield.cs" />
<Compile Include="Hediff_DynamicInterceptor.cs" />
<Compile Include="Pawn_Comps\ARA_CompSkillExperienceGiver\CompProperties_SkillExperienceGiver.cs" />
<Compile Include="Pawn_Comps\ARA_CompSkillExperienceGiver\CompSkillExperienceGiver.cs" />
<Compile Include="Stat\StatWorker_IncubationInfo.cs" />
<Compile Include="ThingComp_GuardianPsyField.cs" />
<Compile Include="Harmony_ProjectileInterceptor.cs" />

View File

@@ -0,0 +1,46 @@
using RimWorld;
using System;
using System.Collections.Generic;
using Verse;
namespace ArachnaeSwarm
{
public class CompProperties_SkillExperienceGiver : CompProperties
{
// 技能经验配置列表
public List<SkillExperienceConfig> skillExperiences;
// 全局添加概率0-1之间
public float addChance = 1.0f;
// 调试模式
public bool debug = false;
public CompProperties_SkillExperienceGiver()
{
this.compClass = typeof(CompSkillExperienceGiver);
}
}
// 技能经验配置类
public class SkillExperienceConfig
{
// 技能定义
public SkillDef skillDef;
// 基础经验值(如果使用固定值)
public float experienceAmount = 0f;
// 经验范围(如果使用随机值,优先于固定值)
public FloatRange? experienceRange = null;
// 该技能的经验给予概率0-1之间
public float skillChance = 1.0f;
// 可选:最小技能等级限制(只有达到该等级才会给予经验)
public int minSkillLevel = 0;
// 可选:最大技能等级限制(只有低于该等级才会给予经验)
public int maxSkillLevel = 20;
}
}

View File

@@ -0,0 +1,139 @@
using System;
using System.Collections.Generic;
using Verse;
using RimWorld;
namespace ArachnaeSwarm
{
public class CompSkillExperienceGiver : ThingComp
{
public CompProperties_SkillExperienceGiver Props => (CompProperties_SkillExperienceGiver)this.props;
private int ticksToWait = 5; // 等待5个tick确保完全初始化
private bool experienceGiven = false;
public override void PostSpawnSetup(bool respawningAfterLoad)
{
base.PostSpawnSetup(respawningAfterLoad);
// 重置状态
experienceGiven = false;
ticksToWait = 5;
}
public override void CompTick()
{
base.CompTick();
if (!experienceGiven && this.parent is Pawn pawn)
{
if (ticksToWait > 0)
{
ticksToWait--;
return;
}
GiveSkillExperienceToPawn(pawn);
experienceGiven = true;
}
}
private void GiveSkillExperienceToPawn(Pawn pawn)
{
// 安全检查pawn和技能系统
if (pawn == null || pawn.Destroyed || !pawn.Spawned)
return;
if (pawn.skills == null)
return;
// 检查是否有技能经验列表
if (Props.skillExperiences == null || Props.skillExperiences.Count == 0)
return;
// 检查全局概率
if (Props.addChance < 1.0f && Rand.Value > Props.addChance)
return;
// 为每个配置的技能给予经验
foreach (var skillExp in Props.skillExperiences)
{
try
{
// 检查技能定义是否存在
if (skillExp.skillDef == null)
continue;
// 检查技能特定的概率
if (skillExp.skillChance < 1.0f && Rand.Value > skillExp.skillChance)
continue;
// 获取技能记录
SkillRecord skillRecord = pawn.skills.GetSkill(skillExp.skillDef);
// 检查技能是否可用
if (skillRecord == null || skillRecord.TotallyDisabled)
continue;
// 检查技能等级限制
int currentLevel = skillRecord.Level;
if (currentLevel < skillExp.minSkillLevel || currentLevel > skillExp.maxSkillLevel)
continue;
// 给予经验值
float experienceToGive = skillExp.experienceAmount;
// 如果有随机范围,则使用随机值
if (skillExp.experienceRange != null && skillExp.experienceRange.Value.min >= 0)
{
experienceToGive = Rand.Range(skillExp.experienceRange.Value.min, skillExp.experienceRange.Value.max);
}
// 应用经验 - 使用安全的方式
if (experienceToGive > 0)
{
// 直接修改经验值,避免触发绘制相关的计算
skillRecord.xpSinceLastLevel += experienceToGive;
// 检查是否需要升级
int originalLevel = skillRecord.Level;
while (skillRecord.xpSinceLastLevel >= skillRecord.XpRequiredForLevelUp)
{
// 检查是否已达到最大等级
if (skillRecord.Level >= 20) // RimWorld中技能最大等级是20
break;
skillRecord.xpSinceLastLevel -= skillRecord.XpRequiredForLevelUp;
skillRecord.Level++;
}
// 可选:记录日志(调试用)
if (Props.debug)
{
if (skillRecord.Level > originalLevel)
{
Log.Message($"{pawn.LabelShort} gained {experienceToGive} experience in {skillExp.skillDef.label} (Level up: {originalLevel} -> {skillRecord.Level})");
}
else
{
Log.Message($"{pawn.LabelShort} gained {experienceToGive} experience in {skillExp.skillDef.label} (Current level: {skillRecord.Level}, Progress: {skillRecord.xpSinceLastLevel}/{skillRecord.XpRequiredForLevelUp})");
}
}
}
}
catch (Exception ex)
{
// 记录错误但继续处理其他技能
Log.Warning($"Error giving experience to {pawn.LabelShort} for skill {skillExp.skillDef?.defName}: {ex.Message}");
}
}
}
public override void PostExposeData()
{
base.PostExposeData();
Scribe_Values.Look(ref ticksToWait, "ticksToWait", 5);
Scribe_Values.Look(ref experienceGiven, "experienceGiven", false);
}
}
}