Compare commits
1 Commits
main
...
feat-gain-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
676299923f |
2
package-lock.json
generated
2
package-lock.json
generated
@ -9,7 +9,6 @@
|
||||
"version": "0.1.0",
|
||||
"license": "GNU",
|
||||
"dependencies": {
|
||||
"body-parser": "^2.2.0",
|
||||
"chokidar": "^4.0.3",
|
||||
"crc-32": "^1.2.2",
|
||||
"express": "^5",
|
||||
@ -38,7 +37,6 @@
|
||||
"node": ">=20.18.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@types/body-parser": "^1.19.6",
|
||||
"@types/express": "^5",
|
||||
"@types/morgan": "^1.9.9",
|
||||
"@types/websocket": "^1.0.10",
|
||||
|
||||
@ -27,7 +27,6 @@
|
||||
"license": "GNU",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"body-parser": "^2.2.0",
|
||||
"chokidar": "^4.0.3",
|
||||
"crc-32": "^1.2.2",
|
||||
"express": "^5",
|
||||
@ -43,7 +42,6 @@
|
||||
"ws": "^8.18.2"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@types/body-parser": "^1.19.6",
|
||||
"@types/express": "^5",
|
||||
"@types/morgan": "^1.9.9",
|
||||
"@types/websocket": "^1.0.10",
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { fromDbOid, toMongoDate, version_compare } from "../../helpers/inventoryHelpers.ts";
|
||||
import { fromDbOid, version_compare } from "../../helpers/inventoryHelpers.ts";
|
||||
import type { IKnifeResponse } from "../../helpers/nemesisHelpers.ts";
|
||||
import {
|
||||
antivirusMods,
|
||||
@ -310,15 +310,6 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
res.json({
|
||||
target: inventory.toJSON().Nemesis
|
||||
});
|
||||
} else if ((req.query.mode as string) == "t") {
|
||||
const inventory = await getInventory(account._id.toString(), "LastNemesisAllySpawnTime");
|
||||
//const body = getJSONfromString<IUpdateAllySpawnTimeRequest>(String(req.body));
|
||||
const now = new Date(Math.trunc(Date.now() / 1000) * 1000);
|
||||
inventory.LastNemesisAllySpawnTime = now;
|
||||
await inventory.save();
|
||||
res.json({
|
||||
NewTime: toMongoDate(now)
|
||||
} satisfies IUpdateAllySpawnTimeResponse);
|
||||
} else if ((req.query.mode as string) == "d") {
|
||||
const inventory = await getInventory(account._id.toString(), "NemesisHistory");
|
||||
const body = getJSONfromString<IRelinquishAdversariesRequest>(String(req.body));
|
||||
@ -471,11 +462,3 @@ const consumeModCharge = (
|
||||
interface IRelinquishAdversariesRequest {
|
||||
nemesisFingerprints: (bigint | number)[];
|
||||
}
|
||||
|
||||
// interface IUpdateAllySpawnTimeRequest {
|
||||
// LastSpawnTime: IMongoDate;
|
||||
// }
|
||||
|
||||
interface IUpdateAllySpawnTimeResponse {
|
||||
NewTime: IMongoDate;
|
||||
}
|
||||
|
||||
@ -1462,6 +1462,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
flawlessRelicsAlwaysGiveSilverReward: Boolean,
|
||||
radiantRelicsAlwaysGiveGoldReward: Boolean,
|
||||
disableDailyTribute: Boolean,
|
||||
gainNoNegativeSyndicateStanding: Boolean,
|
||||
nemesisHenchmenKillsMultiplierGrineer: Number,
|
||||
nemesisHenchmenKillsMultiplierCorpus: Number,
|
||||
nemesisAntivirusGainMultiplier: Number,
|
||||
@ -1743,7 +1744,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
NemesisAbandonedRewards: { type: [String], default: [] },
|
||||
Nemesis: nemesisSchema,
|
||||
NemesisHistory: { type: [nemesisSchema], default: undefined },
|
||||
LastNemesisAllySpawnTime: { type: Date, default: undefined },
|
||||
//LastNemesisAllySpawnTime: Schema.Types.Mixed,
|
||||
|
||||
//TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social)
|
||||
Settings: settingsSchema,
|
||||
@ -1864,9 +1865,6 @@ inventorySchema.set("toJSON", {
|
||||
if (inventoryDatabase.BlessingCooldown) {
|
||||
inventoryResponse.BlessingCooldown = toMongoDate(inventoryDatabase.BlessingCooldown);
|
||||
}
|
||||
if (inventoryDatabase.LastNemesisAllySpawnTime) {
|
||||
inventoryResponse.LastNemesisAllySpawnTime = toMongoDate(inventoryDatabase.LastNemesisAllySpawnTime);
|
||||
}
|
||||
if (inventoryDatabase.NextRefill) {
|
||||
inventoryResponse.NextRefill = toMongoDate(inventoryDatabase.NextRefill);
|
||||
}
|
||||
|
||||
@ -73,7 +73,6 @@ import type {
|
||||
ITailorShop,
|
||||
ITailorShopDatabase
|
||||
} from "../types/personalRoomsTypes.ts";
|
||||
import { fromMongoDate } from "../helpers/inventoryHelpers.ts";
|
||||
|
||||
const convertDate = (value: IMongoDate): Date => {
|
||||
return new Date(parseInt(value.$date.$numberLong));
|
||||
@ -327,15 +326,7 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
|
||||
"GiftsRemaining",
|
||||
"ChallengesFixVersion",
|
||||
"Founder",
|
||||
"Guide",
|
||||
"BountyScore",
|
||||
"EntratiVaultCountLastPeriod",
|
||||
"EntratiLabConquestUnlocked",
|
||||
"EntratiLabConquestHardModeStatus",
|
||||
"EntratiLabConquestCacheScoreMission",
|
||||
"EchoesHexConquestUnlocked",
|
||||
"EchoesHexConquestHardModeStatus",
|
||||
"EchoesHexConquestCacheScoreMission"
|
||||
"Guide"
|
||||
] as const) {
|
||||
if (client[key] !== undefined) {
|
||||
db[key] = client[key];
|
||||
@ -363,28 +354,12 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
|
||||
"NodeIntrosCompleted",
|
||||
"DeathMarks",
|
||||
"Wishlist",
|
||||
"NemesisAbandonedRewards",
|
||||
"EntratiLabConquestActiveFrameVariants",
|
||||
"EchoesHexConquestActiveFrameVariants",
|
||||
"EchoesHexConquestActiveStickers"
|
||||
"NemesisAbandonedRewards"
|
||||
] as const) {
|
||||
if (client[key] !== undefined) {
|
||||
db[key] = client[key];
|
||||
}
|
||||
}
|
||||
// IMongoDate
|
||||
for (const key of [
|
||||
"Created",
|
||||
"TrainingDate",
|
||||
"BlessingCooldown",
|
||||
"LastNemesisAllySpawnTime",
|
||||
"NextRefill",
|
||||
"EntratiVaultCountResetDate"
|
||||
] as const) {
|
||||
if (client[key] !== undefined) {
|
||||
db[key] = fromMongoDate(client[key]);
|
||||
}
|
||||
}
|
||||
// IRewardAtten[]
|
||||
for (const key of ["SortieRewardAttenuation", "SpecialItemRewardAttenuation"] as const) {
|
||||
if (client[key] !== undefined) {
|
||||
|
||||
@ -1489,13 +1489,7 @@ export const addSkin = (
|
||||
inventoryChanges: IInventoryChanges = {}
|
||||
): IInventoryChanges => {
|
||||
if (inventory.WeaponSkins.some(x => x.ItemType == typeName)) {
|
||||
if (typeName == "/Lotus/Upgrades/Skins/Clan/BountyHunterBadgeItem") {
|
||||
logger.debug(`account already owns stratos emblem, increasing bounty score instead`);
|
||||
inventory.BountyScore ??= 0;
|
||||
inventory.BountyScore += 1;
|
||||
} else {
|
||||
logger.debug(`refusing to add WeaponSkin ${typeName} because account already owns it`);
|
||||
}
|
||||
} else {
|
||||
const index =
|
||||
inventory.WeaponSkins.push({
|
||||
@ -2187,6 +2181,10 @@ export const updateSyndicate = (
|
||||
): void => {
|
||||
syndicateUpdate?.forEach(affiliation => {
|
||||
const syndicate = inventory.Affiliations.find(x => x.Tag == affiliation.Tag);
|
||||
if (inventory.gainNoNegativeSyndicateStanding) {
|
||||
affiliation.Standing = Math.max(0, affiliation.Standing);
|
||||
affiliation.Title = Math.max(0, affiliation.Title);
|
||||
}
|
||||
if (syndicate !== undefined) {
|
||||
syndicate.Standing += affiliation.Standing;
|
||||
syndicate.Title = syndicate.Title === undefined ? affiliation.Title : syndicate.Title + affiliation.Title;
|
||||
|
||||
@ -55,6 +55,7 @@ export interface IAccountCheats {
|
||||
flawlessRelicsAlwaysGiveSilverReward?: boolean;
|
||||
radiantRelicsAlwaysGiveGoldReward?: boolean;
|
||||
disableDailyTribute?: boolean;
|
||||
gainNoNegativeSyndicateStanding?: boolean;
|
||||
nemesisHenchmenKillsMultiplierGrineer?: number;
|
||||
nemesisHenchmenKillsMultiplierCorpus?: number;
|
||||
nemesisAntivirusGainMultiplier?: number;
|
||||
@ -92,7 +93,6 @@ export interface IInventoryDatabase
|
||||
| "NextRefill"
|
||||
| "Nemesis"
|
||||
| "NemesisHistory"
|
||||
| "LastNemesisAllySpawnTime"
|
||||
| "EntratiVaultCountResetDate"
|
||||
| "BrandedSuits"
|
||||
| "LockedWeaponGroup"
|
||||
@ -137,7 +137,6 @@ export interface IInventoryDatabase
|
||||
NextRefill?: Date;
|
||||
Nemesis?: INemesisDatabase;
|
||||
NemesisHistory?: INemesisBaseDatabase[];
|
||||
LastNemesisAllySpawnTime?: Date;
|
||||
EntratiVaultCountResetDate?: Date;
|
||||
BrandedSuits?: Types.ObjectId[];
|
||||
LockedWeaponGroup?: ILockedWeaponGroupDatabase;
|
||||
@ -362,7 +361,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
|
||||
ThemeStyle: string;
|
||||
ThemeBackground: string;
|
||||
ThemeSounds: string;
|
||||
BountyScore?: number;
|
||||
BountyScore: number;
|
||||
//ChallengeInstanceStates: IChallengeInstanceState[];
|
||||
LoginMilestoneRewards: string[];
|
||||
RecentVendorPurchases?: IRecentVendorPurchaseClient[];
|
||||
@ -374,7 +373,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
|
||||
//InvasionChainProgress: IInvasionChainProgress[];
|
||||
Nemesis?: INemesisClient;
|
||||
NemesisHistory?: INemesisBaseClient[];
|
||||
LastNemesisAllySpawnTime?: IMongoDate;
|
||||
//LastNemesisAllySpawnTime?: IMongoDate;
|
||||
Settings?: ISettings;
|
||||
PersonalTechProjects: IPersonalTechProjectClient[];
|
||||
PlayerSkills: IPlayerSkills;
|
||||
|
||||
@ -1015,6 +1015,10 @@
|
||||
<input class="form-check-input" type="checkbox" id="finishInvasionsInOneMission" />
|
||||
<label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="gainNoNegativeSyndicateStanding" />
|
||||
<label class="form-check-label" for="gainNoNegativeSyndicateStanding" data-loc="cheats_gainNoNegativeSyndicateStanding"></label>
|
||||
</div>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisHenchmenKillsMultiplierGrineer" data-loc="cheats_nemesisHenchmenKillsMultiplierGrineer"></label>
|
||||
<div class="input-group">
|
||||
|
||||
@ -2844,8 +2844,8 @@ function removeCountItems(uniqueName, count) {
|
||||
|
||||
function addItemByItemType() {
|
||||
const ItemType = document.getElementById("typeName-type").value;
|
||||
// Must start with "/Lotus/", contain only letters A–Z, digits 0–9, no "//", and not end with "/"
|
||||
if (!ItemType || !/^\/Lotus\/(?:[A-Za-z0-9]+(?:\/[A-Za-z0-9]+)*)$/.test(ItemType)) {
|
||||
// Must start with "/Lotus/", contain only A–Z letters, no "//", and not end with "/"
|
||||
if (!ItemType || !/^\/Lotus\/(?:[A-Za-z]+(?:\/[A-Za-z]+)*)$/.test(ItemType)) {
|
||||
$("#typeName-type").addClass("is-invalid").focus();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -257,6 +257,7 @@ dict = {
|
||||
cheats_changeButton: `Ändern`,
|
||||
cheats_markAllAsRead: `Posteingang als gelesen markieren`,
|
||||
cheats_finishInvasionsInOneMission: `[UNTRANSLATED] Finish Invasions in One Mission`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
|
||||
@ -256,6 +256,7 @@ dict = {
|
||||
cheats_changeButton: `Change`,
|
||||
cheats_markAllAsRead: `Mark Inbox As Read`,
|
||||
cheats_finishInvasionsInOneMission: `Finish Invasions in One Mission`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `Antivirus Progress Multiplier`,
|
||||
|
||||
@ -257,6 +257,7 @@ dict = {
|
||||
cheats_changeButton: `Cambiar`,
|
||||
cheats_markAllAsRead: `Marcar bandeja de entrada como leída`,
|
||||
cheats_finishInvasionsInOneMission: `Finaliza Invasión en una mision`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
|
||||
@ -257,6 +257,7 @@ dict = {
|
||||
cheats_changeButton: `Changer`,
|
||||
cheats_markAllAsRead: `Marquer la boîte de réception comme lue`,
|
||||
cheats_finishInvasionsInOneMission: `Compléter les invasions en une mission.`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
|
||||
@ -257,6 +257,7 @@ dict = {
|
||||
cheats_changeButton: `Изменить`,
|
||||
cheats_markAllAsRead: `Пометить все входящие как прочитанные`,
|
||||
cheats_finishInvasionsInOneMission: `Завершать вторжение за одну миссию`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `Мультипликатор прогресса ярости (Гринир)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `Мультипликатор прогресса ярости (Корпус)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `Мультипликатор прогресса антивируса`,
|
||||
|
||||
@ -257,6 +257,7 @@ dict = {
|
||||
cheats_changeButton: `Змінити`,
|
||||
cheats_markAllAsRead: `Помітити всі вхідні як прочитані`,
|
||||
cheats_finishInvasionsInOneMission: `Завершувати вторгнення за одну місію`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `Множник прогресу люті (Ґрінери)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `Множник прогресу люті (Корпус)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `Мультиплікатор прогресу антивіруса`,
|
||||
|
||||
@ -257,6 +257,7 @@ dict = {
|
||||
cheats_changeButton: `更改`,
|
||||
cheats_markAllAsRead: `收件箱全部标记为已读`,
|
||||
cheats_finishInvasionsInOneMission: `一场任务完成整场入侵`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `集团声望不倒扣不掉段`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `玄骸怒气倍率 (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `玄骸怒气倍率 (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `杀毒进度倍率 (科腐者)`,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user