diff --git a/config-vanilla.json b/config-vanilla.json index 2d96af5f..d13eb84e 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -11,7 +11,6 @@ "administratorNames": [], "autoCreateAccount": true, "skipTutorial": false, - "skipAllDialogue": false, "unlockAllScans": false, "unlockAllShipFeatures": false, "unlockAllShipDecorations": false, @@ -27,9 +26,7 @@ "noDojoResearchCosts": false, "noDojoResearchTime": false, "fastClanAscension": false, - "missionsCanGiveAllRelics": false, "unlockAllSimarisResearchEntries": false, - "disableDailyTribute": false, "spoofMasteryRank": -1, "relicRewardItemCountMultiplier": 1, "nightwaveStandingMultiplier": 1, diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index fb935c38..5a508f04 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -306,7 +306,7 @@ export const getInventoryResponse = async ( inventoryResponse.PrimeTokens = 999999999; } - if (config.skipAllDialogue) { + if (inventory.skipAllDialogue) { inventoryResponse.TauntHistory = [ { node: "TreasureTutorial", diff --git a/src/controllers/api/loginRewardsController.ts b/src/controllers/api/loginRewardsController.ts index 3145a462..d412a5ae 100644 --- a/src/controllers/api/loginRewardsController.ts +++ b/src/controllers/api/loginRewardsController.ts @@ -8,7 +8,6 @@ import { setAccountGotLoginRewardToday } from "../../services/loginRewardService.ts"; import { getInventory } from "../../services/inventoryService.ts"; -import { config } from "../../services/configService.ts"; import { sendWsBroadcastTo } from "../../services/wsService.ts"; export const loginRewardsController: RequestHandler = async (req, res) => { @@ -17,41 +16,42 @@ export const loginRewardsController: RequestHandler = async (req, res) => { const isMilestoneDay = account.LoginDays == 5 || account.LoginDays % 50 == 0; const nextMilestoneDay = account.LoginDays < 5 ? 5 : (Math.trunc(account.LoginDays / 50) + 1) * 50; - if (today == account.LastLoginRewardDate || config.disableDailyTribute) { - res.json({ - DailyTributeInfo: { - IsMilestoneDay: isMilestoneDay, - IsChooseRewardSet: isLoginRewardAChoice(account), - LoginDays: account.LoginDays, - NextMilestoneReward: "", - NextMilestoneDay: nextMilestoneDay - } - } satisfies ILoginRewardsReponse); - return; - } + if (today != account.LastLoginRewardDate) { + const inventory = await getInventory(account._id.toString()); + if (!inventory.disableDailyTribute) { + const randomRewards = getRandomLoginRewards(account, inventory); + const response: ILoginRewardsReponse = { + DailyTributeInfo: { + Rewards: randomRewards, + IsMilestoneDay: isMilestoneDay, + IsChooseRewardSet: randomRewards.length != 1, + LoginDays: account.LoginDays, + NextMilestoneReward: "", + NextMilestoneDay: nextMilestoneDay, + HasChosenReward: false + }, + LastLoginRewardDate: today + }; + if (!isMilestoneDay && randomRewards.length == 1) { + response.DailyTributeInfo.HasChosenReward = true; + response.DailyTributeInfo.ChosenReward = randomRewards[0]; + response.DailyTributeInfo.NewInventory = await claimLoginReward(inventory, randomRewards[0]); + setAccountGotLoginRewardToday(account); + await Promise.all([inventory.save(), account.save()]); - const inventory = await getInventory(account._id.toString()); - const randomRewards = getRandomLoginRewards(account, inventory); - const response: ILoginRewardsReponse = { + sendWsBroadcastTo(account._id.toString(), { update_inventory: true }); + } + res.json(response); + return; + } + } + res.json({ DailyTributeInfo: { - Rewards: randomRewards, IsMilestoneDay: isMilestoneDay, - IsChooseRewardSet: randomRewards.length != 1, + IsChooseRewardSet: isLoginRewardAChoice(account), LoginDays: account.LoginDays, NextMilestoneReward: "", - NextMilestoneDay: nextMilestoneDay, - HasChosenReward: false - }, - LastLoginRewardDate: today - }; - if (!isMilestoneDay && randomRewards.length == 1) { - response.DailyTributeInfo.HasChosenReward = true; - response.DailyTributeInfo.ChosenReward = randomRewards[0]; - response.DailyTributeInfo.NewInventory = await claimLoginReward(inventory, randomRewards[0]); - setAccountGotLoginRewardToday(account); - await Promise.all([inventory.save(), account.save()]); - - sendWsBroadcastTo(account._id.toString(), { update_inventory: true }); - } - res.json(response); + NextMilestoneDay: nextMilestoneDay + } + } satisfies ILoginRewardsReponse); }; diff --git a/src/helpers/relicHelper.ts b/src/helpers/relicHelper.ts index 1fae78e1..964e43e2 100644 --- a/src/helpers/relicHelper.ts +++ b/src/helpers/relicHelper.ts @@ -17,11 +17,11 @@ export const crackRelic = async ( ): Promise => { const relic = ExportRelics[participant.VoidProjection]; let weights = refinementToWeights[relic.quality]; - if (relic.quality == "VPQ_SILVER" && config.exceptionalRelicsAlwaysGiveBronzeReward) { + if (relic.quality == "VPQ_SILVER" && inventory.exceptionalRelicsAlwaysGiveBronzeReward) { weights = { COMMON: 1, UNCOMMON: 0, RARE: 0, LEGENDARY: 0 }; - } else if (relic.quality == "VPQ_GOLD" && config.flawlessRelicsAlwaysGiveSilverReward) { + } else if (relic.quality == "VPQ_GOLD" && inventory.flawlessRelicsAlwaysGiveSilverReward) { weights = { COMMON: 0, UNCOMMON: 1, RARE: 0, LEGENDARY: 0 }; - } else if (relic.quality == "VPQ_PLATINUM" && config.radiantRelicsAlwaysGiveGoldReward) { + } else if (relic.quality == "VPQ_PLATINUM" && inventory.radiantRelicsAlwaysGiveGoldReward) { weights = { COMMON: 0, UNCOMMON: 0, RARE: 1, LEGENDARY: 0 }; } logger.debug(`opening a relic of quality ${relic.quality}; rarity weights are`, weights); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 0a39b701..e18e6207 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1428,6 +1428,7 @@ const inventorySchema = new Schema( accountOwnerId: Schema.Types.ObjectId, // SNS account cheats + skipAllDialogue: Boolean, dontSubtractPurchaseCreditCost: Boolean, dontSubtractPurchasePlatinumCost: Boolean, dontSubtractPurchaseItemCost: Boolean, @@ -1455,6 +1456,11 @@ const inventorySchema = new Schema( claimingBlueprintRefundsIngredients: Boolean, instantResourceExtractorDrones: Boolean, noResourceExtractorDronesDamage: Boolean, + missionsCanGiveAllRelics: Boolean, + exceptionalRelicsAlwaysGiveBronzeReward: Boolean, + flawlessRelicsAlwaysGiveSilverReward: Boolean, + radiantRelicsAlwaysGiveGoldReward: Boolean, + disableDailyTribute: Boolean, SubscribedToEmails: { type: Number, default: 0 }, SubscribedToEmailsPersonalized: { type: Number, default: 0 }, diff --git a/src/services/configService.ts b/src/services/configService.ts index 75953730..a75c5f2c 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -18,7 +18,6 @@ export interface IConfig extends IConfigRemovedOptions { administratorNames?: string[]; autoCreateAccount?: boolean; skipTutorial?: boolean; - skipAllDialogue?: boolean; unlockAllScans?: boolean; unlockAllShipFeatures?: boolean; unlockAllShipDecorations?: boolean; @@ -35,12 +34,7 @@ export interface IConfig extends IConfigRemovedOptions { noDojoResearchCosts?: boolean; noDojoResearchTime?: boolean; fastClanAscension?: boolean; - missionsCanGiveAllRelics?: boolean; - exceptionalRelicsAlwaysGiveBronzeReward?: boolean; - flawlessRelicsAlwaysGiveSilverReward?: boolean; - radiantRelicsAlwaysGiveGoldReward?: boolean; unlockAllSimarisResearchEntries?: boolean; - disableDailyTribute?: boolean; spoofMasteryRank?: number; relicRewardItemCountMultiplier?: number; nightwaveStandingMultiplier?: number; @@ -94,6 +88,7 @@ export interface IConfig extends IConfigRemovedOptions { } export const configRemovedOptionsKeys = [ + "skipAllDialogue", "infiniteCredits", "infinitePlatinum", "infiniteEndo", @@ -122,7 +117,12 @@ export const configRemovedOptionsKeys = [ "instantResourceExtractorDrones", "noResourceExtractorDronesDamage", "baroAlwaysAvailable", - "baroFullyStocked" + "baroFullyStocked", + "missionsCanGiveAllRelics", + "exceptionalRelicsAlwaysGiveBronzeReward", + "flawlessRelicsAlwaysGiveSilverReward", + "radiantRelicsAlwaysGiveGoldReward", + "disableDailyTribute" ] as const; type IConfigRemovedOptions = { diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 0ab878b2..9a1df3cd 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -2197,7 +2197,7 @@ function getRandomMissionDrops( } } - if (config.missionsCanGiveAllRelics) { + if (inventory.missionsCanGiveAllRelics) { for (const drop of drops) { const itemType = fromStoreItem(drop.StoreItem); if (itemType in ExportRelics) { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 89f493f4..38ac61f6 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -21,6 +21,7 @@ export type InventoryDatabaseEquipment = { // Fields specific to SNS export interface IAccountCheats { + skipAllDialogue?: boolean; dontSubtractPurchaseCreditCost?: boolean; dontSubtractPurchasePlatinumCost?: boolean; dontSubtractPurchaseItemCost?: boolean; @@ -48,6 +49,11 @@ export interface IAccountCheats { claimingBlueprintRefundsIngredients?: boolean; instantResourceExtractorDrones?: boolean; noResourceExtractorDronesDamage?: boolean; + missionsCanGiveAllRelics?: boolean; + exceptionalRelicsAlwaysGiveBronzeReward?: boolean; + flawlessRelicsAlwaysGiveSilverReward?: boolean; + radiantRelicsAlwaysGiveGoldReward?: boolean; + disableDailyTribute?: boolean; } export interface IInventoryDatabase diff --git a/static/webui/index.html b/static/webui/index.html index 543ffaf9..ef74222b 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -647,6 +647,10 @@
+
+ + +
@@ -754,6 +758,30 @@
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
@@ -786,10 +814,6 @@
-
- - -
@@ -854,30 +878,6 @@
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -