返回提交历史
Modified
src/controllers/api/nemesisController.ts
+29
-27
Modified
src/models/inventoryModels/inventoryModel.ts
+1
-0
Modified
src/services/cheatsService.ts
+11
-0
Modified
src/types/inventoryTypes/inventoryTypes.ts
+1
-0
Modified
static/webui/index.html
+4
-0
Modified
static/webui/translations/de.js
+1
-0
Modified
static/webui/translations/en.js
+1
-0
Modified
static/webui/translations/es.js
+1
-0
Modified
static/webui/translations/fr.js
+1
-0
Modified
static/webui/translations/ru.js
+1
-0
Modified
static/webui/translations/uk.js
+1
-0
Modified
static/webui/translations/zh.js
+1
-0
XFEstudio/XFESpaceNinjaServer
feat: noNemesis cheat (#3720)
Closes #3709 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3720 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: Animan8000 <187183497+veniman8000@users.noreply.github.com> Co-committed-by: Animan8000 <187183497+veniman8000@users.noreply.github.com>
822db1e4
代码差异
12 个文件
+53
-27
@@ -245,7 +245,7 @@ export const nemesisController: RequestHandler = async (req, res) => {
245
245
await inventory.save();
246
246
res.json({ LastEnc: inventory.Nemesis!.LastEnc });
247
247
} else if ((req.query.mode as string) == "s") {
248
const inventory = await getInventory(account._id, "Nemesis");
248
const inventory = await getInventory(account._id, "Nemesis noNemesis");
249
249
if (inventory.Nemesis) {
250
250
logger.warn(`overwriting an existing nemesis as a new one is being requested`);
251
251
}
@@ -275,32 +275,34 @@ export const nemesisController: RequestHandler = async (req, res) => {
275
275
}
276
276
}
277
277
278
inventory.Nemesis = {
279
fp: body.target.fp,
280
manifest: body.target.manifest,
281
KillingSuit: body.target.KillingSuit,
282
killingDamageType: body.target.killingDamageType,
283
ShoulderHelmet: body.target.ShoulderHelmet,
284
WeaponIdx: weaponIdx,
285
AgentIdx: body.target.AgentIdx,
286
BirthNode: body.target.BirthNode,
287
Faction: body.target.Faction,
288
Rank: 0,
289
k: false,
290
Traded: false,
291
d: new Date(),
292
InfNodes: getInfNodes(manifest, 0),
293
GuessHistory: [],
294
Hints: [],
295
HintProgress: 0,
296
Weakened: false,
297
PrevOwners: 0,
298
HenchmenKilled: 0,
299
SecondInCommand: false,
300
MissionCount: 0,
301
LastEnc: 0
302
};
303
await inventory.save();
278
if (!inventory.noNemesis) {
279
inventory.Nemesis = {
280
fp: body.target.fp,
281
manifest: body.target.manifest,
282
KillingSuit: body.target.KillingSuit,
283
killingDamageType: body.target.killingDamageType,
284
ShoulderHelmet: body.target.ShoulderHelmet,
285
WeaponIdx: weaponIdx,
286
AgentIdx: body.target.AgentIdx,
287
BirthNode: body.target.BirthNode,
288
Faction: body.target.Faction,
289
Rank: 0,
290
k: false,
291
Traded: false,
292
d: new Date(),
293
InfNodes: getInfNodes(manifest, 0),
294
GuessHistory: [],
295
Hints: [],
296
HintProgress: 0,
297
Weakened: false,
298
PrevOwners: 0,
299
HenchmenKilled: 0,
300
SecondInCommand: false,
301
MissionCount: 0,
302
LastEnc: 0
303
};
304
await inventory.save();
305
}
304
306
305
307
res.json({
306
308
target: inventory.toJSON().Nemesis
@@ -1595,6 +1595,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
1595
1595
noVendorPurchaseLimits: Boolean,
1596
1596
noNodeEntryFees: Boolean,
1597
1597
noDeathMarks: Boolean,
1598
noNemesis: Boolean,
1598
1599
noKimCooldowns: Boolean,
1599
1600
noBlessingCooldown: Boolean,
1600
1601
claimingBlueprintRefundsIngredients: Boolean,
@@ -48,6 +48,17 @@ export const lockCheats: Partial<Record<keyof IAccountCheats, ILockCheat>> = {
48
48
}
49
49
},
50
50
51
noNemesis: {
52
projection: "Nemesis NemesisAbandonedRewards NemesisTaxedCredits",
53
isInventoryInIdealState: (inventory: TInventoryDatabaseDocument) =>
54
!inventory.Nemesis && !inventory.NemesisAbandonedRewards.length && !inventory.NemesisTaxedCredits,
55
cleanupInventory: (inventory: TInventoryDatabaseDocument) => {
56
inventory.Nemesis = undefined;
57
inventory.NemesisAbandonedRewards.splice(0);
58
inventory.NemesisTaxedCredits = undefined;
59
}
60
},
61
51
62
noMasteryRankUpCooldown: {
52
63
projection: "TrainingDate",
53
64
isInventoryInIdealState: (inventory: TInventoryDatabaseDocument) =>
@@ -67,6 +67,7 @@ export const accountCheatBooleans = [
67
67
"noVendorPurchaseLimits",
68
68
"noNodeEntryFees",
69
69
"noDeathMarks",
70
"noNemesis",
70
71
"noKimCooldowns",
71
72
"noBlessingCooldown",
72
73
"claimingBlueprintRefundsIngredients",
@@ -1049,6 +1049,10 @@
1049
1049
<input class="form-check-input" type="checkbox" id="noDeathMarks" />
1050
1050
<label class="form-check-label" for="noDeathMarks" data-loc="cheats_noDeathMarks"></label>
1051
1051
</div>
1052
<div class="form-check">
1053
<input class="form-check-input" type="checkbox" id="noNemesis" />
1054
<label class="form-check-label" for="noNemesis" data-loc="cheats_noNemesis"></label>
1055
</div>
1052
1056
<div class="form-check">
1053
1057
<input class="form-check-input" type="checkbox" id="noKimCooldowns" />
1054
1058
<label class="form-check-label" for="noKimCooldowns" data-loc="cheats_noKimCooldowns"></label>
@@ -265,6 +265,7 @@ dict = {
265
265
cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`,
266
266
cheats_noNodeEntryFees: `Keine Node Kosten`,
267
267
cheats_noDeathMarks: `Keine Todesmarkierungen`,
268
cheats_noNemesis: `Keine Nemesis`,
268
269
cheats_noKimCooldowns: `Keine Wartezeit bei KIM`,
269
270
cheats_noBlessingCooldown: `Keine Wartezeit für Gaben`,
270
271
cheats_fullyStockedVendors: `Händler haben volles Inventar`,
@@ -264,6 +264,7 @@ dict = {
264
264
cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`,
265
265
cheats_noNodeEntryFees: `No Node Entry Fees`,
266
266
cheats_noDeathMarks: `No Death Marks`,
267
cheats_noNemesis: `No Nemesis`,
267
268
cheats_noKimCooldowns: `No KIM Cooldowns`,
268
269
cheats_noBlessingCooldown: `No Blessing Cooldown`,
269
270
cheats_fullyStockedVendors: `Fully Stocked Vendors`,
@@ -265,6 +265,7 @@ dict = {
265
265
cheats_noVendorPurchaseLimits: `Sin límite de compras de vendedores`,
266
266
cheats_noNodeEntryFees: `[UNTRANSLATED] No Node Entry Fees`,
267
267
cheats_noDeathMarks: `Sin marcas de muerte`,
268
cheats_noNemesis: `[UNTRANSLATED] No Nemesis`,
268
269
cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`,
269
270
cheats_noBlessingCooldown: `[UNTRANSLATED] No Blessing Cooldown`,
270
271
cheats_fullyStockedVendors: `Vendedores con stock completo`,
@@ -265,6 +265,7 @@ dict = {
265
265
cheats_noVendorPurchaseLimits: `Aucune limite d'achat chez les PNJ`,
266
266
cheats_noNodeEntryFees: `Aucun frais de lancement de mission`,
267
267
cheats_noDeathMarks: `Aucune marque d'assassin`,
268
cheats_noNemesis: `[UNTRANSLATED] No Nemesis`,
268
269
cheats_noKimCooldowns: `Aucun cooldown sur le KIM`,
269
270
cheats_noBlessingCooldown: `Pas de temps de recharge pour les bénédictions`,
270
271
cheats_fullyStockedVendors: `Les vendeurs ont un stock à 100%`,
@@ -265,6 +265,7 @@ dict = {
265
265
cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у торговцев`,
266
266
cheats_noNodeEntryFees: `[UNTRANSLATED] No Node Entry Fees`,
267
267
cheats_noDeathMarks: `Без меток смерти`,
268
cheats_noNemesis: `[UNTRANSLATED] No Nemesis`,
268
269
cheats_noKimCooldowns: `Чаты KIM без кулдауна`,
269
270
cheats_noBlessingCooldown: `Благословения без кулдауна`,
270
271
cheats_fullyStockedVendors: `Полностью укомплектованные торговцы`,
@@ -265,6 +265,7 @@ dict = {
265
265
cheats_noVendorPurchaseLimits: `Відсутність лімітів на купівлю у продавців`,
266
266
cheats_noNodeEntryFees: `[UNTRANSLATED] No Node Entry Fees`,
267
267
cheats_noDeathMarks: `Без позначок смерті`,
268
cheats_noNemesis: `[UNTRANSLATED] No Nemesis`,
268
269
cheats_noKimCooldowns: `Чати KIM без очікування`,
269
270
cheats_noBlessingCooldown: `Благословіння без очікування`,
270
271
cheats_fullyStockedVendors: `Повністю укомплектовані продавці`,
@@ -265,6 +265,7 @@ dict = {
265
265
cheats_noVendorPurchaseLimits: `商城或商人无购买限制`,
266
266
cheats_noNodeEntryFees: `[UNTRANSLATED] No Node Entry Fees`,
267
267
cheats_noDeathMarks: `无死亡标记(不会被 Stalker/Grustrag 三霸/Zanuka 猎人等标记)`,
268
cheats_noNemesis: `[UNTRANSLATED] No Nemesis`,
268
269
cheats_noKimCooldowns: `即时通无冷却时间`,
269
270
cheats_noBlessingCooldown: `祝福无冷却时间`,
270
271
cheats_fullyStockedVendors: `商人贩卖所有商品`,