返回提交历史
Modified
config.json.example
+1
-0
Modified
src/services/configService.ts
+1
-0
Modified
src/services/missionInventoryUpdateService.ts
+17
-14
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/zh.js
+1
-0
XFEstudio/SpaceNinjaServer
feat: noDeathMarks cheat (#1691)
Closes #1583 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1691 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
419096f6
代码差异
10 个文件
+29
-14
@@ -33,6 +33,7 @@
33
33
"noArgonCrystalDecay": false,
34
34
"noMasteryRankUpCooldown": false,
35
35
"noVendorPurchaseLimits": true,
36
"noDeathMarks": false,
36
37
"noKimCooldowns": false,
37
38
"instantResourceExtractorDrones": false,
38
39
"noResourceExtractorDronesDamage": false,
@@ -39,6 +39,7 @@ interface IConfig {
39
39
noArgonCrystalDecay?: boolean;
40
40
noMasteryRankUpCooldown?: boolean;
41
41
noVendorPurchaseLimits?: boolean;
42
noDeathMarks?: boolean;
42
43
noKimCooldowns?: boolean;
43
44
instantResourceExtractorDrones?: boolean;
44
45
noResourceExtractorDronesDamage?: boolean;
@@ -54,6 +54,7 @@ import { getInfNodes } from "@/src/helpers/nemesisHelpers";
54
54
import { Loadout } from "../models/inventoryModels/loadoutModel";
55
55
import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes";
56
56
import { getWorldState } from "./worldStateService";
57
import { config } from "./configService";
57
58
58
59
const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => {
59
60
// For Spy missions, e.g. 3 vaults cracked = A, B, C
@@ -418,22 +419,24 @@ export const addMissionInventoryUpdates = async (
418
419
break;
419
420
}
420
421
case "DeathMarks": {
421
for (const bossName of value) {
422
if (inventory.DeathMarks.indexOf(bossName) == -1) {
423
// It's a new death mark; we have to say the line.
424
await createMessage(inventory.accountOwnerId, [
425
{
426
sub: bossName,
427
sndr: "/Lotus/Language/G1Quests/DeathMarkSender",
428
msg: "/Lotus/Language/G1Quests/DeathMarkMessage",
429
icon: "/Lotus/Interface/Icons/Npcs/Stalker_d.png",
430
highPriority: true,
431
expiry: new Date(Date.now() + 86400_000) // TOVERIFY: This type of inbox message seems to automatically delete itself. We'll just delete it after 24 hours, but it's clear if this is correct.
432
}
433
]);
422
if (!config.noDeathMarks) {
423
for (const bossName of value) {
424
if (inventory.DeathMarks.indexOf(bossName) == -1) {
425
// It's a new death mark; we have to say the line.
426
await createMessage(inventory.accountOwnerId, [
427
{
428
sub: bossName,
429
sndr: "/Lotus/Language/G1Quests/DeathMarkSender",
430
msg: "/Lotus/Language/G1Quests/DeathMarkMessage",
431
icon: "/Lotus/Interface/Icons/Npcs/Stalker_d.png",
432
highPriority: true,
433
expiry: new Date(Date.now() + 86400_000) // TOVERIFY: This type of inbox message seems to automatically delete itself. We'll just delete it after 24 hours, but it's clear if this is correct.
434
}
435
]);
436
}
434
437
}
438
inventory.DeathMarks = value;
435
439
}
436
inventory.DeathMarks = value;
437
440
break;
438
441
}
439
442
case "CapturedAnimals": {
@@ -611,6 +611,10 @@
611
611
<input class="form-check-input" type="checkbox" id="noVendorPurchaseLimits" />
612
612
<label class="form-check-label" for="noVendorPurchaseLimits" data-loc="cheats_noVendorPurchaseLimits"></label>
613
613
</div>
614
<div class="form-check">
615
<input class="form-check-input" type="checkbox" id="noDeathMarks" />
616
<label class="form-check-label" for="noDeathMarks" data-loc="cheats_noDeathMarks"></label>
617
</div>
614
618
<div class="form-check">
615
619
<input class="form-check-input" type="checkbox" id="noKimCooldowns" />
616
620
<label class="form-check-label" for="noKimCooldowns" data-loc="cheats_noKimCooldowns"></label>
@@ -138,6 +138,7 @@ dict = {
138
138
cheats_noArgonCrystalDecay: `Argon-Kristalle verschwinden niemals`,
139
139
cheats_noMasteryRankUpCooldown: `Keine Wartezeit beim Meisterschaftsrangaufstieg`,
140
140
cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`,
141
cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
141
142
cheats_noKimCooldowns: `Keine Wartezeit bei KIM`,
142
143
cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`,
143
144
cheats_noResourceExtractorDronesDamage: `Kein Schaden für Ressourcen-Extraktor-Drohnen`,
@@ -137,6 +137,7 @@ dict = {
137
137
cheats_noArgonCrystalDecay: `No Argon Crystal Decay`,
138
138
cheats_noMasteryRankUpCooldown: `No Mastery Rank Up Cooldown`,
139
139
cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`,
140
cheats_noDeathMarks: `No Death Marks`,
140
141
cheats_noKimCooldowns: `No KIM Cooldowns`,
141
142
cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`,
142
143
cheats_noResourceExtractorDronesDamage: `No Resource Extractor Drones Damage`,
@@ -138,6 +138,7 @@ dict = {
138
138
cheats_noArgonCrystalDecay: `Sin descomposición de cristal de Argón`,
139
139
cheats_noMasteryRankUpCooldown: `Sin tiempo de espera para rango de maestría`,
140
140
cheats_noVendorPurchaseLimits: `Sin límite de compras de vendedores`,
141
cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
141
142
cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`,
142
143
cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
143
144
cheats_noResourceExtractorDronesDamage: `Sin daño a los drones extractores de recursos`,
@@ -138,6 +138,7 @@ dict = {
138
138
cheats_noArgonCrystalDecay: `[UNTRANSLATED] No Argon Crystal Decay`,
139
139
cheats_noMasteryRankUpCooldown: `[UNTRANSLATED] No Mastery Rank Up Cooldown`,
140
140
cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
141
cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
141
142
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
142
143
cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`,
143
144
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
@@ -138,6 +138,7 @@ dict = {
138
138
cheats_noArgonCrystalDecay: `Без распада аргоновых кристаллов`,
139
139
cheats_noMasteryRankUpCooldown: `Повышение ранга мастерства без кулдауна`,
140
140
cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`,
141
cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
141
142
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
142
143
cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`,
143
144
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
@@ -138,6 +138,7 @@ dict = {
138
138
cheats_noArgonCrystalDecay: `[UNTRANSLATED] No Argon Crystal Decay`,
139
139
cheats_noMasteryRankUpCooldown: `[UNTRANSLATED] No Mastery Rank Up Cooldown`,
140
140
cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
141
cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
141
142
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
142
143
cheats_instantResourceExtractorDrones: `即时资源采集无人机`,
143
144
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,