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

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
Sainan <sainan@calamity.inc>
提交于

代码差异

1 个文件 +64 -34
Modified src/controllers/api/nemesisController.ts +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 }