XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

10 个文件 +29 -14
Modified config.json.example +1 -0
@@ -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,
Modified src/services/configService.ts +1 -0
@@ -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;
Modified src/services/missionInventoryUpdateService.ts +17 -14
@@ -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": {
Modified static/webui/index.html +4 -0
@@ -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>
Modified static/webui/translations/de.js +1 -0
@@ -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`,
Modified static/webui/translations/en.js +1 -0
@@ -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`,
Modified static/webui/translations/es.js +1 -0
@@ -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`,
Modified static/webui/translations/fr.js +1 -0
@@ -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`,
Modified static/webui/translations/ru.js +1 -0
@@ -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`,
Modified static/webui/translations/zh.js +1 -0
@@ -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`,