讲述者

This commit is contained in:
2025-09-19 12:12:54 +08:00
parent 4e5901a94e
commit b5fe07e968
21 changed files with 463 additions and 31 deletions

Binary file not shown.

View File

@@ -540,7 +540,7 @@
<description>阿拉克涅盾头种对目标发起蓄势冲撞,对路径上的一切造成伤害。在冲击中途经的距离越远,伤害越高。</description>
<iconPath>ArachnaeSwarm/UI/Abilities/ARA_Ability_TrackingCharge</iconPath> <!-- Placeholder Icon -->
<cooldownTicksRange>6000</cooldownTicksRange>
<charges>3</charges>
<charges>2</charges>
<cooldownPerCharge>true</cooldownPerCharge>
<verbProperties>
<verbClass>ArachnaeSwarm.Verb_CastAbilityTrackingCharge</verbClass>
@@ -552,7 +552,7 @@
<canTargetMechs>true</canTargetMechs>
<canTargetSelf>false</canTargetSelf>
</targetParams>
<range>30</range>
<range>18</range>
<warmupTime>1.0</warmupTime>
</verbProperties>
<comps>

View File

@@ -2,6 +2,12 @@
<Defs>
<AlienRace.AlienBackstoryDef Name="ARA_BaseBackStory" Abstract="True">
<requiresSpawnCategory>true</requiresSpawnCategory>
<forcedTraitsChance>
<li>
<defName Degree="1">ARA_CreepyCrawly</defName>
<chance>100</chance>
</li>
</forcedTraitsChance>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
@@ -275,7 +281,6 @@
<li>ArachnaeNode_spawnCategories_Facehugger</li>
</spawnCategories>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef ParentName="ARA_BaseBackStory">
<defName>Arachnae_Node_BS_Adult_NeuroSwarm</defName>
<title>阿拉克涅织域种</title>

View File

@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?>
<Defs>
<StorytellerDef ParentName="BaseStoryteller">
<defName>ARA_Lyne</defName>
<label>「织域种」蛉</label>
<description>蛉是一只阿拉克涅织域种督虫,作为讲述者时行为和「经典」卡桑德拉相近,但是会加强大规模袭击的难度。此外,选择蛉作为讲述者时,将会开启阿拉克涅虫巢的新手引导,以帮助新巢穴适应这个世界。</description>
<portraitLarge>ArachnaeSwarm/Storyteller/ARA_Lyne</portraitLarge>
<portraitTiny>ArachnaeSwarm/Storyteller/ARA_Lyne_TINY</portraitTiny>
<listOrder>20</listOrder>
<comps>
<!-- Intro -->
<!-- <li Class="StorytellerCompProperties_ClassicIntro"/> -->
<!-- 袭击生成器 -->
<li Class="StorytellerCompProperties_OnOffCycle">
<category>ThreatBig</category> <!-- 大型袭击 -->
<minDaysPassed>15.0</minDaysPassed> <!-- 最低在15日后开始生成 -->
<onDays>2</onDays> <!-- 每个周期(12天)有多少天允许生成袭击 -->
<offDays>9</offDays> <!-- 每个周期(12天)有多少天不生成袭击 -->
<minSpacingDays>0.25</minSpacingDays> <!-- 事件最小间隔 -->
<numIncidentsRange>2~3</numIncidentsRange> <!-- 事件点数 -->
<!-- <forceRaidEnemyBeforeDaysPassed>20</forceRaidEnemyBeforeDaysPassed> -->
<disallowedTargetTags>
<li>Map_RaidBeacon</li>
</disallowedTargetTags>
</li>
<li Class="StorytellerCompProperties_OnOffCycle">
<category>ThreatSmall</category>
<minDaysPassed>11.0</minDaysPassed>
<onDays>4.6</onDays>
<offDays>6.0</offDays>
<numIncidentsRange>0.2~1</numIncidentsRange>
<acceptPercentFactorPerThreatPointsCurve>
<points>
<li>(800, 1)</li>
<li>(2800, 0)</li>
</points>
</acceptPercentFactorPerThreatPointsCurve>
</li>
<li Class="StorytellerCompProperties_ThreatsGenerator">
<allowedTargetTags>
<li>Map_RaidBeacon</li>
</allowedTargetTags>
<parms>
<allowedThreats>Raids</allowedThreats>
<onDays>1.0</onDays>
<offDays>0.5</offDays>
<minSpacingDays>0.04</minSpacingDays>
<numIncidentsRange>1~2</numIncidentsRange>
<minThreatPoints>500</minThreatPoints>
</parms>
</li>
<!-- Home misc incidents-->
<li Class="StorytellerCompProperties_CategoryMTB">
<category>Misc</category>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
<minDaysPassed>5</minDaysPassed>
<mtbDays>4.8</mtbDays>
</li>
<li Class="StorytellerCompProperties_ShipChunkDrop"/>
<li Class="StorytellerCompProperties_Disease">
<category>DiseaseHuman</category>
<minDaysPassed>9</minDaysPassed>
</li>
<li Class="StorytellerCompProperties_Disease">
<category>DiseaseAnimal</category>
<minDaysPassed>9</minDaysPassed>
</li>
<!-- Ally/neutral interaction -->
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>RaidFriendly</incident>
<baseIncidentsPerYear>15</baseIncidentsPerYear>
<minSpacingDays>0.4</minSpacingDays>
<fullAlliesOnly>true</fullAlliesOnly>
<minDanger>High</minDanger>
</li>
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>TraderCaravanArrival</incident>
<minDaysPassed>5</minDaysPassed>
<baseIncidentsPerYear>5</baseIncidentsPerYear>
<minSpacingDays>6</minSpacingDays>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>VisitorGroup</incident>
<minDaysPassed>3</minDaysPassed>
<baseIncidentsPerYear>4</baseIncidentsPerYear>
<minSpacingDays>5</minSpacingDays>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>TravelerGroup</incident>
<minDaysPassed>1</minDaysPassed>
<baseIncidentsPerYear>6</baseIncidentsPerYear>
<minSpacingDays>1</minSpacingDays>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
</li>
<!-- Caravan / temp map -->
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
<category>Misc</category>
<allowedTargetTags>
<li>Caravan</li>
<li>Map_TempIncident</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
<category>ThreatSmall</category>
<applyCaravanVisibility>true</applyCaravanVisibility>
<allowedTargetTags>
<li>Caravan</li>
<li>Map_TempIncident</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
<category>ThreatBig</category>
<applyCaravanVisibility>true</applyCaravanVisibility>
<allowedTargetTags>
<li>Caravan</li>
<li>Map_TempIncident</li>
</allowedTargetTags>
</li>
<!-- Quests - non-Royalty -->
<li Class="StorytellerCompProperties_RandomQuest">
<category>GiveQuest</category>
<allowedTargetTags>
<li>World</li>
</allowedTargetTags>
<onDays>10</onDays>
<numIncidentsRange>1</numIncidentsRange>
<acceptFractionByDaysPassedCurve>
<points>
<li>(8, 0)</li>
<li>(15, 1)</li>
</points>
</acceptFractionByDaysPassedCurve>
<minSpacingDays>3</minSpacingDays>
<disableIfAnyModActive>
<li>Ludeon.RimWorld.Royalty</li>
</disableIfAnyModActive>
</li>
<!-- Quests - Royalty -->
<li Class="StorytellerCompProperties_RandomQuest">
<category>GiveQuest</category>
<allowedTargetTags>
<li>World</li>
</allowedTargetTags>
<onDays>12</onDays>
<numIncidentsRange>2</numIncidentsRange>
<acceptFractionByDaysPassedCurve>
<points>
<li>(8, 0)</li>
<li>(15, 1)</li>
</points>
</acceptFractionByDaysPassedCurve>
<minSpacingDays>3</minSpacingDays>
<enableIfAnyModActive>
<li>Ludeon.RimWorld.Royalty</li>
</enableIfAnyModActive>
</li>
<!-- World misc incidents-->
<li Class="StorytellerCompProperties_CategoryMTB">
<category>Misc</category>
<allowedTargetTags>
<li>World</li>
</allowedTargetTags>
<minDaysPassed>15</minDaysPassed>
<mtbDays>15</mtbDays>
</li>
<!-- Orbital trader -->
<li Class="StorytellerCompProperties_OnOffCycle">
<incident>OrbitalTraderArrival</incident>
<onDays>7</onDays>
<offDays>8</offDays>
<numIncidentsRange>1</numIncidentsRange>
</li>
<!-- Triggered -->
<li Class="StorytellerCompProperties_Triggered">
<incident>StrangerInBlackJoin</incident>
<delayTicks>180</delayTicks>
</li>
</comps>
</StorytellerDef>
<StorytellerDef ParentName="BaseStoryteller">
<defName>ARA_Lyne_Angry</defName>
<label>「织域种」蛉</label>
<description>看起来不太高兴的蛉,不会启用阿拉克涅虫群的新手教学,并且会毫无节制地发送各种袭击——往好处想,至少殖民地不缺吃的了。</description>
<portraitLarge>ArachnaeSwarm/Storyteller/ARA_Lyne_Angry</portraitLarge>
<portraitTiny>ArachnaeSwarm/Storyteller/ARA_Lyne_Angry_TINY</portraitTiny>
<listOrder>20</listOrder>
<comps>
<!-- Intro -->
<!-- <li Class="StorytellerCompProperties_ClassicIntro"/> -->
<!-- 袭击生成器 -->
<li Class="StorytellerCompProperties_OnOffCycle">
<category>ThreatBig</category> <!-- 大型袭击 -->
<minDaysPassed>15.0</minDaysPassed> <!-- 最低在15日后开始生成 -->
<onDays>1</onDays> <!-- 每个周期(12天)有多少天允许生成袭击 -->
<offDays>0</offDays> <!-- 每个周期(12天)有多少天不生成袭击 -->
<minSpacingDays>0.25</minSpacingDays> <!-- 事件最小间隔 -->
<numIncidentsRange>2~3</numIncidentsRange> <!-- 事件点数 -->
<!-- <forceRaidEnemyBeforeDaysPassed>20</forceRaidEnemyBeforeDaysPassed> -->
<disallowedTargetTags>
<li>Map_RaidBeacon</li>
</disallowedTargetTags>
</li>
<li Class="StorytellerCompProperties_OnOffCycle">
<category>ThreatSmall</category>
<minDaysPassed>11.0</minDaysPassed>
<onDays>1</onDays>
<offDays>0</offDays>
<numIncidentsRange>0.2~1</numIncidentsRange>
<acceptPercentFactorPerThreatPointsCurve>
<points>
<li>(800, 1)</li>
<li>(2800, 0)</li>
</points>
</acceptPercentFactorPerThreatPointsCurve>
</li>
<li Class="StorytellerCompProperties_ThreatsGenerator">
<allowedTargetTags>
<li>Map_RaidBeacon</li>
</allowedTargetTags>
<parms>
<allowedThreats>Raids</allowedThreats>
<onDays>1.0</onDays>
<offDays>0</offDays>
<minSpacingDays>0.04</minSpacingDays>
<numIncidentsRange>1~2</numIncidentsRange>
<minThreatPoints>500</minThreatPoints>
</parms>
</li>
<!-- Home misc incidents-->
<li Class="StorytellerCompProperties_CategoryMTB">
<category>Misc</category>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
<minDaysPassed>5</minDaysPassed>
<mtbDays>4.8</mtbDays>
</li>
<li Class="StorytellerCompProperties_ShipChunkDrop"/>
<li Class="StorytellerCompProperties_Disease">
<category>DiseaseHuman</category>
<minDaysPassed>9</minDaysPassed>
</li>
<li Class="StorytellerCompProperties_Disease">
<category>DiseaseAnimal</category>
<minDaysPassed>9</minDaysPassed>
</li>
<!-- Ally/neutral interaction -->
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>RaidFriendly</incident>
<baseIncidentsPerYear>15</baseIncidentsPerYear>
<minSpacingDays>0.4</minSpacingDays>
<fullAlliesOnly>true</fullAlliesOnly>
<minDanger>High</minDanger>
</li>
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>TraderCaravanArrival</incident>
<minDaysPassed>5</minDaysPassed>
<baseIncidentsPerYear>5</baseIncidentsPerYear>
<minSpacingDays>6</minSpacingDays>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>VisitorGroup</incident>
<minDaysPassed>3</minDaysPassed>
<baseIncidentsPerYear>4</baseIncidentsPerYear>
<minSpacingDays>5</minSpacingDays>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_FactionInteraction">
<incident>TravelerGroup</incident>
<minDaysPassed>1</minDaysPassed>
<baseIncidentsPerYear>6</baseIncidentsPerYear>
<minSpacingDays>1</minSpacingDays>
<allowedTargetTags>
<li>Map_PlayerHome</li>
</allowedTargetTags>
</li>
<!-- Caravan / temp map -->
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
<category>Misc</category>
<allowedTargetTags>
<li>Caravan</li>
<li>Map_TempIncident</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
<category>ThreatSmall</category>
<applyCaravanVisibility>true</applyCaravanVisibility>
<allowedTargetTags>
<li>Caravan</li>
<li>Map_TempIncident</li>
</allowedTargetTags>
</li>
<li Class="StorytellerCompProperties_CategoryIndividualMTBByBiome">
<category>ThreatBig</category>
<applyCaravanVisibility>true</applyCaravanVisibility>
<allowedTargetTags>
<li>Caravan</li>
<li>Map_TempIncident</li>
</allowedTargetTags>
</li>
<!-- Quests - non-Royalty -->
<li Class="StorytellerCompProperties_RandomQuest">
<category>GiveQuest</category>
<allowedTargetTags>
<li>World</li>
</allowedTargetTags>
<onDays>10</onDays>
<numIncidentsRange>1</numIncidentsRange>
<acceptFractionByDaysPassedCurve>
<points>
<li>(8, 0)</li>
<li>(15, 1)</li>
</points>
</acceptFractionByDaysPassedCurve>
<minSpacingDays>3</minSpacingDays>
<disableIfAnyModActive>
<li>Ludeon.RimWorld.Royalty</li>
</disableIfAnyModActive>
</li>
<!-- Quests - Royalty -->
<li Class="StorytellerCompProperties_RandomQuest">
<category>GiveQuest</category>
<allowedTargetTags>
<li>World</li>
</allowedTargetTags>
<onDays>12</onDays>
<numIncidentsRange>2</numIncidentsRange>
<acceptFractionByDaysPassedCurve>
<points>
<li>(8, 0)</li>
<li>(15, 1)</li>
</points>
</acceptFractionByDaysPassedCurve>
<minSpacingDays>3</minSpacingDays>
<enableIfAnyModActive>
<li>Ludeon.RimWorld.Royalty</li>
</enableIfAnyModActive>
</li>
<!-- World misc incidents-->
<li Class="StorytellerCompProperties_CategoryMTB">
<category>Misc</category>
<allowedTargetTags>
<li>World</li>
</allowedTargetTags>
<minDaysPassed>15</minDaysPassed>
<mtbDays>15</mtbDays>
</li>
<!-- Orbital trader -->
<li Class="StorytellerCompProperties_OnOffCycle">
<incident>OrbitalTraderArrival</incident>
<onDays>7</onDays>
<offDays>8</offDays>
<numIncidentsRange>1</numIncidentsRange>
</li>
<!-- Triggered -->
<li Class="StorytellerCompProperties_Triggered">
<incident>StrangerInBlackJoin</incident>
<delayTicks>180</delayTicks>
</li>
</comps>
</StorytellerDef>
</Defs>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThoughtDef>
<defName>ARA_CreepyCrawly</defName>
<workerClass>ThoughtWorker_Hediff</workerClass>
<hediff>ARA_HiveMindDrone</hediff>
<validWhileDespawned>true</validWhileDespawned>
<stages>
<li>
<label>原始恐惧</label>
<description>受不了了,快把这些虫子从我身边支开!</description>
<baseMoodEffect>-30</baseMoodEffect>
</li>
</stages>
</ThoughtDef>
</Defs>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<TraitDef>
<defName>ARA_CreepyCrawly</defName>
<commonality>0</commonality>
<degreeDatas>
<li>
<label>节肢类类动物</label>
<description>{PAWN_nameDef} 是一只巨大的节肢类昆虫,多对附肢、镜面反光的外骨骼和扭动的分节身体足以引发人类心底埋藏的强烈恐惧感。\n\n额你该不会真以为它们是一群美少女吧</description>
<marketValueFactorOffset>-1</marketValueFactorOffset>
</li>
</degreeDatas>
</TraitDef>
</Defs>