﻿<?xml version="1.0" encoding="utf-8" ?>


<Defs>

  <ThinkTreeDef>
    <defName>Mechanoid</defName>
    <thinkRoot Class="ThinkNode_Priority">
      <subNodes>
        <!-- Despawned -->
        <li Class="ThinkNode_Subtree">
          <treeDef>Despawned</treeDef>
        </li>

        <!-- Downed -->
        <li Class="ThinkNode_Subtree">
          <treeDef>Downed</treeDef>
        </li>

        <!-- Self-Shutdown -->
        <li Class="ThinkNode_ConditionalLowEnergy" MayRequire="Ludeon.RimWorld.Biotech">
          <subNodes>
            <li Class="JobGiver_SelfShutdown" />
          </subNodes>
        </li>

        <!-- Mental state -->
        <li Class="ThinkNode_ConditionalMentalState">
          <state>BerserkMechanoid</state>
          <subNodes>
            <li Class="ThinkNode_Priority">
              <subNodes>
                <li Class="JobGiver_Berserk" />
                <li Class="JobGiver_WanderAnywhere">
                  <maxDanger>Deadly</maxDanger>
                </li>
                </subNodes>
            </li>
          </subNodes>
        </li>
        
        <!-- Do a queued job -->
        <li Class="ThinkNode_QueuedJob" />

        <!-- Wait if drafted -->
        <li Class="ThinkNode_ConditionalOfPlayerFaction">
          <subNodes>
            <li Class="ThinkNode_Tagger">
              <tagToGive>DraftedOrder</tagToGive>
              <subNodes>
                <li Class="JobGiver_MoveToStandable" />
                <li Class="JobGiver_Orders" />
              </subNodes>
            </li>
          </subNodes>
        </li>

        <!-- Player mechs -->
        <li Class="ThinkNode_ConditionalPlayerControlledMech">
          <subNodes>
            <li Class="ThinkNode_ConditionalNotFormingCaravan">
            <subNodes>
              
              <!-- Keep charging if we're already charging -->
              <li Class="ThinkNode_ConditionalRecharging">
                <subNodes>
                  <li Class="JobGiver_GetEnergy_Charger" />
                </subNodes>
              </li>
              
              <!-- Work modes -->
              <li Class="ThinkNode_ConditionalWorkMode" MayRequire="Ludeon.RimWorld.Biotech">
                <workMode>Work</workMode>
                <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"><!-- Combat mechs do patrolling -->
                    <invert>true</invert>
                    <subNodes>
                      <li Class="JobGiver_AIFightEnemies">
                        <targetAcquireRadius>65</targetAcquireRadius>
                        <targetKeepRadius>72</targetKeepRadius>
                      </li>
                      <li Class="ThinkNode_Tagger">
                        <tagToGive>MiscWork</tagToGive>
                        <subNodes>
                          <li Class="JobGiver_WanderColony">
                            <maxDanger>Deadly</maxDanger>
                            <reportStringOverride>Patrolling.</reportStringOverride>
                          </li>
                        </subNodes>
                      </li>
                    </subNodes>
                  </li>
                </subNodes>
              </li>
              <li Class="ThinkNode_ConditionalWorkMode" MayRequire="Ludeon.RimWorld.Biotech">
                <workMode>SelfShutdown</workMode>
                <subNodes>
                  <li Class="JobGiver_SeekAllowedArea" />
                  <li Class="JobGiver_SelfShutdown" />
                </subNodes>
              </li>
              <li Class="ThinkNode_ConditionalWorkMode" MayRequire="Ludeon.RimWorld.Biotech">
                <workMode>Recharge</workMode>
                <subNodes>
                  <li Class="JobGiver_SeekAllowedArea" />
                  <li Class="JobGiver_GetEnergy_Charger" />
                  <li Class="JobGiver_GetEnergy_SelfShutdown">
                    <forced>true</forced>
                  </li>
                </subNodes>
              </li>
              <li Class="ThinkNode_ConditionalWorkMode" MayRequire="Ludeon.RimWorld.Biotech">
                <workMode>Escort</workMode>
                <subNodes>
                  <li Class="JobGiver_ExitMapFollowOverseer" />
                  <li Class="JobGiver_AIDefendOverseer" />
                  <li Class="JobGiver_AIFollowOverseer"/>
                  <li Class="JobGiver_AIWaitWithOverseer" />
                  <li Class="JobGiver_WanderOverseer" />
                </subNodes>
              </li>

            </subNodes>
            </li>
          </subNodes>
        </li>
          
        <!-- Lord -->
        <li Class="ThinkNode_Subtree">
          <treeDef>LordDuty</treeDef>
        </li>

        <!-- Idle player mech -->
        <li Class="ThinkNode_ConditionalPlayerControlledMech">
          <subNodes>
            <li Class="ThinkNode_Tagger">
              <tagToGive>Idle</tagToGive>
              <subNodes>
                <li Class="JobGiver_WanderColony">
                  <maxDanger>None</maxDanger>
                  <expiryInterval>120</expiryInterval>
                </li>
              </subNodes>
            </li>
          </subNodes>
        </li>

        <!-- Idle -->
        <li Class="ThinkNode_Tagger">
          <tagToGive>Idle</tagToGive>
          <subNodes>
            <li Class="JobGiver_WanderAnywhere">
              <maxDanger>Deadly</maxDanger>
            </li>
          </subNodes>
        </li>
        
        <!-- Idle error -->
        <li Class="JobGiver_IdleError"/>
      </subNodes>
    </thinkRoot>
  </ThinkTreeDef>
  
</Defs>
