This commit is contained in:
Tourswen
2025-12-14 01:05:52 +08:00
parent ee5a437a85
commit 03f326452b
43 changed files with 2150 additions and 75 deletions

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<!-- Order fix -->
<Operation Class="PatchOperationSequence">
<success>Always</success>
<operations>
<li Class="PatchOperationReplace">
<xpath>/Defs/MechWorkModeDef[defName="Work"]/uiOrder</xpath>
<success>Invert</success>
<value>
<uiOrder>100</uiOrder>
</value>
</li>
<li Class="PatchOperationAdd">
<xpath>/Defs/MechWorkModeDef[defName="Work"]</xpath>
<success>Always</success>
<value>
<uiOrder>100</uiOrder>
</value>
</li>
</operations>
</Operation>
<!-- By choice -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_Scavenging</settingName>
<active Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationInsert">
<xpath>/Defs/DesignationCategoryDef[defName="Biotech" or defName="Zone"]/specialDesignatorClasses/li[contains(text(),'Designator_Deconstruct')]</xpath>
<order>Append</order>
<success>Always</success>
<value>
<li>WVC_WorkModes.Designator_MechanoidScavengeZone</li>
</value>
</li>
</operations>
</active>
</Operation>
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>enable_GoToShutdownZoneJob</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/DesignationCategoryDef[defName="Biotech" or defName="Zone"]/specialDesignatorClasses/li[contains(text(),'Designator_Deconstruct')]</xpath>
<order>Append</order>
<success>Always</success>
<value>
<li>WVC_WorkModes.Designator_MechanoidShutdownZone</li>
</value>
</active>
</Operation>
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>enable_GoToShutdownRoomJob</settingName>
<deActive Class="PatchOperationRemove">
<xpath>/Defs/RoomRoleDef[defName="WVC_MechHangar"]</xpath>
<success>Always</success>
</deActive>
</Operation>
</Patch>

View File

@@ -0,0 +1,554 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_FindAndDestroy</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_FindAndDestroy</requiredMode>
<subNodes>
<!-- = -->
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>65</targetAcquireRadius>
<targetKeepRadius>72</targetKeepRadius>
<!-- <targetAcquireRadius>1333</targetAcquireRadius> -->
<!-- <targetKeepRadius>1777</targetKeepRadius> -->
</li>
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<li Class="JobGiver_AIGotoNearestHostile" />
</subNodes>
</li>
<!-- = -->
<li Class="JobGiver_SeekAllowedArea" />
<!-- <li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger"> -->
<!-- <tickInterval>625</tickInterval> -->
<!-- </li> -->
<li Class="JobGiver_WanderColony">
<maxDanger>Deadly</maxDanger>
<reportStringOverride>Patrolling.</reportStringOverride>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_FindAndDestroy"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_WaitEnemy</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_WaitEnemy</requiredMode>
<subNodes>
<!-- = -->
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>65</targetAcquireRadius>
<targetKeepRadius>72</targetKeepRadius>
</li>
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<li Class="JobGiver_AIGotoNearestHostile" />
</subNodes>
</li>
<!-- = -->
<li Class="JobGiver_SeekAllowedArea" />
<!-- <li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger"> -->
<!-- <tickInterval>625</tickInterval> -->
<!-- </li> -->
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WaitEnemy</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Combat</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_WaitEnemy"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_WorkAndWaitEnemy</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_WorkAndWaitEnemy</requiredMode>
<subNodes>
<!-- = -->
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>65</targetAcquireRadius>
<targetKeepRadius>72</targetKeepRadius>
</li>
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<li Class="JobGiver_AIGotoNearestHostile" />
</subNodes>
</li>
<!-- = -->
<!-- Charge -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<!-- END Charge -->
<li Class="JobGiver_Work">
<emergency>true</emergency>
</li>
<li Class="JobGiver_Work" />
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WaitEnemy</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Combat</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown long -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_WorkAndWaitEnemy"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_Ambush</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_Ambush</requiredMode>
<subNodes>
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>25</targetAcquireRadius>
<targetKeepRadius>42</targetKeepRadius>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_Ambush</spotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Ambush</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_Ambush"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_DefendYourself</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_DefendYourself</requiredMode>
<subNodes>
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>9</targetAcquireRadius>
<targetKeepRadius>12</targetKeepRadius>
</li>
<li Class="WVC_WorkModes.ThinkNode_ConditionalCanRepair">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Very-very long shutdown -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>6000</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
<li Class="JobGiver_WanderColony">
<maxDanger>Deadly</maxDanger>
<reportStringOverride>Protects itself.</reportStringOverride>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_DefendYourself"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_WorkAndRecharge</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_WorkAndRecharge</requiredMode>
<subNodes>
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="JobGiver_Work">
<emergency>true</emergency>
</li>
<li Class="JobGiver_Work" />
<li Class="ThinkNode_ConditionalWorkMech">
<invert>true</invert>
<subNodes>
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>65</targetAcquireRadius>
<targetKeepRadius>72</targetKeepRadius>
</li>
</subNodes>
</li>
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WorkAndRecharge</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Work</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown long -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_WorkAndRecharge"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_SafeWorkAndRecharge</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_SafeWorkAndRecharge</requiredMode>
<subNodes>
<!-- Find Enemy -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<!-- If Danger -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_TotallySafeSpot</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>1500</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
<!-- If Safe -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="JobGiver_Work">
<emergency>true</emergency>
</li>
<li Class="JobGiver_Work" />
<li Class="ThinkNode_ConditionalWorkMech">
<invert>true</invert>
<subNodes>
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>65</targetAcquireRadius>
<targetKeepRadius>72</targetKeepRadius>
</li>
</subNodes>
</li>
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WorkAndRecharge</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Work</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_SafeWorkAndRecharge"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_EscaortAndRecharge</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_EscaortAndRecharge</requiredMode>
<subNodes>
<li Class="JobGiver_GetEnergy_Charger" />
<!-- <li Class="JobGiver_ExitMapFollowOverseer" /> -->
<li Class="WVC_WorkModes.JobGiver_SmartAIDefendOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartAIFollowOverseer"/>
<li Class="WVC_WorkModes.JobGiver_SmartAIWaitWithOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartWanderOverseer" />
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_EscaortAndRecharge"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_WorkRechargeEscort</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_WorkRechargeEscort</requiredMode>
<subNodes>
<!-- <li Class="JobGiver_SeekAllowedArea" /> -->
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="JobGiver_Work">
<emergency>true</emergency>
</li>
<li Class="JobGiver_Work" />
<!-- <li Class="JobGiver_ExitMapFollowOverseer" /> -->
<li Class="WVC_WorkModes.JobGiver_SmartAIDefendOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartAIFollowOverseer"/>
<li Class="WVC_WorkModes.JobGiver_SmartAIWaitWithOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartWanderOverseer" />
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_WorkRechargeEscort"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_EscortIfEnemyOnMap</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_EscortIfEnemyOnMap</requiredMode>
<subNodes>
<!-- <li Class="JobGiver_ExitMapFollowOverseer" /> -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_SmartAIDefendOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartAIFollowOverseer"/>
<li Class="WVC_WorkModes.JobGiver_SmartAIWaitWithOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartWanderOverseer" />
</subNodes>
</li>
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WaitEnemy</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Combat</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown short -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>625</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_EscortIfEnemyOnMap"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_RechargeAndShutdown</settingName>
<active Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_RechargeAndShutdown</requiredMode>
<subNodes>
<!-- Charge -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Shutdown long -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>6000</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_RechargeAndShutdown"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
</Patch>

View File

@@ -0,0 +1,378 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_EscortIfEnemyWorkAndRecharge</settingName>
<active Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_EscortIfEnemyWorkAndRecharge</requiredMode>
<subNodes>
<!-- Enemy = true -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_SmartAIDefendOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartAIFollowOverseer"/>
<li Class="WVC_WorkModes.JobGiver_SmartAIWaitWithOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartWanderOverseer" />
</subNodes>
</li>
<!-- Enemy = false -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="JobGiver_Work">
<emergency>true</emergency>
</li>
<li Class="JobGiver_Work" />
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WorkAndRecharge</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Work</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown long -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</li>
</operations>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_EscortIfEnemyWorkAndRecharge"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_EscortIfDraftedOrDowned</settingName>
<active Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_EscortIfDraftedOrDowned</requiredMode>
<subNodes>
<!-- Drafted == true -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalDrafted">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_SmartAIDefendOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartAIFollowOverseer"/>
<li Class="WVC_WorkModes.JobGiver_SmartAIWaitWithOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartWanderOverseer" />
</subNodes>
</li>
<!-- Drafted == false -->
<!-- Downed == true -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalDowned">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_SmartAIDefendOverseer" />
<li Class="WVC_WorkModes.JobGiver_SmartAIFollowOverseer"/>
<li Class="JobGiver_AIFightEnemies">
<targetAcquireRadius>65</targetAcquireRadius>
<targetKeepRadius>72</targetKeepRadius>
</li>
<!-- <li Class="WVC_WorkModes.JobGiver_SmartAIWaitWithOverseer" /> -->
<li Class="WVC_WorkModes.JobGiver_SmartWanderOverseer" />
</subNodes>
</li>
<!-- Downed == false -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<!-- Go to smart charge -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_Charger">
<tickInterval>625</tickInterval>
</li>
<!-- Go to spot -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_WaitEnemy</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Combat</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Shutdown long -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<forced>true</forced>
</li>
</subNodes>
</li>
</value>
</li>
</operations>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_EscortIfDraftedOrDowned"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_HiveMindResearching</settingName>
<active Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_HiveMindResearching</requiredMode>
<subNodes>
<!-- <li Class="WVC_WorkModes.ThinkNode_ConditionalResearchProjects"> -->
<!-- <invert>true</invert> -->
<!-- <allOfResearchProjects> -->
<!-- <li>WVC_WorkModes_HiveMindResearch</li> -->
<!-- </allOfResearchProjects> -->
<!-- <subNodes> -->
<!-- <li Class="WVC_WorkModes.JobGiver_ChangeMode"> -->
<!-- <workMode>Work</workMode> -->
<!-- </li> -->
<!-- </subNodes> -->
<!-- </li> -->
<!-- <li Class="WVC_WorkModes.ThinkNode_ConditionalWorkModesWithResearchRequirement"> -->
<!-- <workMode>Work</workMode> -->
<!-- <workModeResearchRequirementDefs> -->
<!-- <li>WVC_WorkModes_HiveMindResearch</li> -->
<!-- </workModeResearchRequirementDefs> -->
<!-- </li> -->
<!-- Find Enemy -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<!-- If Danger -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_TotallySafeSpot</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>1500</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
<!-- If Safe -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="WVC_WorkModes.ThinkNode_ConditionalCanRepair">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Very-very long shutdown -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>6000</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
<li Class="WVC_WorkModes.JobGiver_MechDoResearch">
<statDef>BandwidthCost</statDef>
<researchAmount>10</researchAmount>
</li>
<li Class="JobGiver_WanderColony">
<maxDanger>Deadly</maxDanger>
<locomotionUrgency>Amble</locomotionUrgency>
<reportStringOverride>Researching.</reportStringOverride>
</li>
</subNodes>
</li>
</value>
</li>
</operations>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_HiveMindResearching"]</xpath>
<success>Always</success>
</li>
<li Class="PatchOperationRemove">
<xpath>/Defs/ResearchProjectDef[defName="WVC_WorkModes_HiveMindResearch"]</xpath>
<success>Always</success>
</li>
<li Class="PatchOperationRemove">
<xpath>/Defs/WVC_WorkModes.WorkModeResearchRequirementDef[defName="WVC_WorkModes_HiveMindResearch"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>WVC_Scavenging</settingName>
<active Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationInsert">
<xpath>/Defs/ThinkTreeDef[defName="WULA_AutonomousMech"]/thinkRoot/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousMech"]/subNodes/li[@Class="ThinkNode_ConditionalNotFormingCaravan"]/subNodes/li[@Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode"][requiredMode="Work"]</xpath>
<value>
<li Class="WulaFallenEmpire.ThinkNode_ConditionalAutonomousWorkMode">
<requiredMode>WVC_Scavenging</requiredMode>
<subNodes>
<!-- <li Class="WVC_WorkModes.ThinkNode_ConditionalResearchProjects"> -->
<!-- <invert>true</invert> -->
<!-- <allOfResearchProjects> -->
<!-- <li>WVC_WorkModes_Scavenging</li> -->
<!-- </allOfResearchProjects> -->
<!-- <subNodes> -->
<!-- <li Class="WVC_WorkModes.JobGiver_ChangeMode"> -->
<!-- <workMode>Work</workMode> -->
<!-- </li> -->
<!-- </subNodes> -->
<!-- </li> -->
<!-- <li Class="WVC_WorkModes.ThinkNode_ConditionalWorkModesWithResearchRequirement"> -->
<!-- <workMode>Work</workMode> -->
<!-- <workModeResearchRequirementDefs> -->
<!-- <li>WVC_WorkModes_Scavenging</li> -->
<!-- </workModeResearchRequirementDefs> -->
<!-- </li> -->
<!-- Find Enemy -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalEnemyOnMap">
<subNodes>
<!-- If Danger -->
<!-- <li Class="WVC_WorkModes.JobGiver_GoToClosetShutdownSpot"> -->
<!-- <spotDefName>WVC_IOMSS_TotallySafeSpot</spotDefName> -->
<!-- <backupSpotDefName>WVC_IdleOptimization_MechanoidShutdownSpot</backupSpotDefName> -->
<!-- </li> -->
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>1500</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
<!-- If Safe -->
<li Class="JobGiver_SeekAllowedArea" />
<li Class="JobGiver_GetEnergy_Charger" />
<li Class="WVC_WorkModes.ThinkNode_ConditionalCanRepair">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_GoToShutdownZone">
<workModeType>Safe</workModeType>
<possibleRooms>
<li>WVC_MechHangar</li>
</possibleRooms>
</li>
<!-- Very-very long shutdown -->
<li Class="WVC_WorkModes.JobGiver_GetEnergy_SelfShutdown">
<tickInterval>6000</tickInterval>
<forced>true</forced>
</li>
</subNodes>
</li>
<!-- Scavenge -->
<li Class="WVC_WorkModes.ThinkNode_ConditionalAnyScavengeZone">
<subNodes>
<li Class="WVC_WorkModes.JobGiver_GoToScavengeZone"/>
<li Class="WVC_WorkModes.JobGiver_ScavengeSpawner">
<statDef>WorkSpeedGlobal</statDef>
<chanceToSuccess>0.02</chanceToSuccess>
<productDefs>
<li>
<productDef>Steel</productDef>
<productCount>1~3</productCount>
<selectionWeight>1.2</selectionWeight>
</li>
<li>
<productDef>WoodLog</productDef>
<productCount>1~2</productCount>
<selectionWeight>0.77</selectionWeight>
</li>
<li>
<productDef>Plasteel</productDef>
<productCount>1~2</productCount>
<selectionWeight>0.18</selectionWeight>
</li>
<li>
<productDef>Silver</productDef>
<productCount>1~3</productCount>
<selectionWeight>0.03</selectionWeight>
</li>
<li>
<productDef>Gold</productDef>
<productCount>1~2</productCount>
<selectionWeight>0.03</selectionWeight>
</li>
<li>
<productDef>ComponentIndustrial</productDef>
<productCount>1~2</productCount>
<selectionWeight>0.02</selectionWeight>
</li>
</productDefs>
</li>
<li Class="WVC_WorkModes.JobGiver_WanderScavenge">
<maxDanger>Deadly</maxDanger>
<locomotionUrgency>Amble</locomotionUrgency>
<reportStringOverride>Scavenging.</reportStringOverride>
</li>
</subNodes>
</li>
</subNodes>
</li>
</value>
</li>
</operations>
</active>
<deActive Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationRemove">
<xpath>/Defs/MechWorkModeDef[defName="WVC_Scavenging"]</xpath>
<success>Always</success>
</li>
<li Class="PatchOperationRemove">
<xpath>/Defs/ResearchProjectDef[defName="WVC_WorkModes_Scavenging"]</xpath>
<success>Always</success>
</li>
<li Class="PatchOperationRemove">
<xpath>/Defs/WVC_WorkModes.WorkModeResearchRequirementDef[defName="WVC_WorkModes_Scavenging"]</xpath>
<success>Always</success>
</li>
</operations>
</deActive>
</Operation>
</Patch>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8" ?>
<Patch>
<!-- =========================================================== -->
<Operation Class="WVC_WorkModes.PatchOperation_Settings">
<settingName>dormantMode</settingName>
<active Class="PatchOperationSequence">
<operations>
<li Class="PatchOperationSequence">
<success>Always</success>
<operations>
<li Class="PatchOperationTest">
<xpath>/Defs/StatDef[defName="BandwidthCost"]/parts</xpath>
<success>Invert</success>
</li>
<li Class="PatchOperationAdd">
<xpath>/Defs/StatDef[defName="BandwidthCost"]</xpath>
<success>Always</success>
<value>
<parts/>
</value>
</li>
</operations>
</li>
<li Class="PatchOperationAdd">
<xpath>/Defs/StatDef[defName="BandwidthCost"]/parts</xpath>
<success>Always</success>
<value>
<li Class="WVC_WorkModes.StatPart_DormantMode"/>
</value>
</li>
</operations>
</active>
</Operation>
<!-- <Operation Class="PatchOperationConditional"> -->
<!-- <xpath>/Defs/ResearchProjectDef[tab="WVC_TechTab"]</xpath> -->
<!-- <nomatch Class="PatchOperationRemove"> -->
<!-- <xpath>/Defs/ResearchTabDef[defName="WVC_TechTab"]</xpath> -->
<!-- <success>Always</success> -->
<!-- </nomatch> -->
<!-- </Operation> -->
</Patch>