<?xml version="1.0" encoding="utf-8"?>

<Defs>
  <QuestScriptDef>
    <defName>ChangeRoyalHeir</defName>
    <autoAccept>true</autoAccept>
    <questNameRules>
      <rulesStrings>
        <li>questName->[titleHeir_nameDef]'s inheritance</li>
      </rulesStrings>
    </questNameRules>
    <questDescriptionRules>
      <rulesStrings>
        <li>questDescription->
In order to consecrate making [titleHeir_nameFull] the heir of [titleHolder_nameFull]'s title, you must build a monument.
\nThe monument will be [monumentSize] in size and will require these resources (total value [monumentRequiredResourcesMarketValue_money]):
\n[monumentRequiredResources]
\nFailing to finish the monument within 20 days is considered to profane the ritual. Your relations with [asker_factionName] will fall by 25, and the heir will not be changed.
\nIf the monument is destroyed within [keepMonumentTicks_duration] days after completion, your relations with [asker_factionName] will fall by [goodwillChangeIfMonumentDestroyed].</li>
      </rulesStrings>
    </questDescriptionRules>
    <root Class="QuestNode_Sequence">
      <nodes>
        <li Class="QuestNode_SubScript">
          <def>Util_Constants_Monuments</def>
        </li>

        <li Class="QuestNode_GetNearestHomeMapOf">
          <storeAs>map</storeAs>
          <mapOf>$titleHolder</mapOf>
        </li>

        <!-- Get largest clear area -->
        <li Class="QuestNode_GetLargestClearArea">
          <map>$map</map>
          <storeAs>largestClearArea</storeAs>
          <failIfSmaller>10</failIfSmaller>
          <max>70</max>
        </li>

        <!-- Monument sketch -->
        <li Class="QuestNode_GetMonumentSketch">
          <storeAs>sketch</storeAs>
          <pointsPerArea>8.3</pointsPerArea>
          <useOnlyResourcesAvailableOnMap>$map</useOnlyResourcesAvailableOnMap>
          <maxSize>$largestClearArea</maxSize>
        </li>
        <li Class="QuestNode_GenerateMonumentMarker">
          <storeAs>monumentMarker</storeAs>
          <sketch>$sketch</sketch>
        </li>

        <!-- Get data for use in text -->
        <li Class="QuestNode_GetMonumentRequiredResourcesString">
          <monumentMarker>$monumentMarker</monumentMarker>
          <storeAs>monumentRequiredResources</storeAs>
          <storeMarketValueAs>monumentRequiredResourcesMarketValue</storeMarketValueAs>
        </li>
        <li Class="QuestNode_GetMonumentSize">
          <monumentMarker>$monumentMarker</monumentMarker>
          <storeAs>monumentSize</storeAs>
        </li>

        <!-- Things to drop. Includes minified marker and non-buildable resources -->
        <li Class="QuestNode_GetMonumentRequiredResourcesString">
          <monumentMarker>$monumentMarker</monumentMarker>
          <storeAs>monumentRequiredResources</storeAs>
        </li>
        <li Class="QuestNode_MakeMinified">
          <storeAs>monumentMarkerMinified</storeAs>
          <thing>$monumentMarker</thing>
        </li>
        <li Class="QuestNode_AddToList">
          <name>thingsToDrop</name>
          <value>$monumentMarkerMinified</value>
        </li>
        <li Class="QuestNode_GenerateNonBuildableMonumentRequiredResources">
          <addToList>thingsToDrop</addToList>
          <monumentMarker>$monumentMarker</monumentMarker>
        </li>
        <li Class="QuestNode_DropPods">
          <contents>$thingsToDrop</contents>
          <useTradeDropSpot>true</useTradeDropSpot>
        </li>

        <!-- Wait for monument -->
        <li Class="QuestNode_Delay">
          <delayTicks>$(20*60000)</delayTicks>
          <isQuestTimeout>true</isQuestTimeout>
          <inspectString TKey="InspectStringTimeLeft">Time left: {0}</inspectString>
          <inspectStringTargets>$monumentMarker</inspectStringTargets>
          <inSignalDisable>monumentMarker.MonumentCompleted</inSignalDisable> <!-- Disable timeout when monument was constructed -->
          <node Class="QuestNode_Sequence">
            <nodes>
              <li Class="QuestNode_Letter">
                <text TKey="LetterLabelAskerOffended">[asker_nameDef] is offended that you promised to consecrate the new inheritance, but did not build the monument within the prescribed time.\n\nYou lost 25 goodwill with [asker_faction_name].</text>
                <label TKey="LetterTextAskerOffended">[titleHolder_nameDef]'s heir change failed</label>
              </li>
              <li Class="QuestNode_ChangeFactionGoodwill">
                <change>-25</change>
                <factionOf>$asker</factionOf>
                <reason>MonumentConstructionExpired</reason>
              </li>
              <li Class="QuestNode_End">
                <outcome>Fail</outcome>
              </li>
            </nodes>
          </node>
        </li>

        <!-- ======== -->
        <!-- Outcomes -->
        <!-- ======== -->
        
        <!-- Holder died -->
        <li Class="QuestNode_SignalActivable">
          <inSignal>titleHolder.Destroyed</inSignal>
          <inSignalDisable>monumentMarker.MonumentCompleted</inSignalDisable>
          <node Class="QuestNode_Sequence">
            <nodes>
              <li Class="QuestNode_Letter">
                <label TKey="LetterLabelTitleHolderDied">Title holder died: {SUBJECT_definite}</label>
                <text TKey="LetterTextTitleHolderDied">{SUBJECT_definite}, whose heir was in the process of being changed, has died.</text>
              </li>
              <li Class="QuestNode_End">
                <outcome>Unknown</outcome>
              </li>
            </nodes>
          </node>
        </li>

        <!-- Heir died -->
        <li Class="QuestNode_SignalActivable">
          <inSignal>titleHeir.Destroyed</inSignal>
          <inSignalDisable>monumentMarker.MonumentCompleted</inSignalDisable>
          <node Class="QuestNode_Sequence">
            <nodes>
              <li Class="QuestNode_Letter">
                <label TKey="LetterLabelDesignatedHeirDied">Designated heir died: {SUBJECT_definite}</label>
                <text TKey="LetterTextDesignatedHeirDied">{SUBJECT_definite}, who was supposed to become heir to a title, has died.</text>
              </li>
              <li Class="QuestNode_End">
                <outcome>Unknown</outcome>
              </li>
            </nodes>
          </node>
        </li>

        <!-- Monument destroyed -->
        <li Class="QuestNode_Signal">
          <inSignal>monumentMarker.MonumentDestroyed</inSignal>
          <node Class="QuestNode_Sequence">
            <nodes>
              <li Class="QuestNode_Letter">
                <text TKey="LetterTextMonumentDestroyed">[asker_nameDef] is offended that you promised to consecrate the new inheritance, but allowed the monument to be ruined soon after completion.\n\nYour relations with [asker_faction_name] have fallen by [goodwillChangeIfMonumentDestroyed].</text>
                <label TKey="LetterLabelMonumentDestroyed">Monument destroyed</label>
              </li>
              <li Class="QuestNode_ChangeFactionGoodwill">
                <change>$goodwillChangeIfMonumentDestroyed</change>
                <factionOf>$asker</factionOf>
                <reason>MonumentDestroyed</reason>
              </li>
              <li Class="QuestNode_End">
                <outcome>Fail</outcome>
              </li>
            </nodes>
          </node>
        </li>

        <!-- Monument built -->
        <li Class="QuestNode_Signal">
          <inSignal>monumentMarker.MonumentCompleted</inSignal>
          <node Class="QuestNode_Sequence">
            <nodes>
              <li Class="QuestNode_ChangeHeir">
                <holder>$titleHolder</holder>
                <heir>$titleHeir</heir>
                <factionOf>$asker</factionOf>
              </li>
              <li Class="QuestNode_AddMemoryThought">
                <def>Disinherited</def>
                <pawns>$titlePreviousHeir</pawns>
                <otherPawn>$titleHolder</otherPawn>
                <addToLookTargets>False</addToLookTargets>
              </li>
              <li Class="QuestNode_Letter">
                <label TKey="LetterLabelNewHeir">New heir: [titleHeir_nameDef]</label>
                <text TKey="LetterTextNewHeir">[titleHeir_nameDef] is the new heir of [titleHolder_nameDef].</text>
                <letterDef>PositiveEvent</letterDef>
              </li>
              <!-- Wait for monument to survive -->
              <li Class="QuestNode_Delay">
                <delayTicks>$keepMonumentTicks</delayTicks>
                <expiryInfoPart TKey="DontDestroyMonumentForDays">Do not destroy the monument for {0}</expiryInfoPart>
                <expiryInfoPartTip TKey="DontDestroyMonumentForDaysTip">Do not destroy the monument for {0}</expiryInfoPartTip>
                <inspectString TKey="KeepMonument">Keep monument {0}</inspectString>
                <inspectStringTargets>$monumentMarker</inspectStringTargets>
                <node Class="QuestNode_Sequence">
                  <nodes>
                    <li Class="QuestNode_End">
                      <outcome>Success</outcome>
                    </li>
                  </nodes>
                </node>
              </li>
            </nodes>
          </node>
        </li>

      </nodes>
    </root>
  </QuestScriptDef>

</Defs>