Compare commits
34 Commits
38d1e31ad8
...
ff3be4ecec
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff3be4ecec | ||
|
|
c45a019c64 | ||
|
|
a7a7e365d3 | ||
|
|
127445902a | ||
|
|
f00ca6ac56 | ||
|
|
9c5b1de8bd | ||
|
|
8a8b8e03fc | ||
|
|
b46849206a | ||
|
|
12541dd87f | ||
|
|
8b9aed2d67 | ||
|
|
e960e7788f | ||
|
|
e9b985e9be | ||
|
|
7e13bcf8a9 | ||
|
|
16d6af1420 | ||
|
|
5dc22e0219 | ||
|
|
73f856554e | ||
|
|
00731bd700 | ||
|
|
dacf082013 | ||
|
|
38f192ed84 | ||
|
|
ab802025e4 | ||
|
|
8233cf91a2 | ||
|
|
8aaaecf8ed | ||
|
|
d69fd5d83f | ||
|
|
48790be49b | ||
|
|
12db09ade1 | ||
|
|
3944e551c8 | ||
|
|
478b6a22f9 | ||
|
|
c614e33f39 | ||
|
|
54cb82a17c | ||
|
|
03ba05313b | ||
|
|
ff625ab8c0 | ||
|
|
62c48c4e76 | ||
|
|
091e7c00b9 | ||
|
|
4d03246e16 |
@ -4,7 +4,7 @@ echo Updating SpaceNinjaServer...
|
||||
git fetch --prune
|
||||
if %errorlevel% == 0 (
|
||||
git stash
|
||||
git checkout -f origin/main
|
||||
git checkout -f "origin/自用"
|
||||
|
||||
if exist static\data\0\ (
|
||||
echo Updating stripped assets...
|
||||
|
||||
@ -4,7 +4,7 @@ echo "Updating SpaceNinjaServer..."
|
||||
git fetch --prune
|
||||
if [ $? -eq 0 ]; then
|
||||
git stash
|
||||
git checkout -f origin/main
|
||||
git checkout -f origin/自用
|
||||
|
||||
if [ -d "static/data/0/" ]; then
|
||||
echo "Updating stripped assets..."
|
||||
|
||||
@ -47,6 +47,9 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
const destFingerprint = JSON.parse(destWeapon.UpgradeFingerprint!) as IInnateDamageFingerprint;
|
||||
const sourceFingerprint = JSON.parse(sourceWeapon.UpgradeFingerprint!) as IInnateDamageFingerprint;
|
||||
|
||||
const fusionMultiplier = (await getInventory(account._id.toString(), "nemesisWeaponFusionMultiplier"))
|
||||
.nemesisWeaponFusionMultiplier;
|
||||
|
||||
// Update destination damage type if desired
|
||||
if (body.UseSourceDmgType) {
|
||||
destFingerprint.buffs[0].Tag = sourceFingerprint.buffs[0].Tag;
|
||||
@ -55,7 +58,7 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
// Upgrade destination damage value
|
||||
const destDamage = 0.25 + (destFingerprint.buffs[0].Value / 0x3fffffff) * (0.6 - 0.25);
|
||||
const sourceDamage = 0.25 + (sourceFingerprint.buffs[0].Value / 0x3fffffff) * (0.6 - 0.25);
|
||||
let newDamage = Math.max(destDamage, sourceDamage) * 1.1;
|
||||
let newDamage = Math.max(destDamage, sourceDamage) * 1.1 * (fusionMultiplier ?? 1);
|
||||
if (newDamage >= 0.5794998) {
|
||||
newDamage = 0.6;
|
||||
}
|
||||
@ -79,6 +82,8 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
const inventory = await getInventory(account._id.toString(), "Nemesis");
|
||||
const body = getJSONfromString<INemesisPrespawnCheckRequest>(String(req.body));
|
||||
const passcode = getNemesisPasscode(inventory.Nemesis!);
|
||||
const alwaysCorrectCheat =
|
||||
(await getInventory(account._id.toString(), "nemesisAlwaysCorrect")).nemesisAlwaysCorrect ?? false;
|
||||
let guessResult = 0;
|
||||
if (inventory.Nemesis!.Faction == "FC_INFESTATION") {
|
||||
for (let i = 0; i != 3; ++i) {
|
||||
@ -89,7 +94,7 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i != 3; ++i) {
|
||||
if (body.guess[i] == passcode[i] || body.guess[i] == GUESS_WILDCARD) {
|
||||
if (body.guess[i] == passcode[i] || body.guess[i] == GUESS_WILDCARD || alwaysCorrectCheat) {
|
||||
++guessResult;
|
||||
}
|
||||
}
|
||||
@ -101,9 +106,16 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
"Nemesis LoadOutPresets CurrentLoadOutIds DataKnives Upgrades RawUpgrades"
|
||||
);
|
||||
const body = getJSONfromString<INemesisRequiemRequest>(String(req.body));
|
||||
const alwaysCorrectCheat =
|
||||
(await getInventory(account._id.toString(), "nemesisAlwaysCorrect")).nemesisAlwaysCorrect ?? false;
|
||||
if (inventory.Nemesis!.Faction == "FC_INFESTATION") {
|
||||
const guess: number[] = [body.guess & 0xf, (body.guess >> 4) & 0xf, (body.guess >> 8) & 0xf];
|
||||
const passcode = getNemesisPasscode(inventory.Nemesis!)[0];
|
||||
|
||||
if (alwaysCorrectCheat) {
|
||||
guess[0] = guess[1] = guess[2] = passcode;
|
||||
}
|
||||
|
||||
const result1 = passcode == guess[0] ? GUESS_CORRECT : GUESS_INCORRECT;
|
||||
const result2 = passcode == guess[1] ? GUESS_CORRECT : GUESS_INCORRECT;
|
||||
const result3 = passcode == guess[2] ? GUESS_CORRECT : GUESS_INCORRECT;
|
||||
@ -149,7 +161,10 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
break;
|
||||
}
|
||||
}
|
||||
inventory.Nemesis!.HenchmenKilled += antivirusGain;
|
||||
const antivirusGainMultiplier = (
|
||||
await getInventory(account._id.toString(), "nemesisAntivirusGainMultiplier")
|
||||
).nemesisAntivirusGainMultiplier;
|
||||
inventory.Nemesis!.HenchmenKilled += antivirusGain * (antivirusGainMultiplier ?? 1);
|
||||
if (inventory.Nemesis!.HenchmenKilled >= 100) {
|
||||
inventory.Nemesis!.HenchmenKilled = 100;
|
||||
|
||||
@ -195,7 +210,9 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
|
||||
// Evaluate guess
|
||||
const correct =
|
||||
body.guess == GUESS_WILDCARD || getNemesisPasscode(inventory.Nemesis!)[body.position] == body.guess;
|
||||
body.guess == GUESS_WILDCARD ||
|
||||
getNemesisPasscode(inventory.Nemesis!)[body.position] == body.guess ||
|
||||
alwaysCorrectCheat;
|
||||
|
||||
// Update entry
|
||||
const guess = decodeNemesisGuess(
|
||||
|
||||
@ -3,12 +3,19 @@ import { getAccountIdForRequest } from "../../services/loginService.ts";
|
||||
import { sendWsBroadcastTo } from "../../services/wsService.ts";
|
||||
import type { IAccountCheats } from "../../types/inventoryTypes/inventoryTypes.ts";
|
||||
import type { RequestHandler } from "express";
|
||||
import { logger } from "../../utils/logger.ts";
|
||||
|
||||
export const setAccountCheatController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const payload = req.body as ISetAccountCheatRequest;
|
||||
const inventory = await getInventory(accountId, payload.key);
|
||||
inventory[payload.key] = payload.value;
|
||||
|
||||
if (payload.value == undefined) {
|
||||
logger.warn(`[setAccountCheatController] set ${payload.key} to ${payload.value}`);
|
||||
return
|
||||
}
|
||||
|
||||
inventory[payload.key] = payload.value as never;
|
||||
await inventory.save();
|
||||
res.end();
|
||||
if (["infiniteCredits", "infinitePlatinum", "infiniteEndo", "infiniteRegalAya"].indexOf(payload.key) != -1) {
|
||||
@ -18,5 +25,5 @@ export const setAccountCheatController: RequestHandler = async (req, res) => {
|
||||
|
||||
interface ISetAccountCheatRequest {
|
||||
key: keyof IAccountCheats;
|
||||
value: boolean;
|
||||
value: IAccountCheats[keyof IAccountCheats];
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ export const crackRelic = async (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
participant: IVoidTearParticipantInfo,
|
||||
inventoryChanges: IInventoryChanges = {}
|
||||
): Promise<IRngResult> => {
|
||||
): Promise<IRngResult[]> => {
|
||||
const relic = ExportRelics[participant.VoidProjection];
|
||||
let weights = refinementToWeights[relic.quality];
|
||||
if (relic.quality == "VPQ_SILVER" && inventory.exceptionalRelicsAlwaysGiveBronzeReward) {
|
||||
@ -38,6 +38,28 @@ export const crackRelic = async (
|
||||
logger.debug(`relic rolled`, reward);
|
||||
participant.Reward = reward.type;
|
||||
|
||||
const allRewards: IRngResult[] = [reward];
|
||||
if (inventory.extraRelicRewards !== undefined && inventory.extraRelicRewards >= 1) {
|
||||
for (let i = 0; i < inventory.extraRelicRewards; i++) {
|
||||
logger.debug(`adding ${inventory.extraRelicRewards} extra relic rewards, now is ${i}`);
|
||||
let extraReward = getRandomWeightedReward(
|
||||
ExportRewards[relic.rewardManifest][0] as { type: string; itemCount: number; rarity: TRarity }[],
|
||||
weights
|
||||
)!;
|
||||
if (
|
||||
config.relicRewardItemCountMultiplier !== undefined &&
|
||||
(config.relicRewardItemCountMultiplier ?? 1) != 1
|
||||
) {
|
||||
extraReward = {
|
||||
...extraReward,
|
||||
itemCount: extraReward.itemCount * config.relicRewardItemCountMultiplier
|
||||
};
|
||||
}
|
||||
logger.debug(`extra relic rolled`, extraReward);
|
||||
allRewards.push(extraReward);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove relic
|
||||
const miscItemChanges = [
|
||||
{
|
||||
@ -49,12 +71,36 @@ export const crackRelic = async (
|
||||
combineInventoryChanges(inventoryChanges, { MiscItems: miscItemChanges });
|
||||
|
||||
// Give reward
|
||||
combineInventoryChanges(
|
||||
inventoryChanges,
|
||||
(await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
|
||||
);
|
||||
for (const reward of allRewards as (IRngResult & { rarity: string })[]) {
|
||||
combineInventoryChanges(
|
||||
inventoryChanges,
|
||||
(await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
|
||||
);
|
||||
}
|
||||
|
||||
return reward;
|
||||
if (inventory.crackRelicForPlatinum) {
|
||||
let platinumReward = 0;
|
||||
for (const reward of allRewards as (IRngResult & { rarity: string })[]) {
|
||||
switch (reward.rarity) {
|
||||
case "COMMON":
|
||||
platinumReward = inventory.relicPlatinumCommon ?? 2;
|
||||
break;
|
||||
case "UNCOMMON":
|
||||
platinumReward = inventory.relicPlatinumUncommon ?? 5;
|
||||
break;
|
||||
case "RARE":
|
||||
platinumReward = inventory.relicPlatinumRare ?? 12;
|
||||
break;
|
||||
case "LEGENDARY":
|
||||
logger.warn(`got a legendary reward for a relic!`);
|
||||
break;
|
||||
}
|
||||
logger.debug(`adding ${platinumReward} platinum to inventory for a ${reward.rarity} reward`);
|
||||
inventory.PremiumCredits += platinumReward;
|
||||
}
|
||||
}
|
||||
|
||||
return allRewards;
|
||||
};
|
||||
|
||||
const refinementToWeights = {
|
||||
|
||||
@ -1462,6 +1462,24 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
flawlessRelicsAlwaysGiveSilverReward: Boolean,
|
||||
radiantRelicsAlwaysGiveGoldReward: Boolean,
|
||||
disableDailyTribute: Boolean,
|
||||
gainNoNegativeSyndicateStanding: Boolean,
|
||||
nemesisAlwaysCorrect: Boolean,
|
||||
nemesisHenchmenKillsMultiplierGrineer: Number,
|
||||
nemesisHenchmenKillsMultiplierCorpus: Number,
|
||||
nemesisAntivirusGainMultiplier: Number,
|
||||
nemesisHintProgressMultiplierGrineer: Number,
|
||||
nemesisHintProgressMultiplierCorpus: Number,
|
||||
nemesisWeaponFusionMultiplier: Number,
|
||||
nemesisExtraWeapon: Number,
|
||||
extraMissionRewards: Number,
|
||||
playerSkillGainsMultiplierSpace: Number,
|
||||
playerSkillGainsMultiplierDrifter: Number,
|
||||
extraRelicRewards: Number,
|
||||
crackRelicForPlatinum: Boolean,
|
||||
relicPlatinumCommon: Number,
|
||||
relicPlatinumUncommon: Number,
|
||||
relicPlatinumRare: Number,
|
||||
extraStrippedItemRewards: Number,
|
||||
|
||||
SubscribedToEmails: { type: Number, default: 0 },
|
||||
SubscribedToEmailsPersonalized: { type: Number, default: 0 },
|
||||
|
||||
@ -2181,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;
|
||||
|
||||
@ -210,10 +210,29 @@ export const addMissionInventoryUpdates = async (
|
||||
inventory.NemesisAbandonedRewards = inventoryUpdates.RewardInfo.NemesisAbandonedRewards;
|
||||
}
|
||||
if (inventoryUpdates.RewardInfo.NemesisHenchmenKills && inventory.Nemesis) {
|
||||
inventory.Nemesis.HenchmenKilled += inventoryUpdates.RewardInfo.NemesisHenchmenKills;
|
||||
let HenchmenKilledMultiplier = 1;
|
||||
switch (inventory.Nemesis.Faction) {
|
||||
case "FC_GRINEER":
|
||||
HenchmenKilledMultiplier = inventory.nemesisHenchmenKillsMultiplierGrineer ?? 1;
|
||||
break;
|
||||
case "FC_CORPUS":
|
||||
HenchmenKilledMultiplier = inventory.nemesisHenchmenKillsMultiplierCorpus ?? 1;
|
||||
break;
|
||||
}
|
||||
inventory.Nemesis.HenchmenKilled +=
|
||||
inventoryUpdates.RewardInfo.NemesisHenchmenKills * HenchmenKilledMultiplier;
|
||||
}
|
||||
if (inventoryUpdates.RewardInfo.NemesisHintProgress && inventory.Nemesis) {
|
||||
inventory.Nemesis.HintProgress += inventoryUpdates.RewardInfo.NemesisHintProgress;
|
||||
let HintProgressMultiplier = 1;
|
||||
switch (inventory.Nemesis.Faction) {
|
||||
case "FC_GRINEER":
|
||||
HintProgressMultiplier = inventory.nemesisHintProgressMultiplierGrineer ?? 1;
|
||||
break;
|
||||
case "FC_CORPUS":
|
||||
HintProgressMultiplier = inventory.nemesisHintProgressMultiplierCorpus ?? 1;
|
||||
break;
|
||||
}
|
||||
inventory.Nemesis.HintProgress += inventoryUpdates.RewardInfo.NemesisHintProgress * HintProgressMultiplier;
|
||||
if (inventory.Nemesis.Faction != "FC_INFESTATION" && inventory.Nemesis.Hints.length != 3) {
|
||||
const progressNeeded = [35, 60, 100][inventory.Nemesis.Hints.length];
|
||||
if (inventory.Nemesis.HintProgress >= progressNeeded) {
|
||||
@ -356,8 +375,10 @@ export const addMissionInventoryUpdates = async (
|
||||
break;
|
||||
}
|
||||
case "PlayerSkillGains": {
|
||||
inventory.PlayerSkills.LPP_SPACE += value.LPP_SPACE ?? 0;
|
||||
inventory.PlayerSkills.LPP_DRIFTER += value.LPP_DRIFTER ?? 0;
|
||||
inventory.PlayerSkills.LPP_SPACE +=
|
||||
(value.LPP_SPACE ?? 0) * (inventory.playerSkillGainsMultiplierSpace ?? 1);
|
||||
inventory.PlayerSkills.LPP_DRIFTER +=
|
||||
(value.LPP_DRIFTER ?? 0) * (inventory.playerSkillGainsMultiplierDrifter ?? 1);
|
||||
break;
|
||||
}
|
||||
case "CustomMarkers": {
|
||||
@ -819,6 +840,8 @@ export const addMissionInventoryUpdates = async (
|
||||
const att: string[] = [];
|
||||
let countedAtt: ITypeCount[] | undefined;
|
||||
|
||||
const extraWeaponCheat = inventory.nemesisExtraWeapon ?? 0; // 0 means no extra weapon and token
|
||||
|
||||
if (value.killed) {
|
||||
if (
|
||||
value.weaponLoc &&
|
||||
@ -827,6 +850,20 @@ export const addMissionInventoryUpdates = async (
|
||||
const weaponType = manifest.weapons[inventory.Nemesis.WeaponIdx];
|
||||
giveNemesisWeaponRecipe(inventory, weaponType, value.nemesisName, value.weaponLoc, profile);
|
||||
att.push(weaponType);
|
||||
if (extraWeaponCheat >= 1) {
|
||||
for (let i = 0; i < extraWeaponCheat; i++) {
|
||||
const randomIndex = Math.floor(Math.random() * manifest.weapons.length);
|
||||
const randomWeapon = manifest.weapons[randomIndex];
|
||||
giveNemesisWeaponRecipe(
|
||||
inventory,
|
||||
randomWeapon,
|
||||
value.nemesisName,
|
||||
undefined,
|
||||
profile
|
||||
);
|
||||
att.push(randomWeapon);
|
||||
}
|
||||
}
|
||||
}
|
||||
//if (value.petLoc) {
|
||||
if (profile.petHead) {
|
||||
@ -870,7 +907,7 @@ export const addMissionInventoryUpdates = async (
|
||||
countedAtt = [
|
||||
{
|
||||
ItemType: "/Lotus/Types/Items/MiscItems/CodaWeaponBucks",
|
||||
ItemCount: getKillTokenRewardCount(inventory.Nemesis.fp)
|
||||
ItemCount: getKillTokenRewardCount(inventory.Nemesis.fp) * (extraWeaponCheat + 1)
|
||||
}
|
||||
];
|
||||
addMiscItems(inventory, countedAtt);
|
||||
@ -1114,6 +1151,22 @@ export const addMissionRewards = async (
|
||||
firstCompletion
|
||||
);
|
||||
logger.debug("random mission drops:", MissionRewards);
|
||||
|
||||
const extraMissionRewards = inventory.extraMissionRewards ?? 0;
|
||||
if (extraMissionRewards >= 1) {
|
||||
for (let i = 0; i < extraMissionRewards; i++) {
|
||||
logger.debug("generating extra mission rewards with new seed, this will mismatch the mission report.");
|
||||
const extraDrops = getRandomMissionDrops(
|
||||
inventory,
|
||||
{ ...rewardInfo, rewardSeed: generateRewardSeed() },
|
||||
missions,
|
||||
wagerTier,
|
||||
firstCompletion
|
||||
);
|
||||
MissionRewards.push(...extraDrops);
|
||||
}
|
||||
}
|
||||
|
||||
const inventoryChanges: IInventoryChanges = {};
|
||||
let SyndicateXPItemReward;
|
||||
let ConquestCompletedMissionsCount;
|
||||
@ -1304,8 +1357,10 @@ export const addMissionRewards = async (
|
||||
voidTearWave.Participants[0].QualifiesForReward &&
|
||||
!voidTearWave.Participants[0].HaveRewardResponse
|
||||
) {
|
||||
const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
|
||||
MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
|
||||
const rewards = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
|
||||
rewards.forEach(reward => {
|
||||
MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
|
||||
});
|
||||
}
|
||||
|
||||
if (strippedItems) {
|
||||
@ -1315,10 +1370,11 @@ export const addMissionRewards = async (
|
||||
si.DropTable = droptableAliases[si.DropTable];
|
||||
}
|
||||
const droptables = ExportEnemies.droptables[si.DropTable] ?? [];
|
||||
const extraStrippedItemRewards = (inventory.extraStrippedItemRewards ?? 0) + 1;
|
||||
if (si.DROP_MOD) {
|
||||
const modDroptable = droptables.find(x => x.type == "mod");
|
||||
if (modDroptable) {
|
||||
for (let i = 0; i != si.DROP_MOD.length; ++i) {
|
||||
for (let i = 0; i != si.DROP_MOD.length * extraStrippedItemRewards; ++i) {
|
||||
const reward = getRandomReward(modDroptable.items)!;
|
||||
logger.debug(`stripped droptable (mods pool) rolled`, reward);
|
||||
await addItem(inventory, reward.type);
|
||||
@ -1335,7 +1391,7 @@ export const addMissionRewards = async (
|
||||
if (si.DROP_BLUEPRINT) {
|
||||
const blueprintDroptable = droptables.find(x => x.type == "blueprint");
|
||||
if (blueprintDroptable) {
|
||||
for (let i = 0; i != si.DROP_BLUEPRINT.length; ++i) {
|
||||
for (let i = 0; i != si.DROP_BLUEPRINT.length * extraStrippedItemRewards; ++i) {
|
||||
const reward = getRandomReward(blueprintDroptable.items)!;
|
||||
logger.debug(`stripped droptable (blueprints pool) rolled`, reward);
|
||||
await addItem(inventory, reward.type);
|
||||
@ -1353,7 +1409,7 @@ export const addMissionRewards = async (
|
||||
if (si.DROP_MISC_ITEM) {
|
||||
const resourceDroptable = droptables.find(x => x.type == "resource");
|
||||
if (resourceDroptable) {
|
||||
for (let i = 0; i != si.DROP_MISC_ITEM.length; ++i) {
|
||||
for (let i = 0; i != si.DROP_MISC_ITEM.length * extraStrippedItemRewards; ++i) {
|
||||
const reward = getRandomReward(resourceDroptable.items)!;
|
||||
logger.debug(`stripped droptable (resources pool) rolled`, reward);
|
||||
if (Object.keys(await addItem(inventory, reward.type)).length == 0) {
|
||||
@ -1400,7 +1456,9 @@ export const addMissionRewards = async (
|
||||
|
||||
if (inventory.Nemesis.Faction == "FC_INFESTATION") {
|
||||
inventory.Nemesis.MissionCount += 1;
|
||||
inventory.Nemesis.HenchmenKilled = Math.min(inventory.Nemesis.HenchmenKilled + 5, 95); // 5 progress per mission until 95
|
||||
let antivirusGain = 5;
|
||||
antivirusGain *= inventory.nemesisAntivirusGainMultiplier ?? 1;
|
||||
inventory.Nemesis.HenchmenKilled = Math.min(inventory.Nemesis.HenchmenKilled + antivirusGain, 95); // 5 progress per mission until 95
|
||||
|
||||
inventoryChanges.Nemesis.MissionCount ??= 0;
|
||||
inventoryChanges.Nemesis.MissionCount += 1;
|
||||
|
||||
@ -55,6 +55,24 @@ export interface IAccountCheats {
|
||||
flawlessRelicsAlwaysGiveSilverReward?: boolean;
|
||||
radiantRelicsAlwaysGiveGoldReward?: boolean;
|
||||
disableDailyTribute?: boolean;
|
||||
gainNoNegativeSyndicateStanding?: boolean;
|
||||
nemesisAlwaysCorrect?: boolean;
|
||||
nemesisHenchmenKillsMultiplierGrineer?: number;
|
||||
nemesisHenchmenKillsMultiplierCorpus?: number;
|
||||
nemesisAntivirusGainMultiplier?: number;
|
||||
nemesisHintProgressMultiplierGrineer?: number;
|
||||
nemesisHintProgressMultiplierCorpus?: number;
|
||||
nemesisWeaponFusionMultiplier?: number;
|
||||
nemesisExtraWeapon?: number;
|
||||
extraMissionRewards?: number;
|
||||
playerSkillGainsMultiplierSpace?: number;
|
||||
playerSkillGainsMultiplierDrifter?: number;
|
||||
extraRelicRewards?: number;
|
||||
crackRelicForPlatinum?: boolean;
|
||||
relicPlatinumCommon?: number;
|
||||
relicPlatinumUncommon?: number;
|
||||
relicPlatinumRare?: number;
|
||||
extraStrippedItemRewards?: number;
|
||||
}
|
||||
|
||||
export interface IInventoryDatabase
|
||||
|
||||
@ -1018,6 +1018,124 @@
|
||||
<input class="form-check-input" type="checkbox" id="finishInvasionsInOneMission" />
|
||||
<label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
|
||||
</div>
|
||||
<strong><span data-loc="alex_statement"></span></strong>
|
||||
<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>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="nemesisAlwaysCorrect" />
|
||||
<label class="form-check-label" for="nemesisAlwaysCorrect" data-loc="cheats_nemesisAlwaysCorrect"></label>
|
||||
</div>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisHenchmenKillsMultiplierGrineer" data-loc="cheats_nemesisHenchmenKillsMultiplierGrineer"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisHenchmenKillsMultiplierGrineer" type="number" min="-1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisHenchmenKillsMultiplierCorpus" data-loc="cheats_nemesisHenchmenKillsMultiplierCorpus"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisHenchmenKillsMultiplierCorpus" type="number" min="-1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisAntivirusGainMultiplier" data-loc="cheats_nemesisAntivirusGainMultiplier"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisAntivirusGainMultiplier" type="number" min="-1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisHintProgressMultiplierGrineer" data-loc="cheats_nemesisHintProgressMultiplierGrineer"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisHintProgressMultiplierGrineer" type="number" min="-1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisHintProgressMultiplierCorpus" data-loc="cheats_nemesisHintProgressMultiplierCorpus"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisHintProgressMultiplierCorpus" type="number" min="-1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisWeaponFusionMultiplier" data-loc="cheats_nemesisWeaponFusionMultiplier"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisWeaponFusionMultiplier" type="number" min="1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="nemesisExtraWeapon" data-loc="cheats_nemesisExtraWeapon"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="nemesisExtraWeapon" type="number" min="0" max="65535" data-default="0" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="extraMissionRewards" data-loc="cheats_extraMissionRewards"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="extraMissionRewards" type="number" min="0" max="65535" data-default="0" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="playerSkillGainsMultiplierSpace" data-loc="cheats_playerSkillGainsMultiplierSpace"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="playerSkillGainsMultiplierSpace" type="number" min="1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="playerSkillGainsMultiplierDrifter" data-loc="cheats_playerSkillGainsMultiplierDrifter"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="playerSkillGainsMultiplierDrifter" type="number" min="1" max="65535" data-default="1" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="extraRelicRewards" data-loc="cheats_extraRelicRewards"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="extraRelicRewards" type="number" min="0" max="65535" data-default="0" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="crackRelicForPlatinum" />
|
||||
<label class="form-check-label" for="crackRelicForPlatinum" data-loc="cheats_crackRelicForPlatinum"></label>
|
||||
</div>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="relicPlatinumCommon" data-loc="cheats_relicPlatinumCommon"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="relicPlatinumCommon" type="number" min="0" max="65535" data-default="2" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="relicPlatinumUncommon" data-loc="cheats_relicPlatinumUncommon"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="relicPlatinumUncommon" type="number" min="0" max="65535" data-default="5" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="relicPlatinumRare" data-loc="cheats_relicPlatinumRare"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="relicPlatinumRare" type="number" min="0" max="65535" data-default="12" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<form class="form-group mt-2">
|
||||
<label class="form-label" for="extraStrippedItemRewards" data-loc="cheats_extraStrippedItemRewards"></label>
|
||||
<div class="input-group">
|
||||
<input class="form-control" id="extraStrippedItemRewards" type="number" min="0" max="65535" data-default="0" />
|
||||
<button class="btn btn-secondary" type="button" data-loc="cheats_save"></button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="mt-2 mb-2 d-flex flex-wrap gap-2">
|
||||
<button class="btn btn-primary" onclick="debounce(doUnlockAllShipFeatures);" data-loc="cheats_unlockAllShipFeatures"></button>
|
||||
<button class="btn btn-primary" onclick="debounce(unlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
|
||||
|
||||
@ -1986,7 +1986,11 @@ function updateInventory() {
|
||||
}
|
||||
|
||||
for (const elm of accountCheats) {
|
||||
elm.checked = !!data[elm.id];
|
||||
if (elm.type === "checkbox") {
|
||||
elm.checked = !!data[elm.id];
|
||||
} else if (elm.type === "number") {
|
||||
elm.value = data[elm.id] !== undefined ? data[elm.id] : elm.getAttribute("data-default") || "";
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
@ -3214,15 +3218,16 @@ function doIntrinsicsUnlockAll() {
|
||||
});
|
||||
}
|
||||
|
||||
document.querySelectorAll("#account-cheats input[type=checkbox]").forEach(elm => {
|
||||
document.querySelectorAll("#account-cheats input[type=checkbox], #account-cheats input[type=number]").forEach(elm => {
|
||||
elm.onchange = function () {
|
||||
revalidateAuthz().then(() => {
|
||||
const value = elm.type === "checkbox" ? elm.checked : elm.value;
|
||||
$.post({
|
||||
url: "/custom/setAccountCheat?" + window.authz,
|
||||
contentType: "application/json",
|
||||
data: JSON.stringify({
|
||||
key: elm.id,
|
||||
value: elm.checked
|
||||
value: value
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
@ -257,6 +257,26 @@ 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_nemesisAlwaysCorrect: `[UNTRANSLATED] Any Guess is Correct`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `[UNTRANSLATED] Nemesis Weapon Fusion Multiplier`,
|
||||
cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
|
||||
cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to Disable)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
|
||||
cheats_extraRelicRewards: `[UNTRANSLATED] Extra Relic Rewards`,
|
||||
cheats_crackRelicForPlatinum: `[UNTRANSLATED] Crack Relic for Platinum`,
|
||||
cheats_relicPlatinumCommon: `[UNTRANSLATED] Platinum on Common Rewards`,
|
||||
cheats_relicPlatinumUncommon: `[UNTRANSLATED] Platinum on Uncommon Rewards`,
|
||||
cheats_relicPlatinumRare: `[UNTRANSLATED] Platinum on Rare Rewards`,
|
||||
cheats_extraStrippedItemRewards: `[UNTRANSLATED] Extra Stripped Item Rewards (0 to Disable)`,
|
||||
|
||||
alex_statement: `[UNTRANSLATED] This is a modified version of SpaceNinjaServer by Alex. Like the original, it remains open-source and free. Please do not pay for this version.`,
|
||||
|
||||
worldState: `Weltstatus`,
|
||||
worldState_creditBoost: `Event Booster: Credit`,
|
||||
|
||||
@ -256,6 +256,26 @@ 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_nemesisAlwaysCorrect: `Any Guess is Correct`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `Antivirus Progress Multiplier`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `Hint Progress Multiplier (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `Hint Progress Multiplier (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `Nemesis Weapon Fusion Multiplier`,
|
||||
cheats_nemesisExtraWeapon: `Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
|
||||
cheats_extraMissionRewards: `Extra Mission Rewards (0 to Disable)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `Intrinsics Gains Multiplier (Space)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `Intrinsics Gains Multiplier (Drifter)`,
|
||||
cheats_extraRelicRewards: `Extra Relic Rewards`,
|
||||
cheats_crackRelicForPlatinum: `Crack Relic for Platinum`,
|
||||
cheats_relicPlatinumCommon: `Platinum on Common Rewards`,
|
||||
cheats_relicPlatinumUncommon: `Platinum on Uncommon Rewards`,
|
||||
cheats_relicPlatinumRare: `Platinum on Rare Rewards`,
|
||||
cheats_extraStrippedItemRewards: `Extra Stripped Item Rewards (0 to Disable)`,
|
||||
|
||||
alex_statement: `This is a modified version of SpaceNinjaServer by Alex. Like the original, it remains open-source and free. Please do not pay for this version.`,
|
||||
|
||||
worldState: `World State`,
|
||||
worldState_creditBoost: `Credit Boost`,
|
||||
|
||||
@ -257,6 +257,26 @@ 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_nemesisAlwaysCorrect: `[UNTRANSLATED] Any Guess is Correct`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `[UNTRANSLATED] Nemesis Weapon Fusion Multiplier`,
|
||||
cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
|
||||
cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to Disable)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
|
||||
cheats_extraRelicRewards: `[UNTRANSLATED] Extra Relic Rewards`,
|
||||
cheats_crackRelicForPlatinum: `[UNTRANSLATED] Crack Relic for Platinum`,
|
||||
cheats_relicPlatinumCommon: `[UNTRANSLATED] Platinum on Common Rewards`,
|
||||
cheats_relicPlatinumUncommon: `[UNTRANSLATED] Platinum on Uncommon Rewards`,
|
||||
cheats_relicPlatinumRare: `[UNTRANSLATED] Platinum on Rare Rewards`,
|
||||
cheats_extraStrippedItemRewards: `[UNTRANSLATED] Extra Stripped Item Rewards (0 to Disable)`,
|
||||
|
||||
alex_statement: `[UNTRANSLATED] This is a modified version of SpaceNinjaServer by Alex. Like the original, it remains open-source and free. Please do not pay for this version.`,
|
||||
|
||||
worldState: `Estado del mundo`,
|
||||
worldState_creditBoost: `Potenciador de Créditos`,
|
||||
|
||||
@ -257,6 +257,26 @@ 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_nemesisAlwaysCorrect: `[UNTRANSLATED] Any Guess is Correct`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `[UNTRANSLATED] Nemesis Weapon Fusion Multiplier`,
|
||||
cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
|
||||
cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to Disable)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
|
||||
cheats_extraRelicRewards: `[UNTRANSLATED] Extra Relic Rewards`,
|
||||
cheats_crackRelicForPlatinum: `[UNTRANSLATED] Crack Relic for Platinum`,
|
||||
cheats_relicPlatinumCommon: `[UNTRANSLATED] Platinum on Common Rewards`,
|
||||
cheats_relicPlatinumUncommon: `[UNTRANSLATED] Platinum on Uncommon Rewards`,
|
||||
cheats_relicPlatinumRare: `[UNTRANSLATED] Platinum on Rare Rewards`,
|
||||
cheats_extraStrippedItemRewards: `[UNTRANSLATED] Extra Stripped Item Rewards (0 to Disable)`,
|
||||
|
||||
alex_statement: `[UNTRANSLATED] This is a modified version of SpaceNinjaServer by Alex. Like the original, it remains open-source and free. Please do not pay for this version.`,
|
||||
|
||||
worldState: `Carte Solaire`,
|
||||
worldState_creditBoost: `Booster de Crédit`,
|
||||
|
||||
@ -257,6 +257,26 @@ dict = {
|
||||
cheats_changeButton: `Изменить`,
|
||||
cheats_markAllAsRead: `Пометить все входящие как прочитанные`,
|
||||
cheats_finishInvasionsInOneMission: `Завершать вторжение за одну миссию`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisAlwaysCorrect: `[UNTRANSLATED] Any Guess is Correct`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `[UNTRANSLATED] Nemesis Weapon Fusion Multiplier`,
|
||||
cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
|
||||
cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to Disable)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
|
||||
cheats_extraRelicRewards: `[UNTRANSLATED] Extra Relic Rewards`,
|
||||
cheats_crackRelicForPlatinum: `[UNTRANSLATED] Crack Relic for Platinum`,
|
||||
cheats_relicPlatinumCommon: `[UNTRANSLATED] Platinum on Common Rewards`,
|
||||
cheats_relicPlatinumUncommon: `[UNTRANSLATED] Platinum on Uncommon Rewards`,
|
||||
cheats_relicPlatinumRare: `[UNTRANSLATED] Platinum on Rare Rewards`,
|
||||
cheats_extraStrippedItemRewards: `[UNTRANSLATED] Extra Stripped Item Rewards (0 to Disable)`,
|
||||
|
||||
alex_statement: `[UNTRANSLATED] This is a modified version of SpaceNinjaServer by Alex. Like the original, it remains open-source and free. Please do not pay for this version.`,
|
||||
|
||||
worldState: `Состояние мира`,
|
||||
worldState_creditBoost: `Глобальный бустер Кредитов`,
|
||||
|
||||
@ -257,6 +257,26 @@ dict = {
|
||||
cheats_changeButton: `Змінити`,
|
||||
cheats_markAllAsRead: `Помітити всі вхідні як прочитані`,
|
||||
cheats_finishInvasionsInOneMission: `Завершувати вторгнення за одну місію`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
|
||||
cheats_nemesisAlwaysCorrect: `[UNTRANSLATED] Any Guess is Correct`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `[UNTRANSLATED] Nemesis Weapon Fusion Multiplier`,
|
||||
cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
|
||||
cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to Disable)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
|
||||
cheats_extraRelicRewards: `[UNTRANSLATED] Extra Relic Rewards`,
|
||||
cheats_crackRelicForPlatinum: `[UNTRANSLATED] Crack Relic for Platinum`,
|
||||
cheats_relicPlatinumCommon: `[UNTRANSLATED] Platinum on Common Rewards`,
|
||||
cheats_relicPlatinumUncommon: `[UNTRANSLATED] Platinum on Uncommon Rewards`,
|
||||
cheats_relicPlatinumRare: `[UNTRANSLATED] Platinum on Rare Rewards`,
|
||||
cheats_extraStrippedItemRewards: `[UNTRANSLATED] Extra Stripped Item Rewards (0 to Disable)`,
|
||||
|
||||
alex_statement: `[UNTRANSLATED] This is a modified version of SpaceNinjaServer by Alex. Like the original, it remains open-source and free. Please do not pay for this version.`,
|
||||
|
||||
worldState: `Стан світу`,
|
||||
worldState_creditBoost: `Глобальне посилення Кредитів`,
|
||||
|
||||
@ -257,6 +257,26 @@ dict = {
|
||||
cheats_changeButton: `更改`,
|
||||
cheats_markAllAsRead: `收件箱全部标记为已读`,
|
||||
cheats_finishInvasionsInOneMission: `一场任务完成整场入侵`,
|
||||
cheats_gainNoNegativeSyndicateStanding: `集团声望不倒扣不掉段`,
|
||||
cheats_nemesisAlwaysCorrect: `玄骸密码总是正确`,
|
||||
cheats_nemesisHenchmenKillsMultiplierGrineer: `玄骸怒气倍率 (Grineer)`,
|
||||
cheats_nemesisHenchmenKillsMultiplierCorpus: `玄骸怒气倍率 (Corpus)`,
|
||||
cheats_nemesisAntivirusGainMultiplier: `杀毒进度倍率 (科腐者)`,
|
||||
cheats_nemesisHintProgressMultiplierGrineer: `解密进度倍率 (Grineer)`,
|
||||
cheats_nemesisHintProgressMultiplierCorpus: `解密进度倍率 (Corpus)`,
|
||||
cheats_nemesisWeaponFusionMultiplier: `玄骸武器效价融合倍率`,
|
||||
cheats_nemesisExtraWeapon: `额外玄骸武器/代币 (0为禁用)`,
|
||||
cheats_extraMissionRewards: `额外任务奖励 (0为禁用)`,
|
||||
cheats_playerSkillGainsMultiplierSpace: `內源之力获取倍率 (九重天)`,
|
||||
cheats_playerSkillGainsMultiplierDrifter: `內源之力获取倍率 (漂泊者)`,
|
||||
cheats_extraRelicRewards: `额外遗物奖励`,
|
||||
cheats_crackRelicForPlatinum: `打开遗物时获得白金`,
|
||||
cheats_relicPlatinumCommon: `普通奖励的白金`,
|
||||
cheats_relicPlatinumUncommon: `罕见奖励的白金`,
|
||||
cheats_relicPlatinumRare: `稀有奖励的白金`,
|
||||
cheats_extraStrippedItemRewards: `额外隐藏奖励 (0为禁用)`,
|
||||
|
||||
alex_statement: `这是SpaceNinjaServer的水泥魔改版。与原端一样保持开源和免费。请不要为此版本付费。`,
|
||||
|
||||
worldState: `世界状态配置`,
|
||||
worldState_creditBoost: `现金加成`,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user