This commit is contained in:
Tourswen
2025-12-07 03:07:50 +08:00
parent 8a158d1ced
commit f1956d5961
43 changed files with 1079 additions and 426 deletions

View File

@@ -46,6 +46,9 @@
<!-- 可选:指定特定的设施名称 -->
<!-- <requiredFacility>BombardmentFacility</requiredFacility> -->
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<!-- 战舰编队 -->
@@ -94,6 +97,9 @@
<!-- 可选:指定特定的设施名称 -->
<!-- <requiredFacility>BombardmentFacility</requiredFacility> -->
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<!-- 防御编队 -->
@@ -142,6 +148,9 @@
<!-- 可选:指定特定的设施名称 -->
<!-- <requiredFacility>BombardmentFacility</requiredFacility> -->
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -170,6 +179,9 @@
<comps>
<li Class="WulaFallenEmpire.CompProperties_DestroyFlyOverByFacilities" />
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
@@ -218,6 +230,9 @@
<showSectorPreview>true</showSectorPreview>
<sectorPreviewColor>(0.3,0.7,1.0,0.3)</sectorPreviewColor>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
@@ -269,6 +284,9 @@
<showSectorPreview>true</showSectorPreview>
<sectorPreviewColor>(0.3,0.7,1.0,0.3)</sectorPreviewColor>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -326,6 +344,9 @@
<!-- 预览配置 -->
<showSectorPreview>false</showSectorPreview>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -381,6 +402,9 @@
<requiredFacility>HarborFacility</requiredFacility>
<facilityNotFoundMessage>需要拥有&lt;color=#BD952F>&lt;i>机库&lt;/i>&lt;/color>设施的战舰在地图上才能发起空袭</facilityNotFoundMessage>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -447,6 +471,9 @@
<requiredFacility>HarborFacility</requiredFacility>
<facilityNotFoundMessage>需要拥有&lt;color=#BD952F>&lt;i>机库&lt;/i>&lt;/color>设施的战舰在地图上才能发起空袭</facilityNotFoundMessage>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -513,6 +540,9 @@
<requiredFacility>HarborFacility</requiredFacility>
<facilityNotFoundMessage>需要拥有&lt;color=#BD952F>&lt;i>机库&lt;/i>&lt;/color>设施的战舰在地图上才能发起空袭</facilityNotFoundMessage>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -579,6 +609,9 @@
<requiredFacility>HarborFacility</requiredFacility>
<facilityNotFoundMessage>需要拥有&lt;color=#BD952F>&lt;i>机库&lt;/i>&lt;/color>设施的战舰在地图上才能发起空袭</facilityNotFoundMessage>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -645,6 +678,9 @@
<requiredFacility>HarborFacility</requiredFacility>
<facilityNotFoundMessage>需要拥有&lt;color=#BD952F>&lt;i>机库&lt;/i>&lt;/color>设施的战舰在地图上才能发起空袭</facilityNotFoundMessage>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -711,6 +747,9 @@
<requiredFacility>HarborFacility</requiredFacility>
<facilityNotFoundMessage>需要拥有&lt;color=#BD952F>&lt;i>机库&lt;/i>&lt;/color>设施的战舰在地图上才能发起空袭</facilityNotFoundMessage>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
@@ -762,6 +801,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_Minigun_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -812,6 +854,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_Cannon_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -853,6 +898,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_Cannon_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -895,6 +943,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_EnergyLance_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -936,6 +987,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_EnergyLance_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -985,6 +1039,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_Primary_Cannon_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
<AbilityDef>
@@ -1026,6 +1083,9 @@
<li Class="WulaFallenEmpire.CompProperties_AbilityResearchPrereq">
<requiredResearch>WULA_Firepower_Primary_Cannon_Technology</requiredResearch>
</li>
<li Class="WulaFallenEmpire.CompProperties_AbilityRequiresNonHostility">
<factionDef>Wula_PIA_Legion_Faction</factionDef>
</li>
</comps>
</AbilityDef>
</Defs>

View File

@@ -135,18 +135,6 @@
<disallowedRaidAgeRestrictions>
<li MayRequire="Ludeon.RimWorld.Biotech">Children</li>
</disallowedRaidAgeRestrictions>
<permanentEnemyToEveryoneExcept>
<li>WULA_Awakened_Synth</li>
<li>OutlanderCivil</li>
<li>TribeCivil</li>
<li>PlayerTribe</li>
<li>PlayerColony</li>
<li>Ancients</li>
<li MayRequire="Ludeon.RimWorld.Ideology">Beggars</li>
<li MayRequire="Ludeon.RimWorld.Anomaly">ResearchExpedition</li>
<li MayRequire="Ludeon.RimWorld.Odyssey">GravshipCrew</li>
<li MayRequire="Ludeon.RimWorld.Odyssey">TradersGuild</li>
</permanentEnemyToEveryoneExcept>
<backstoryCategories>
<li>Wula_Backstory_Categories</li>
</backstoryCategories>

View File

@@ -1,144 +1,43 @@
<Defs>
<PrefabDef>
<defName>WULA_Shuttle_Prefab</defName> <!-- rename -->
<size>(13,13)</size>
<defName>WULA_ArmedShuttleWithPocket_SP_Prefab</defName> <!-- rename -->
<size>(9,13)</size>
<things>
<Table1x2c>
<position>(10, 0, 2)</position>
<relativeRotation>Clockwise</relativeRotation>
<stuff>Steel</stuff>
<quality>Normal</quality>
</Table1x2c>
<Armchair>
<position>(6, 0, 2)</position>
<relativeRotation>Opposite</relativeRotation>
<stuff>Cloth</stuff>
<quality>Normal</quality>
</Armchair>
<WULA_Charging_Station_Synth>
<positions>
<li>(1, 0, 1)</li>
<li>(1, 0, 3)</li>
<li>(1, 0, 5)</li>
</positions>
<relativeRotation>Clockwise</relativeRotation>
<quality>Normal</quality>
</WULA_Charging_Station_Synth>
<ChessTable>
<position>(11, 0, 5)</position>
<stuff>Steel</stuff>
<quality>Normal</quality>
</ChessTable>
<WulaDoor>
<rects>
<li>(3,1,3,1)</li>
<li>(5,2,5,2)</li>
<li>(3,3,3,3)</li>
<li>(3,5,3,5)</li>
<li>(9,6,9,6)</li>
<li>(3,7,3,7)</li>
<li>(3,9,3,9)</li>
<li>(3,11,3,11)</li>
</rects>
<relativeRotation>Clockwise</relativeRotation>
</WulaDoor>
<WulaDoor>
<position>(7, 0, 9)</position>
</WulaDoor>
<Barricade>
<rects>
<li>(5,5,6,5)</li>
<li>(5,6,5,7)</li>
<li>(7,6,7,7)</li>
<li>(6,7,6,7)</li>
</rects>
<stuff>Steel</stuff>
</Barricade>
<Barricade>
<position>(7, 0, 5)</position>
<stuff>Steel</stuff>
<hp>278</hp>
</Barricade>
<DiningChair>
<position>(11, 0, 4)</position>
<stuff>Steel</stuff>
<quality>Normal</quality>
</DiningChair>
<DiningChair>
<position>(11, 0, 6)</position>
<relativeRotation>Opposite</relativeRotation>
<stuff>Steel</stuff>
<quality>Normal</quality>
</DiningChair>
<Bed>
<positions>
<li>(1, 0, 7)</li>
<li>(1, 0, 9)</li>
<li>(1, 0, 11)</li>
</positions>
<relativeRotation>Clockwise</relativeRotation>
<stuff>Steel</stuff>
<quality>Normal</quality>
</Bed>
<WulaWall>
<rects>
<li>(0,0,12,0)</li>
<li>(0,1,0,12)</li>
<li>(5,1,5,1)</li>
<li>(7,1,7,3)</li>
<li>(12,1,12,12)</li>
<li>(1,2,3,2)</li>
<li>(5,3,6,3)</li>
<li>(8,3,8,3)</li>
<li>(1,4,3,4)</li>
<li>(9,4,9,5)</li>
<li>(1,6,3,6)</li>
<li>(9,7,11,7)</li>
<li>(1,8,3,8)</li>
<li>(9,8,9,9)</li>
<li>(5,9,6,9)</li>
<li>(8,9,8,9)</li>
<li>(1,10,3,10)</li>
<li>(5,10,5,12)</li>
<li>(1,12,4,12)</li>
<li>(6,12,11,12)</li>
</rects>
<stuff>Steel</stuff>
</WulaWall>
<FlatscreenTelevision>
<position>(8, 0, 2)</position>
<relativeRotation>Clockwise</relativeRotation>
</FlatscreenTelevision>
<Shelf>
<position>(10, 0, 8)</position>
<stuff>Steel</stuff>
</Shelf>
<Shelf>
<position>(6, 0, 11)</position>
<relativeRotation>Clockwise</relativeRotation>
<stuff>Steel</stuff>
</Shelf>
<Shelf>
<position>(11, 0, 10)</position>
<relativeRotation>Counterclockwise</relativeRotation>
<stuff>Steel</stuff>
</Shelf>
<Shelf>
<position>(9, 0, 11)</position>
<relativeRotation>Opposite</relativeRotation>
<stuff>Steel</stuff>
</Shelf>
<Couch>
<position>(10, 0, 1)</position>
<stuff>Cloth</stuff>
<quality>Normal</quality>
</Couch>
<Couch>
<position>(11, 0, 3)</position>
<relativeRotation>Opposite</relativeRotation>
<stuff>Cloth</stuff>
<quality>Normal</quality>
</Couch>
<WULA_ArmedShuttleWithPocket>
<position>(4, 0, 6)</position>
</WULA_ArmedShuttleWithPocket>
</things>
</PrefabDef>
<PrefabDef>
<defName>WULA_Shuttle_Prefab</defName> <!-- rename -->
<size>(25,25)</size>
<things>
<FloodLight>
<rects>
<li>(1,1,1,1)</li>
<li>(23,1,23,1)</li>
<li>(1,23,1,23)</li>
<li>(23,23,23,23)</li>
</rects>
</FloodLight>
<WulaWall_Inner>
<rects>
<li>(0,0,24,0)</li>
<li>(0,1,0,24)</li>
<li>(24,1,24,24)</li>
<li>(1,24,23,24)</li>
</rects>
</WulaWall_Inner>
<WULA_PocketMapExit>
<position>(12, 0, 12)</position>
</WULA_PocketMapExit>
</things>
<terrain>
<WulaFloor>
<rects>
<li>(0,0,24,24)</li>
</rects>
</WulaFloor>
</terrain>
</PrefabDef>
</Defs>

View File

@@ -53,7 +53,7 @@
<siteIconPath>Things/Building/Natural/Hive/HiveC</siteIconPath>
<expandingIconPath>Things/Building/Natural/Hive/HiveC</expandingIconPath>
<storeAs>site</storeAs>
<faction>$siteFaction</faction>
<overrideFaction>$siteFaction</overrideFaction>
<distance>
<min>5</min>
<max>10</max>
@@ -125,6 +125,7 @@
<size>(44, 1, 44)</size>
<isPart>true</isPart>
<commonality>0</commonality>
<faction>MapFaction</faction>
<pawns>
<li>
<key>(21, 0, 24)</key>

View File

@@ -5,7 +5,7 @@
<rootSelectionWeight>0</rootSelectionWeight>
<expireDaysRange>1</expireDaysRange>
<autoAccept>true</autoAccept>
<sendAvailableLetter>false</sendAvailableLetter>
<sendAvailableLetter>true</sendAvailableLetter>
<defaultChallengeRating>4</defaultChallengeRating> <!-- 挑战等级(星级) -->
<isRootSpecial>true</isRootSpecial> <!-- 特殊任务 -->
@@ -23,14 +23,373 @@
<nodes>
<li Class="QuestNode_GetMap"/>
<li Class="WulaFallenEmpire.QuestNode_SpawnPrefabSkyfallerCaller">
<thingDef>WULA_Sky_Lock</thingDef>
<faction>AncientsHostile</faction>
<spawnCount>4</spawnCount>
<sendMessageOnSuccess>false</sendMessageOnSuccess>
<sendMessageOnFailure>false</sendMessageOnFailure>
<!-- 产生超链接 -->
<li Class="WulaFallenEmpire.QuestNode_Hyperlinks">
<thingDefs>
<li>Wula_Psi_Titan</li>
<li>Wula_AI_Rocket_Panzer</li>
<li>Wula_AI_Heavy_Panzer</li>
<li>WULA_Sky_Lock</li>
</thingDefs>
<factionDefs>
<li>Wula_PIA_Legion_Faction</li>
</factionDefs>
</li>
<li Class="QuestEditor_Library.QuestNode_RandomCustomMap">
<datas>
<li>
<key>Wula_PsiTitan_Boss_Map</key>
<value>1</value>
</li>
</datas>
<buffer>5</buffer>
<bufferMin>10</bufferMin>
<siteIconPath>Things/Building/Natural/Hive/HiveC</siteIconPath>
<expandingIconPath>Things/Building/Natural/Hive/HiveC</expandingIconPath>
<storeAs>site</storeAs>
<overrideFaction>AncientsHostile</overrideFaction>
<disdestroyBecauseOfNoColonist>true</disdestroyBecauseOfNoColonist>
<distance>
<min>5</min>
<max>10</max>
</distance>
<blacklist />
</li>
<!-- 灵能泰坦被击毁··· -->
<li Class="QuestNode_Signal">
<inSignal>PsiTitan.0.Destroyed</inSignal>
<node Class="QuestNode_End">
<outcome>Success</outcome>
<sendStandardLetter>true</sendStandardLetter>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
<QuestEditor_Library.CustomMapDataDef>
<defName>Wula_PsiTitan_Boss_Map</defName>
<label>发现灵能泰坦的地区</label>
<fogged>true</fogged>
<size>(128, 1, 128)</size>
<isPart>true</isPart>
<commonality>0</commonality>
<faction>MapFaction</faction>
<pawns>
<li>
<key>(65, 0, 68)</key>
<value>
<li>
<dataName>PsiTitan</dataName>
<kind>Wula_Psi_Titan</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</value>
</li>
<li>
<key>(19, 0, 16)</key>
<value>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
</value>
</li>
<li>
<key>(107, 0, 15)</key>
<value>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
</value>
</li>
<li>
<key>(102, 0, 112)</key>
<value>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
</value>
</li>
<li>
<key>(12, 0, 115)</key>
<value>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
<li Class="QuestEditor_Library.PawnSpawnData_Random">
<dataName>AIHeavyPanzer</dataName>
<count>1</count>
<spawnType>MapGeneration</spawnType>
<datas>
<li>
<dataName>AIPanzer</dataName>
<kind>Wula_AI_Heavy_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
<li>
<dataName>AIPanzerRocket</dataName>
<kind>Wula_AI_Rocket_Panzer</kind>
<enableLord>true</enableLord>
<lordDataName>PsiTitanGroup</lordDataName>
<count>1~2</count>
<faction>AncientsHostile</faction>
<duty>DefendBase</duty>
<spawnType>MapGeneration</spawnType>
</li>
</datas>
</li>
</value>
</li>
</pawns>
<thingDatas>
<li>
<def>WULA_Sky_Lock</def>
<faction>PlayerColony</faction>
<allRect>
<li>(11,11,11,11)</li>
<li>(116,7,116,7)</li>
<li>(3,124,3,124)</li>
<li>(107,118,107,118)</li>
</allRect>
</li>
<li>
<def>AncientTunnelerHusk</def>
<faction>PlayerColony</faction>
<allRect>
<li>(38,49,38,49)</li>
<li>(70,44,70,44)</li>
<li>(94,35,94,35)</li>
</allRect>
</li>
<li>
<def>AncientTank</def>
<faction>PlayerColony</faction>
<allRect>
<li>(27,24,27,24)</li>
<li>(26,83,26,83)</li>
<li>(87,74,87,74)</li>
</allRect>
</li>
<li>
<def>AncientMiniWarwalkerRemains</def>
<faction>PlayerColony</faction>
<allRect>
<li>(84,28,84,28)</li>
<li>(94,52,94,52)</li>
</allRect>
</li>
<li>
<def>ShipChunk</def>
<faction>PlayerColony</faction>
<allRect>
<li>(56,24,56,24)</li>
<li>(57,27,57,27)</li>
<li>(51,38,51,38)</li>
<li>(57,30,57,30)</li>
<li>(68,30,68,30)</li>
<li>(42,62,42,62)</li>
<li>(53,102,53,102)</li>
<li>(75,104,75,104)</li>
<li>(87,100,87,100)</li>
<li>(104,92,104,92)</li>
</allRect>
</li>
<li>
<def>AncientAPC</def>
<faction>PlayerColony</faction>
<allRect>
<li>(92,67,92,67)</li>
<li>(105,57,105,57)</li>
</allRect>
</li>
</thingDatas>
</QuestEditor_Library.CustomMapDataDef>
</Defs>

View File

@@ -247,6 +247,17 @@
<li>WULA_Colony_License_LV3_Technology</li>
</prerequisites>
</ResearchProjectDef>
<ResearchProjectDef ParentName="WULAtechBase">
<defName>WULA_ArmedShuttle_Technology</defName>
<label>武装穿梭机调配许可</label>
<description>允许殖民地呼叫一艘CVe-3"渡鸦"武装穿梭机,其拥有巨大的货仓和一个内部折叠的生活区,因此载重量惊人且可以在内部活动。它同时还拥有一面高反射概率的反射盾,可以抵挡大部分射弹。</description>
<baseCost>3000</baseCost>
<researchViewX>9.00</researchViewX>
<researchViewY>6.20</researchViewY>
<prerequisites>
<li>WULA_Colony_License_LV3_Technology</li>
</prerequisites>
</ResearchProjectDef>
<!-- 炮击 -->
<ResearchProjectDef ParentName="WULAtechBase">

View File

@@ -458,12 +458,12 @@
</comps>
</ThingDef>
<!-- 陆行舰 -->
<!-- 灵能泰坦 -->
<ThingDef ParentName="BuildingBase">
<defName>Wula_Psi_Titan_Cleanzone</defName>
<label>PAt-6"灵能泰坦"</label>
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处投放大型战争机械。\n\n由乌拉帝国国教所主持开发的重型灵能机械体以折跃优雅地穿梭于炮火间并用强大的护盾抵挡敌方射弹侵袭。该机体的内部镌刻了无数的术式环路这使其就像一个行走的灵能发射器可以驱使各种强大的灵能能力。</description>
<uiIconPath>Wula/Things/Wula_Mech_Mobile_Factory/Wula_Mech_Mobile_Factory_Incoming</uiIconPath>
<uiIconPath>Wula/Things/Wula_Psi_Titan/Wula_Psi_Titan_Incoming</uiIconPath>
<minifiedDef>MinifiedThing</minifiedDef>
<tickerType>Normal</tickerType>
<tradeability>None</tradeability>
@@ -516,7 +516,7 @@
<placeWorkers>
<li>WulaFallenEmpire.PlaceWorker_CustomRadius</li>
</placeWorkers>
<designationCategory>WULA_Buildings</designationCategory>
<!-- <designationCategory>WULA_Buildings</designationCategory> -->
<comps>
<li Class="WulaFallenEmpire.CompProperties_SkyfallerCaller">
<skyfallerDef>Wula_Psi_Titan_Incoming</skyfallerDef> <!-- 替换为您想要的Skyfaller类型 -->
@@ -533,7 +533,7 @@
<size>(1,1)</size>
<thingClass>WulaFallenEmpire.Skyfaller_PawnSpawner</thingClass>
<graphicData>
<texPath>Wula/Things/Wula_Mech_Mobile_Factory/Wula_Mech_Mobile_Factory_Incoming</texPath>
<texPath>Wula/Things/Wula_Psi_Titan/Wula_Psi_Titan_Incoming</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutFlying</shaderType>
<drawSize>(9,9)</drawSize>

View File

@@ -664,11 +664,100 @@
<description>什么这是个记录数量用的thingdef你不应该在任何场合下看到这个。</description>
<thingClass>Thing</thingClass>
</ThingDef>
<!-- 杂项 -->
<ThingDef ParentName="TableGatherSpotBase">
<defName>WULA_Table1x2c</defName>
<label>乌拉帝国桌子 (1x2)</label>
<description>乌拉帝国的桌子</description>
<graphicData>
<texPath>Wula/Building/WULA_Table1x2c</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(2,2)</drawSize>
<shadowData>
<volume>(0.85, 0.5, 0.5)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<uiIconScale>0.8</uiIconScale>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<statBases>
<MaxHitPoints>75</MaxHitPoints>
<WorkToBuild>750</WorkToBuild>
<Mass>5</Mass>
<Flammability>1.0</Flammability>
<Beauty>0.5</Beauty>
<StyleDominance MayRequire="Ludeon.RimWorld.Ideology">5</StyleDominance>
</statBases>
<costStuffCount>20</costStuffCount>
<stuffCategories Inherit="False">
<li>Stony</li>
<li>Metallic</li>
</stuffCategories>
<researchPrerequisites>
<li>WULA_Colony_License_LV1_Technology</li>
</researchPrerequisites>
<size>(1,2)</size>
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
<designationCategory>WULA_Buildings</designationCategory>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>3</glowRadius>
<glowColor>(120,240,252,0)</glowColor>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="TableGatherSpotBase">
<defName>WULA_Table2x4c</defName>
<label>乌拉帝国桌子 (2x4)</label>
<description>乌拉帝国的桌子</description>
<graphicData>
<texPath>Wula/Building/WULA_Table1x2c</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<shaderType>CutoutComplex</shaderType>
<drawSize>(4,4)</drawSize>
<shadowData>
<volume>(0.85, 0.5, 0.5)</volume>
<offset>(0,0,-0.1)</offset>
</shadowData>
</graphicData>
<uiIconScale>0.8</uiIconScale>
<castEdgeShadows>false</castEdgeShadows>
<staticSunShadowHeight>0</staticSunShadowHeight>
<statBases>
<MaxHitPoints>75</MaxHitPoints>
<WorkToBuild>750</WorkToBuild>
<Mass>5</Mass>
<Flammability>1.0</Flammability>
<Beauty>0.5</Beauty>
<StyleDominance MayRequire="Ludeon.RimWorld.Ideology">5</StyleDominance>
</statBases>
<costStuffCount>20</costStuffCount>
<stuffCategories Inherit="False">
<li>Stony</li>
<li>Metallic</li>
</stuffCategories>
<researchPrerequisites>
<li>WULA_Colony_License_LV1_Technology</li>
</researchPrerequisites>
<size>(2,4)</size>
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
<designationCategory>WULA_Buildings</designationCategory>
<comps>
<li Class="CompProperties_Glower">
<glowRadius>3</glowRadius>
<glowColor>(120,240,252,0)</glowColor>
</li>
</comps>
</ThingDef>
<!-- 场景 -->
<ThingDef ParentName="BuildingBase">
<defName>WULA_Sky_Lock</defName>
<label>天锁</label>
<description>天锁</description>
<description>天锁是纯粹的灵能造物PAt-6"灵能泰坦"可以将伤害转移给天锁。</description>
<thingClass>WulaFallenEmpire.Building_ExtraGraphics</thingClass>
<preventDroppingThingsOn>true</preventDroppingThingsOn>
<altitudeLayer>MetaOverlays</altitudeLayer>
@@ -748,6 +837,11 @@
</li>
</modExtensions>
<comps>
<li Class="WulaFallenEmpire.CompProperties_FactionSetter">
<factionDef>AncientsHostile</factionDef>
<usePlayerFactionIfNull>true</usePlayerFactionIfNull>
<overrideExistingFaction>false</overrideExistingFaction>
</li>
<li Class="WulaFallenEmpire.CompProperties_AreaShield">
<radius>7</radius>
<baseHitPoints>20</baseHitPoints>
@@ -776,7 +870,6 @@
</li>
</comps>
</ThingDef>
<ThingDef ParentName="MechBuildingBase">
<defName>WULA_MechAssembler</defName>
<label>乌拉帝国自动装配场</label>

View File

@@ -1,53 +1,163 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThingDef ParentName="BuildingBase">
<defName>WULA_ArmedShuttle</defName>
<label>CVe-3l"灰鸦"</label>
<description>乌拉帝国所使用的大气内专用近地穿梭机。配备集成能量发生器投射暗物质护盾。并且装载一门近防炮武装保护帝国资产</description>
<thingClass>WulaFallenEmpire.Building_ArmedShuttle</thingClass>
<defName>WULA_ArmedShuttleWithPocket_Cleanzone</defName>
<label>CVe-3"渡鸦"</label>
<description>清理出一块场地并准备好资源,使得乌拉帝国母舰可以向此处派遣一艘穿梭机。\n\nCVe-3"渡鸦"是乌拉帝国用于在舰队和地表构建联系的特种穿梭机,拥有巨大的货仓和一个内部折叠的生活区,因此载重量惊人且可以在内部活动。它同时还拥有一面高反射概率的反射盾,可以抵挡大部分射弹</description>
<uiIconPath>Wula/Building/WULA_ArmedShuttle_Moving</uiIconPath>
<tickerType>Normal</tickerType>
<minifiedDef>MinifiedThing</minifiedDef>
<graphicData>
<texPath>Wula/Building/WULA_Dropping_Building_Cleanzone_Plus</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>(9,13)</drawSize>
<damageData>
<enabled>false</enabled>
</damageData>
</graphicData>
<thingCategories Inherit="False">
<li>BuildingsMisc</li>
</thingCategories>
<rotatable>false</rotatable>
<neverMultiSelect>false</neverMultiSelect>
<blockLight>false</blockLight>
<holdsRoof>false</holdsRoof>
<coversFloor>false</coversFloor>
<blockWind>false</blockWind>
<altitudeLayer>BuildingOnTop</altitudeLayer>
<passability>PassThroughOnly</passability>
<designationCategory>WULA_Buildings</designationCategory>
<pathCost>0</pathCost>
<castEdgeShadows>false</castEdgeShadows>
<useStuffTerrainAffordance>false</useStuffTerrainAffordance>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<fillPercent>0</fillPercent>
<canOverlapZones>false</canOverlapZones>
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
<statBases>
<MaxHitPoints>1</MaxHitPoints>
<WorkToBuild>0</WorkToBuild>
<Mass>1</Mass>
<Flammability>0</Flammability>
</statBases>
<size>(9,13)</size>
<constructionSkillPrerequisite>0</constructionSkillPrerequisite>
<resourcesFractionWhenDeconstructed>1</resourcesFractionWhenDeconstructed>
<stuffCategories Inherit="False" />
<researchPrerequisites Inherit="False">
<li>WULA_ArmedShuttle_Technology</li>
</researchPrerequisites>
<costStuffCount>0</costStuffCount>
<costList>
<WULA_Alloy>500</WULA_Alloy>
<WULA_Neutronium>150</WULA_Neutronium>
<WULA_Dark_Matter_Item>25</WULA_Dark_Matter_Item>
<ShuttleEngine>4</ShuttleEngine>
</costList>
<building>
<destroySound>BuildingDestroyed_Metal_Small</destroySound>
<isAirtight>false</isAirtight>
<isStuffableAirtight>false</isStuffableAirtight>
</building>
<comps>
<li Class="WulaFallenEmpire.CompProperties_PrefabSkyfallerCaller">
<prefabDefName>WULA_ArmedShuttleWithPocket_SP_Prefab</prefabDefName>
<freePrefab>true</freePrefab>
<skyfallerDef>WULA_ArmedShuttleWithPocket_Incoming</skyfallerDef>
<destroyBuilding>true</destroyBuilding>
<delayTicks>1</delayTicks>
<allowThinRoof>true</allowThinRoof>
<allowThickRoof>false</allowThickRoof>
</li>
</comps>
</ThingDef>
<ThingDef ParentName="ShuttleSkyfallerBase">
<defName>WULA_ArmedShuttleWithPocket_Incoming</defName>
<label>CVe-3"渡鸦" (接近中)</label>
<thingClass>WulaFallenEmpire.Skyfaller_PrefabSpawner</thingClass>
<graphicData>
<graphicClass>Graphic_Single</graphicClass>
<texPath>Wula/Building/WULA_ArmedShuttle_Moving</texPath>
<drawSize>(14,14)</drawSize>
<shaderType>CutoutComplex</shaderType>
</graphicData>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>
<size>(9,13)</size>
<skyfaller>
<movementType>Decelerate</movementType>
<anticipationSound>Shuttle_Landing</anticipationSound>
<anticipationSoundTicks>250</anticipationSoundTicks>
<ticksToImpactRange>200~250</ticksToImpactRange>
<shadowSize>(9,13)</shadowSize>
<angleCurve>
<points>
<li>(0,0)</li>
<li>(1, 1)</li>
</points>
</angleCurve>
<zPositionCurve>
<points>
<li>(0.95,1.5)</li>
<li>(1,0)</li>
</points>
</zPositionCurve>
<speedCurve>
<points>
<li>(0.6,0.6)</li>
<li>(0.95,0.1)</li>
<li>(0.99,0.01)</li>
</points>
</speedCurve>
</skyfaller>
<comps>
<li Class="CompProperties_Effecter">
<effecterDef>Smoke_Joint</effecterDef>
</li>
<li Class="WulaFallenEmpire.CompProperties_SkyfallerFaction"/>
</comps>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>WULA_ArmedShuttleWithPocket</defName>
<label>CVe-3"渡鸦"</label>
<description>乌拉帝国用于在舰队和地表构建联系的特种穿梭机,拥有巨大的货仓和一个内部折叠的生活区,因此载重量惊人且可以在内部活动。它同时还拥有一面高反射概率的反射盾,可以抵挡大部分射弹。</description>
<thingClass>WulaFallenEmpire.Building_ArmedShuttleWithPocket</thingClass>
<preventDroppingThingsOn>true</preventDroppingThingsOn>
<altitudeLayer>Building</altitudeLayer>
<pathCost>50</pathCost>
<blockWind>true</blockWind>
<passability>PassThroughOnly</passability>
<fillPercent>0.5</fillPercent>
<size>(2,2)</size>
<size>(9,13)</size>
<drawHighlight>true</drawHighlight>
<highlightColor>(0.56, 0.62, 0.9)</highlightColor>
<uiIconScale>1</uiIconScale>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<graphicClass>Graphic_Single</graphicClass>
<texPath>Wula/Building/WULA_ArmedShuttle</texPath>
<shaderType>CutoutComplex</shaderType>
<drawSize>(3,3.25)</drawSize>
<drawOffset>(0, 8, 0.8)</drawOffset>
<shadowData>
<volume>(1, 1, 1)</volume>
<offset>(0, 0, -1.2)</offset>
</shadowData>
<!-- <shaderType>CutoutComplex</shaderType> -->
<drawSize>(14,14)</drawSize>
</graphicData>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>
<statBases>
<MaxHitPoints>6000</MaxHitPoints>
<MaxHitPoints>5000</MaxHitPoints>
<Flammability>0</Flammability>
<WorkToBuild>40000</WorkToBuild>
<Mass>150</Mass>
<WorkToBuild>1</WorkToBuild>
<Mass>12000</Mass>
<Comfort>0.65</Comfort>
</statBases>
<tickerType>Normal</tickerType>
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
<costList>
<WULA_Alloy>500</WULA_Alloy>
<WULA_Neutronium>150</WULA_Neutronium>
<WULA_Dark_Matter_Item>25</WULA_Dark_Matter_Item>
<ShuttleEngine>4</ShuttleEngine>
</costList>
<canOverlapZones>true</canOverlapZones>
<killedLeavings>
<Steel>60</Steel>
<Plasteel>60</Plasteel>
<ChunkSlagSteel>5</ChunkSlagSteel>
<ComponentIndustrial>4</ComponentIndustrial>
</killedLeavings>
<rotatable>true</rotatable>
<hasInteractionCell>true</hasInteractionCell>
<interactionCellOffset>(2, 0, 0)</interactionCellOffset>
<defaultPlacingRot>East</defaultPlacingRot>
<hasInteractionCell>false</hasInteractionCell>
<defaultPlacingRot>North</defaultPlacingRot>
<selectable>true</selectable>
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
<soundImpactDefault>BulletImpact_Metal</soundImpactDefault>
@@ -62,148 +172,8 @@
<isInert>true</isInert>
<forcedCostLeavings>
<li MayRequire="Ludeon.RimWorld.Odyssey">ShuttleEngine</li>
</forcedCostLeavings>
<turretGunDef>WULA_Shuttle_Autocannon</turretGunDef>
<turretBurstCooldownTime>5.5</turretBurstCooldownTime>
<turretTopDrawSize>1.75</turretTopDrawSize>
<turretTopOffset>(0, 0.05)</turretTopOffset>
</building>
<inspectorTabs>
<li>ITab_ContentsTransporter</li>
<li>ITab_Shells</li>
</inspectorTabs>
<!-- <researchPrerequisites>
<li>Shuttles</li>
</researchPrerequisites> -->
<comps>
<li Class="CompProperties_Shuttle">
<shipDef>Ship_ArmedShuttle</shipDef>
</li>
<li Class="CompProperties_Launchable">
<fuelPerTile>3</fuelPerTile>
<minFuelCost>50</minFuelCost>
<skyfallerLeaving>ArmedShuttleLeaving_WULA</skyfallerLeaving>
<worldObjectDef>PassengerShuttle</worldObjectDef>
<cooldownTicks>3750</cooldownTicks> <!-- 1.5 hours -->
<fixedLaunchDistanceMax>62</fixedLaunchDistanceMax>
<cooldownEndedMessage>{0} is ready to launch again.</cooldownEndedMessage>
</li>
<li Class="CompProperties_Transporter">
<massCapacity>500</massCapacity>
<max1PerGroup>true</max1PerGroup>
<canChangeAssignedThingsAfterStarting>true</canChangeAssignedThingsAfterStarting>
<pawnLoadedSound>Shuttle_PawnLoaded</pawnLoadedSound>
<pawnExitSound>Shuttle_PawnExit</pawnExitSound>
<showMassInInspectString>true</showMassInInspectString>
</li>
<li Class="CompProperties_Refuelable">
<fuelCapacity>400</fuelCapacity>
<targetFuelLevelConfigurable>true</targetFuelLevelConfigurable>
<initialConfigurableTargetFuelLevel>400</initialConfigurableTargetFuelLevel>
<fuelFilter>
<thingDefs>
<li>Chemfuel</li>
</thingDefs>
</fuelFilter>
<fuelLabel>Chemfuel</fuelLabel>
<fuelGizmoLabel>Chemfuel</fuelGizmoLabel>
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
<autoRefuelPercent>1</autoRefuelPercent>
<showFuelGizmo>true</showFuelGizmo>
<drawOutOfFuelOverlay>false</drawOutOfFuelOverlay>
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<canEjectFuel>true</canEjectFuel>
</li>
<li Class="CompProperties_AmbientSound">
<sound>ShuttleIdle_Ambience</sound>
</li>
<li Class="CompProperties_ProjectileInterceptor">
<radius>12</radius>
<interceptGroundProjectiles>true</interceptGroundProjectiles>
<color>(0.5, 0.3, 0.9, 0.5)</color>
<reactivateEffect>BulletShieldGenerator_Reactivate</reactivateEffect>
<activeSound>BulletShield_Ambience</activeSound>
<disarmedByEmpForTicks>1080</disarmedByEmpForTicks>
<chargeIntervalTicks>-1</chargeIntervalTicks>
<chargeDurationTicks>0</chargeDurationTicks>
</li>
</comps>
<placeWorkers>
<li>PlaceWorker_NotUnderRoof</li>
<li>PlaceWorker_TurretTop</li>
</placeWorkers>
<uiOrder>2601</uiOrder>
</ThingDef>
<ThingDef ParentName="BuildingBase">
<defName>WULA_ArmedShuttleWithPocket</defName>
<label>CVe-3o"渡鸦"</label>
<description>乌拉帝国所使用的大气内专用近地穿梭机。集成折叠空间技术能安全装载比体积大得多的货物。配备集成能量发生器投射暗物质护盾。并且装载一门近防炮武装保护帝国资产。</description>
<thingClass>WulaFallenEmpire.Building_ArmedShuttleWithPocket</thingClass>
<preventDroppingThingsOn>true</preventDroppingThingsOn>
<altitudeLayer>Building</altitudeLayer>
<pathCost>50</pathCost>
<blockWind>true</blockWind>
<passability>PassThroughOnly</passability>
<fillPercent>0.5</fillPercent>
<size>(2,2)</size>
<drawHighlight>true</drawHighlight>
<highlightColor>(0.56, 0.62, 0.9)</highlightColor>
<uiIconScale>1</uiIconScale>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<texPath>Wula/Building/WULA_ArmedShuttle</texPath>
<shaderType>CutoutComplex</shaderType>
<drawSize>(6,6.25)</drawSize>
<drawOffset>(0, 8, 1.6)</drawOffset>
<shadowData>
<volume>(1, 1, 1)</volume>
<offset>(0, 0, -1.2)</offset>
</shadowData>
</graphicData>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>
<statBases>
<MaxHitPoints>6000</MaxHitPoints>
<Flammability>0</Flammability>
<WorkToBuild>40000</WorkToBuild>
<Mass>150</Mass>
<Comfort>0.65</Comfort>
</statBases>
<tickerType>Normal</tickerType>
<!-- <designationCategory>WULA_Buildings</designationCategory> -->
<constructionSkillPrerequisite>8</constructionSkillPrerequisite>
<costList>
<Steel>300</Steel>
<Plasteel>200</Plasteel>
<ComponentIndustrial>8</ComponentIndustrial>
<ComponentSpacer>2</ComponentSpacer>
<ShuttleEngine>1</ShuttleEngine>
</costList>
<canOverlapZones>true</canOverlapZones>
<killedLeavings>
<Steel>60</Steel>
<Plasteel>60</Plasteel>
<ChunkSlagSteel>5</ChunkSlagSteel>
<ComponentIndustrial>4</ComponentIndustrial>
</killedLeavings>
<rotatable>true</rotatable>
<hasInteractionCell>true</hasInteractionCell>
<interactionCellOffset>(0, 1, 0)</interactionCellOffset>
<defaultPlacingRot>East</defaultPlacingRot>
<selectable>true</selectable>
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
<soundImpactDefault>BulletImpact_Metal</soundImpactDefault>
<preventSkyfallersLandingOn>true</preventSkyfallersLandingOn>
<drawerType>RealtimeOnly</drawerType>
<repairEffect>ConstructMetal</repairEffect>
<forceDebugSpawnable>true</forceDebugSpawnable>
<building>
<claimable>false</claimable>
<destroySound>BuildingDestroyed_Metal_Big</destroySound>
<paintable>true</paintable>
<isInert>true</isInert>
<forcedCostLeavings>
<li MayRequire="Ludeon.RimWorld.Odyssey">ShuttleEngine</li>
<li MayRequire="Ludeon.RimWorld.Odyssey">ShuttleEngine</li>
<li MayRequire="Ludeon.RimWorld.Odyssey">ShuttleEngine</li>
</forcedCostLeavings>
<turretGunDef>WULA_Shuttle_Autocannon</turretGunDef>
@@ -232,7 +202,7 @@
<cooldownEndedMessage>{0} is ready to launch again.</cooldownEndedMessage>
</li>
<li Class="CompProperties_Transporter">
<massCapacity>500</massCapacity>
<massCapacity>5000</massCapacity>
<max1PerGroup>true</max1PerGroup>
<canChangeAssignedThingsAfterStarting>true</canChangeAssignedThingsAfterStarting>
<pawnLoadedSound>Shuttle_PawnLoaded</pawnLoadedSound>
@@ -257,30 +227,57 @@
<showAllowAutoRefuelToggle>true</showAllowAutoRefuelToggle>
<canEjectFuel>true</canEjectFuel>
</li>
<li Class="CompProperties_Power">
<compClass>CompPowerPlant</compClass>
<basePowerConsumption>-400</basePowerConsumption>
<transmitsPower>true</transmitsPower>
</li>
<li Class="CompProperties_AmbientSound">
<sound>ShuttleIdle_Ambience</sound>
</li>
<li Class="CompProperties_ProjectileInterceptor">
<radius>12</radius>
<li Class="WulaFallenEmpire.CompProperties_AreaShield">
<radius>15</radius>
<baseHitPoints>300</baseHitPoints>
<rechargeDelay>2400</rechargeDelay>
<rechargeHitPointsIntervalTicks>30</rechargeHitPointsIntervalTicks>
<!-- 效果器配置 -->
<absorbEffecter>Interceptor_BlockedProjectile</absorbEffecter>
<interceptEffecter>Interceptor_BlockedProjectile</interceptEffecter>
<breakEffecter>Shield_Break</breakEffecter>
<reactivateEffecter>BulletShieldGenerator_Reactivate</reactivateEffecter>
<color>(0.9, 0.2, 0.2, 0.5)</color> <!-- 护盾气泡的颜色 (RGBA) -->
<!-- 拦截设置 -->
<interceptGroundProjectiles>true</interceptGroundProjectiles>
<color>(0.5, 0.3, 0.9, 0.5)</color>
<reactivateEffect>BulletShieldGenerator_Reactivate</reactivateEffect>
<activeSound>BulletShield_Ambience</activeSound>
<disarmedByEmpForTicks>1080</disarmedByEmpForTicks>
<chargeIntervalTicks>-1</chargeIntervalTicks>
<chargeDurationTicks>0</chargeDurationTicks>
<interceptNonHostileProjectiles>false</interceptNonHostileProjectiles>
<interceptAirProjectiles>true</interceptAirProjectiles>
<!-- 反射设置 -->
<canReflect>true</canReflect>
<reflectChance>0.85</reflectChance>
<reflectAngleRange>30</reflectAngleRange>
<reflectCost>0</reflectCost>
<reflectEffecter>Interceptor_BlockedProjectile</reflectEffecter>
</li>
<li Class="WulaFallenEmpire.CompProperties_AreaDamage">
<radius>15</radius>
<damageIntervalTicks>30</damageIntervalTicks>
<damageDef>Flame</damageDef>
<damageAmount>8</damageAmount>
<scaleWithPsychicSensitivity>false</scaleWithPsychicSensitivity>
<affectFriendly>false</affectFriendly>
<affectNeutral>false</affectNeutral>
<affectHostile>true</affectHostile>
<affectBuildings>false</affectBuildings>
<ignoreFactionRelations>false</ignoreFactionRelations>
<startEnabled>false</startEnabled>
<toggleLabel>热辐射</toggleLabel>
<toggleDescription>CVe-3"渡鸦"可以启动防御设施,蒸发胆敢进入反射立场内的敌军——这同时会使得它伤害附近所有的散落物品。</toggleDescription>
<toggleIconPath>Wula/UI/Commands/Wula_Psi_Titan_AreaDamage</toggleIconPath>
</li>
</comps>
<modExtensions>
<li Class="WulaFallenEmpire.PocketMapProperties">
<pocketMapGenerator>WULA_PocketSpace_Small</pocketMapGenerator>
<exitDef>WULA_PocketMapExit</exitDef>
<pocketMapSize>(13, 13)</pocketMapSize>
<pocketMapSize>(25, 25)</pocketMapSize>
<allowDirectAccess>true</allowDirectAccess>
</li>
</modExtensions>
@@ -291,6 +288,60 @@
<uiOrder>2601</uiOrder>
</ThingDef>
<ThingDef ParentName="Wall">
<defName>WulaWall_Inner</defName>
<label>乌拉帝国内舱壁墙</label>
<description>乌拉帝国内舱壁墙,拥有预埋的管线,可以提供来自穿梭机的电力。</description>
<uiOrder>1800</uiOrder>
<uiIconPath>Wula/Building/Linked/WULA_Fortress_Wall_MenuIcon</uiIconPath>
<graphicData>
<texPath>Wula/Building/Linked/WulaWall/WulaWall_Atlas</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>CutoutComplex</shaderType>
</graphicData>
<statBases>
<MarketValue>20</MarketValue>
<Beauty>1</Beauty>
<WorkToBuild>2500</WorkToBuild>
<Flammability>0</Flammability>
<MeditationFocusStrength>0.22</MeditationFocusStrength>
<Cleanliness>0.1</Cleanliness>
</statBases>
<useHitPoints>false</useHitPoints>
<designationCategory Inherit="False"/>
<stuffCategories Inherit="False"/>
<costStuffCount>0</costStuffCount>
<costList>
<WULA_Alloy>4</WULA_Alloy>
</costList>
<building>
<isAirtight>true</isAirtight>
<deconstructible>false</deconstructible>
</building>
<recipeMaker>
<defaultIngredientFilter>
<categories>
<li>Metallic</li>
</categories>
</defaultIngredientFilter>
</recipeMaker>
<stuffCategories Inherit="False"/>
<useStuffTerrainAffordance>false</useStuffTerrainAffordance>
<terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
<comps Inherit="False">
<li Class="CompProperties_MeditationFocus">
<statDef>MeditationFocusStrength</statDef>
<focusTypes>
<li>Minimal</li>
</focusTypes>
</li>
<li Class="CompProperties_Power">
<compClass>CompPowerPlant</compClass>
<basePowerConsumption>-500</basePowerConsumption>
<transmitsPower>true</transmitsPower>
</li>
</comps>
</ThingDef>
<!-- 口袋空间退出点定义 -->
<ThingDef ParentName="PocketMapExit">
<defName>WULA_PocketMapExit</defName>
@@ -300,7 +351,7 @@
<size>(3,3)</size>
<drawerType>MapMeshAndRealTime</drawerType>
<graphicData>
<texPath>Wula/Building/WULA_Machine_Recharger</texPath>
<texPath>Wula/Building/WULA_PocketMapExit</texPath>
<graphicClass>Graphic_Single</graphicClass>
<drawSize>(3,3)</drawSize>
</graphicData>
@@ -318,11 +369,6 @@
<li Class="CompProperties_Effecter">
<effecterDef>UndercaveMapExitLightshafts</effecterDef>
</li>
<li Class="CompProperties_Power">
<compClass>CompPowerPlant</compClass>
<basePowerConsumption>-400</basePowerConsumption>
<transmitsPower>true</transmitsPower>
</li>
</comps>
</ThingDef>
@@ -406,30 +452,29 @@
<thingClass>WulaFallenEmpire.ArmedShuttleIncoming</thingClass>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<texPath>Wula/Building/WULA_ArmedShuttle</texPath>
<texPath>Wula/Building/WULA_ArmedShuttle_Moving</texPath>
<shaderType>CutoutComplex</shaderType>
<drawSize>(6,6.25)</drawSize>
<drawOffset>(0, 8, 1.6)</drawOffset>
</graphicData>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>
<size>(2,2)</size>
<size>(8,12)</size>
<skyfaller>
<movementType>Decelerate</movementType>
<anticipationSound>Shuttle_Landing</anticipationSound>
<anticipationSoundTicks>250</anticipationSoundTicks>
<ticksToImpactRange>200~250</ticksToImpactRange>
<shadowSize>(3.5,5.5)</shadowSize>
<rotationCurve>
<shadowSize>(9,13)</shadowSize>
<angleCurve>
<points>
<li>(0,30)</li>
<li>(0.5,5)</li>
<li>(0.9,-5)</li>
<li>(0.95,0)</li>
<li>(0,0)</li>
<li>(1, 1)</li>
</points>
</rotationCurve>
</angleCurve>
<zPositionCurve>
<points>
<li>(0.95,2.5)</li>
<li>(0.95,1.5)</li>
<li>(1,0)</li>
</points>
</zPositionCurve>
@@ -437,6 +482,7 @@
<points>
<li>(0.6,0.6)</li>
<li>(0.95,0.1)</li>
<li>(0.99,0.01)</li>
</points>
</speedCurve>
</skyfaller>
@@ -448,15 +494,13 @@
<thingClass>PassengerShuttleLeaving</thingClass>
<rotatable>true</rotatable>
<graphicData>
<graphicClass>Graphic_Multi</graphicClass>
<texPath>Wula/Building/WULA_ArmedShuttle</texPath>
<shaderType>CutoutComplex</shaderType>
<drawSize>(6,6.25)</drawSize>
<drawOffset>(0, 8, 1.6)</drawOffset>
<graphicClass>Graphic_Single</graphicClass>
<texPath>Wula/Building/WULA_ArmedShuttle_Moving</texPath>
<drawSize>(14,14)</drawSize>
</graphicData>
<staticSunShadowHeight Inherit="False" IsNull="True" />
<castEdgeShadows>False</castEdgeShadows>
<size>(2,2)</size>
<size>(8,12)</size>
<skyfaller>
<reversed>true</reversed>
<anticipationSound>Shuttle_Leaving</anticipationSound>
@@ -464,7 +508,7 @@
<ticksToImpactRange>-40~-15</ticksToImpactRange>
<moteSpawnTime>0.05</moteSpawnTime>
<shadow>Things/Skyfaller/SkyfallerShadowRectangle</shadow>
<shadowSize>(3.5,5.5)</shadowSize>
<shadowSize>(8,12)</shadowSize>
<motesPerCell>1</motesPerCell>
<rotationCurve>
<points>
@@ -489,8 +533,8 @@
</ThingDef>
<TransportShipDef>
<defName>Ship_ArmedShuttle</defName>
<label>武装穿梭机</label>
<shipThing>WULA_ArmedShuttle</shipThing>
<label>CVe-3"渡鸦"</label>
<shipThing>WULA_ArmedShuttleWithPocket</shipThing>
<arrivingSkyfaller>ArmedShuttleIncoming_WULA</arrivingSkyfaller>
<leavingSkyfaller>ArmedShuttleLeaving_WULA</leavingSkyfaller>
<worldObject>Wula_ArmedShuttle_Object</worldObject>
@@ -498,8 +542,8 @@
</TransportShipDef>
<WorldObjectDef ParentName="ShuttleWorldObjectBase">
<defName>Wula_ArmedShuttle_Object</defName>
<label>乌拉帝国武装穿梭机</label>
<description>一台正在飞行的乌拉帝国武装穿梭机。</description>
<label>CVe-3"渡鸦"</label>
<description>一台正在飞行的CVe-3"渡鸦"武装穿梭机。</description>
<expandingIconTexture>World/WorldObjects/Expanding/Wula_ArmedShuttle</expandingIconTexture>
<expandingIconDrawSize>1</expandingIconDrawSize>
</WorldObjectDef>

View File

@@ -1484,6 +1484,9 @@
<pathCost>0</pathCost>
<overrideMinifiedRot>North</overrideMinifiedRot>
<minifiedDrawOffset>(0, 0, 0.2)</minifiedDrawOffset>
<researchPrerequisites>
<li>WULA_Colony_License_LV1_Technology</li>
</researchPrerequisites>
<building>
<isEdifice>false</isEdifice>
<isAttachment>true</isAttachment>

View File

@@ -436,6 +436,7 @@
<description>HAp-6"战车"车体正面的突击炮,射程很短并且只能在静止状态开火,但是威力巨大,专门用于对付坚固的工事和成片的人群。</description>
<tickerType>Normal</tickerType>
<techLevel>Spacer</techLevel>
<tradeability>None</tradeability>
<uiIconPath>Wula/Projectile/WULA_Shrapnel</uiIconPath>
<graphicData>
<texPath>Wula/Weapon/WULA_Weapon_Empty</texPath>

View File

@@ -1044,6 +1044,7 @@
</li>
</lifeStageAges>
<baseHealthScale>2</baseHealthScale>
<mechWeightClass>Heavy</mechWeightClass>
</race>
<tools Inherit="False">
<li>
@@ -1186,6 +1187,7 @@
<baseHealthScale>10</baseHealthScale>
<flightStartChanceOnJobStart>1</flightStartChanceOnJobStart>
<mechWeightClass>Heavy</mechWeightClass>
<!-- <thinkTreeConstant>WarUrchinConstant</thinkTreeConstant> -->
</race>
<tools Inherit="False">
@@ -1315,6 +1317,7 @@
<baseHealthScale>10</baseHealthScale>
<flightStartChanceOnJobStart>1</flightStartChanceOnJobStart>
<mechWeightClass>Heavy</mechWeightClass>
<!-- <thinkTreeConstant>WarUrchinConstant</thinkTreeConstant> -->
</race>
<tools Inherit="False">
@@ -1420,6 +1423,7 @@
</li>
</lifeStageAges>
<baseHealthScale>5</baseHealthScale>
<mechWeightClass>Heavy</mechWeightClass>
</race>
<tools Inherit="False">
<li>
@@ -1537,6 +1541,7 @@
<baseHealthScale>25</baseHealthScale>
<flightStartChanceOnJobStart>1</flightStartChanceOnJobStart>
<mechWeightClass>Heavy</mechWeightClass>
<!-- <thinkTreeConstant>WarUrchinConstant</thinkTreeConstant> -->
</race>
<tools Inherit="False">
@@ -1960,6 +1965,7 @@
<baseHealthScale>50</baseHealthScale>
<flightStartChanceOnJobStart>1</flightStartChanceOnJobStart>
<mechWeightClass>Heavy</mechWeightClass>
<!-- <thinkTreeConstant>WarUrchinConstant</thinkTreeConstant> -->
</race>
<tools Inherit="False">

View File

@@ -87,4 +87,18 @@
<scanCells>true</scanCells>
<directOrderable>true</directOrderable>
</WorkGiverDef>
<WorkGiverDef>
<defName>WULA_Cat_Drill</defName>
<label>钻探</label>
<giverClass>WulaFallenEmpire.WorkGiver_DeepDrill_WulaCatConstructor</giverClass>
<workType>Mining</workType>
<priorityInType>50</priorityInType>
<verb>钻探</verb>
<gerund>钻探中</gerund>
<requiredCapacities>
<li>Manipulation</li>
</requiredCapacities>
<canBeDoneByMechs>true</canBeDoneByMechs>
</WorkGiverDef>
</Defs>

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<LanguageData>
<WULA_Boss_Sky_Lock.questNameRules.rulesStrings>
<li>questName->特殊任务:天锁</li>
<li>questName->特殊任务:击毁灵能泰坦</li>
</WULA_Boss_Sky_Lock.questNameRules.rulesStrings>
<WULA_Boss_Sky_Lock.questDescriptionRules.rulesStrings>
<li>questDescription->乌拉帝国行星封锁机关的总控AI向殖民地发送了一个特殊的请求一台部署在运输舰上的乌拉帝国战争机械——&lt;color=#AA74E5>&lt;i>灵能泰坦&lt;/i>&lt;/color>——因为失控而无差别攻击,行星封锁机关不得不让运输舰坠向星球表面以阻止事态扩大。\n\n可惜的是&lt;color=#AA74E5>&lt;i>灵能泰坦&lt;/i>&lt;/color>没有因为运输舰坠毁而受到伤害,其仍然在星球表面大肆杀戮,殖民地必须直面这台骇人的巨兽。行星封锁机关为殖民地提供了以下信息:\n\n&lt;color=#9F0400>&lt;i>-内驱回路&lt;/i>&lt;/color> PAt-6"灵能泰坦"虽然是一台强大的灵能战争机器,但是其灵能回路是以封闭循环的方式刻印的,外部的灵能攻击无法影响它\n&lt;color=#9F0400>&lt;i>-死亡使者&lt;/i>&lt;/color> PAt-6"灵能泰坦"的灵能尖啸可以无差别粉碎所有的目标,除非有足够的信心和手段控制住它,否则不要与其正面交锋\n&lt;color=#9F0400>&lt;i>-连环天锁&lt;/i>&lt;/color> PAt-6"灵能泰坦"一定会和天锁一起出现,天锁是纯粹的灵能造物,可以吸收灵能泰坦受到的伤害。在所有的天锁被摧毁前,灵能泰坦不会受到伤害。\n\n行星封锁机关承诺一旦击败了暴走的&lt;color=#AA74E5>&lt;i>灵能泰坦&lt;/i>&lt;/color>,她们可以回收其灵能回路的核心,以此为殖民地建造一台全新的灵能泰坦。</li>
<li>questDescription->乌拉帝国行星封锁机关的总控AI向殖民地发送了一个特殊的请求一台部署在运输舰上的乌拉帝国战争机械——&lt;color=#AA74E5>&lt;i>灵能泰坦&lt;/i>&lt;/color>——因为失控而无差别攻击,行星封锁机关不得不让运输舰坠向星球表面以阻止事态扩大。\n\n可惜的是&lt;color=#AA74E5>&lt;i>灵能泰坦&lt;/i>&lt;/color>没有因为运输舰坠毁而受到伤害,其仍然在星球表面大肆杀戮,殖民地必须直面这台骇人的巨兽。行星封锁机关为殖民地提供了以下信息:\n\n&lt;color=#9F0400>&lt;i>-内驱回路&lt;/i>&lt;/color> PAt-6"灵能泰坦"虽然是一台强大的灵能战争机器,但是其灵能回路是以封闭循环的方式刻印的,外部的灵能攻击无法影响它\n&lt;color=#9F0400>&lt;i>-死亡使者&lt;/i>&lt;/color> PAt-6"灵能泰坦"的灵能尖啸可以无差别粉碎所有的目标,除非有足够的信心和手段控制住它,否则不要与其正面交锋\n&lt;color=#9F0400>&lt;i>-连环天锁&lt;/i>&lt;/color> PAt-6"灵能泰坦"一定会和天锁一起出现,天锁是纯粹的灵能造物,可以吸收灵能泰坦受到的伤害。在所有的天锁被摧毁前,灵能泰坦不会受到伤害。\n&lt;color=#9F0400>&lt;i>-网络控制&lt;/i>&lt;/color> PAt-6"灵能泰坦"的控制了附近在坠毁中幸存的战车集群,因此坠毁地区很可能不只有一个敌人\n\n行星封锁机关承诺一旦击败了暴走的&lt;color=#AA74E5>&lt;i>灵能泰坦&lt;/i>&lt;/color>,她们可以回收其灵能回路的核心,以此为殖民地建造一台全新的灵能泰坦。</li>
</WULA_Boss_Sky_Lock.questDescriptionRules.rulesStrings>
</LanguageData>

View File

@@ -443,4 +443,6 @@
<WULA_Designator_CallSkyfallerInAreaDesc>标记一块区域,激活其中所有需要空投的乌拉帝国建筑和战争机械体。\n\n区域空投依然需要计算材料消耗如果材料不足则不会进行空投。</WULA_Designator_CallSkyfallerInAreaDesc>
<WULA_AreaCallInitiated>区域空投已下达</WULA_AreaCallInitiated>
<WULA_NoCallableBuildingsInArea>区域内没有可接受空投指令的乌拉帝国空投区</WULA_NoCallableBuildingsInArea>
<WULA_AbilityRequiresNonHostility>与{0}敌对时无法使用此能力</WULA_AbilityRequiresNonHostility>
</LanguageData>

View File

@@ -2,20 +2,20 @@
<LanguageData>
<!-- Building_ArmedShuttleWithPocket 相关文本 -->
<WULA.PocketSpace.Status>生活区状态</WULA.PocketSpace.Status>
<WULA.PocketSpace.Status>\n生活区状态</WULA.PocketSpace.Status>
<WULA.PocketSpace.Ready>已就绪</WULA.PocketSpace.Ready>
<WULA.PocketSpace.NotGenerated>未初始化</WULA.PocketSpace.NotGenerated>
<!-- Gizmo 按钮文本 -->
<WULA.PocketSpace.Initialize>初始化生活区</WULA.PocketSpace.Initialize>
<WULA.PocketSpace.InitializeDesc>初始化穿梭机的内部口袋空间。这将在穿梭机内部创建一个可供成员休息工作的生活区。</WULA.PocketSpace.InitializeDesc>
<WULA.PocketSpace.InitializeDesc>初始化穿梭机的生活区空间。这将在穿梭机内部创建一个可供成员休息工作的生活区。在这个空间内的殖民者无法参与穿梭机的驾驶。</WULA.PocketSpace.InitializeDesc>
<WULA.PocketSpace.Enter>进入生活区</WULA.PocketSpace.Enter>
<WULA.PocketSpace.EnterDesc>进入穿梭机的内部口袋空间。选中的殖民者将被传送到内部空间</WULA.PocketSpace.EnterDesc>
<WULA.PocketSpace.EnterDesc>进入穿梭机的生活区空间——选中的殖民者将被传送到生活区空间。在这个空间内的殖民者无法参与穿梭机的驾驶</WULA.PocketSpace.EnterDesc>
<WULA.PocketSpace.ViewMap>查看生活区</WULA.PocketSpace.ViewMap>
<WULA.PocketSpace.ViewMapDesc>切换视角到穿梭机的内部口袋空间。</WULA.PocketSpace.ViewMapDesc>
<WULA.PocketSpace.ViewMapDesc>切换视角到穿梭机的生活区空间。</WULA.PocketSpace.ViewMapDesc>
<!-- 消息文本 -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -0,0 +1,48 @@
using RimWorld;
using Verse;
namespace WulaFallenEmpire
{
public class CompProperties_AbilityRequiresNonHostility : CompProperties_AbilityEffect
{
public FactionDef factionDef;
public CompProperties_AbilityRequiresNonHostility()
{
compClass = typeof(CompAbilityEffect_RequiresNonHostility);
}
}
public class CompAbilityEffect_RequiresNonHostility : CompAbilityEffect
{
public new CompProperties_AbilityRequiresNonHostility Props => (CompProperties_AbilityRequiresNonHostility)props;
public override bool GizmoDisabled(out string reason)
{
Pawn pawn = parent.pawn;
if (pawn == null || pawn.Faction == null || Props.factionDef == null)
{
reason = null;
return false;
}
// 查找指定派系
Faction targetFaction = Find.FactionManager.FirstFactionOfDef(Props.factionDef);
if (targetFaction == null)
{
reason = null;
return false;
}
// 检查是否敌对
if (pawn.Faction.HostileTo(targetFaction))
{
reason = "WULA_AbilityRequiresNonHostility".Translate(Props.factionDef);
return true;
}
reason = null;
return false;
}
}
}

View File

@@ -21,13 +21,10 @@ namespace WulaFallenEmpire
#region 使MapPortal的图标
/// <summary>查看口袋地图图标</summary>
private static readonly Texture2D ViewPocketMapTex = ContentFinder<Texture2D>.Get("UI/Commands/ViewCave");
/// <summary>取消进入图标</summary>
private static readonly Texture2D CancelEnterTex = ContentFinder<Texture2D>.Get("UI/Designators/Cancel");
private static readonly Texture2D ViewPocketMapTex = ContentFinder<Texture2D>.Get("Wula/UI/Commands/WULA_View_ArmedShuttle_Pocket");
/// <summary>默认进入图标</summary>
private static readonly Texture2D DefaultEnterTex = ContentFinder<Texture2D>.Get("UI/Commands/LoadTransporter");
private static readonly Texture2D DefaultEnterTex = ContentFinder<Texture2D>.Get("Wula/UI/Commands/WULA_Enter_ArmedShuttle_Pocket");
#endregion
#region

View File

@@ -10,16 +10,61 @@ namespace WulaFallenEmpire
protected override bool Satisfied(Pawn pawn)
{
if (pawn == null || pawn.Dead || pawn.Downed)
return false;
try
{
if (pawn == null || pawn.Dead || pawn.Downed)
return false;
// 检查是否有自主机械组件
var comp = pawn.GetComp<CompAutonomousMech>();
if (comp == null)
return false;
// 检查是否有自主机械组件
var comp = pawn.GetComp<CompAutonomousMech>();
if (comp == null)
return false;
// 检查当前工作模式是否匹配要求
return comp.CurrentWorkMode == requiredMode;
// 检查当前工作模式是否匹配要求
if (comp.CurrentWorkMode != requiredMode)
return false;
// 额外的安全检查确保pawn有工作设置
if (pawn.workSettings == null)
{
Log.Warning($"[WULA] {pawn.LabelShort} has no workSettings in ThinkNode_ConditionalAutonomousWorkMode");
return false;
}
// 检查是否启用了工作
if (!pawn.workSettings.EverWork)
{
Log.Warning($"[WULA] {pawn.LabelShort} has EverWork=false in ThinkNode_ConditionalAutonomousWorkMode");
return false;
}
// 检查是否有工作给予器
var workGivers = pawn.workSettings.WorkGiversInOrderNormal;
if (workGivers == null || workGivers.Count == 0)
{
Log.Warning($"[WULA] {pawn.LabelShort} has no work givers in ThinkNode_ConditionalAutonomousWorkMode");
return false;
}
// 检查是否为机械体且具有机械体能力
if (pawn.RaceProps.IsMechanoid)
{
// 检查是否有操纵能力
var manipulation = pawn.health?.capacities?.GetLevel(PawnCapacityDefOf.Manipulation);
if (manipulation < 0.1f)
{
Log.Warning($"[WULA] {pawn.LabelShort} has insufficient manipulation capacity: {manipulation}");
return false;
}
}
return true;
}
catch (System.Exception ex)
{
Log.Error($"[WULA] Exception in ThinkNode_ConditionalAutonomousWorkMode.Satisfied for pawn {pawn?.LabelShort}: {ex}");
return false;
}
}
}
}

View File

@@ -18,6 +18,8 @@ namespace WulaFallenEmpire
public SlateRef<Map> map;
public SlateRef<bool> sendMessageOnSuccess = true;
public SlateRef<bool> sendMessageOnFailure = true;
public SlateRef<bool> allowThickRoof = false;
public SlateRef<bool> allowThinRoof = true;
protected override bool TestRunInt(Slate slate)
{
@@ -35,13 +37,6 @@ namespace WulaFallenEmpire
return false;
}
var compProps = thingDef.GetValue(slate).comps?.OfType<CompProperties_PrefabSkyfallerCaller>().FirstOrDefault();
if (compProps == null)
{
Log.Warning($"[QuestNode] ThingDef {thingDef.GetValue(slate).defName} does not have CompProperties_PrefabSkyfallerCaller");
return false;
}
return true;
}
@@ -56,6 +51,8 @@ namespace WulaFallenEmpire
Map targetMap = map.GetValue(slate) ?? Find.CurrentMap;
bool doSendMessageOnSuccess = sendMessageOnSuccess.GetValue(slate);
bool doSendMessageOnFailure = sendMessageOnFailure.GetValue(slate);
bool targetAllowThickRoof = allowThickRoof.GetValue(slate);
bool targetAllowThinRoof = allowThinRoof.GetValue(slate);
if (targetThingDef == null)
{
@@ -69,18 +66,10 @@ namespace WulaFallenEmpire
return;
}
// 获取组件属性
var compProps = targetThingDef.comps?.OfType<CompProperties_PrefabSkyfallerCaller>().FirstOrDefault();
if (compProps == null)
{
Log.Error($"[QuestNode] ThingDef {targetThingDef.defName} does not have CompProperties_PrefabSkyfallerCaller");
return;
}
Log.Message($"[QuestNode] Attempting to spawn {targetSpawnCount} {targetThingDef.defName} on map {targetMap}");
// 执行生成
int successCount = SpawnThingsAtValidLocations(targetThingDef, targetFaction, targetSpawnCount, targetMap);
int successCount = SpawnThingsAtValidLocations(targetThingDef, targetFaction, targetSpawnCount, targetMap, targetAllowThickRoof, targetAllowThinRoof);
// 发送结果消息
if (successCount > 0)
@@ -108,23 +97,16 @@ namespace WulaFallenEmpire
/// <summary>
/// 在有效位置生成多个建筑
/// </summary>
private int SpawnThingsAtValidLocations(ThingDef thingDef, Faction faction, int spawnCount, Map targetMap)
private int SpawnThingsAtValidLocations(ThingDef thingDef, Faction faction, int spawnCount, Map targetMap, bool allowThickRoof, bool allowThinRoof)
{
int successCount = 0;
int attempts = 0;
const int maxAttempts = 100; // 最大尝试次数
var compProps = thingDef.comps.OfType<CompProperties_PrefabSkyfallerCaller>().FirstOrDefault();
if (compProps == null)
{
Log.Error($"[QuestNode] Could not find CompProperties_PrefabSkyfallerCaller for {thingDef.defName}");
return 0;
}
for (int i = 0; i < spawnCount && attempts < maxAttempts; i++)
{
attempts++;
IntVec3 spawnPos = FindSpawnPositionForSkyfaller(targetMap, thingDef, compProps);
IntVec3 spawnPos = FindSpawnPositionForSkyfaller(targetMap, thingDef, allowThickRoof, allowThinRoof);
if (spawnPos.IsValid)
{
@@ -152,7 +134,7 @@ namespace WulaFallenEmpire
/// <summary>
/// 查找适合Skyfaller空投的位置
/// </summary>
private IntVec3 FindSpawnPositionForSkyfaller(Map map, ThingDef thingDef, CompProperties_SkyfallerCaller compProps)
private IntVec3 FindSpawnPositionForSkyfaller(Map map, ThingDef thingDef, bool allowThickRoof, bool allowThinRoof)
{
var potentialCells = new List<IntVec3>();
@@ -160,7 +142,7 @@ namespace WulaFallenEmpire
var baseCells = GetOpenAreaCellsNearBase(map, thingDef.Size);
foreach (var cell in baseCells)
{
if (IsValidForSkyfallerDrop(map, cell, thingDef, compProps))
if (IsValidForSkyfallerDrop(map, cell, thingDef, allowThickRoof, allowThinRoof))
{
potentialCells.Add(cell);
}
@@ -176,7 +158,7 @@ namespace WulaFallenEmpire
var openAreas = FindOpenAreas(map, thingDef.Size, 500);
foreach (var cell in openAreas)
{
if (IsValidForSkyfallerDrop(map, cell, thingDef, compProps))
if (IsValidForSkyfallerDrop(map, cell, thingDef, allowThickRoof, allowThinRoof))
{
potentialCells.Add(cell);
}
@@ -197,7 +179,7 @@ namespace WulaFallenEmpire
Rand.Range(thingDef.Size.z, map.Size.z - thingDef.Size.z)
);
if (randomCell.InBounds(map) && IsValidForSkyfallerDrop(map, randomCell, thingDef, compProps))
if (randomCell.InBounds(map) && IsValidForSkyfallerDrop(map, randomCell, thingDef, allowThickRoof, allowThinRoof))
{
potentialCells.Add(randomCell);
}
@@ -216,7 +198,7 @@ namespace WulaFallenEmpire
/// <summary>
/// 基于Skyfaller实际行为的有效性检查
/// </summary>
private bool IsValidForSkyfallerDrop(Map map, IntVec3 cell, ThingDef thingDef, CompProperties_SkyfallerCaller compProps)
private bool IsValidForSkyfallerDrop(Map map, IntVec3 cell, ThingDef thingDef, bool allowThickRoof, bool allowThinRoof)
{
// 1. 检查边界
if (!cell.InBounds(map))
@@ -230,11 +212,11 @@ namespace WulaFallenEmpire
if (!occupiedCell.InBounds(map))
return false;
// 3. 检查厚岩顶 - 绝对不允许
// 3. 检查厚岩顶 - 绝对不允许(除非明确允许)
RoofDef roof = occupiedCell.GetRoof(map);
if (roof != null && roof.isThickRoof)
{
if (!compProps.allowThickRoof)
if (!allowThickRoof)
return false;
}
@@ -274,7 +256,7 @@ namespace WulaFallenEmpire
// 6. 检查薄岩顶和普通屋顶的条件
if (roof != null && !roof.isThickRoof)
{
if (!compProps.allowThinRoof)
if (!allowThinRoof)
return false;
}
}

View File

@@ -0,0 +1,98 @@
using System.Collections.Generic;
using RimWorld;
using Verse;
using Verse.AI;
namespace WulaFallenEmpire
{
// 扩展方法,用于检查特定种族
public static class WorkGiverExtensions
{
// 检查是否为指定种族
public static bool IsRace(this Pawn pawn, string raceDefName)
{
return pawn.def.defName == raceDefName;
}
// 检查是否为指定种族之一
public static bool IsAnyRace(this Pawn pawn, params string[] raceDefNames)
{
string pawnRace = pawn.def.defName;
foreach (string race in raceDefNames)
{
if (pawnRace == race)
{
return true;
}
}
return false;
}
}
// 使用扩展方法的子类
public class WorkGiver_DeepDrill_WulaCatConstructor : WorkGiver_DeepDrill
{
private const string AllowedRace = "Mech_WULA_Cat_Constructor";
public override bool ShouldSkip(Pawn pawn, bool forced = false)
{
// 检查种族
if (!pawn.IsRace(AllowedRace))
{
return true;
}
// 调用基类方法
bool shouldSkip = base.ShouldSkip(pawn, forced);
return shouldSkip;
}
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
{
// 检查种族
if (!pawn.IsRace(AllowedRace))
{
return false;
}
// 调用基类方法
bool hasJob = base.HasJobOnThing(pawn, t, forced);
return hasJob;
}
// 可选:自定义工作优先级
public override float GetPriority(Pawn pawn, TargetInfo t)
{
if (!pawn.IsRace(AllowedRace))
{
return 0f; // 不是允许的种族优先级为0
}
// 如果是允许的种族,提高优先级
float basePriority = base.GetPriority(pawn, t);
return basePriority * 1.5f; // 提高50%优先级
}
// 可选:提供自定义的工作描述
public override Job JobOnThing(Pawn pawn, Thing t, bool forced = false)
{
if (!pawn.IsRace(AllowedRace))
{
return null;
}
Job job = base.JobOnThing(pawn, t, forced);
if (job != null)
{
// 可以在这里添加自定义标签或其他修改
job.playerForced = forced;
}
return job;
}
}
}

View File

@@ -74,6 +74,7 @@
<ItemGroup>
<Compile Include="Ability\CompAbilityEffect_LaunchMultiProjectile.cs" />
<Compile Include="Ability\CompAbilityEffect_ResearchPrereq.cs" />
<Compile Include="Ability\CompAbilityEffect_RequiresNonHostility.cs" />
<Compile Include="Ability\WULA_AbilityAreaDestruction\CompAbilityEffect_AreaDestruction.cs" />
<Compile Include="Ability\WULA_AbilityAreaDestruction\CompProperties_AbilityAreaDestruction.cs" />
<Compile Include="Ability\WULA_AbilityBombardment\CompAbilityEffect_Bombardment.cs" />
@@ -359,6 +360,7 @@
<Compile Include="Verb\MeleeAttack_Cleave\Verb_MeleeAttack_Cleave.cs" />
<Compile Include="Verb\Verb_ShootShotgunWithOffset.cs" />
<Compile Include="Verb\Verb_ShootWithOffset.cs" />
<Compile Include="WorkGiver\WorkGiver_DeepDrill_WulaConstructor.cs" />
<Compile Include="WulaFallenEmpireMod.cs" />
<Compile Include="WulaDefOf.cs" />
<Compile Include="HediffComp\HediffComp_DamageResponse.cs" />