mirror of
https://github.com/FalloutCollaborationProject/FCP-Tools.git
synced 2026-07-27 16:59:37 -07:00
Introduce terminal/holotape features, hacking jobs and UI plus extensive radiant quest content and faction/trader support. Adds many new C# systems (holotape storage/comp, terminal hacking, job drivers, quest nodes/parts, gensteps, settlement spawn control, pocket map components) and XML defs (quest scripts for CaravanRescue/ScavengerSupplyRun, mapgen prefab, faction/trader defs for currency exchange, site and research defs). Updates: JobDefs to include holotape/hack jobs, PawnKind apparel season handling and faction requirement metadata, ThingDefs and map/site defs, language word lists, map icons and textures, and various patches (workgiver, mapgen, currency). Removes obsolete VNPE compatibility patch, legacy pawn-rescue-animal script and a few unused defs/assets.
177 lines
11 KiB
XML
177 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8" ?>
|
|
<Defs>
|
|
|
|
<QuestScriptDef>
|
|
<defName>FCP_Quest_PawnRescueHumanlike</defName>
|
|
<rootSelectionWeight>1.0</rootSelectionWeight>
|
|
<rootMinPoints>50</rootMinPoints>
|
|
<defaultChallengeRating>1</defaultChallengeRating>
|
|
<canGiveRoyalFavor>true</canGiveRoyalFavor>
|
|
<expireDaysRange>4~8</expireDaysRange>
|
|
<questNameRules>
|
|
<rulesStrings>
|
|
<li>questName->Operation: Rescue [prisoner_nameDef]</li>
|
|
<li>questName->Wasteland Liberation: [prisoner_nameDef]</li>
|
|
<li>questName->Breaking the Chains</li>
|
|
<li>questName->Slave Camp Infiltration</li>
|
|
<li>questName->Freedom for [prisoner_nameDef]</li>
|
|
<li>questName->The [prisoner_nameDef] Extraction</li>
|
|
<li>questName->Raider Camp Assault</li>
|
|
<li>questName->Liberation Mission: [prisoner_nameDef]</li>
|
|
<li>questName->Breaking [prisoner_nameDef] Out</li>
|
|
<li>questName->Rescue from the Wasteland</li>
|
|
<li>questName->Operation Prisoner Freedom</li>
|
|
<li>questName->The Great Escape</li>
|
|
</rulesStrings>
|
|
</questNameRules>
|
|
<questDescriptionRules>
|
|
<rulesStrings>
|
|
<li>questDescription->A desperate transmission from [asker_faction_name] has crackled through the radio static. One of their people, [prisoner_nameDef], has been captured by wasteland raiders and is being held in a fortified slave camp. The captors are known for their brutality, and time is running out. Mount a rescue operation to liberate this survivor before they become another casualty of the harsh wasteland.</li>
|
|
<li>questDescription->Intelligence from [asker_faction_name] reports that [prisoner_nameDef], a valued member of their community, has fallen into the hands of ruthless slavers. The raider camp is heavily defended, but the captive's knowledge of pre-war technology makes them too valuable to abandon. Infiltrate the compound and extract the prisoner before they're sold to the highest bidder.</li>
|
|
<li>questDescription->An urgent message from [asker_faction_name]: "[prisoner_nameDef] was taken during a supply run gone wrong. The raiders who captured them are part of a notorious slaving operation that's been terrorizing the wasteland. We can't leave one of our own to suffer in their hands. Break into their stronghold and bring [prisoner_nameDef] home."</li>
|
|
<li>questDescription->Emergency communication from [asker_faction_name]: A survivor named [prisoner_nameDef] has been enslaved by raiders after their caravan was ambushed. The captors are demanding an impossible ransom while subjecting their prisoner to unspeakable conditions. The only option is a direct assault on their fortified position. Free this innocent soul from their wasteland nightmare.</li>
|
|
<li>questDescription->Priority alert from [asker_faction_name]: [prisoner_nameDef], a skilled wasteland survivor, has been captured by a gang of violent raiders known for their slave trading operations. The prisoner's intimate knowledge of local settlements makes them both valuable and dangerous in enemy hands. Stage a rescue mission before this information can be extracted and used against innocent communities.</li>
|
|
</rulesStrings>
|
|
</questDescriptionRules>
|
|
<root Class="QuestNode_Sequence">
|
|
<nodes>
|
|
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
|
|
<storeAs>askerFaction</storeAs>
|
|
<factionDefs>
|
|
<li>OutlanderCivil</li>
|
|
<li MayRequire="Rick.FCP.Wastelanders">FCP_Faction_Hidden_Wastelanders</li>
|
|
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR</li>
|
|
<li MayRequire="Rick.FCP.NCR">FCP_Faction_NCR_Deserters</li>
|
|
<li MayRequire="Rick.FCP.Legion">FCP_Faction_Caesars_Legion</li>
|
|
<li MayRequire="Rick.FCP.Enclave">FCP_Faction_Enclave</li>
|
|
<li MayRequire="Rick.FCP.BoS">FCP_Faction_BoS</li>
|
|
<li MayRequire="Rick.FCP.BoS">FCP_Faction_BoS_Midwest</li>
|
|
<li MayRequire="Rick.FCP.BoS">FCP_Faction_BoS_Lost_Hills</li>
|
|
<li MayRequire="Rick.FCP.BoS">FCP_Faction_BoS_Outcast_Remnants</li>
|
|
<li MayRequire="Rick.FCP.BoS">FCP_Faction_BoS_Lyons_Pride_Remnants</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>
|
|
<!--The faction def that will be guarding-->
|
|
<factionDefs>
|
|
<li>PirateWaster</li>
|
|
</factionDefs>
|
|
</li>
|
|
<li Class="FCP.Core.RadiantQuests.QuestNode_GetFactionFromList">
|
|
<storeAs>prisonerFaction</storeAs>
|
|
<!--The faction def that will be the prisoner-->
|
|
<factionDefs>
|
|
<li>OutlanderCivil</li>
|
|
<li MayRequire="Rick.FCP.Wastelanders">FCP_Faction_Hidden_Wastelanders</li>
|
|
</factionDefs>
|
|
</li>
|
|
<li Class="FCP.Core.RadiantQuests.QuestNode_GetPawnKind">
|
|
<!--Dont change storeAs its hardcoded in C#-->
|
|
<storeAs>prisonerPawnKind</storeAs>
|
|
<pawnKindDef>FCP_Pawnkind_Wastelander_Citizen</pawnKindDef>
|
|
</li>
|
|
<li Class="QuestNode_GetRandomInRangeFloat">
|
|
<storeAs>chanceToJoinVal</storeAs>
|
|
<range>0~1</range>
|
|
</li>
|
|
<li Class="QuestNode_Set">
|
|
<name>chanceToJoin</name>
|
|
<value>1</value>
|
|
</li>
|
|
<li Class="QuestNode_SubScript">
|
|
<def>Util_RandomizePointsChallengeRating</def>
|
|
<parms>
|
|
<pointsFactorTwoStar>1.5</pointsFactorTwoStar>
|
|
<pointsFactorThreeStar>2</pointsFactorThreeStar>
|
|
</parms>
|
|
</li>
|
|
<li Class="QuestNode_SubScript">
|
|
<def>Util_AdjustPointsForDistantFight</def>
|
|
</li>
|
|
<li Class="QuestNode_GetMap" />
|
|
<li Class="QuestNode_GetSiteTile">
|
|
<storeAs>siteTile</storeAs>
|
|
<preferCloserTiles>true</preferCloserTiles>
|
|
</li>
|
|
<li Class="QuestNode_GetSitePartDefsByTagsAndFaction">
|
|
<storeAs>sitePartDefs</storeAs>
|
|
<storeFactionAs>siteFaction</storeFactionAs>
|
|
<sitePartsTags>
|
|
<li>
|
|
<tag>FCP_Site_PawnRescue</tag>
|
|
</li>
|
|
</sitePartsTags>
|
|
</li>
|
|
<li Class="QuestNode_GetDefaultSitePartsParams">
|
|
<tile>$siteTile</tile>
|
|
<faction>$siteFaction</faction>
|
|
<sitePartDefs>$sitePartDefs</sitePartDefs>
|
|
<storeSitePartsParamsAs>sitePartsParams</storeSitePartsParamsAs>
|
|
</li>
|
|
<li Class="QuestNode_SubScript">
|
|
<def>Util_GenerateSite</def>
|
|
<parms>
|
|
<hiddenSitePartsPossible>true</hiddenSitePartsPossible>
|
|
</parms>
|
|
</li>
|
|
<li Class="QuestNode_SpawnWorldObjects">
|
|
<worldObjects>$site</worldObjects>
|
|
<defsToExcludeFromHyperlinks>Human</defsToExcludeFromHyperlinks>
|
|
</li>
|
|
<li Class="QuestNode_WorldObjectTimeout">
|
|
<worldObject>$site</worldObject>
|
|
<isQuestTimeout>true</isQuestTimeout>
|
|
<delayTicks>$(randInt(12,28)*60000)</delayTicks>
|
|
<inSignalDisable>site.MapGenerated</inSignalDisable>
|
|
<node Class="QuestNode_End">
|
|
<outcome>Fail</outcome>
|
|
<sendStandardLetter>true</sendStandardLetter>
|
|
</node>
|
|
</li>
|
|
<li Class="QuestNode_Signal">
|
|
<inSignal>prisoner.RescuedFromPrison</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>
|
|
<chosenPawnSignal>ChosenPawnForReward</chosenPawnSignal>
|
|
</parms>
|
|
<addCampLootReward>true</addCampLootReward>
|
|
<customLetterLabel TKey="LetterLabelPaymentArrived">Payment arrived</customLetterLabel>
|
|
<customLetterText TKey="LetterTextPaymentArrived">You have defeated the prisoner camp!\n\nThe payment from [asker_faction_name] has arrived.</customLetterText>
|
|
<nodeIfChosenPawnSignalUsed Class="QuestNode_Letter">
|
|
<letterDef>ChoosePawn</letterDef>
|
|
<label TKey="LetterLabelFavorReceiver">[asker_faction_royalFavorLabel]</label>
|
|
<text TKey="LetterTextFavorReceiver">These colonists participated in the victory for the quest [resolvedQuestName]. [asker_definite] wants to know who should receive the [royalFavorReward_amount] [asker_faction_royalFavorLabel] for this service.</text>
|
|
<useColonistsOnMap>$site</useColonistsOnMap>
|
|
<chosenPawnSignal>ChosenPawnForReward</chosenPawnSignal>
|
|
</nodeIfChosenPawnSignalUsed>
|
|
</li>
|
|
</nodes>
|
|
</node>
|
|
</li>
|
|
<li Class="QuestNode_End">
|
|
<inSignal>prisoner.RescuedFromPrison</inSignal>
|
|
<outcome>Success</outcome>
|
|
</li>
|
|
<li Class="QuestNode_NoWorldObject">
|
|
<worldObject>$site</worldObject>
|
|
<node Class="QuestNode_End" />
|
|
</li>
|
|
</nodes>
|
|
</root>
|
|
</QuestScriptDef>
|
|
|
|
</Defs>
|
|
|