Compare commits
	
		
			11 Commits
		
	
	
		
			9da1f58433
			...
			d69fd5d83f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d69fd5d83f | ||
| 
						 | 
					48790be49b | ||
| 
						 | 
					12db09ade1 | ||
| 
						 | 
					3944e551c8 | ||
| 
						 | 
					478b6a22f9 | ||
| 
						 | 
					c614e33f39 | ||
| 
						 | 
					54cb82a17c | ||
| 
						 | 
					03ba05313b | ||
| 
						 | 
					ff625ab8c0 | ||
| 
						 | 
					62c48c4e76 | ||
| 
						 | 
					091e7c00b9 | 
@ -47,6 +47,9 @@ export const nemesisController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
        const destFingerprint = JSON.parse(destWeapon.UpgradeFingerprint!) as IInnateDamageFingerprint;
 | 
					        const destFingerprint = JSON.parse(destWeapon.UpgradeFingerprint!) as IInnateDamageFingerprint;
 | 
				
			||||||
        const sourceFingerprint = JSON.parse(sourceWeapon.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
 | 
					        // Update destination damage type if desired
 | 
				
			||||||
        if (body.UseSourceDmgType) {
 | 
					        if (body.UseSourceDmgType) {
 | 
				
			||||||
            destFingerprint.buffs[0].Tag = sourceFingerprint.buffs[0].Tag;
 | 
					            destFingerprint.buffs[0].Tag = sourceFingerprint.buffs[0].Tag;
 | 
				
			||||||
@ -55,7 +58,7 @@ export const nemesisController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
        // Upgrade destination damage value
 | 
					        // Upgrade destination damage value
 | 
				
			||||||
        const destDamage = 0.25 + (destFingerprint.buffs[0].Value / 0x3fffffff) * (0.6 - 0.25);
 | 
					        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);
 | 
					        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) {
 | 
					        if (newDamage >= 0.5794998) {
 | 
				
			||||||
            newDamage = 0.6;
 | 
					            newDamage = 0.6;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -101,9 +104,16 @@ export const nemesisController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            "Nemesis LoadOutPresets CurrentLoadOutIds DataKnives Upgrades RawUpgrades"
 | 
					            "Nemesis LoadOutPresets CurrentLoadOutIds DataKnives Upgrades RawUpgrades"
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        const body = getJSONfromString<INemesisRequiemRequest>(String(req.body));
 | 
					        const body = getJSONfromString<INemesisRequiemRequest>(String(req.body));
 | 
				
			||||||
 | 
					        const alwaysCorrectCheat = (await getInventory(account._id.toString(), "nemesisAlwaysCorrect"))
 | 
				
			||||||
 | 
					            .nemesisAlwaysCorrect;
 | 
				
			||||||
        if (inventory.Nemesis!.Faction == "FC_INFESTATION") {
 | 
					        if (inventory.Nemesis!.Faction == "FC_INFESTATION") {
 | 
				
			||||||
            const guess: number[] = [body.guess & 0xf, (body.guess >> 4) & 0xf, (body.guess >> 8) & 0xf];
 | 
					            const guess: number[] = [body.guess & 0xf, (body.guess >> 4) & 0xf, (body.guess >> 8) & 0xf];
 | 
				
			||||||
            const passcode = getNemesisPasscode(inventory.Nemesis!)[0];
 | 
					            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 result1 = passcode == guess[0] ? GUESS_CORRECT : GUESS_INCORRECT;
 | 
				
			||||||
            const result2 = passcode == guess[1] ? GUESS_CORRECT : GUESS_INCORRECT;
 | 
					            const result2 = passcode == guess[1] ? GUESS_CORRECT : GUESS_INCORRECT;
 | 
				
			||||||
            const result3 = passcode == guess[2] ? GUESS_CORRECT : GUESS_INCORRECT;
 | 
					            const result3 = passcode == guess[2] ? GUESS_CORRECT : GUESS_INCORRECT;
 | 
				
			||||||
@ -149,7 +159,10 @@ export const nemesisController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
                            break;
 | 
					                            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) {
 | 
					                if (inventory.Nemesis!.HenchmenKilled >= 100) {
 | 
				
			||||||
                    inventory.Nemesis!.HenchmenKilled = 100;
 | 
					                    inventory.Nemesis!.HenchmenKilled = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -195,7 +208,9 @@ export const nemesisController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            // Evaluate guess
 | 
					            // Evaluate guess
 | 
				
			||||||
            const correct =
 | 
					            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
 | 
					            // Update entry
 | 
				
			||||||
            const guess = decodeNemesisGuess(
 | 
					            const guess = decodeNemesisGuess(
 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,7 @@ import { addMiscItems, combineInventoryChanges } from "../services/inventoryServ
 | 
				
			|||||||
import { handleStoreItemAcquisition } from "../services/purchaseService.ts";
 | 
					import { handleStoreItemAcquisition } from "../services/purchaseService.ts";
 | 
				
			||||||
import type { IInventoryChanges } from "../types/purchaseTypes.ts";
 | 
					import type { IInventoryChanges } from "../types/purchaseTypes.ts";
 | 
				
			||||||
import { config } from "../services/configService.ts";
 | 
					import { config } from "../services/configService.ts";
 | 
				
			||||||
 | 
					import { log } from "winston";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const crackRelic = async (
 | 
					export const crackRelic = async (
 | 
				
			||||||
    inventory: TInventoryDatabaseDocument,
 | 
					    inventory: TInventoryDatabaseDocument,
 | 
				
			||||||
@ -54,6 +55,26 @@ export const crackRelic = async (
 | 
				
			|||||||
        (await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
 | 
					        (await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (inventory.crackRelicForPlatinum) {
 | 
				
			||||||
 | 
					        let platinumReward = 0;
 | 
				
			||||||
 | 
					        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 reward;
 | 
					    return reward;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1462,6 +1462,22 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
				
			|||||||
        flawlessRelicsAlwaysGiveSilverReward: Boolean,
 | 
					        flawlessRelicsAlwaysGiveSilverReward: Boolean,
 | 
				
			||||||
        radiantRelicsAlwaysGiveGoldReward: Boolean,
 | 
					        radiantRelicsAlwaysGiveGoldReward: Boolean,
 | 
				
			||||||
        disableDailyTribute: Boolean,
 | 
					        disableDailyTribute: Boolean,
 | 
				
			||||||
 | 
					        gainNoNegativeSyndicateStanding: Boolean,
 | 
				
			||||||
 | 
					        nemesisAlwaysCorrect: Boolean,
 | 
				
			||||||
 | 
					        nemesisHenchmenKillsMulptiplierGrineer: Number,
 | 
				
			||||||
 | 
					        nemesisHenchmenKillsMulptiplierCorpus: Number,
 | 
				
			||||||
 | 
					        nemesisAntivirusGainMultiplier: Number,
 | 
				
			||||||
 | 
					        nemesisHintProgressMultiplierGrineer: Number,
 | 
				
			||||||
 | 
					        nemesisHintProgressMultiplierCorpus: Number,
 | 
				
			||||||
 | 
					        nemesisWeaponFusionMultiplier: Number,
 | 
				
			||||||
 | 
					        nemesisExtraWeapon: Number,
 | 
				
			||||||
 | 
					        extraMissionRewards: Number,
 | 
				
			||||||
 | 
					        playerSkillGainsMultiplierSpace: Number,
 | 
				
			||||||
 | 
					        playerSkillGainsMultiplierDrifter: Number,
 | 
				
			||||||
 | 
					        extraRelicRewards: Number,
 | 
				
			||||||
 | 
					        relicPlatinumCommon: Number,
 | 
				
			||||||
 | 
					        relicPlatinumUncommon: Number,
 | 
				
			||||||
 | 
					        relicPlatinumRare: Number,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        SubscribedToEmails: { type: Number, default: 0 },
 | 
					        SubscribedToEmails: { type: Number, default: 0 },
 | 
				
			||||||
        SubscribedToEmailsPersonalized: { type: Number, default: 0 },
 | 
					        SubscribedToEmailsPersonalized: { type: Number, default: 0 },
 | 
				
			||||||
 | 
				
			|||||||
@ -2182,6 +2182,9 @@ export const updateSyndicate = (
 | 
				
			|||||||
    syndicateUpdate?.forEach(affiliation => {
 | 
					    syndicateUpdate?.forEach(affiliation => {
 | 
				
			||||||
        const syndicate = inventory.Affiliations.find(x => x.Tag == affiliation.Tag);
 | 
					        const syndicate = inventory.Affiliations.find(x => x.Tag == affiliation.Tag);
 | 
				
			||||||
        if (syndicate !== undefined) {
 | 
					        if (syndicate !== undefined) {
 | 
				
			||||||
 | 
					            if (inventory.gainNoNegativeSyndicateStanding) {
 | 
				
			||||||
 | 
					                affiliation.Standing = Math.max(0, affiliation.Standing);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            syndicate.Standing += affiliation.Standing;
 | 
					            syndicate.Standing += affiliation.Standing;
 | 
				
			||||||
            syndicate.Title = syndicate.Title === undefined ? affiliation.Title : syndicate.Title + affiliation.Title;
 | 
					            syndicate.Title = syndicate.Title === undefined ? affiliation.Title : syndicate.Title + affiliation.Title;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 | 
				
			|||||||
@ -201,10 +201,29 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
            inventory.NemesisAbandonedRewards = inventoryUpdates.RewardInfo.NemesisAbandonedRewards;
 | 
					            inventory.NemesisAbandonedRewards = inventoryUpdates.RewardInfo.NemesisAbandonedRewards;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (inventoryUpdates.RewardInfo.NemesisHenchmenKills && inventory.Nemesis) {
 | 
					        if (inventoryUpdates.RewardInfo.NemesisHenchmenKills && inventory.Nemesis) {
 | 
				
			||||||
            inventory.Nemesis.HenchmenKilled += inventoryUpdates.RewardInfo.NemesisHenchmenKills;
 | 
					            let HenchmenKilledMultiplier = 1;
 | 
				
			||||||
 | 
					            switch (inventory.Nemesis.Faction) {
 | 
				
			||||||
 | 
					                case "FC_GRINEER":
 | 
				
			||||||
 | 
					                    HenchmenKilledMultiplier = inventory.nemesisHenchmenKillsMulptiplierGrineer ?? 1;
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case "FC_CORPUS":
 | 
				
			||||||
 | 
					                    HenchmenKilledMultiplier = inventory.nemesisHenchmenKillsMulptiplierCorpus ?? 1;
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            inventory.Nemesis.HenchmenKilled +=
 | 
				
			||||||
 | 
					                inventoryUpdates.RewardInfo.NemesisHenchmenKills * HenchmenKilledMultiplier;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (inventoryUpdates.RewardInfo.NemesisHintProgress && inventory.Nemesis) {
 | 
					        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) {
 | 
					            if (inventory.Nemesis.Faction != "FC_INFESTATION" && inventory.Nemesis.Hints.length != 3) {
 | 
				
			||||||
                const progressNeeded = [35, 60, 100][inventory.Nemesis.Hints.length];
 | 
					                const progressNeeded = [35, 60, 100][inventory.Nemesis.Hints.length];
 | 
				
			||||||
                if (inventory.Nemesis.HintProgress >= progressNeeded) {
 | 
					                if (inventory.Nemesis.HintProgress >= progressNeeded) {
 | 
				
			||||||
@ -347,8 +366,10 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "PlayerSkillGains": {
 | 
					            case "PlayerSkillGains": {
 | 
				
			||||||
                inventory.PlayerSkills.LPP_SPACE += value.LPP_SPACE ?? 0;
 | 
					                inventory.PlayerSkills.LPP_SPACE +=
 | 
				
			||||||
                inventory.PlayerSkills.LPP_DRIFTER += value.LPP_DRIFTER ?? 0;
 | 
					                    (value.LPP_SPACE ?? 0) * (inventory.playerSkillGainsMultiplierSpace ?? 1);
 | 
				
			||||||
 | 
					                inventory.PlayerSkills.LPP_DRIFTER +=
 | 
				
			||||||
 | 
					                    (value.LPP_DRIFTER ?? 0) * (inventory.playerSkillGainsMultiplierDrifter ?? 1);
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "CustomMarkers": {
 | 
					            case "CustomMarkers": {
 | 
				
			||||||
@ -843,6 +864,8 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
                    const att: string[] = [];
 | 
					                    const att: string[] = [];
 | 
				
			||||||
                    let countedAtt: ITypeCount[] | undefined;
 | 
					                    let countedAtt: ITypeCount[] | undefined;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    const extraWeaponCheat = inventory.nemesisExtraWeapon ?? 0; // 0 means no extra weapon and token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (value.killed) {
 | 
					                    if (value.killed) {
 | 
				
			||||||
                        if (
 | 
					                        if (
 | 
				
			||||||
                            value.weaponLoc &&
 | 
					                            value.weaponLoc &&
 | 
				
			||||||
@ -852,6 +875,20 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
                            giveNemesisWeaponRecipe(inventory, weaponType, value.nemesisName, value.weaponLoc, profile);
 | 
					                            giveNemesisWeaponRecipe(inventory, weaponType, value.nemesisName, value.weaponLoc, profile);
 | 
				
			||||||
                            att.push(weaponType);
 | 
					                            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,
 | 
				
			||||||
 | 
					                                    value.weaponLoc,
 | 
				
			||||||
 | 
					                                    profile
 | 
				
			||||||
 | 
					                                );
 | 
				
			||||||
 | 
					                                att.push(randomWeapon);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                        //if (value.petLoc) {
 | 
					                        //if (value.petLoc) {
 | 
				
			||||||
                        if (profile.petHead) {
 | 
					                        if (profile.petHead) {
 | 
				
			||||||
                            giveNemesisPetRecipe(inventory, value.nemesisName, profile);
 | 
					                            giveNemesisPetRecipe(inventory, value.nemesisName, profile);
 | 
				
			||||||
@ -894,7 +931,7 @@ export const addMissionInventoryUpdates = async (
 | 
				
			|||||||
                            countedAtt = [
 | 
					                            countedAtt = [
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    ItemType: "/Lotus/Types/Items/MiscItems/CodaWeaponBucks",
 | 
					                                    ItemType: "/Lotus/Types/Items/MiscItems/CodaWeaponBucks",
 | 
				
			||||||
                                    ItemCount: getKillTokenRewardCount(inventory.Nemesis.fp)
 | 
					                                    ItemCount: getKillTokenRewardCount(inventory.Nemesis.fp) * (extraWeaponCheat + 1)
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                            ];
 | 
					                            ];
 | 
				
			||||||
                            addMiscItems(inventory, countedAtt);
 | 
					                            addMiscItems(inventory, countedAtt);
 | 
				
			||||||
@ -1136,6 +1173,22 @@ export const addMissionRewards = async (
 | 
				
			|||||||
        firstCompletion
 | 
					        firstCompletion
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    logger.debug("random mission drops:", MissionRewards);
 | 
					    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 = {};
 | 
					    const inventoryChanges: IInventoryChanges = {};
 | 
				
			||||||
    let SyndicateXPItemReward;
 | 
					    let SyndicateXPItemReward;
 | 
				
			||||||
    let ConquestCompletedMissionsCount;
 | 
					    let ConquestCompletedMissionsCount;
 | 
				
			||||||
@ -1328,6 +1381,21 @@ export const addMissionRewards = async (
 | 
				
			|||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
        const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
 | 
					        const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
 | 
				
			||||||
        MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
 | 
					        MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((inventory.extraRelicRewards ?? 0) >= 1) {
 | 
				
			||||||
 | 
					            for (let i = 0; i != inventory.extraRelicRewards; ++i) {
 | 
				
			||||||
 | 
					                //give a relic that will be removed later in crackRelic()
 | 
				
			||||||
 | 
					                const miscItemChanges = [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        ItemType: voidTearWave.Participants[0].VoidProjection,
 | 
				
			||||||
 | 
					                        ItemCount: 1
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ];
 | 
				
			||||||
 | 
					                addMiscItems(inventory, miscItemChanges);
 | 
				
			||||||
 | 
					                const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
 | 
				
			||||||
 | 
					                MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (strippedItems) {
 | 
					    if (strippedItems) {
 | 
				
			||||||
@ -1422,7 +1490,9 @@ export const addMissionRewards = async (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (inventory.Nemesis.Faction == "FC_INFESTATION") {
 | 
					            if (inventory.Nemesis.Faction == "FC_INFESTATION") {
 | 
				
			||||||
                inventory.Nemesis.MissionCount += 1;
 | 
					                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 ??= 0;
 | 
				
			||||||
                inventoryChanges.Nemesis.MissionCount += 1;
 | 
					                inventoryChanges.Nemesis.MissionCount += 1;
 | 
				
			||||||
 | 
				
			|||||||
@ -55,6 +55,23 @@ export interface IAccountCheats {
 | 
				
			|||||||
    flawlessRelicsAlwaysGiveSilverReward?: boolean;
 | 
					    flawlessRelicsAlwaysGiveSilverReward?: boolean;
 | 
				
			||||||
    radiantRelicsAlwaysGiveGoldReward?: boolean;
 | 
					    radiantRelicsAlwaysGiveGoldReward?: boolean;
 | 
				
			||||||
    disableDailyTribute?: boolean;
 | 
					    disableDailyTribute?: boolean;
 | 
				
			||||||
 | 
					    gainNoNegativeSyndicateStanding?: boolean;
 | 
				
			||||||
 | 
					    nemesisAlwaysCorrect?: boolean;
 | 
				
			||||||
 | 
					    nemesisHenchmenKillsMulptiplierGrineer?: number;
 | 
				
			||||||
 | 
					    nemesisHenchmenKillsMulptiplierCorpus?: 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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IInventoryDatabase
 | 
					export interface IInventoryDatabase
 | 
				
			||||||
 | 
				
			|||||||
@ -807,6 +807,116 @@
 | 
				
			|||||||
                                    <input class="form-check-input" type="checkbox" id="finishInvasionsInOneMission" />
 | 
					                                    <input class="form-check-input" type="checkbox" id="finishInvasionsInOneMission" />
 | 
				
			||||||
                                    <label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
 | 
					                                    <label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
 | 
				
			||||||
                                </div>
 | 
					                                </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>
 | 
				
			||||||
 | 
					                                <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>
 | 
				
			||||||
                                <div class="mt-2 mb-2 d-flex flex-wrap gap-2">
 | 
					                                <div class="mt-2 mb-2 d-flex flex-wrap gap-2">
 | 
				
			||||||
                                    <button class="btn btn-primary" onclick="debounce(unlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
 | 
					                                    <button class="btn btn-primary" onclick="debounce(unlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
 | 
				
			||||||
                                    <button class="btn btn-primary" onclick="debounce(markAllAsRead);" data-loc="cheats_markAllAsRead"></button>
 | 
					                                    <button class="btn btn-primary" onclick="debounce(markAllAsRead);" data-loc="cheats_markAllAsRead"></button>
 | 
				
			||||||
 | 
				
			|||||||
@ -1503,7 +1503,11 @@ function updateInventory() {
 | 
				
			|||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (const elm of accountCheats) {
 | 
					            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") || "";
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
@ -2367,15 +2371,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 () {
 | 
					    elm.onchange = function () {
 | 
				
			||||||
        revalidateAuthz().then(() => {
 | 
					        revalidateAuthz().then(() => {
 | 
				
			||||||
 | 
					            const value = elm.type === "checkbox" ? elm.checked : elm.value;
 | 
				
			||||||
            $.post({
 | 
					            $.post({
 | 
				
			||||||
                url: "/custom/setAccountCheat?" + window.authz /*+ "&wsid=" + wsid*/,
 | 
					                url: "/custom/setAccountCheat?" + window.authz /*+ "&wsid=" + wsid*/,
 | 
				
			||||||
                contentType: "application/json",
 | 
					                contentType: "application/json",
 | 
				
			||||||
                data: JSON.stringify({
 | 
					                data: JSON.stringify({
 | 
				
			||||||
                    key: elm.id,
 | 
					                    key: elm.id,
 | 
				
			||||||
                    value: elm.checked
 | 
					                    value: value
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
				
			|||||||
@ -242,6 +242,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `Ändern`,
 | 
					    cheats_changeButton: `Ändern`,
 | 
				
			||||||
    cheats_markAllAsRead: `Posteingang als gelesen markieren`,
 | 
					    cheats_markAllAsRead: `Posteingang als gelesen markieren`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `[UNTRANSLATED] Finish Invasions in One Mission`,
 | 
					    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`,
 | 
				
			||||||
 | 
					    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`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `Weltstatus`,
 | 
					    worldState: `Weltstatus`,
 | 
				
			||||||
    worldState_creditBoost: `Event Booster: Credit`,
 | 
					    worldState_creditBoost: `Event Booster: Credit`,
 | 
				
			||||||
 | 
				
			|||||||
@ -241,6 +241,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `Change`,
 | 
					    cheats_changeButton: `Change`,
 | 
				
			||||||
    cheats_markAllAsRead: `Mark Inbox As Read`,
 | 
					    cheats_markAllAsRead: `Mark Inbox As Read`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `Finish Invasions in One Mission`,
 | 
					    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`,
 | 
				
			||||||
 | 
					    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`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `World State`,
 | 
					    worldState: `World State`,
 | 
				
			||||||
    worldState_creditBoost: `Credit Boost`,
 | 
					    worldState_creditBoost: `Credit Boost`,
 | 
				
			||||||
 | 
				
			|||||||
@ -242,6 +242,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `Cambiar`,
 | 
					    cheats_changeButton: `Cambiar`,
 | 
				
			||||||
    cheats_markAllAsRead: `Marcar bandeja de entrada como leída`,
 | 
					    cheats_markAllAsRead: `Marcar bandeja de entrada como leída`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `[UNTRANSLATED] Finish Invasions in One Mission`,
 | 
					    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`,
 | 
				
			||||||
 | 
					    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`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `Estado del mundo`,
 | 
					    worldState: `Estado del mundo`,
 | 
				
			||||||
    worldState_creditBoost: `Potenciador de Créditos`,
 | 
					    worldState_creditBoost: `Potenciador de Créditos`,
 | 
				
			||||||
 | 
				
			|||||||
@ -242,6 +242,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `Changer`,
 | 
					    cheats_changeButton: `Changer`,
 | 
				
			||||||
    cheats_markAllAsRead: `Marquer la boîte de réception comme lue`,
 | 
					    cheats_markAllAsRead: `Marquer la boîte de réception comme lue`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `[UNTRANSLATED] Finish Invasions in One Mission`,
 | 
					    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`,
 | 
				
			||||||
 | 
					    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`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `Carte Solaire`,
 | 
					    worldState: `Carte Solaire`,
 | 
				
			||||||
    worldState_creditBoost: `Booster de Crédit`,
 | 
					    worldState_creditBoost: `Booster de Crédit`,
 | 
				
			||||||
 | 
				
			|||||||
@ -242,6 +242,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `Изменить`,
 | 
					    cheats_changeButton: `Изменить`,
 | 
				
			||||||
    cheats_markAllAsRead: `Пометить все входящие как прочитанные`,
 | 
					    cheats_markAllAsRead: `Пометить все входящие как прочитанные`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `Завершать вторжение за одну миссию`,
 | 
					    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`,
 | 
				
			||||||
 | 
					    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`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `Состояние мира`,
 | 
					    worldState: `Состояние мира`,
 | 
				
			||||||
    worldState_creditBoost: `Глобальный бустер Кредитов`,
 | 
					    worldState_creditBoost: `Глобальный бустер Кредитов`,
 | 
				
			||||||
 | 
				
			|||||||
@ -242,6 +242,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `Змінити`,
 | 
					    cheats_changeButton: `Змінити`,
 | 
				
			||||||
    cheats_markAllAsRead: `Помітити всі вхідні як прочитані`,
 | 
					    cheats_markAllAsRead: `Помітити всі вхідні як прочитані`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `Завершувати вторгнення за одну місію`,
 | 
					    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`,
 | 
				
			||||||
 | 
					    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`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `Стан світу`,
 | 
					    worldState: `Стан світу`,
 | 
				
			||||||
    worldState_creditBoost: `Глобальне посилення Кредитів`,
 | 
					    worldState_creditBoost: `Глобальне посилення Кредитів`,
 | 
				
			||||||
 | 
				
			|||||||
@ -242,6 +242,23 @@ dict = {
 | 
				
			|||||||
    cheats_changeButton: `更改`,
 | 
					    cheats_changeButton: `更改`,
 | 
				
			||||||
    cheats_markAllAsRead: `收件箱全部标记为已读`,
 | 
					    cheats_markAllAsRead: `收件箱全部标记为已读`,
 | 
				
			||||||
    cheats_finishInvasionsInOneMission: `一场任务完成整场入侵`,
 | 
					    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: `额外任务奖励`,
 | 
				
			||||||
 | 
					    cheats_playerSkillGainsMultiplierSpace: `內源之力获取倍率 (九重天)`,
 | 
				
			||||||
 | 
					    cheats_playerSkillGainsMultiplierDrifter: `內源之力获取倍率 (漂泊者)`,
 | 
				
			||||||
 | 
					    cheats_extraRelicRewards: `额外遗物奖励`,
 | 
				
			||||||
 | 
					    cheats_crackRelicForPlatinum: `打开遗物时获得白金`,
 | 
				
			||||||
 | 
					    cheats_relicPlatinumCommon: `普通奖励的白金`,
 | 
				
			||||||
 | 
					    cheats_relicPlatinumUncommon: `罕见奖励的白金`,
 | 
				
			||||||
 | 
					    cheats_relicPlatinumRare: `稀有奖励的白金`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    worldState: `世界状态配置`,
 | 
					    worldState: `世界状态配置`,
 | 
				
			||||||
    worldState_creditBoost: `现金加成`,
 | 
					    worldState_creditBoost: `现金加成`,
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user