Add NCR quest and site content

Adds several NCR-specific quest script defs and matching site parts for debtor settlements, Legion scout/spy camps, escort, bounty, and training scenarios. Also updates NCR faction group generation, refreshes quest descriptions with explicit requirements, and removes the unused Dr. Keely character/backstory defs.
This commit is contained in:
RickGrymes
2026-07-19 01:00:25 -05:00
parent 2a6a0e8fbb
commit 55d17ec22e
17 changed files with 1291 additions and 109 deletions
@@ -1640,26 +1640,6 @@
</skillGains>
</BackstoryDef>
<!-- Dr. Keely -->
<BackstoryDef MayRequire="Rick.FCP.Wastelanders">
<defName>FCP_Backstory_NCR_Doctor_Keely_Child</defName>
<bodyTypeMale>Male</bodyTypeMale>
<bodyTypeFemale>Female</bodyTypeFemale>
<title>vault dweller child</title>
<titleShort>vault kid</titleShort>
<baseDesc>[PAWN_nameDef] grew up in a vault that emphasized scientific education and environmental studies. [PAWN_pronoun] was fascinated by biology and ecology from a young age.</baseDesc>
<slot>Childhood</slot>
<spawnCategories>
<li>FCP_Character_Backstory_Keely_Child</li>
</spawnCategories>
<skillGains>
<Plants>3</Plants>
<Intellectual>4</Intellectual>
<Medicine>2</Medicine>
</skillGains>
</BackstoryDef>
<!--___ Civilians - Childhood ___-->
<!-- Dr. Usanagi -->
@@ -2613,30 +2593,6 @@
</workDisables>
</BackstoryDef>
<!-- Dr. Keely -->
<BackstoryDef MayRequire="Rick.FCP.Wastelanders">
<defName>FCP_Backstory_NCR_Doctor_Keely_Adult</defName>
<bodyTypeMale>Male</bodyTypeMale>
<bodyTypeFemale>Female</bodyTypeFemale>
<title>OSI field researcher</title>
<titleShort>field researcher</titleShort>
<baseDesc>[PAWN_nameDef] is an OSI researcher specializing in botany and ecology. [PAWN_pronoun] was sent to Vault 22 to recover agricultural data but became trapped by the vault's mutated plant life.</baseDesc>
<slot>Adulthood</slot>
<spawnCategories>
<li>FCP_Backstory_NCR_Doctor_Keely_Adult</li>
</spawnCategories>
<skillGains>
<Plants>9</Plants>
<Intellectual>8</Intellectual>
<Medicine>4</Medicine>
<Shooting>2</Shooting>
</skillGains>
<workDisables>
<li>ManualDumb</li>
</workDisables>
</BackstoryDef>
<!--___ Civilians - Adulthood ___-->
<!-- Dr. Usanagi -->
@@ -1701,31 +1701,6 @@
</definitions>
</FCP.Core.CharacterDef>
<!-- Dr. Keely -->
<FCP.Core.CharacterDef MayRequire="Rick.FCP.Wastelanders">
<defName>FCP_Character_NCR_Doctor_Keely</defName>
<pawnKind>FCP_Unique_Pawnkind_Doctor_Keely</pawnKind>
<faction>FCP_Faction_NCR</faction>
<xenotype>Baseliner</xenotype>
<definitions>
<li Class="FCP.Core.CharacterStoryDefinition">
<firstName>Keely</firstName>
<lastName></lastName>
<gender>Female</gender>
<age>35</age>
</li>
<li Class="FCP.Core.CharacterAppearanceDefinition">
<hairColor>(60, 50, 40)</hairColor>
<hairDef>FCP_Hair_No_Nonsense</hairDef>
<beardDef>NoBeard</beardDef>
<skinColorOverride>(220, 200, 180)</skinColorOverride>
<headTypeDef>Female_AverageNormal</headTypeDef>
<bodyTypeDef>Thin</bodyTypeDef>
</li>
</definitions>
</FCP.Core.CharacterDef>
<!--__________ Civilians __________-->
<!-- Dr. Usanagi -->
+50 -2
View File
@@ -185,7 +185,7 @@
<!-- NCR Army Heavy Squad -->
<li>
<li Class="FCP.Core.GroupMakerWithCustomChar">
<!-- Normal fights, heavy troopers -->
<kindDef>Combat</kindDef>
<disallowedStrategies>
@@ -196,6 +196,53 @@
<FCP_Pawnkind_NCR_Trooper_Heavy>10</FCP_Pawnkind_NCR_Trooper_Heavy>
<FCP_Pawnkind_NCR_General>1</FCP_Pawnkind_NCR_General>
</options>
<characterDefs>
<li>FCP_Character_NCR_Private_Gilbert</li>
</characterDefs>
<characterChance>0.35</characterChance>
</li>
<!-- NCR Camp Forlorn Hope Garrison -->
<li Class="FCP.Core.GroupMakerWithCustomChar">
<!-- Frontline garrison holding Camp Forlorn Hope against the Legion -->
<kindDef>Combat</kindDef>
<disallowedStrategies>
<li>EmergeFromWater</li>
</disallowedStrategies>
<options>
<FCP_Pawnkind_NCR_Trooper>8</FCP_Pawnkind_NCR_Trooper>
<FCP_Pawnkind_NCR_Officer>1</FCP_Pawnkind_NCR_Officer>
</options>
<characterDefs>
<li>FCP_Character_NCR_Sergeant_Astor</li>
<li>FCP_Character_NCR_Private_Stone</li>
<li>FCP_Character_NCR_Private_Edwards</li>
</characterDefs>
<characterChance>0.40</characterChance>
</li>
<!-- NCR Frontline Infantry Squad -->
<li Class="FCP.Core.GroupMakerWithCustomChar">
<!-- Regular line troopers drawn from across NCR postings -->
<kindDef>Combat</kindDef>
<disallowedStrategies>
<li>EmergeFromWater</li>
</disallowedStrategies>
<options>
<FCP_Pawnkind_NCR_Trooper>10</FCP_Pawnkind_NCR_Trooper>
<FCP_Pawnkind_NCR_Officer>1</FCP_Pawnkind_NCR_Officer>
</options>
<characterDefs>
<li>FCP_Character_NCR_Private_Davey_Crenshaw</li>
<li>FCP_Character_NCR_Private_Hoover</li>
<li>FCP_Character_NCR_Private_First_Class_Dustin</li>
<li>FCP_Character_NCR_Private_James_Sexton</li>
<li>FCP_Character_NCR_Private_Reyes</li>
<li>FCP_Character_NCR_Private_Christina_Morales</li>
</characterDefs>
<characterChance>0.45</characterChance>
</li>
<!-- NCR Ranger Volunteers -->
@@ -259,6 +306,7 @@
<FCP_Pawnkind_NCR_Officer>1</FCP_Pawnkind_NCR_Officer>
</options>
<characterDefs>
<li>FCP_Character_NCR_Corporal_April_Mags</li>
<li>FCP_Character_NCR_Private_Poindexter</li>
<li>FCP_Character_NCR_Private_OHanrahan</li>
<li>FCP_Character_NCR_Private_Razz</li>
@@ -557,7 +605,6 @@
<characterDefs>
<li>FCP_Character_NCR_Thomas_Hildern</li>
<li>FCP_Character_NCR_Angela_Williams</li>
<li>FCP_Character_NCR_Doctor_Keely</li>
</characterDefs>
<characterChance>0.30</characterChance>
</li>
@@ -613,6 +660,7 @@
<characterDefs>
<li>FCP_Character_NCR_Quartermaster_Mayes</li>
<li>FCP_Character_NCR_Sergeant_Contreras</li>
<li>FCP_Character_NCR_Private_First_Class_Richie</li>
</characterDefs>
<characterChance>0.40</characterChance>
</li>
@@ -1235,30 +1235,6 @@
</backstoryFiltersOverride>
</PawnKindDef>
<!-- Dr. Keely - OSI Researcher -->
<PawnKindDef ParentName="FCP_NCR_UniqueCharacterBase" MayRequire="Rick.FCP.Wastelanders">
<defName>FCP_Unique_Pawnkind_Doctor_Keely</defName>
<label>Dr. Keely</label>
<combatPower>50</combatPower>
<apparelRequired>
<li>FCP_Apparel_Lab_Coat_Capital</li>
</apparelRequired>
<apparelMoney>0</apparelMoney>
<weaponMoney>0</weaponMoney>
<requiredWorkTags/>
<backstoryFiltersOverride>
<li>
<categoriesChildhood>
<li>FCP_Character_Backstory_Keely_Child</li>
</categoriesChildhood>
<categoriesAdulthood>
<li>FCP_Backstory_NCR_Doctor_Keely_Adult</li>
</categoriesAdulthood>
</li>
</backstoryFiltersOverride>
</PawnKindDef>
<!--___ Civilians ___-->
<!-- Dr. Usanagi - New Vegas Medical Clinic -->
@@ -0,0 +1,211 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef>
<defName>FCP_Quest_NCR_Debt_Collector</defName>
<rootSelectionWeight>1.0</rootSelectionWeight>
<rootMinPoints>30</rootMinPoints>
<defaultChallengeRating>1</defaultChallengeRating>
<canGiveRoyalFavor>true</canGiveRoyalFavor>
<expireDaysRange>5~10</expireDaysRange>
<questNameRules>
<rulesStrings>
<li>questName->Debt Collector</li>
<li>questName->Knight's Ledger</li>
<li>questName->Collecting on Camp McCarran's Behalf</li>
<li>questName->Past Due</li>
<li>questName->The Caravan That Didn't Pay</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>requirements->Requirements: escort Major Knight to the debtor settlement and keep him alive through the collection. If trouble shows up, protect him - if he dies, the debt goes unpaid.</li>
<li>questDescription->Major Knight runs the books at Camp McCarran, and by his numbers a settlement under NCR protection is months behind on what it owes for that protection. He's sending someone to collect in person before it becomes a habit. [asker_nameFull] wants it handled quietly.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "Major Knight says a settlement's stopped paying its dues. He wants to go collect himself before word gets around that NCR protection is free. Get him there and back in one piece."\n\n[requirements]</li>
<li>questDescription->A debtor settlement has stopped paying for the protection it's still getting. Major Knight intends to remind them of the arrangement personally - politely, if they're smart about it. Escort him there and back.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull] admits Major Knight could have sent a letter, but he insisted on going himself. "People pay faster when the debt collector is standing in front of them," he says. Make sure he comes back with what's owed.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_RandomizePointsChallengeRating</def>
<parms>
<pointsFactorTwoStar>1.2</pointsFactorTwoStar>
<pointsFactorThreeStar>1.5</pointsFactorThreeStar>
</parms>
</li>
<li Class="QuestNode_SubScript">
<def>Util_AdjustPointsForDistantFight</def>
</li>
<li Class="QuestNode_GetMap" />
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>askerFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
</factionDefs>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetLeaderOfFaction">
<storeAs>asker</storeAs>
<factionToUse>$askerFaction</factionToUse>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Major_Thomas_Knight</characterDef>
<addToList>knight</addToList>
</li>
<li Class="QuestNode_SetAllApparelLocked">
<pawns>$knight</pawns>
</li>
<li Class="QuestNode_JoinPlayer">
<pawns>$knight</pawns>
<joinPlayer>true</joinPlayer>
</li>
<li Class="QuestNode_ExtraFaction">
<factionOf>$asker</factionOf>
<pawns>$knight</pawns>
<factionType>HomeFaction</factionType>
<inSignalsRemovePawn>
<li>knight.RanWild</li>
</inSignalsRemovePawn>
</li>
<li Class="QuestNode_GetSiteTile">
<storeAs>siteTile</storeAs>
<preferCloserTiles>true</preferCloserTiles>
</li>
<li Class="QuestNode_GetSitePartDefsByTagsAndFaction">
<storeAs>sitePartDefs</storeAs>
<sitePartsTags>
<li>
<tag>FCP_Site_NCR_Debtor_Settlement</tag>
</li>
</sitePartsTags>
</li>
<li Class="QuestNode_GetDefaultSitePartsParams">
<tile>$siteTile</tile>
<sitePartDefs>$sitePartDefs</sitePartDefs>
<storeSitePartsParamsAs>sitePartsParams</storeSitePartsParamsAs>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GenerateSite</def>
<parms>
<hiddenSitePartsPossible>true</hiddenSitePartsPossible>
</parms>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SpawnPawns">
<inSignal>site.MapGenerated</inSignal>
<pawns>$knight</pawns>
<mapParent>$site</mapParent>
</li>
<li Class="QuestNode_LeaveOnCleanup">
<pawns>$knight</pawns>
<sendStandardLetter>false</sendStandardLetter>
</li>
<li Class="QuestNode_SpawnWorldObjects">
<worldObjects>$site</worldObjects>
<defsToExcludeFromHyperlinks>Human</defsToExcludeFromHyperlinks>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.MapGenerated</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_GetRandomInRangeFloat">
<storeAs>chanceForTrouble</storeAs>
<range>0~1</range>
</li>
<li Class="QuestNode_GreaterOrEqual">
<value1>$chanceForTrouble</value1>
<value2>0.65</value2>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>enemyFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.Raiders">FCP_Faction_Raider</li>
<li>PirateWaster</li>
</factionDefs>
</li>
<li Class="QuestNode_Set">
<name>pointsForTrouble</name>
<value>$($points * 0.6)</value>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GeneratePawns">
<storeAs>troublemakers</storeAs>
<faction>$enemyFaction</faction>
<pawnGroupKind>Combat</pawnGroupKind>
<pointsToUse>$pointsForTrouble</pointsToUse>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SpawnRaiders">
<spawnOnEdge>true</spawnOnEdge>
<pawns>$troublemakers</pawns>
<radius>20</radius>
</li>
<li Class="QuestNode_Letter">
<label>The collection turns ugly</label>
<text>Someone doesn't want this debt paid. Protect Major Knight.</text>
<letterDef>ThreatBig</letterDef>
<lookTargets>$troublemakers</lookTargets>
<filterDeadPawnsFromLookTargets>true</filterDeadPawnsFromLookTargets>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Delay">
<delayTicks>$(randInt(6,12)*60000)</delayTicks>
<isQuestTimeout>true</isQuestTimeout>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_AnyPawnAlive">
<pawns>$knight</pawns>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<letterDef>PositiveEvent</letterDef>
<label>Debt collected</label>
<text>Major Knight has the payment in hand and is ready to head back to Camp McCarran. The settlement's ledger is square again.</text>
</li>
<li Class="QuestNode_GiveRewards">
<parms>
<allowGoodwill>true</allowGoodwill>
<allowRoyalFavor>true</allowRoyalFavor>
</parms>
<addCampLootReward>false</addCampLootReward>
<customLetterLabel>Payment from the NCR</customLetterLabel>
<customLetterText>NCR quartermasters send your cut of the collection, courtesy of Major Knight's ledger.</customLetterText>
</li>
<li Class="QuestNode_End">
<outcome>Success</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Letter">
<label>Knight lost</label>
<letterDef>NegativeEvent</letterDef>
<text>Major Knight didn't survive the collection run. NCR command will want to know why one of their officers is dead and the debt still unpaid.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-10</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
</li>
</nodes>
</node>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_WorldObjectTimeout">
<worldObject>$site</worldObject>
<isQuestTimeout>true</isQuestTimeout>
<delayTicks>$(randInt(15,25)*60000)</delayTicks>
<inSignalDisable>site.MapGenerated</inSignalDisable>
<node Class="QuestNode_End">
<outcome>Fail</outcome>
<sendStandardLetter>true</sendStandardLetter>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>
@@ -19,10 +19,11 @@
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->[asker_nameFull] reports NCR deserters fortified in a hideout. Command wants them eliminated. Bounty paid on-site once all hostiles are dead.</li>
<li>questDescription->NCR deserters holed up in a hideout. [asker_nameFull] authorizes hostile engagement. Eliminate all targets for bounty payment.</li>
<li>questDescription->[asker_nameFull]: "AWOL soldiers dug in near your position. Take them out, we'll pay bounty rates. Don't leave any alive."</li>
<li>questDescription->Former NCR troops deserted and fortified a position. [asker_nameFull] offers bounty for their elimination. Kill them all for payment.</li>
<li>requirements->Requirements: kill every deserter at the hideout. If they abandon the position or it's destroyed before you clear it, the bounty is forfeit.</li>
<li>questDescription->[asker_nameFull] reports NCR deserters fortified in a hideout. Command wants them eliminated. Bounty paid on-site once all hostiles are dead.\n\n[requirements]</li>
<li>questDescription->NCR deserters holed up in a hideout. [asker_nameFull] authorizes hostile engagement. Eliminate all targets for bounty payment.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "AWOL soldiers dug in near your position. Take them out, we'll pay bounty rates. Don't leave any alive."\n\n[requirements]</li>
<li>questDescription->Former NCR troops deserted and fortified a position. [asker_nameFull] offers bounty for their elimination. Kill them all for payment.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef>
<defName>FCP_Quest_NCR_Escort_Ambassador</defName>
<rootSelectionWeight>1.0</rootSelectionWeight>
<rootMinPoints>30</rootMinPoints>
<defaultChallengeRating>1</defaultChallengeRating>
<canGiveRoyalFavor>true</canGiveRoyalFavor>
<expireDaysRange>5~10</expireDaysRange>
<questNameRules>
<rulesStrings>
<li>questName->Escort the Ambassador</li>
<li>questName->Safe Passage</li>
<li>questName->Crocker's Detail</li>
<li>questName->Diplomatic Cover</li>
<li>questName->The Ambassador's Road</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>requirements->Requirements: escort Ambassador Crocker to the meeting site and keep him alive through it. If trouble shows up, protect him - if he dies, the mission fails.</li>
<li>questDescription->[asker_nameFull] needs Ambassador Dennis Crocker moved to a meeting outside NCR lines, and can't spare Rangers to do it quietly. Keep him alive and unnoticed, and the Republic pays well for discretion.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "Crocker has a meeting that can't wait for an armed convoy - too much attention. Get him there and back in one piece. He's worth more to the Republic than most units twice his size."\n\n[requirements]</li>
<li>questDescription->Ambassador Crocker is traveling to broker terms with a settlement outside NCR territory. [asker_nameFull] wants outside guns for the job - official escorts would spook the people he's meeting.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull] fears Crocker's last trip nearly ended in an ambush. This one can't. Escort him quietly, protect him if it comes to that, and see him home.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_RandomizePointsChallengeRating</def>
<parms>
<pointsFactorTwoStar>1.2</pointsFactorTwoStar>
<pointsFactorThreeStar>1.5</pointsFactorThreeStar>
</parms>
</li>
<li Class="QuestNode_SubScript">
<def>Util_AdjustPointsForDistantFight</def>
</li>
<li Class="QuestNode_GetMap" />
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>askerFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
</factionDefs>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetLeaderOfFaction">
<storeAs>asker</storeAs>
<factionToUse>$askerFaction</factionToUse>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Ambassador_Dennis_Crocker</characterDef>
<addToList>crocker</addToList>
</li>
<li Class="QuestNode_SetAllApparelLocked">
<pawns>$crocker</pawns>
</li>
<li Class="QuestNode_JoinPlayer">
<pawns>$crocker</pawns>
<joinPlayer>true</joinPlayer>
</li>
<li Class="QuestNode_ExtraFaction">
<factionOf>$asker</factionOf>
<pawns>$crocker</pawns>
<factionType>HomeFaction</factionType>
<inSignalsRemovePawn>
<li>crocker.RanWild</li>
</inSignalsRemovePawn>
</li>
<li Class="QuestNode_GetSiteTile">
<storeAs>siteTile</storeAs>
<preferCloserTiles>true</preferCloserTiles>
</li>
<li Class="QuestNode_GetSitePartDefsByTagsAndFaction">
<storeAs>sitePartDefs</storeAs>
<sitePartsTags>
<li>
<tag>FCP_Site_NCR_Patrol</tag>
</li>
</sitePartsTags>
</li>
<li Class="QuestNode_GetDefaultSitePartsParams">
<tile>$siteTile</tile>
<sitePartDefs>$sitePartDefs</sitePartDefs>
<storeSitePartsParamsAs>sitePartsParams</storeSitePartsParamsAs>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GenerateSite</def>
<parms>
<hiddenSitePartsPossible>true</hiddenSitePartsPossible>
</parms>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SpawnPawns">
<inSignal>site.MapGenerated</inSignal>
<pawns>$crocker</pawns>
<mapParent>$site</mapParent>
</li>
<li Class="QuestNode_LeaveOnCleanup">
<pawns>$crocker</pawns>
<sendStandardLetter>false</sendStandardLetter>
</li>
<li Class="QuestNode_SpawnWorldObjects">
<worldObjects>$site</worldObjects>
<defsToExcludeFromHyperlinks>Human</defsToExcludeFromHyperlinks>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.MapGenerated</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_GetRandomInRangeFloat">
<storeAs>chanceForAmbush</storeAs>
<range>0~1</range>
</li>
<li Class="QuestNode_GreaterOrEqual">
<value1>$chanceForAmbush</value1>
<value2>0.7</value2>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>enemyFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.Legion">FCP_Faction_Caesars_Legion</li>
<li MayRequire="Rick.FCP.Raiders">FCP_Faction_Raider</li>
<li>PirateWaster</li>
</factionDefs>
</li>
<li Class="QuestNode_Set">
<name>pointsForAmbush</name>
<value>$($points * 0.6)</value>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GeneratePawns">
<storeAs>ambushers</storeAs>
<faction>$enemyFaction</faction>
<pawnGroupKind>Combat</pawnGroupKind>
<pointsToUse>$pointsForAmbush</pointsToUse>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SpawnRaiders">
<spawnOnEdge>true</spawnOnEdge>
<pawns>$ambushers</pawns>
<radius>20</radius>
</li>
<li Class="QuestNode_Letter">
<label>Ambush</label>
<text>Someone knew Crocker would be here. Protect him.</text>
<letterDef>ThreatBig</letterDef>
<lookTargets>$ambushers</lookTargets>
<filterDeadPawnsFromLookTargets>true</filterDeadPawnsFromLookTargets>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Delay">
<delayTicks>$(randInt(6,12)*60000)</delayTicks>
<isQuestTimeout>true</isQuestTimeout>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_AnyPawnAlive">
<pawns>$crocker</pawns>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<letterDef>PositiveEvent</letterDef>
<label>Meeting concluded</label>
<text>Crocker finished his business and is ready to head home. The Republic is pleased.</text>
</li>
<li Class="QuestNode_GiveRewards">
<parms>
<allowGoodwill>true</allowGoodwill>
<allowRoyalFavor>true</allowRoyalFavor>
</parms>
<addCampLootReward>false</addCampLootReward>
<customLetterLabel>Payment from the NCR</customLetterLabel>
<customLetterText>Payment for a job discreetly done, courtesy of Ambassador Crocker's office.</customLetterText>
</li>
<li Class="QuestNode_End">
<outcome>Success</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Letter">
<label>Ambassador lost</label>
<letterDef>NegativeEvent</letterDef>
<text>Crocker didn't survive the trip. NCR command will not take this well.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-10</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
</li>
</nodes>
</node>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_WorldObjectTimeout">
<worldObject>$site</worldObject>
<isQuestTimeout>true</isQuestTimeout>
<delayTicks>$(randInt(15,25)*60000)</delayTicks>
<inSignalDisable>site.MapGenerated</inSignalDisable>
<node Class="QuestNode_End">
<outcome>Fail</outcome>
<sendStandardLetter>true</sendStandardLetter>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef MayRequire="Rick.FCP.Legion">
<defName>FCP_Quest_NCR_First_Recon_Strike</defName>
<rootSelectionWeight>0.6</rootSelectionWeight>
<rootMinPoints>350</rootMinPoints>
<defaultChallengeRating>3</defaultChallengeRating>
<canGiveRoyalFavor>true</canGiveRoyalFavor>
<expireDaysRange>6~12</expireDaysRange>
<questNameRules>
<rulesStrings>
<li>questName->First Recon's Ghost</li>
<li>questName->Eyes on the Vanguard</li>
<li>questName->Cut the Spear's Point</li>
<li>questName->The Scouting Party</li>
<li>questName->Silent Running</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>requirements->Requirements: defeat the entire Legion vanguard at the site before they can report back. If they slip away or the site is abandoned first, the mission fails.</li>
<li>questDescription->1st Recon spotted a Legion vanguard - Primes and Veterans, not conscripts - scouting terrain ahead of a larger push. [asker_nameFull] wants them gone before they report back. Small group, hard fight, worth every cap of the bounty.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "Colonel Moore's people found a Legion scouting party - the good ones, not fresh meat. If they get back to Caesar with a map of our positions, it costs us a lot more than this bounty. Handle it."\n\n[requirements]</li>
<li>questDescription->A small, elite Legion detachment is mapping NCR defenses. [asker_nameFull] doesn't have Rangers to spare for a job this quiet, but the fewer of them who make it back to report, the better for everyone.\n\n[requirements]</li>
<li>questDescription->1st Recon flagged a handful of Legion veterans moving with unusual discipline near NCR lines - a scouting element, not a raid. [asker_nameFull] wants it ended before it becomes something bigger.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_RandomizePointsChallengeRating</def>
<parms>
<pointsFactorTwoStar>1.3</pointsFactorTwoStar>
<pointsFactorThreeStar>1.6</pointsFactorThreeStar>
</parms>
</li>
<li Class="QuestNode_SubScript">
<def>Util_AdjustPointsForDistantFight</def>
</li>
<li Class="QuestNode_GetMap" />
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>askerFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
</factionDefs>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetLeaderOfFaction">
<storeAs>asker</storeAs>
<factionToUse>$askerFaction</factionToUse>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>enemyFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.Legion">FCP_Faction_Caesars_Legion</li>
</factionDefs>
</li>
<li Class="QuestNode_GetSiteTile">
<storeAs>siteTile</storeAs>
<preferCloserTiles>true</preferCloserTiles>
</li>
<li Class="QuestNode_GetSitePartDefsByTagsAndFaction">
<storeAs>sitePartDefs</storeAs>
<sitePartsTags>
<li>
<tag>FCP_Site_NCR_Legion_ScoutParty</tag>
</li>
</sitePartsTags>
</li>
<li Class="QuestNode_GetDefaultSitePartsParams">
<tile>$siteTile</tile>
<faction>FCP_Faction_Caesars_Legion</faction>
<sitePartDefs>$sitePartDefs</sitePartDefs>
<storeSitePartsParamsAs>sitePartsParams</storeSitePartsParamsAs>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GetDefaultRewardValueFromPoints</def>
</li>
<li Class="QuestNode_Multiply">
<value1>$rewardValue</value1>
<value2>2.0</value2>
<storeAs>rewardValue</storeAs>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GenerateSite</def>
<parms>
<siteFaction>FCP_Faction_Caesars_Legion</siteFaction>
<hiddenSitePartsPossible>true</hiddenSitePartsPossible>
</parms>
</li>
<li Class="QuestNode_LoopCount">
<loopCount>$(randInt(3,4))</loopCount>
<node Class="QuestNode_GeneratePawn">
<kindDef>FCP_Legion_Veteran</kindDef>
<faction>$enemyFaction</faction>
<addToList>legionaries</addToList>
</node>
</li>
<li Class="QuestNode_GeneratePawn">
<kindDef>FCP_Legion_Prime</kindDef>
<faction>$enemyFaction</faction>
<addToList>legionaries</addToList>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SpawnRaiders">
<inSignal>site.MapGenerated</inSignal>
<spawnOnEdge>false</spawnOnEdge>
<pawns>$legionaries</pawns>
<radius>16</radius>
</li>
<li Class="QuestNode_SpawnWorldObjects">
<worldObjects>$site</worldObjects>
</li>
<li Class="QuestNode_WorldObjectTimeout">
<worldObject>$site</worldObject>
<isQuestTimeout>true</isQuestTimeout>
<delayTicks>$(randInt(12,24)*60000)</delayTicks>
<inSignalDisable>site.MapGenerated</inSignalDisable>
<destroyOnCleanup>true</destroyOnCleanup>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestExpired">quest expired: [resolvedQuestName]</label>
<text TKey="LetterTextQuestExpired">The scouting party moved on before you found them. Whatever they saw, Caesar knows it now.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestFailed">quest failed: [resolvedQuestName]</label>
<text TKey="LetterTextQuestFailed">The scouting party broke camp before you arrived. Quest [resolvedQuestName] ended.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.AllEnemiesDefeated</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Notify_PlayerRaidedSomeone">
<getRaidersFromMapParent>$site</getRaidersFromMapParent>
</li>
<li Class="QuestNode_GiveRewards">
<parms>
<allowGoodwill>true</allowGoodwill>
<allowRoyalFavor>true</allowRoyalFavor>
</parms>
<addCampLootReward>true</addCampLootReward>
<customLetterLabel>Vanguard eliminated</customLetterLabel>
<customLetterText>The scouts are dead before they could report. 1st Recon sends its thanks - and NCR command sends a bounty to match the risk.</customLetterText>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_End">
<inSignal>site.AllEnemiesDefeated</inSignal>
<outcome>Success</outcome>
</li>
<li Class="QuestNode_NoWorldObject">
<worldObject>$site</worldObject>
<node Class="QuestNode_End" />
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef MayRequire="Rick.FCP.Legion">
<defName>FCP_Quest_NCR_Flags_On_The_Frontline</defName>
<rootSelectionWeight>0.7</rootSelectionWeight>
<rootMinPoints>80</rootMinPoints>
<defaultChallengeRating>1</defaultChallengeRating>
<canGiveRoyalFavor>true</canGiveRoyalFavor>
<expireDaysRange>5~10</expireDaysRange>
<questNameRules>
<rulesStrings>
<li>questName->Flags on the Frontline</li>
<li>questName->Trophies for Forlorn Hope</li>
<li>questName->Dhatri's Morale Problem</li>
<li>questName->Something to Fly</li>
<li>questName->Captured Colors</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>requirements->Requirements: defeat every Legion soldier at the position, including the standard-bearer, to bring back the banner. If they abandon the position first, there's nothing left to capture.</li>
<li>questDescription->Major Dhatri runs a frontier camp with troopers who haven't seen a win in months, and he thinks he knows why morale is on the floor: nothing to look at but empty sky where a flag should be. He wants Legion banners - captured, bloody, doesn't matter - to plant around camp. [asker_nameFull] signed off on it without asking too many questions.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "Major Dhatri says his troopers need something to be proud of. A captured Legion banner or two, he says, would do more for morale than another supply drop. Strange request. Approved anyway."\n\n[requirements]</li>
<li>questDescription->A small Legion position is flying its colors nearby. Major Dhatri wants those banners taken down and brought back to camp - not for tactics, just for the look on his troopers' faces when they see them.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull] admits this one is about morale, not strategy. Major Dhatri's frontier camp has been losing spirit for months. Bringing back a captured Legion banner won't win the war, but it might get his troopers through the winter.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_RandomizePointsChallengeRating</def>
<parms>
<pointsFactorTwoStar>1.2</pointsFactorTwoStar>
<pointsFactorThreeStar>1.5</pointsFactorThreeStar>
</parms>
</li>
<li Class="QuestNode_SubScript">
<def>Util_AdjustPointsForDistantFight</def>
</li>
<li Class="QuestNode_GetMap" />
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>askerFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
</factionDefs>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetLeaderOfFaction">
<storeAs>asker</storeAs>
<factionToUse>$askerFaction</factionToUse>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>enemyFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.Legion">FCP_Faction_Caesars_Legion</li>
</factionDefs>
</li>
<li Class="QuestNode_GetSiteTile">
<storeAs>siteTile</storeAs>
<preferCloserTiles>true</preferCloserTiles>
</li>
<li Class="QuestNode_GetSitePartDefsByTagsAndFaction">
<storeAs>sitePartDefs</storeAs>
<sitePartsTags>
<li>
<tag>FCP_Site_NCR_Legion_ScoutParty</tag>
</li>
</sitePartsTags>
</li>
<li Class="QuestNode_GetDefaultSitePartsParams">
<tile>$siteTile</tile>
<faction>FCP_Faction_Caesars_Legion</faction>
<sitePartDefs>$sitePartDefs</sitePartDefs>
<storeSitePartsParamsAs>sitePartsParams</storeSitePartsParamsAs>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GetDefaultRewardValueFromPoints</def>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GenerateSite</def>
<parms>
<siteFaction>FCP_Faction_Caesars_Legion</siteFaction>
<hiddenSitePartsPossible>true</hiddenSitePartsPossible>
</parms>
</li>
<li Class="QuestNode_LoopCount">
<loopCount>$(randInt(2,3))</loopCount>
<node Class="QuestNode_GeneratePawn">
<kindDef>FCP_Legion_Recruit</kindDef>
<faction>$enemyFaction</faction>
<addToList>legionaries</addToList>
</node>
</li>
<li Class="QuestNode_GeneratePawn">
<kindDef>FCP_Legion_Vexillarius</kindDef>
<faction>$enemyFaction</faction>
<addToList>legionaries</addToList>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SpawnRaiders">
<inSignal>site.MapGenerated</inSignal>
<spawnOnEdge>false</spawnOnEdge>
<pawns>$legionaries</pawns>
<radius>16</radius>
</li>
<li Class="QuestNode_SpawnWorldObjects">
<worldObjects>$site</worldObjects>
</li>
<li Class="QuestNode_WorldObjectTimeout">
<worldObject>$site</worldObject>
<isQuestTimeout>true</isQuestTimeout>
<delayTicks>$(randInt(12,20)*60000)</delayTicks>
<inSignalDisable>site.MapGenerated</inSignalDisable>
<destroyOnCleanup>true</destroyOnCleanup>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestExpired">quest expired: [resolvedQuestName]</label>
<text TKey="LetterTextQuestExpired">The position was abandoned before you got there. No banners, no trophy - Dhatri's troopers stay exactly as gloomy as before.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestFailed">quest failed: [resolvedQuestName]</label>
<text TKey="LetterTextQuestFailed">The Legion position broke camp before you arrived. Quest [resolvedQuestName] ended.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.AllEnemiesDefeated</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Notify_PlayerRaidedSomeone">
<getRaidersFromMapParent>$site</getRaidersFromMapParent>
</li>
<li Class="QuestNode_Letter">
<letterDef>PositiveEvent</letterDef>
<label>Colors captured</label>
<text>The Legion banner is down, and the man who carried it isn't getting up. Major Dhatri will have something to hang at the gate.</text>
</li>
<li Class="QuestNode_GiveRewards">
<parms>
<allowGoodwill>true</allowGoodwill>
<allowRoyalFavor>true</allowRoyalFavor>
</parms>
<addCampLootReward>true</addCampLootReward>
<customLetterLabel>Dhatri's thanks</customLetterLabel>
<customLetterText>Word reaches Major Dhatri's camp before you do. NCR command sends payment, and by the sound of it, the troopers at the frontier finally have something to cheer about.</customLetterText>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_End">
<inSignal>site.AllEnemiesDefeated</inSignal>
<outcome>Success</outcome>
</li>
<li Class="QuestNode_NoWorldObject">
<worldObject>$site</worldObject>
<node Class="QuestNode_End" />
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>
@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef MayRequire="Rick.FCP.Legion">
<defName>FCP_Quest_NCR_Frumentarius_Hunt</defName>
<rootSelectionWeight>1.0</rootSelectionWeight>
<rootMinPoints>200</rootMinPoints>
<defaultChallengeRating>2</defaultChallengeRating>
<canGiveRoyalFavor>true</canGiveRoyalFavor>
<expireDaysRange>5~10</expireDaysRange>
<questNameRules>
<rulesStrings>
<li>questName->Frumentarius in the Wire</li>
<li>questName->Cutting Out the Spy</li>
<li>questName->Counterintelligence</li>
<li>questName->The Legion's Eyes</li>
<li>questName->Rooting Out the Frumentarii</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>requirements->Requirements: defeat every Frumentarius at the camp. If they break camp and scatter before you find it, the mission fails.</li>
<li>questDescription->[asker_nameFull] has confirmation: Legion Frumentarii are operating a camp inside NCR territory, mapping patrol routes and turning informants. Command wants it burned out before Caesar knows what he's lost.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "We picked up chatter about a Legion cell working our side of the river. Frumentarii - Caesar's spies. Find their camp, make sure none of them report back."\n\n[requirements]</li>
<li>questDescription->Intelligence traced a string of ambushes back to a hidden Legion camp inside NCR lines. [asker_nameFull] wants it eliminated quietly - the fewer people who know how deep the Legion got in, the better.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull] reports a Frumentarius cell has been feeding Caesar's Legion information on NCR troop movements. Command authorizes lethal force. No prisoners expected to talk.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_RandomizePointsChallengeRating</def>
<parms>
<pointsFactorTwoStar>1.4</pointsFactorTwoStar>
<pointsFactorThreeStar>1.8</pointsFactorThreeStar>
</parms>
</li>
<li Class="QuestNode_SubScript">
<def>Util_AdjustPointsForDistantFight</def>
</li>
<li Class="QuestNode_GetMap" />
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>askerFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
</factionDefs>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetLeaderOfFaction">
<storeAs>asker</storeAs>
<factionToUse>$askerFaction</factionToUse>
</li>
<li Class="QuestNode_GetSiteTile">
<storeAs>siteTile</storeAs>
<preferCloserTiles>true</preferCloserTiles>
</li>
<li Class="QuestNode_GetSitePartDefsByTagsAndFaction">
<storeAs>sitePartDefs</storeAs>
<sitePartsTags>
<li>
<tag>FCP_Site_NCR_Legion_Spy_Camp</tag>
</li>
</sitePartsTags>
</li>
<li Class="QuestNode_GetDefaultSitePartsParams">
<tile>$siteTile</tile>
<faction>FCP_Faction_Caesars_Legion</faction>
<sitePartDefs>$sitePartDefs</sitePartDefs>
<storeSitePartsParamsAs>sitePartsParams</storeSitePartsParamsAs>
</li>
<li Class="QuestNode_GetSiteThreatPoints">
<storeAs>sitePoints</storeAs>
<sitePartsParams>$sitePartsParams</sitePartsParams>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GetDefaultRewardValueFromPoints</def>
<parms>
<points>$sitePoints</points>
</parms>
</li>
<li Class="QuestNode_Multiply">
<value1>$rewardValue</value1>
<value2>1.6</value2>
<storeAs>rewardValue</storeAs>
</li>
<li Class="QuestNode_SubScript">
<def>Util_GenerateSite</def>
<parms>
<siteFaction>FCP_Faction_Caesars_Legion</siteFaction>
</parms>
</li>
<li Class="QuestNode_SpawnWorldObjects">
<worldObjects>$site</worldObjects>
</li>
<li Class="QuestNode_WorldObjectTimeout">
<worldObject>$site</worldObject>
<isQuestTimeout>true</isQuestTimeout>
<delayTicks>$(randInt(12,24)*60000)</delayTicks>
<inSignalDisable>site.MapGenerated</inSignalDisable>
<destroyOnCleanup>true</destroyOnCleanup>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestExpired">quest expired: [resolvedQuestName]</label>
<text TKey="LetterTextQuestExpired">The Frumentarii broke camp and vanished before you found them. Quest [resolvedQuestName] expired.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label TKey="LetterLabelQuestFailed">quest failed: [resolvedQuestName]</label>
<text TKey="LetterTextQuestFailed">The spy camp was abandoned before it could be cleared. Quest [resolvedQuestName] ended.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Signal">
<inSignal>site.AllEnemiesDefeated</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Notify_PlayerRaidedSomeone">
<getRaidersFromMapParent>$site</getRaidersFromMapParent>
</li>
<li Class="QuestNode_GiveRewards">
<parms>
<allowGoodwill>true</allowGoodwill>
<allowRoyalFavor>true</allowRoyalFavor>
</parms>
<addCampLootReward>true</addCampLootReward>
<customLetterLabel>Cell eliminated</customLetterLabel>
<customLetterText>The Frumentarius cell is dead and their reports with them. NCR command sends payment - and its thanks.</customLetterText>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_End">
<inSignal>site.AllEnemiesDefeated</inSignal>
<outcome>Success</outcome>
</li>
<li Class="QuestNode_NoWorldObject">
<worldObject>$site</worldObject>
<node Class="QuestNode_End" />
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>
@@ -19,9 +19,10 @@
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->[asker_nameFull] reports deserter inmates seized [site_label]. Clear the facility for bounty payment.</li>
<li>questDescription->Hostile inmates control [site_label]. [asker_nameFull] offers bounty for elimination.</li>
<li>questDescription->[asker_nameFull]: "Deserters took [site_label]. Clear them out, bounty paid on confirmation."</li>
<li>requirements->Requirements: clear every hostile from [site_label] to secure it. If the inmates abandon the facility before you arrive, the bounty is forfeit.</li>
<li>questDescription->[asker_nameFull] reports deserter inmates seized [site_label]. Clear the facility for bounty payment.\n\n[requirements]</li>
<li>questDescription->Hostile inmates control [site_label]. [asker_nameFull] offers bounty for elimination.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull]: "Deserters took [site_label]. Clear them out, bounty paid on confirmation."\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
@@ -19,11 +19,12 @@
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->NCR command reports hostile activity along one of their patrol routes. [asker_nameFull] needs backup to sweep a known raider position. Standard combat pay, no questions asked.</li>
<li>questDescription->[asker_nameFull] sends: "Patrol went dark near a raider camp. Can't spare the men to investigate. Need someone to clear it out, confirm hostile elimination. Payment on completion."</li>
<li>questDescription->NCR dispatch from [asker_nameFull]: Raiders have fortified a position near the highway. Interfering with supply lines. Clear them out and the Republic pays standard rates.</li>
<li>questDescription->[asker_nameFull] reports increased hostile contacts near NCR territory. Need independent contractors to eliminate the threat. Simple extermination contract.</li>
<li>questDescription->Priority from NCR command: [asker_nameFull] requests combat assistance. Raiders threatening trade routes. Eliminate all hostiles, secure the area.</li>
<li>requirements->Requirements: defeat every hostile at the site. If they abandon the position before you arrive, the contract is void.</li>
<li>questDescription->NCR command reports hostile activity along one of their patrol routes. [asker_nameFull] needs backup to sweep a known raider position. Standard combat pay, no questions asked.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull] sends: "Patrol went dark near a raider camp. Can't spare the men to investigate. Need someone to clear it out, confirm hostile elimination. Payment on completion."\n\n[requirements]</li>
<li>questDescription->NCR dispatch from [asker_nameFull]: Raiders have fortified a position near the highway. Interfering with supply lines. Clear them out and the Republic pays standard rates.\n\n[requirements]</li>
<li>questDescription->[asker_nameFull] reports increased hostile contacts near NCR territory. Need independent contractors to eliminate the threat. Simple extermination contract.\n\n[requirements]</li>
<li>questDescription->Priority from NCR command: [asker_nameFull] requests combat assistance. Raiders threatening trade routes. Eliminate all hostiles, secure the area.\n\n[requirements]</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
@@ -0,0 +1,204 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<QuestScriptDef>
<defName>FCP_Quest_NCR_Talent_Pool</defName>
<rootSelectionWeight>0.5</rootSelectionWeight>
<rootMinPoints>20</rootMinPoints>
<defaultChallengeRating>1</defaultChallengeRating>
<canGiveRoyalFavor>true</canGiveRoyalFavor>
<expireDaysRange>5~10</expireDaysRange>
<questNameRules>
<rulesStrings>
<li>questName->Talent Pool</li>
<li>questName->The Misfits</li>
<li>questName->9th Platoon's Last Chance</li>
<li>questName->Monroe's Problem</li>
<li>questName->Whipping the Misfits Into Shape</li>
</rulesStrings>
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->Lieutenant Monroe has a problem: five troopers so bad with a rifle that command nicknamed them "the Misfits" and shipped them off rather than deal with them. [asker_nameFull] wants you to take them for a stretch and get every one of them shooting like real soldiers.\n\nRequirements: all five must reach Shooting skill 10 within 60 days (two months). If any of them dies, the quest ends immediately in failure.</li>
<li>questDescription->[asker_nameFull]: "This batch from the 9th Platoon can't hit a barn from inside it. Monroe's tried everything. Take them, drill them, get their Guns skill to 10. NCR pays for miracles."\n\nRequirements: all five must reach Shooting skill 10 within 60 days (two months). If any of them dies, the quest ends immediately in failure.</li>
<li>questDescription->The 9th Platoon's "Misfits" are a running joke up and down the line - five troopers command can't get to shoot straight. [asker_nameFull] is out of patience and options, and is offering good pay to whoever can turn them into soldiers.\n\nRequirements: all five must reach Shooting skill 10 within 60 days (two months). If any of them dies, the quest ends immediately in failure.</li>
<li>questDescription->[asker_nameFull] admits this is a strange request: house five NCR troopers, train them until every one can shoot with real skill, and NCR will pay for the privilege. Lieutenant Monroe has simply run out of ideas of his own.\n\nRequirements: all five must reach Shooting skill 10 within 60 days (two months). If any of them dies, the quest ends immediately in failure.</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_SubScript">
<def>Util_RandomizePointsChallengeRating</def>
<parms>
<pointsFactorTwoStar>1.2</pointsFactorTwoStar>
<pointsFactorThreeStar>1.5</pointsFactorThreeStar>
</parms>
</li>
<li Class="QuestNode_GetMap" />
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
<storeAs>askerFaction</storeAs>
<factionDefs>
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
</factionDefs>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GetLeaderOfFaction">
<storeAs>asker</storeAs>
<factionToUse>$askerFaction</factionToUse>
</li>
<li Class="QuestNode_Set">
<name>trainingDays</name>
<value>60</value>
</li>
<li Class="QuestNode_Set">
<name>trainingDuration</name>
<value>$($trainingDays * 60000)</value>
</li>
<!-- First time this quest ever produces the Misfits, use the actual named squad.
Every time after, Corporal Mags's record already exists, so a fresh generic batch is used instead. -->
<li Class="FCP.Core.RadiantQuests.QuestNode_CharacterHasSpawned">
<characterDef>FCP_Character_NCR_Corporal_April_Mags</characterDef>
<elseNode Class="QuestNode_Sequence">
<nodes>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Corporal_April_Mags</characterDef>
<addToList>misfits</addToList>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Private_Poindexter</characterDef>
<addToList>misfits</addToList>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Private_OHanrahan</characterDef>
<addToList>misfits</addToList>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Private_Razz</characterDef>
<addToList>misfits</addToList>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_GenerateUniqueCharacterPawn">
<characterDef>FCP_Character_NCR_Private_Ackerman</characterDef>
<addToList>misfits</addToList>
</li>
<li Class="QuestNode_Set">
<name>misfitsArrivalText</name>
<value>Corporal Mags and Privates Poindexter, O'Hanrahan, Razz, and Ackerman have marched in on foot - and every one of them shoots like it's their first day holding a rifle.\n\nRequirements: get all five to Shooting skill 10 within [trainingDuration_duration]. Put them on hunting duty, draft them for target practice, or throw them into a fight - however they get there, they need to get there together.\n\nIf any of them dies, the deal is off immediately. Lieutenant Monroe is not expecting a miracle. Prove him wrong.</value>
</li>
</nodes>
</elseNode>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_LoopCount">
<loopCount>5</loopCount>
<node Class="QuestNode_GeneratePawn">
<kindDef>FCP_Pawnkind_NCR_Trooper</kindDef>
<faction>$askerFaction</faction>
<addToList>misfits</addToList>
<allowAddictions>false</allowAddictions>
<biocodeWeaponChance>1</biocodeWeaponChance>
<biocodeApparelChance>1</biocodeApparelChance>
</node>
</li>
<li Class="QuestNode_Set">
<name>misfitsArrivalText</name>
<value>Another five troopers have marched in off Monroe's list of problem cases - and every one of them shoots like it's their first day holding a rifle.\n\nRequirements: get all five to Shooting skill 10 within [trainingDuration_duration]. Put them on hunting duty, draft them for target practice, or throw them into a fight - however they get there, they need to get there together.\n\nIf any of them dies, the deal is off immediately. Lieutenant Monroe is not expecting a miracle. Prove him wrong.</value>
</li>
</nodes>
</node>
</li>
<li Class="FCP.Core.RadiantQuests.QuestNode_SetPawnsSkillLevel">
<pawns>$misfits</pawns>
<skill>Shooting</skill>
<level>3</level>
</li>
<li Class="QuestNode_SetAllApparelLocked">
<pawns>$misfits</pawns>
</li>
<li Class="QuestNode_ExtraFaction">
<factionOf>$asker</factionOf>
<pawns>$misfits</pawns>
<factionType>HomeFaction</factionType>
<inSignalsRemovePawn>
<li>misfits.RanWild</li>
</inSignalsRemovePawn>
</li>
<li Class="QuestNode_LeaveOnCleanup">
<pawns>$misfits</pawns>
<sendStandardLetter>false</sendStandardLetter>
<inSignalRemovePawn>misfits.RanWild</inSignalRemovePawn>
</li>
<li Class="QuestNode_GetWalkInSpot" />
<li Class="QuestNode_PawnsArrive">
<pawns>$misfits</pawns>
<joinPlayer>true</joinPlayer>
<walkInSpot>$walkInSpot</walkInSpot>
<customLetterLabel>The Misfits have arrived</customLetterLabel>
<customLetterText>$misfitsArrivalText</customLetterText>
</li>
<li Class="QuestNode_Signal">
<inSignal>misfits.Destroyed</inSignal>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<label>Talent Pool: Misfit lost</label>
<letterDef>NegativeEvent</letterDef>
<text>One of the Misfits is dead. The deal was five soldiers back on their feet, not four in a grave - Monroe pulls the rest and the deal is off.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-10</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Delay">
<delayTicks>$trainingDuration</delayTicks>
<isQuestTimeout>true</isQuestTimeout>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="FCP.Core.RadiantQuests.QuestNode_AllPawnsSkillAtLeast">
<pawns>$misfits</pawns>
<skill>Shooting</skill>
<level>10</level>
<node Class="QuestNode_Sequence">
<nodes>
<li Class="QuestNode_Letter">
<letterDef>PositiveEvent</letterDef>
<label>Talent Pool: graduated</label>
<text>Every one of the Misfits can shoot straight now. Corporal Mags salutes on her way out - Lieutenant Monroe won't recognize his own platoon. NCR command sends payment, and word of this will travel further than the bounty does.</text>
</li>
<li Class="QuestNode_GiveRewards">
<parms>
<allowGoodwill>true</allowGoodwill>
<allowRoyalFavor>true</allowRoyalFavor>
</parms>
<addCampLootReward>false</addCampLootReward>
<customLetterLabel>Payment from the NCR</customLetterLabel>
<customLetterText>Payment for turning five hopeless cases into soldiers, courtesy of Lieutenant Monroe's office.</customLetterText>
</li>
<li Class="QuestNode_End">
<outcome>Success</outcome>
</li>
</nodes>
</node>
</li>
<li Class="QuestNode_Letter">
<label>Talent Pool: time's up</label>
<letterDef>NegativeEvent</letterDef>
<text>Time's up. Not every Misfit made the mark - Corporal Mags and the others head back to Monroe's platoon much as they arrived. NCR command is disappointed, but not surprised.</text>
</li>
<li Class="QuestNode_End">
<outcome>Fail</outcome>
<goodwillChangeAmount>-5</goodwillChangeAmount>
<goodwillChangeFactionOf>$asker</goodwillChangeFactionOf>
</li>
</nodes>
</node>
</li>
</nodes>
</root>
</QuestScriptDef>
</Defs>
@@ -27,7 +27,7 @@
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->[prisoner_nameDef] has been captured by enemy forces. It's up to you to rescue them.</li>
<li>questDescription->[prisoner_nameDef] has been captured by enemy forces. It's up to you to rescue them.\n\nRequirements: reach the site and free [prisoner_nameDef] from captivity. Defeating the guards alone isn't enough - you need to release them from their cell. Take too long and they may not be there to save.</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
@@ -175,7 +175,7 @@
</questNameRules>
<questDescriptionRules>
<rulesStrings>
<li>questDescription->[prisoner_nameDef] has been captured by enemy forces. It's up to you to rescue them.</li>
<li>questDescription->[prisoner_nameDef] has been captured by enemy forces. It's up to you to rescue them.\n\nRequirements: reach the site and free [prisoner_nameDef] from captivity. Defeating the guards alone isn't enough - you need to release them from their cell. Take too long and they may not be there to save.</li>
</rulesStrings>
</questDescriptionRules>
<root Class="QuestNode_Sequence">
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SitePartDef ParentName="Outpost">
<defName>FCP_Site_NCR_Debtor_Settlement</defName>
<label>debtor settlement</label>
<description>A small settlement under NCR protection that has fallen behind on what it owes.</description>
<siteTexture>World/WorldObjects/DefaultSettlement</siteTexture>
<expandingIconTexture>MapIcons/Sites/FCP_Generic_Quest_Site</expandingIconTexture>
<forceExitAndRemoveMapCountdownDurationDays>6</forceExitAndRemoveMapCountdownDurationDays>
<wantsThreatPoints>true</wantsThreatPoints>
<tags Inherit="False">
<li>FCP_Site_NCR_Debtor_Settlement</li>
</tags>
<approachOrderString>Approach the debtor settlement</approachOrderString>
<approachingReportString>approaching the debtor settlement</approachingReportString>
<arrivedLetter>Your caravan arrived at the debtor settlement.</arrivedLetter>
</SitePartDef>
<GenStepDef>
<defName>FCP_Site_NCR_Debtor_Settlement_Outpost</defName>
<linkWithSite>FCP_Site_NCR_Debtor_Settlement</linkWithSite>
<order>450</order>
<genStep Class="GenStep_Outpost"/>
</GenStepDef>
<GenStepDef>
<defName>FCP_Site_NCR_Debtor_Settlement_Power</defName>
<linkWithSite>FCP_Site_NCR_Debtor_Settlement</linkWithSite>
<order>451</order>
<genStep Class="GenStep_Power"/>
</GenStepDef>
</Defs>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SitePartDef ParentName="Outpost">
<defName>FCP_Site_NCR_Legion_ScoutParty</defName>
<label>Legion scout party</label>
<description>An elite Legion detachment scouting NCR territory ahead of a larger advance.</description>
<siteTexture>World/WorldObjects/DefaultSettlement</siteTexture>
<expandingIconTexture>MapIcons/Sites/FCP_Generic_Quest_Site</expandingIconTexture>
<forceExitAndRemoveMapCountdownDurationDays>6</forceExitAndRemoveMapCountdownDurationDays>
<wantsThreatPoints>true</wantsThreatPoints>
<tags Inherit="False">
<li>FCP_Site_NCR_Legion_ScoutParty</li>
</tags>
<approachOrderString>Attack Legion scout party</approachOrderString>
<approachingReportString>approaching Legion scout party</approachingReportString>
<arrivedLetter>Your caravan arrived at the Legion scout party's camp.</arrivedLetter>
</SitePartDef>
<GenStepDef>
<defName>FCP_Site_NCR_Legion_ScoutParty_Outpost</defName>
<linkWithSite>FCP_Site_NCR_Legion_ScoutParty</linkWithSite>
<order>450</order>
<genStep Class="GenStep_Outpost"/>
</GenStepDef>
</Defs>
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<SitePartDef ParentName="Outpost">
<defName>FCP_Site_NCR_Legion_Spy_Camp</defName>
<label>Legion spy camp</label>
<description>A concealed camp where Legion Frumentarii operate inside NCR territory.</description>
<siteTexture>World/WorldObjects/DefaultSettlement</siteTexture>
<expandingIconTexture>MapIcons/Sites/FCP_Generic_Quest_Site</expandingIconTexture>
<forceExitAndRemoveMapCountdownDurationDays>6</forceExitAndRemoveMapCountdownDurationDays>
<wantsThreatPoints>true</wantsThreatPoints>
<tags Inherit="False">
<li>FCP_Site_NCR_Legion_Spy_Camp</li>
</tags>
<approachOrderString>Attack Legion spy camp</approachOrderString>
<approachingReportString>approaching Legion spy camp</approachingReportString>
<arrivedLetter>Your caravan arrived at the Legion spy camp.</arrivedLetter>
</SitePartDef>
<GenStepDef>
<defName>FCP_Site_NCR_Legion_Spy_Camp_Outpost</defName>
<linkWithSite>FCP_Site_NCR_Legion_Spy_Camp</linkWithSite>
<order>450</order>
<genStep Class="GenStep_Outpost"/>
</GenStepDef>
</Defs>