XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat: skipAllDialogue (#453)

Co-authored-by: Sainan <Sainan@users.noreply.github.com>

de6745ce
Sainan <sainan@calamity.gg>
提交于

代码差异

6 个文件 +167 -2
Modified config.json.example +1 -0
@@ -11,6 +11,7 @@
11 11 "autoCreateAccount": true,
12 12 "skipStoryModeChoice": true,
13 13 "skipTutorial": true,
14 "skipAllDialogue": true,
14 15 "unlockAllScans": true,
15 16 "unlockAllMissions": true,
16 17 "unlockAllQuests": true,
Modified src/controllers/api/inventoryController.ts +21 -2
@@ -3,6 +3,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService";
3 3 import { toInventoryResponse } from "@/src/helpers/inventoryHelpers";
4 4 import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
5 5 import { config } from "@/src/services/configService";
6 import allDialogue from "@/static/fixed_responses/allDialogue.json";
6 7 import allMissions from "@/static/fixed_responses/allMissions.json";
7 8 import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes";
8 9 import { IShipInventory, equipmentKeys } from "@/src/types/inventoryTypes/inventoryTypes";
@@ -43,9 +44,21 @@ const inventoryController: RequestHandler = async (request, response) => {
43 44 inventoryResponse.PremiumCredits = 999999999;
44 45 }
45 46
47 if (config.skipAllDialogue) {
48 inventoryResponse.TauntHistory = [
49 {
50 node: "TreasureTutorial",
51 state: "TS_COMPLETED"
52 }
53 ];
54 for (const str of allDialogue) {
55 addString(inventoryResponse.NodeIntrosCompleted, str);
56 }
57 }
58
46 59 if (config.unlockAllMissions) {
47 60 inventoryResponse.Missions = allMissions;
48 inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked");
61 addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
49 62 }
50 63
51 64 if (config.unlockAllQuests) {
@@ -73,7 +86,7 @@ const inventoryController: RequestHandler = async (request, response) => {
73 86 inventoryResponse.ArchwingEnabled = true;
74 87
75 88 // Skip "Watch The Maker"
76 inventoryResponse.NodeIntrosCompleted.push("/Lotus/Levels/Cinematics/NewWarIntro/NewWarStageTwo.level");
89 addString(inventoryResponse.NodeIntrosCompleted, "/Lotus/Levels/Cinematics/NewWarIntro/NewWarStageTwo.level");
77 90 }
78 91
79 92 if (config.unlockAllShipDecorations) {
@@ -142,6 +155,12 @@ const inventoryController: RequestHandler = async (request, response) => {
142 155 response.json(inventoryResponse);
143 156 };
144 157
158 const addString = (arr: string[], str: string): void => {
159 if (!arr.find(x => x == str)) {
160 arr.push(str);
161 }
162 };
163
145 164 const getExpRequiredForMr = (rank: number): number => {
146 165 if (rank <= 30) {
147 166 return 2500 * rank * rank;
Modified src/services/configService.ts +1 -0
@@ -28,6 +28,7 @@ interface IConfig {
28 28 autoCreateAccount?: boolean;
29 29 skipStoryModeChoice?: boolean;
30 30 skipTutorial?: boolean;
31 skipAllDialogue?: boolean;
31 32 unlockAllScans?: boolean;
32 33 unlockAllMissions?: boolean;
33 34 unlockAllQuests?: boolean;
Added static/fixed_responses/allDialogue.json +139 -0
@@ -0,0 +1,139 @@
1 [
2 "SolarisUnitedHub1",
3 "/Lotus/Language/SolarisVenus/FishmongerName",
4 "/Lotus/Language/SolarisVenus/ProspectorName",
5 "/Lotus/Language/SolarisVenus/StockbrokerName",
6 "/Lotus/Language/SolarisVenus/WeaponsmithShopName",
7 "/Lotus/Language/SolarisVenus/LegsShopName",
8 "/Lotus/Language/Actions/KDriveVendor",
9 "/Lotus/Language/SolarisVenus/SolarisUnitedContactName",
10 "SaturnWolf1",
11 "SaturnWolf2",
12 "SaturnWolf3",
13 "SaturnWolf4",
14 "SaturnWolf5",
15 "ConclaveSyndicate",
16 "ArbitersSyndicate",
17 "LibrarySyndicate",
18 "RedVeilSyndicate",
19 "PerrinSyndicate",
20 "CephalonSudaSyndicate",
21 "NewLokaSyndicate",
22 "SteelMeridianSyndicate",
23 "CetusSyndicate",
24 "QuillsSyndicate",
25 "VentKidsSyndicate",
26 "SolarisSyndicate",
27 "VoxSyndicate",
28 "RadioLegionSyndicate",
29 "EventSyndicate",
30 "TheEmissary1",
31 "TheEmissary2",
32 "TheEmissary3",
33 "TheEmissary4",
34 "LeverianIntro",
35 "TheEmissary5",
36 "RailjackMultiToolIntro",
37 "EnterRailjackOnceOnly",
38 "ScenarioEventHub5",
39 "Glassmaker1",
40 "/Lotus/Types/Items/Glassmaker/CetusBurnedNoteCEvidence",
41 "/Lotus/Types/Items/Glassmaker/CetusWeaponBEvidence",
42 "/Lotus/Types/Items/Glassmaker/CetusDatapadOneBEvidence",
43 "/Lotus/Types/Items/Glassmaker/CetusEyeBEvidence",
44 "/Lotus/Types/Items/Glassmaker/CetusDatapadTwoAEvidence",
45 "/Lotus/Types/Items/Glassmaker/WeaveEvidencePartOne",
46 "Glassmaker2",
47 "/Lotus/Types/Items/Glassmaker/CorpusJournalBEvidence",
48 "/Lotus/Types/Items/Glassmaker/CorpusCatalogRobotsEvidence",
49 "/Lotus/Types/Items/Glassmaker/CorpusDatapadEvidenceC",
50 "/Lotus/Types/Items/Glassmaker/CorpusHelmetEngineerEvidence",
51 "/Lotus/Types/Items/Glassmaker/CorpusBadgeMarsHiddenEvidence",
52 "/Lotus/Types/Items/Glassmaker/WeaveEvidencePartTwo",
53 "Glassmaker3",
54 "/Lotus/Types/Items/Glassmaker/GrineerTechCEvidence",
55 "/Lotus/Types/Items/Glassmaker/GrineerWeaponBEvidence",
56 "/Lotus/Types/Items/Glassmaker/GrineerPlushAEvidence",
57 "/Lotus/Types/Items/Glassmaker/GrineerMessageBEvidence",
58 "/Lotus/Types/Items/Glassmaker/GrineerDatapadBEvidence",
59 "/Lotus/Types/Items/Glassmaker/WeaveEvidencePartThree",
60 "TL20Start",
61 "TL20End",
62 "EudicoHeists",
63 "Glassmaker4",
64 "/Lotus/Types/Items/Glassmaker/OrokinManifestoBEvidence",
65 "/Lotus/Types/Items/Glassmaker/OrokinDatapadBEvidence",
66 "/Lotus/Types/Items/Glassmaker/OrokinNihilPlanCEvidence",
67 "/Lotus/Types/Items/Glassmaker/OrokinAppraisalBEvidence",
68 "/Lotus/Types/Items/Glassmaker/OrokinDossierAEvidence",
69 "/Lotus/Types/Items/Glassmaker/WeaveEvidencePartFour",
70 "/Lotus/Language/SolarisVenus/LegsShopNameLoved",
71 "/Lotus/Language/SolarisVenus/EudicoLoved",
72 "/Lotus/Language/SolarisVenus/ProspectorNameLoved",
73 "/Lotus/Language/SolarisVenus/StockbrokerNameLoved",
74 "/Lotus/Language/SolarisVenus/WeaponsmithShopNameLoved",
75 "/Lotus/Language/SolarisVenus/FishmongerNameLoved",
76 "DeimosHub",
77 "EntratiSyndicate",
78 "/Lotus/Language/InfestedMicroplanet/HivemindTokenVendorName",
79 "/Lotus/Language/InfestedMicroplanet/HivemindProspector",
80 "/Lotus/Language/InfestedMicroplanet/HivemindGunsmithName",
81 "/Lotus/Language/InfestedMicroplanet/HivemindPetVendor",
82 "ModularCrafting45",
83 "ModularCrafting55",
84 "NecraloidSyndicate",
85 "/Lotus/Language/InfestedMicroplanet/HivemindMechsName",
86 "/Lotus/Language/Npcs/EntratiMother",
87 "/Lotus/Language/InfestedMicroplanet/HivemindFishmonger",
88 "/Lotus/Language/SolarisVenus/SolarisUnitedAgentLoved",
89 "Glassmaker5",
90 "/Lotus/Types/Items/Glassmaker/InfestedOroShardsAEvidence",
91 "/Lotus/Types/Items/Glassmaker/InfestedOroWeaponCEvidence",
92 "/Lotus/Types/Items/Glassmaker/InfestedOroProbeBEvidence",
93 "/Lotus/Types/Items/Glassmaker/InfestedOroShackleBEvidence",
94 "/Lotus/Types/Items/Glassmaker/InfestedOroTabletBEvidence",
95 "/Lotus/Types/Items/Glassmaker/WeaveEvidencePartFive",
96 "GlassmakerBossFight",
97 "/Lotus/Language/InfestedMicroplanet/HivemindGunsmithNameLoved",
98 "/Lotus/Language/InfestedMicroplanet/HivemindTokenVendorNameLoved",
99 "/Lotus/Language/Npcs/EntratiMotherLoved",
100 "/Lotus/Language/InfestedMicroplanet/HivemindPetVendorLoved",
101 "/Lotus/Language/InfestedMicroplanet/HivemindFishmongerLoved",
102 "/Lotus/Language/InfestedMicroplanet/HivemindProspectorLoved",
103 "/Lotus/Language/InfestedMicroplanet/HivemindMechsNameLoved",
104 "/Lotus/Language/InfestedMicroplanet/HivemindPetVendorName",
105 "/Lotus/Language/InfestedMicroplanet/HivemindPetVendorNameLoved",
106 "/Lotus/Language/InfestedMicroplanet/HivemindFishmongerName",
107 "/Lotus/Language/InfestedMicroplanet/HivemindFishmongerNameLoved",
108 "/Lotus/Language/InfestedMicroplanet/HivemindProspectorName",
109 "/Lotus/Language/InfestedMicroplanet/HivemindProspectorNameLoved",
110 "DebtTokenVendorCrewMembers_FirstVisit",
111 "ZarimanSyndicate",
112 "/Lotus/Language/Npcs/Kahl",
113 "RankZeroConversationOne",
114 "RankZeroConversationTwo",
115 "EntratiLabSyndicate",
116 "/Lotus/Language/EntratiLab/EntratiGeneral/HumanLoid",
117 "/Lotus/Language/EntratiLab/EntratiGeneral/Fibonacci",
118 "/Lotus/Language/EntratiLab/EntratiGeneral/BirdThree",
119 "/Lotus/Language/Zariman/Quinn",
120 "/Lotus/Language/EntratiLab/EntratiGeneral/TagferFirstRank1",
121 "VoidVaultIntro",
122 "PurchasePlatformLockedNotificationSeen",
123 "/Lotus/Language/Zariman/Yonta",
124 "ZarimanSyndicateFirstOpen",
125 "HivemindTokenVendorBarter_FirstVisit",
126 "OtakLastWishManifest_FirstVisit",
127 "/Lotus/Language/Zariman/Cavalero",
128 "/Lotus/Language/Duviri/Acrithis",
129 "/Lotus/Language/Npcs/PrimeVaultTrader",
130 "/Lotus/Language/Zariman/Hombask",
131 "EntratiLabDisruptionManifest_FirstVisit",
132 "/Lotus/Language/EntratiLab/EntratiGeneral/BirdThreeLoved",
133 "/Lotus/Language/EntratiLab/EntratiGeneral/TagferFirstRank5",
134 "DanteLeverian",
135 "/Lotus/Language/EntratiLab/EntratiGeneral/HumanLoidLoved",
136 "ConquestSetupIntro",
137 "EntratiLabConquestHardModeUnlocked",
138 "/Lotus/Language/Npcs/KonzuPostNewWar"
139 ]
Modified static/webui/index.html +4 -0
@@ -188,6 +188,10 @@
188 188 <input class="form-check-input" type="checkbox" id="skipTutorial" />
189 189 <label class="form-check-label" for="skipTutorial">Skip Tutorial</label>
190 190 </div>
191 <div class="form-check">
192 <input class="form-check-input" type="checkbox" id="skipAllDialogue" />
193 <label class="form-check-label" for="skipAllDialogue">Skip All Dialogue</label>
194 </div>
191 195 <div class="form-check">
192 196 <input class="form-check-input" type="checkbox" id="unlockAllScans" />
193 197 <label class="form-check-label" for="unlockAllScans">Unlock All Scans</label>
Modified static/webui/script.js +1 -0
@@ -731,6 +731,7 @@ const uiConfigs = [
731 731 "autoCreateAccount",
732 732 "skipStoryModeChoice",
733 733 "skipTutorial",
734 "skipAllDialogue",
734 735 "unlockAllScans",
735 736 "unlockAllMissions",
736 737 "unlockAllQuests",