返回提交历史
Modified
config.json.example
+1
-0
Modified
src/controllers/api/inventoryController.ts
+21
-2
Modified
src/services/configService.ts
+1
-0
Added
static/fixed_responses/allDialogue.json
+139
-0
Modified
static/webui/index.html
+4
-0
Modified
static/webui/script.js
+1
-0
XFEstudio/SpaceNinjaServer
feat: skipAllDialogue (#453)
Co-authored-by: Sainan <Sainan@users.noreply.github.com>
de6745ce
代码差异
6 个文件
+167
-2
@@ -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,
@@ -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;
@@ -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;
@@ -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
]
@@ -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>
@@ -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",