pawn的全局生产

This commit is contained in:
2025-11-05 11:54:50 +08:00
parent 52951c1a00
commit 19f803bd7d
13 changed files with 239 additions and 401 deletions

View File

@@ -4,25 +4,14 @@
<defName>WULA_Child_Backstory01</defName>
<ignoreIllegalLabelCharacterConfigError>False</ignoreIllegalLabelCharacterConfigError>
<slot>Childhood</slot>
<title>旧日遗物</title>
<titleShort>旧日遗物</titleShort>
<title>产地:</title>
<titleShort></titleShort>
<description>[PAWN_nameDef] 是诞生于乌拉帝国的合成人。</description>
<skillGains>
<Shooting>3</Shooting>
<Melee>3</Melee>
<Construction>3</Construction>
<Mining>3</Mining>
<Cooking>3</Cooking>
<Plants>3</Plants>
<Animals>3</Animals>
<Crafting>3</Crafting>
<Artistic>3</Artistic>
<Medicine>3</Medicine>
<Social>3</Social>
<Intellectual>3</Intellectual>
</skillGains>
<spawnCategories>
<li>Wula_Old_Synth_Backstory_Categories</li>
<li>Wula_Backstory_Categories</li>
</spawnCategories>
<requiredWorkTags>None</requiredWorkTags>
@@ -38,17 +27,4 @@
</li>
</forcedTraitsChance>
</AlienRace.AlienBackstoryDef>
<AlienRace.AlienBackstoryDef>
<defName>WULA_Child_Backstory999</defName>
<ignoreIllegalLabelCharacterConfigError>False</ignoreIllegalLabelCharacterConfigError>
<slot>Childhood</slot>
<title>未知</title>
<titleShort>未知</titleShort>
<description>[PAWN_nameDef] 是真正的乌拉星人,但是无人知晓她诞生于何时——自从乌拉帝国大内战后,这个衰退的超级帝国已经很久很久没有诞生任何新生命了。</description>
<spawnCategories>
<li>Wula_Backstory_Categories_For_RealWula</li>
</spawnCategories>
<requiredWorkTags>None</requiredWorkTags>
</AlienRace.AlienBackstoryDef>
</Defs>

View File

@@ -10,7 +10,6 @@
<pawnsPlural>colonists</pawnsPlural>
<techLevel>Spacer</techLevel>
<backstoryCategories>
<li>Wula_Old_Synth_Backstory_Categories</li>
<li>Wula_Backstory_Categories</li>
</backstoryCategories>
<!-- 命名规则 -->
@@ -159,8 +158,7 @@
<dropPodActive>ActiveDropPodMechanoid</dropPodActive>
<dropPodIncoming>DropPodIncomingMechanoidRapid</dropPodIncoming>
<backstoryCategories>
<li>Wula_Backstory_Categories_For_Hostile_Faction</li>
<li>Wula_Old_Synth_Backstory_Categories</li>
<li>Wula_Backstory_Categories</li>
</backstoryCategories>
</FactionDef>
</Defs>

View File

@@ -4,7 +4,7 @@
<defName>Wula_PawnKind</defName>
<label>机械乌拉</label>
<race>WulaSpecies</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<defaultFactionDef>PlayerColony</defaultFactionDef>
<lifeStages>
<li>
<bodyGraphicData>
@@ -19,7 +19,8 @@
</bodyGraphicData>
</li>
</lifeStages>
<minGenerationAge MayRequire="Ludeon.RimWorld.Biotech">18</minGenerationAge>
<minGenerationAge>18</minGenerationAge>
<maxGenerationAge>20</maxGenerationAge>
<forceNormalGearQuality>true</forceNormalGearQuality>
<combatPower>0</combatPower>
<initialWillRange>10~20</initialWillRange>
@@ -39,96 +40,6 @@
<li>
<categories>
<li>Wula_Backstory_Categories</li>
<li>Wula_Old_Synth_Backstory_Categories</li>
</categories>
</li>
</backstoryFiltersOverride>
</PawnKindDef>
<PawnKindDef>
<defName>Wula_PawnKind_Ingame</defName>
<label>机械乌拉</label>
<race>WulaSpecies</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Wula/Item/WULA_Species_Icon</texPath>
<maskPath>SRA/Pawn/Mechanoid/AllegianceOverlays/None</maskPath>
<shaderType>CutoutWithOverlay</shaderType>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>1.1</drawSize>
<shadowData>
<volume>(0.2, 0.3, 0.2)</volume>
</shadowData>
</bodyGraphicData>
</li>
</lifeStages>
<minGenerationAge MayRequire="Ludeon.RimWorld.Biotech">18</minGenerationAge>
<combatPower>0</combatPower>
<initialWillRange>10~20</initialWillRange>
<initialResistanceRange>10~20</initialResistanceRange>
<itemQuality>Poor</itemQuality>
<isFighter>false</isFighter>
<apparelTags>
<li>Wula_Apparel_Init</li>
</apparelTags>
<abilities>
</abilities>
<apparelRequired Inherit="False" />
<weaponMoney>0</weaponMoney>
<apparelAllowHeadgearChance>0</apparelAllowHeadgearChance>
<apparelMoney>0</apparelMoney>
<backstoryFiltersOverride>
<li>
<categories>
<li>Wula_Backstory_Categories</li>
<li>Wula_Old_Synth_Backstory_Categories</li>
</categories>
</li>
</backstoryFiltersOverride>
</PawnKindDef>
<PawnKindDef>
<defName>RealWula_PawnKind</defName>
<label>乌拉</label>
<race>WulaSpeciesReal</race>
<defaultFactionType>PlayerColony</defaultFactionType>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Wula/Item/WULA_Species_Icon</texPath>
<maskPath>SRA/Pawn/Mechanoid/AllegianceOverlays/None</maskPath>
<shaderType>CutoutWithOverlay</shaderType>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>1.1</drawSize>
<shadowData>
<volume>(0.2, 0.3, 0.2)</volume>
</shadowData>
</bodyGraphicData>
</li>
</lifeStages>
<minGenerationAge MayRequire="Ludeon.RimWorld.Biotech">18</minGenerationAge>
<forceNormalGearQuality>true</forceNormalGearQuality>
<combatPower>0</combatPower>
<initialWillRange>10~20</initialWillRange>
<initialResistanceRange>10~20</initialResistanceRange>
<itemQuality>Poor</itemQuality>
<isFighter>false</isFighter>
<apparelTags>
<li>Wula_Apparel_Init</li>
</apparelTags>
<abilities>
</abilities>
<weaponMoney>0</weaponMoney>
<apparelAllowHeadgearChance>0</apparelAllowHeadgearChance>
<apparelMoney>1000~2000</apparelMoney>
<backstoryFiltersOverride>
<li>
<categories>
<li>Wula_Backstory_Categories_For_RealWula</li>
</categories>
</li>
</backstoryFiltersOverride>
@@ -362,8 +273,7 @@
<backstoryFiltersOverride>
<li>
<categories>
<li>Wula_Backstory_Categories_For_Hostile_Faction</li>
<li>Wula_Old_Synth_Backstory_Categories</li>
<li>Wula_Backstory_Categories</li>
</categories>
</li>
</backstoryFiltersOverride>

View File

@@ -339,6 +339,37 @@
</researchPrerequisites>
</RecipeDef>
<RecipeDef ParentName="LightMechanoidRecipe">
<defName>WULA_Build_Wula_Synth</defName>
<label>建造URa-00"机械乌拉"</label>
<description>建造一台URa-00"机械乌拉"合成人,是乌拉帝国合成人殖民地的主体种族,作为机械体的同时拥有复杂拟真的模拟情感。\n\n以此方法建造的合成人被称为新生代合成人它们在出厂时只会设置人格不会拥有任何技能等级需要通过乌拉帝国数据库下载相关技能</description>
<ingredients Inherit="False">
<li>
<filter>
<thingDefs>
<li>Steel</li>
</thingDefs>
</filter>
<count>5</count>
</li>
<li>
<filter>
<thingDefs>
<li>ComponentIndustrial</li>
</thingDefs>
</filter>
<count>6</count>
</li>
</ingredients>
<products>
<WulaSpecies>1</WulaSpecies>
</products>
<descriptionHyperlinks>
<ThingDef>WulaSpecies</ThingDef>
</descriptionHyperlinks>
<researchPrerequisite>WULA_Synth_Productor_Technology</researchPrerequisite>
</RecipeDef>
<RecipeDef ParentName="HeavyMechanoidRecipe">
<defName>WULA_Build_AI_Heavy_Panzer</defName>
<label>建造SMp-38"萨克森"</label>
@@ -352,14 +383,14 @@
</filter>
<count>600</count>
</li>
<li>
<!-- <li>
<filter>
<thingDefs>
<li>Plasteel</li>
</thingDefs>
</filter>
<count>250</count>
</li>
</li> -->
<li>
<filter>
<thingDefs>
@@ -368,14 +399,14 @@
</filter>
<count>24</count>
</li>
<li>
<!-- <li>
<filter>
<thingDefs>
<li>ComponentSpacer</li>
</thingDefs>
</filter>
<count>4</count>
</li>
</li> -->
</ingredients>
<products>
<Wula_AI_Heavy_Panzer>1</Wula_AI_Heavy_Panzer>
@@ -525,68 +556,6 @@
<researchPrerequisite>WULA_Alpha_Wolf_Technology</researchPrerequisite>
</RecipeDef>
<RecipeDef ParentName="LightMechanoidRecipe">
<defName>WULA_Build_Wula_Synth</defName>
<label>建造URa-00"机械乌拉"</label>
<description>建造一台URa-00"机械乌拉"合成人,是乌拉帝国合成人殖民地的主体种族,作为机械体的同时拥有复杂拟真的模拟情感。\n\n以此方法建造的合成人被称为新生代合成人它们在出厂时只会设置人格不会拥有任何技能等级需要通过乌拉帝国数据库下载相关技能</description>
<ingredients Inherit="False">
<li>
<filter>
<thingDefs>
<li>WULA_Addons_Antenna_Base</li>
</thingDefs>
</filter>
<count>1</count>
</li>
<li>
<filter>
<thingDefs>
<li>WULA_Energy_Furnace_Base</li>
</thingDefs>
</filter>
<count>1</count>
</li>
<li>
<filter>
<thingDefs>
<li>WULA_Charge_Cube</li>
</thingDefs>
</filter>
<count>30</count>
</li>
<li>
<filter>
<thingDefs>
<li>Chemfuel</li>
</thingDefs>
</filter>
<count>140</count>
</li>
<li>
<filter>
<thingDefs>
<li>Steel</li>
</thingDefs>
</filter>
<count>400</count>
</li>
<li>
<filter>
<thingDefs>
<li>ComponentIndustrial</li>
</thingDefs>
</filter>
<count>8</count>
</li>
</ingredients>
<products>
<WulaSpecies>1</WulaSpecies>
</products>
<descriptionHyperlinks>
<ThingDef>WulaSpecies</ThingDef>
</descriptionHyperlinks>
<researchPrerequisite>WULA_Synth_Productor_Technology</researchPrerequisite>
</RecipeDef>
<RecipeDef ParentName="LightMechanoidRecipe">
<defName>WULA_Build_Mech_Cat</defName>

View File

@@ -6,11 +6,12 @@
<heldByFactionCategoryTags Inherit="False" />
</ResearchProjectDef>
<!-- LV1 -->
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Base_Technology</defName>
<label>基础维生套件</label>
<description>获取可以支持乌拉帝国合成人独自生存的各种知识,包括能源获取、修复基础部位损伤、建造维修站等。</description>
<baseCost>300</baseCost>
<defName>WULA_Colony_License_LV1_Technology</defName>
<label>乌拉帝国殖民地许可等级1</label>
<description>乌拉帝国的第一阶殖民地许可,代表此殖民地正式被乌拉帝国承认为其下辖殖民地之一,允许建立与乌拉帝国舰队进行通讯的设施。(只有机械乌拉才能呼叫舰队)</description>
<baseCost>35000</baseCost>
<researchViewX>0.00</researchViewX>
<researchViewY>3.20</researchViewY>
<prerequisites>
@@ -19,15 +20,64 @@
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Structure_Technology</defName>
<label>结构构件套件</label>
<description>获取构建乌拉帝国堡垒结构的知识,包括坚固耐用的墙和通过速度较高的自动门。</description>
<label>结构构件空投许可</label>
<description>允许殖民地申请空投乌拉帝国堡垒结构,包括坚固耐用的墙和通过速度较高的自动门。</description>
<baseCost>600</baseCost>
<researchViewX>1.00</researchViewX>
<researchViewY>4.70</researchViewY>
<prerequisites>
<li>WULA_Base_Technology</li>
<li>WULA_Colony_License_LV1_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Clothes_Technology</defName>
<researchViewX>1.00</researchViewX>
<researchViewY>2.60</researchViewY>
<label>基础衣物加工许可</label>
<description>许殖民地申请加工基础衣物</description>
<baseCost>400</baseCost>
<prerequisites>
<li>ComplexClothing</li>
<li>WULA_Colony_License_LV1_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Weapon_Technology</defName>
<researchViewX>1.00</researchViewX>
<researchViewY>0.20</researchViewY>
<label>基础武装加工许可</label>
<description>开发能够武装乌拉帝国合成人的老式气动武器,以抵御针对殖民地的外部袭击。</description>
<baseCost>600</baseCost>
<prerequisites>
<li>Machining</li>
<li>WULA_Colony_License_LV1_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Bunker_Drop_Technology</defName>
<researchViewX>1.00</researchViewX>
<researchViewY>0.20</researchViewY>
<label>地堡空投许可</label>
<description>开发能够武装乌拉帝国合成人的老式气动武器,以抵御针对殖民地的外部袭击。</description>
<baseCost>600</baseCost>
<prerequisites>
<li>Machining</li>
<li>WULA_Colony_License_LV1_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Productor_Technology</defName>
<label>合成人空投许可</label>
<description>获取构建乌拉帝国合成人的相关知识,以增加殖民地人口。</description>
<baseCost>1000</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>5.50</researchViewY>
<prerequisites>
<li>WULA_Machine_Productor_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Adv_WorkTable_Technology</defName>
<researchViewX>3.00</researchViewX>
@@ -64,18 +114,6 @@
</prerequisites>
</ResearchProjectDef>
<!-- 衣服 -->
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Clothes_Technology</defName>
<researchViewX>1.00</researchViewX>
<researchViewY>2.60</researchViewY>
<label>基础衣物套件</label>
<description>开发能够被乌拉帝国合成人穿着的基础衣物。</description>
<baseCost>400</baseCost>
<prerequisites>
<li>ComplexClothing</li>
<li>WULA_Base_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Clothes_2_Technology</defName>
<researchViewX>4.50</researchViewX>
@@ -124,18 +162,6 @@
</prerequisites>
</ResearchProjectDef>
<!-- 武器 -->
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Weapon_Technology</defName>
<researchViewX>1.00</researchViewX>
<researchViewY>0.20</researchViewY>
<label>基础武装套件</label>
<description>开发能够武装乌拉帝国合成人的老式气动武器,以抵御针对殖民地的外部袭击。</description>
<baseCost>600</baseCost>
<prerequisites>
<li>Machining</li>
<li>WULA_Base_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Weapon_2_Melee_Technology</defName>
<label>短兵武装套件</label>
@@ -275,17 +301,6 @@
<li>WULA_Base_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Synth_Productor_Technology</defName>
<label>合成人构建套件</label>
<description>获取构建乌拉帝国合成人的相关知识,以增加殖民地人口。</description>
<baseCost>1000</baseCost>
<researchViewX>2.00</researchViewX>
<researchViewY>5.50</researchViewY>
<prerequisites>
<li>WULA_Machine_Productor_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_Machine_Productor_1_Technology</defName>
<researchViewX>3.00</researchViewX>

View File

@@ -950,6 +950,9 @@
<MaxHitPoints>180</MaxHitPoints>
<Flammability>1.0</Flammability>
</statBases>
<recipes>
<li>WULA_Build_Wula_Synth</li>
</recipes>
<size>(3,3)</size>
<uiOrder>2120</uiOrder>
<passability>PassThroughOnly</passability>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<!-- 仅在开局时刷出 -->
<ThingDef ParentName="BuildingBase">
<defName>WULA_Fake_Mothership_Beacon_Building</defName>
<label>帝国母舰信标</label>

View File

@@ -730,8 +730,17 @@
<ComponentIndustrial>4</ComponentIndustrial>
</butcherProducts>
<recipes>
</recipes>
<!-- 按理来说原版写在这里的costlist和recipemaker是无效的然而全局生产组件读取的是thing上面的属性 -->
<!-- 但是对应pawn仍需要定义一个专门的recipe否则产物数量会异常 -->
<costList Inherit="False">
<Steel>5</Steel>
<ComponentIndustrial>6</ComponentIndustrial>
</costList>
<recipeMaker>
<recipeUsers Inherit="False">
<li>WULA_WeaponArmor_Productor</li>
</recipeUsers>
</recipeMaker>
<comps>
<li Class="CompProperties_Stunnable">
@@ -782,155 +791,6 @@
</comps>
</AlienRace.ThingDef_AlienRace>
<AlienRace.ThingDef_AlienRace ParentName="Race_Wula_Machine">
<defName>WulaSpeciesReal</defName>
<label>乌拉星人</label>
<description>一个源自远古时代的种族。她们曾将荣光播撒至银河的每一个角落,建立起庞大而强盛的乌拉帝国。然而,辉煌未能永恒,无情的分裂与惨烈的内战最终撕裂了这个帝国,将其拖入了衰亡的深渊,这些人则是乌拉帝国万古长战后仅存的遗孤。</description>
<uiIconPath>Wula/Things/WulaSpeciesReal/WULA_Species_Icon</uiIconPath>
<alienRace>
<!-- 核心设置 -->
<generalSettings>
<!-- 乌拉族的床是正常的 -->
<validBeds Inherit="False" />
<!-- 各种零件定义 -->
<alienPartGenerator>
<!-- 额外身体部件 -->
<bodyAddons Inherit="False">
<li>
<path>Wula/Things/WulaSpeciesReal/Addons/WULA_Bow_Tie</path>
<offsets>
<south>
<offset>(0,0.32)</offset>
</south>
<north>
<offset>(0,0.32)</offset>
</north>
<east>
<offset>(-0.1,0.32)</offset>
</east>
<west>
<offset>(-0.1,0.32)</offset>
</west>
</offsets>
<inFrontOfBody>true</inFrontOfBody>
</li>
</bodyAddons>
</alienPartGenerator>
<!-- 额外特质暂时设为0 -->
<additionalTraits>0</additionalTraits>
</generalSettings>
<!-- 图形 -->
<graphicPaths>
<body>Wula/Things/WulaSpeciesReal/Bodies/</body>
<head>Wula/Things/WulaSpeciesReal/Heads/</head>
<skeleton>Things/Pawn/Humanlike/Bodies/Dessicated/Dessicated_Thin</skeleton>
<stump>Wula/Things/WulaSpeciesReal/Bodies</stump>
</graphicPaths>
<!-- 种族的允许和禁止特化设置 -->
<raceRestriction>
<!-- 食物列表 -->
<foodList Inherit="False" />
<onlyEatRaceRestrictedFood>false</onlyEatRaceRestrictedFood>
<!-- 允许的特质类型 -->
<traitList Inherit="False" />
</raceRestriction>
<!-- 想法设置 -->
<thoughtSettings>
<!-- 不会产生的想法 -->
<cannotReceiveThoughts Inherit="False" />
</thoughtSettings>
<!-- 关系设置,不会生成任何随机关系 -->
<relationSettings Inherit="False" />
<!-- 兼容性标签,非必要 -->
<compatibility>
<isFlesh>true</isFlesh>
</compatibility>
</alienRace>
<!-- 以下是原版标签 -->
<!-- 受击音效 -->
<soundImpactDefault>BulletImpact_Flesh</soundImpactDefault>
<statBases>
<MoveSpeed>4</MoveSpeed>
<EatingSpeed>1</EatingSpeed>
<!-- 温度适应性 -->
<ComfyTemperatureMin>-50</ComfyTemperatureMin>
<ComfyTemperatureMax>40</ComfyTemperatureMax>
<!-- 心灵敏感,稍高 -->
<PsychicSensitivity>1.25</PsychicSensitivity>
<!-- 肉量 -->
<MeatAmount>60</MeatAmount>
<!-- 皮革量 -->
<LeatherAmount>75</LeatherAmount>
<!-- 谈判能力 -->
<NegotiationAbility>1</NegotiationAbility>
<!-- 社交效果,机械乌拉社交的影响很小 -->
<SocialImpact>1</SocialImpact>
<!-- 挖矿速度 -->
<MiningSpeed>1</MiningSpeed>
<!-- 采矿效率 -->
<MiningYield>1</MiningYield>
<!-- 种植速度 -->
<PlantWorkSpeed>1</PlantWorkSpeed>
<!-- 狩猎隐蔽 -->
<HuntingStealth>1</HuntingStealth>
<!-- 建造速度 -->
<ConstructionSpeed>1</ConstructionSpeed>
<!-- 研究速度 -->
<ResearchSpeed>1</ResearchSpeed>
<VacuumResistance MayRequire="Ludeon.RimWorld.Odyssey">0</VacuumResistance>
</statBases>
<race>
<fleshType>Normal</fleshType>
<thinkTreeMain>Humanlike</thinkTreeMain>
<thinkTreeConstant>HumanlikeConstant</thinkTreeConstant>
<intelligence>Humanlike</intelligence>
<bloodDef>Filth_Blood</bloodDef>
<baseHealthScale>1</baseHealthScale>
<leatherDef>Leather_Human</leatherDef>
<specificMeatDef>Meat_Human</specificMeatDef>
<!-- 身体类型 -->
<body>Human</body>
<foodType>OmnivoreHuman</foodType>
<!-- 年龄阶段 -->
<lifeExpectancy>150</lifeExpectancy>
<canFlyInVacuum>false</canFlyInVacuum>
</race>
<comps Inherit="False">
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.DrawFaceGraphicsComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.HeadControllerComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.EyeballControllerComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.LidControllerComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.BrowControllerComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.MouthControllerComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.SkinControllerComp</compClass>
</li>
<li MayRequire="Nals.FacialAnimation">
<compClass>FacialAnimation.FacialAnimationControllerComp</compClass>
</li>
<!--<li>
<compClass>FacialAnimation.EmotionControllerComp</compClass>
</li>-->
<!-- <li Class="CompProperties_DrugAddict"/> -->
</comps>
</AlienRace.ThingDef_AlienRace>
<!-- 乌拉基础机械族类 -->
<ThingDef ParentName="BasePawn" Name="WULA_BaseMechanoid" Abstract="True">
<soundImpactDefault>BulletImpact_Metal</soundImpactDefault>
@@ -1115,8 +975,6 @@
</statBases>
</ThingDef>
<ThingDef Name="Wula_AI_Heavy_Panzer" ParentName="HeavyMechanoid">
<defName>Wula_AI_Heavy_Panzer</defName>
<label>SMp-38"萨克森"</label>

View File

@@ -230,7 +230,7 @@ namespace WulaFallenEmpire
private List<List<Thing>> DistributeItemsToPods(GlobalStorageWorldComponent storage, int podCount)
{
List<List<Thing>> podContents = new List<List<Thing>>();
// 初始化空投舱内容列表
for (int i = 0; i < podCount; i++)
{
@@ -246,14 +246,31 @@ namespace WulaFallenEmpire
ThingDef thingDef = kvp.Key;
int remainingCount = kvp.Value;
// 按照堆叠限制分割物品
while (remainingCount > 0)
// 如果是Pawn需要特殊处理
if (thingDef.race != null)
{
int stackSize = Mathf.Min(remainingCount, thingDef.stackLimit);
Thing thing = ThingMaker.MakeThing(thingDef);
thing.stackCount = stackSize;
allItems.Add(thing);
remainingCount -= stackSize;
// 对于Pawn每个单独生成
for (int i = 0; i < remainingCount; i++)
{
PawnKindDef randomPawnKind = GetRandomPawnKindForType(thingDef);
if (randomPawnKind != null)
{
Pawn pawn = PawnGenerator.GeneratePawn(randomPawnKind, Faction.OfPlayer);
allItems.Add(pawn);
}
}
}
else
{
// 对于普通物品,按照堆叠限制分割
while (remainingCount > 0)
{
int stackSize = Mathf.Min(remainingCount, thingDef.stackLimit);
Thing thing = ThingMaker.MakeThing(thingDef);
thing.stackCount = stackSize;
allItems.Add(thing);
remainingCount -= stackSize;
}
}
}
@@ -277,6 +294,89 @@ namespace WulaFallenEmpire
return podContents;
}
// 在 Building_GlobalWorkTable.cs 中修改 GetRandomPawnKindForType 方法
private PawnKindDef GetRandomPawnKindForType(ThingDef pawnType)
{
if (pawnType.race == null) return null;
// 获取建筑拥有者派系
Faction buildingFaction = this.Faction;
if (buildingFaction == null)
{
Log.Warning("Building has no faction, cannot select appropriate pawn kind");
return null;
}
// 获取该种族的所有PawnKindDef
var availableKinds = DefDatabase<PawnKindDef>.AllDefs
.Where(kind => kind.race == pawnType)
.ToList();
if (availableKinds.Count == 0) return null;
// 按优先级分组
var matchingFactionKinds = availableKinds
.Where(kind => kind.defaultFactionDef != null &&
kind.defaultFactionDef == buildingFaction.def)
.ToList();
var noFactionKinds = availableKinds
.Where(kind => kind.defaultFactionDef == null)
.ToList();
// 排除与建筑派系不同的PawnKind
var excludedKinds = availableKinds
.Where(kind => kind.defaultFactionDef != null &&
kind.defaultFactionDef != buildingFaction.def)
.ToList();
// 记录调试信息
if (DebugSettings.godMode)
{
Log.Message($"[DEBUG] PawnKind selection for {pawnType.defName}:");
Log.Message($" Building faction: {buildingFaction.def.defName}");
Log.Message($" Matching faction kinds: {matchingFactionKinds.Count}");
Log.Message($" No faction kinds: {noFactionKinds.Count}");
Log.Message($" Excluded kinds: {excludedKinds.Count}");
foreach (var kind in matchingFactionKinds)
Log.Message($" Matching: {kind.defName} (faction: {kind.defaultFactionDef?.defName ?? "null"})");
foreach (var kind in noFactionKinds)
Log.Message($" No faction: {kind.defName}");
foreach (var kind in excludedKinds)
Log.Message($" Excluded: {kind.defName} (faction: {kind.defaultFactionDef?.defName})");
}
// 优先级选择
PawnKindDef selectedKind = null;
// 1. 最高优先级与建筑派系相同的PawnKind
if (matchingFactionKinds.Count > 0)
{
selectedKind = matchingFactionKinds.RandomElement();
if (DebugSettings.godMode)
Log.Message($"[DEBUG] Selected matching faction kind: {selectedKind.defName}");
}
// 2. 备选没有defaultFactionDef的PawnKind
else if (noFactionKinds.Count > 0)
{
selectedKind = noFactionKinds.RandomElement();
if (DebugSettings.godMode)
Log.Message($"[DEBUG] Selected no-faction kind: {selectedKind.defName}");
}
// 3. 没有符合条件的PawnKind
else
{
Log.Warning($"No suitable PawnKind found for {pawnType.defName} with building faction {buildingFaction.def.defName}");
return null;
}
return selectedKind;
}
// 新增:创建空投舱
private bool CreateDropPod(IntVec3 dropCell, List<Thing> contents)
{

View File

@@ -101,12 +101,20 @@ namespace WulaFallenEmpire
return;
foreach (var product in recipe.products)
{
globalStorage.AddToOutputStorage(product.thingDef, product.count);
// 检查产物是否为Pawn
if (product.thingDef.race != null)
{
// 对于Pawn我们存储的是Pawn的ThingDef在释放时再随机生成PawnKind
globalStorage.AddToOutputStorage(product.thingDef, product.count);
}
else
{
// 对于普通物品,正常存储
globalStorage.AddToOutputStorage(product.thingDef, product.count);
}
}
currentCount++;
progress = 0f; // 生产完成后重置进度
if (currentCount >= targetCount)
{
state = ProductionState.Completed;

View File

@@ -462,17 +462,17 @@ namespace WulaFallenEmpire
Messages.Message($"GOD MODE: Completed order for {order.recipe.LabelCap} ({remainingCount} units)", MessageTypeDefOf.PositiveEvent);
Log.Message($"[GOD MODE] Force completed order: {order.recipe.defName}, produced {remainingCount} units");
}
private List<FloatMenuOption> GenerateRecipeOptions()
{
var options = new List<FloatMenuOption>();
foreach (var recipe in SelTable.def.AllRecipes)
{
// 移除对Pawn配方的过滤允许所有配方
if (recipe.AvailableNow && recipe.AvailableOnNow(SelTable))
{
string label = recipe.LabelCap;
options.Add(new FloatMenuOption(label, () =>
{
var newOrder = new GlobalProductionOrder
@@ -481,19 +481,19 @@ namespace WulaFallenEmpire
targetCount = 1,
paused = true // 初始暂停
};
SelTable.globalOrderStack.AddOrder(newOrder);
SoundDefOf.Click.PlayOneShotOnCamera();
Log.Message($"[DEBUG] Added order for {recipe.defName}");
}));
}
}
if (options.Count == 0)
{
options.Add(new FloatMenuOption("WULA_NoAvailableRecipes".Translate(), null));
}
return options;
}