返回提交历史
Modified
src/controllers/api/nemesisController.ts
+64
-34
XFEstudio/XFESpaceNinjaServer
fix: handle creation of infested lich (#1252)
just setting the höllvania nodes and preventing the generation of a weapon index Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1252
9d90a3ca
代码差异
1 个文件
+64
-34
@@ -13,46 +13,74 @@ export const nemesisController: RequestHandler = async (req, res) => {
13
13
const accountId = await getAccountIdForRequest(req);
14
14
const inventory = await getInventory(accountId, "Nemesis NemesisAbandonedRewards");
15
15
const body = getJSONfromString<INemesisStartRequest>(String(req.body));
16
body.target.fp = BigInt(body.target.fp);
17
18
let infNodes: IInfNode[];
19
let weaponIdx = -1;
20
if (body.target.Faction == "FC_INFESTATION") {
21
infNodes = [
22
{
23
Node: "SolNode852",
24
Influence: 1
25
},
26
{
27
Node: "SolNode850",
28
Influence: 1
29
},
30
{
31
Node: "SolNode851",
32
Influence: 1
33
},
34
{
35
Node: "SolNode853",
36
Influence: 1
37
},
38
{
39
Node: "SolNode854",
40
Influence: 1
41
}
42
];
43
} else {
44
infNodes = [];
45
for (const [key, value] of Object.entries(ExportRegions)) {
46
if (
47
value.systemIndex == 2 && // earth
48
value.nodeType != 3 && // not hub
49
value.nodeType != 7 && // not junction
50
value.missionIndex && // must have a mission type and not assassination
51
value.missionIndex != 28 && // not open world
52
value.missionIndex != 32 && // not railjack
53
value.missionIndex != 41 && // not saya's visions
54
value.name.indexOf("Archwing") == -1
55
) {
56
//console.log(dict_en[value.name]);
57
infNodes.push({ Node: key, Influence: 1 });
58
}
59
}
16
60
17
const infNodes: IInfNode[] = [];
18
for (const [key, value] of Object.entries(ExportRegions)) {
19
if (
20
value.systemIndex == 2 && // earth
21
value.nodeType != 3 && // not hub
22
value.nodeType != 7 && // not junction
23
value.missionIndex && // must have a mission type and not assassination
24
value.missionIndex != 28 && // not open world
25
value.missionIndex != 32 && // not railjack
26
value.missionIndex != 41 && // not saya's visions
27
value.name.indexOf("Archwing") == -1
61
let weapons: readonly string[];
62
if (body.target.manifest == "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionSix") {
63
weapons = kuvaLichVersionSixWeapons;
64
} else if (
65
body.target.manifest == "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerManifestVersionFour" ||
66
body.target.manifest == "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerManifestVersionThree"
28
67
) {
29
//console.log(dict_en[value.name]);
30
infNodes.push({ Node: key, Influence: 1 });
68
weapons = corpusVersionThreeWeapons;
69
} else {
70
throw new Error(`unknown nemesis manifest: ${body.target.manifest}`);
31
71
}
32
}
33
72
34
let weapons: readonly string[];
35
if (body.target.manifest == "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionSix") {
36
weapons = kuvaLichVersionSixWeapons;
37
} else if (
38
body.target.manifest == "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerManifestVersionFour" ||
39
body.target.manifest == "/Lotus/Types/Enemies/Corpus/Lawyers/LawyerManifestVersionThree"
40
) {
41
weapons = corpusVersionThreeWeapons;
42
} else {
43
throw new Error(`unknown nemesis manifest: ${body.target.manifest}`);
73
const initialWeaponIdx = new SRng(body.target.fp).randomInt(0, weapons.length - 1);
74
weaponIdx = initialWeaponIdx;
75
do {
76
const weapon = weapons[weaponIdx];
77
if (!body.target.DisallowedWeapons.find(x => x == weapon)) {
78
break;
79
}
80
weaponIdx = (weaponIdx + 1) % weapons.length;
81
} while (weaponIdx != initialWeaponIdx);
44
82
}
45
83
46
body.target.fp = BigInt(body.target.fp);
47
const initialWeaponIdx = new SRng(body.target.fp).randomInt(0, weapons.length - 1);
48
let weaponIdx = initialWeaponIdx;
49
do {
50
const weapon = weapons[weaponIdx];
51
if (!body.target.DisallowedWeapons.find(x => x == weapon)) {
52
break;
53
}
54
weaponIdx = (weaponIdx + 1) % weapons.length;
55
} while (weaponIdx != initialWeaponIdx);
56
84
inventory.Nemesis = {
57
85
fp: body.target.fp,
58
86
manifest: body.target.manifest,
@@ -111,6 +139,8 @@ export interface INemesisStartRequest {
111
139
Weakened: boolean;
112
140
PrevOwners: number;
113
141
HenchmenKilled: number;
142
MissionCount?: number; // Added in 38.5.0
143
LastEnc?: number; // Added in 38.5.0
114
144
SecondInCommand: boolean;
115
145
};
116
146
}