Compare commits
	
		
			12 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					47acf3a7b0 | ||
| 
						 | 
					f45161741f | ||
| 
						 | 
					846e5363eb | ||
| 
						 | 
					38d1e31ad8 | ||
| 
						 | 
					a83e77ef21 | ||
| 
						 | 
					720e243f13 | ||
| 
						 | 
					92c59bcc3a | ||
| 
						 | 
					0796917740 | ||
| 
						 | 
					e192a36389 | ||
| 
						 | 
					3a3c90c9e3 | ||
| 
						 | 
					d829c3ce33 | ||
| 
						 | 
					676299923f | 
@ -11,11 +11,13 @@ export const getVoidProjectionRewardsController: RequestHandler = async (req, re
 | 
			
		||||
 | 
			
		||||
    if (data.ParticipantInfo.QualifiesForReward && !data.ParticipantInfo.HaveRewardResponse) {
 | 
			
		||||
        const inventory = await getInventory(accountId);
 | 
			
		||||
        const reward = await crackRelic(inventory, data.ParticipantInfo);
 | 
			
		||||
        const rewards = await crackRelic(inventory, data.ParticipantInfo);
 | 
			
		||||
        if (!inventory.MissionRelicRewards || inventory.MissionRelicRewards.length >= data.CurrentWave) {
 | 
			
		||||
            inventory.MissionRelicRewards = [];
 | 
			
		||||
        }
 | 
			
		||||
        inventory.MissionRelicRewards.push({ ItemType: reward.type, ItemCount: reward.itemCount });
 | 
			
		||||
        rewards.forEach(reward => {
 | 
			
		||||
            (inventory.MissionRelicRewards ??= []).push({ ItemType: reward.type, ItemCount: reward.itemCount });
 | 
			
		||||
        });
 | 
			
		||||
        await inventory.save();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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) {
 | 
			
		||||
@ -25,18 +25,48 @@ export const crackRelic = async (
 | 
			
		||||
        weights = { COMMON: 0, UNCOMMON: 0, RARE: 1, LEGENDARY: 0 };
 | 
			
		||||
    }
 | 
			
		||||
    logger.debug(`opening a relic of quality ${relic.quality}; rarity weights are`, weights);
 | 
			
		||||
    let reward = getRandomWeightedReward(
 | 
			
		||||
        ExportRewards[relic.rewardManifest][0] as { type: string; itemCount: number; rarity: TRarity }[], // rarity is nullable in PE+ typings, but always present for relics
 | 
			
		||||
        weights
 | 
			
		||||
    )!;
 | 
			
		||||
    if (config.relicRewardItemCountMultiplier !== undefined && (config.relicRewardItemCountMultiplier ?? 1) != 1) {
 | 
			
		||||
        reward = {
 | 
			
		||||
            ...reward,
 | 
			
		||||
            itemCount: reward.itemCount * config.relicRewardItemCountMultiplier
 | 
			
		||||
        };
 | 
			
		||||
    const allRewards = [];
 | 
			
		||||
    const relicRewardCount = 1 + (inventory.extraRelicRewards ?? 0);
 | 
			
		||||
    for (let i = 0; i < relicRewardCount; i++) {
 | 
			
		||||
        let reward = getRandomWeightedReward(
 | 
			
		||||
            ExportRewards[relic.rewardManifest][0] as { type: string; itemCount: number; rarity: TRarity }[], // rarity is nullable in PE+ typings, but always present for relics
 | 
			
		||||
            weights
 | 
			
		||||
        )!;
 | 
			
		||||
        if (config.relicRewardItemCountMultiplier !== undefined && (config.relicRewardItemCountMultiplier ?? 1) != 1) {
 | 
			
		||||
            reward = {
 | 
			
		||||
                ...reward,
 | 
			
		||||
                itemCount: reward.itemCount * config.relicRewardItemCountMultiplier
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        logger.debug(`relic rolled`, reward);
 | 
			
		||||
        participant.Reward = reward.type;
 | 
			
		||||
        allRewards.push(reward);
 | 
			
		||||
        // Give reward
 | 
			
		||||
        combineInventoryChanges(
 | 
			
		||||
            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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    logger.debug(`relic rolled`, reward);
 | 
			
		||||
    participant.Reward = reward.type;
 | 
			
		||||
 | 
			
		||||
    // Remove relic
 | 
			
		||||
    const miscItemChanges = [
 | 
			
		||||
@ -48,16 +78,10 @@ export const crackRelic = async (
 | 
			
		||||
    addMiscItems(inventory, miscItemChanges);
 | 
			
		||||
    combineInventoryChanges(inventoryChanges, { MiscItems: miscItemChanges });
 | 
			
		||||
 | 
			
		||||
    // Give reward
 | 
			
		||||
    combineInventoryChanges(
 | 
			
		||||
        inventoryChanges,
 | 
			
		||||
        (await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // Client has picked its own reward (for lack of choice)
 | 
			
		||||
    participant.ChosenRewardOwner = participant.AccountId;
 | 
			
		||||
 | 
			
		||||
    return reward;
 | 
			
		||||
    return allRewards;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const refinementToWeights = {
 | 
			
		||||
 | 
			
		||||
@ -1462,12 +1462,22 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
 | 
			
		||||
        flawlessRelicsAlwaysGiveSilverReward: Boolean,
 | 
			
		||||
        radiantRelicsAlwaysGiveGoldReward: Boolean,
 | 
			
		||||
        disableDailyTribute: Boolean,
 | 
			
		||||
        gainNoNegativeSyndicateStanding: Boolean,
 | 
			
		||||
        nemesisHenchmenKillsMultiplierGrineer: Number,
 | 
			
		||||
        nemesisHenchmenKillsMultiplierCorpus: Number,
 | 
			
		||||
        nemesisAntivirusGainMultiplier: Number,
 | 
			
		||||
        nemesisHintProgressMultiplierGrineer: Number,
 | 
			
		||||
        nemesisHintProgressMultiplierCorpus: Number,
 | 
			
		||||
        nemesisExtraWeapon: Number,
 | 
			
		||||
        playerSkillGainsMultiplierSpace: Number,
 | 
			
		||||
        playerSkillGainsMultiplierDrifter: Number,
 | 
			
		||||
        extraMissionRewards: Number,
 | 
			
		||||
        strippedItemRewardsMultiplier: Number,
 | 
			
		||||
        extraRelicRewards: Number,
 | 
			
		||||
        crackRelicForPlatinum: Boolean,
 | 
			
		||||
        relicPlatinumCommon: Number,
 | 
			
		||||
        relicPlatinumUncommon: Number,
 | 
			
		||||
        relicPlatinumRare: Number,
 | 
			
		||||
 | 
			
		||||
        SubscribedToEmails: { type: Number, default: 0 },
 | 
			
		||||
        SubscribedToEmailsPersonalized: { type: Number, default: 0 },
 | 
			
		||||
 | 
			
		||||
@ -2187,6 +2187,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;
 | 
			
		||||
 | 
			
		||||
@ -372,8 +372,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": {
 | 
			
		||||
@ -1146,6 +1148,22 @@ export const addMissionRewards = async (
 | 
			
		||||
        firstCompletion
 | 
			
		||||
    );
 | 
			
		||||
    logger.debug("random mission drops:", MissionRewards);
 | 
			
		||||
 | 
			
		||||
    if (inventory.extraMissionRewards) {
 | 
			
		||||
        for (let i = 0; i < inventory.extraMissionRewards; i++) {
 | 
			
		||||
            logger.debug("generating extra mission rewards with new seed, this will mismatch the mission report.");
 | 
			
		||||
            // otherwise would always get the same rewards
 | 
			
		||||
            const extraDrops = getRandomMissionDrops(
 | 
			
		||||
                inventory,
 | 
			
		||||
                { ...rewardInfo, rewardSeed: generateRewardSeed() },
 | 
			
		||||
                missions,
 | 
			
		||||
                wagerTier,
 | 
			
		||||
                firstCompletion
 | 
			
		||||
            );
 | 
			
		||||
            MissionRewards.push(...extraDrops);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const inventoryChanges: IInventoryChanges = {};
 | 
			
		||||
    let SyndicateXPItemReward;
 | 
			
		||||
    let ConquestCompletedMissionsCount;
 | 
			
		||||
@ -1337,8 +1355,10 @@ export const addMissionRewards = async (
 | 
			
		||||
    if (voidTearWave && voidTearWave.Participants[0].QualifiesForReward) {
 | 
			
		||||
        if (!voidTearWave.Participants[0].HaveRewardResponse) {
 | 
			
		||||
            // non-endless fissure; giving reward now
 | 
			
		||||
            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 });
 | 
			
		||||
            });
 | 
			
		||||
        } else if (inventory.MissionRelicRewards) {
 | 
			
		||||
            // endless fissure; already gave reward(s) but should still show in EOM screen
 | 
			
		||||
            for (const reward of inventory.MissionRelicRewards) {
 | 
			
		||||
@ -1358,10 +1378,11 @@ export const addMissionRewards = async (
 | 
			
		||||
                si.DropTable = droptableAliases[si.DropTable];
 | 
			
		||||
            }
 | 
			
		||||
            const droptables = ExportEnemies.droptables[si.DropTable] ?? [];
 | 
			
		||||
            const strippedItemRewardsMultiplier = inventory.strippedItemRewardsMultiplier ?? 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 * strippedItemRewardsMultiplier; ++i) {
 | 
			
		||||
                        const reward = getRandomReward(modDroptable.items)!;
 | 
			
		||||
                        logger.debug(`stripped droptable (mods pool) rolled`, reward);
 | 
			
		||||
                        await addItem(inventory, reward.type);
 | 
			
		||||
@ -1378,7 +1399,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 * strippedItemRewardsMultiplier; ++i) {
 | 
			
		||||
                        const reward = getRandomReward(blueprintDroptable.items)!;
 | 
			
		||||
                        logger.debug(`stripped droptable (blueprints pool) rolled`, reward);
 | 
			
		||||
                        await addItem(inventory, reward.type);
 | 
			
		||||
@ -1396,7 +1417,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 * strippedItemRewardsMultiplier; ++i) {
 | 
			
		||||
                        const reward = getRandomReward(resourceDroptable.items)!;
 | 
			
		||||
                        logger.debug(`stripped droptable (resources pool) rolled`, reward);
 | 
			
		||||
                        if (Object.keys(await addItem(inventory, reward.type)).length == 0) {
 | 
			
		||||
 | 
			
		||||
@ -55,12 +55,22 @@ export interface IAccountCheats {
 | 
			
		||||
    flawlessRelicsAlwaysGiveSilverReward?: boolean;
 | 
			
		||||
    radiantRelicsAlwaysGiveGoldReward?: boolean;
 | 
			
		||||
    disableDailyTribute?: boolean;
 | 
			
		||||
    gainNoNegativeSyndicateStanding?: boolean;
 | 
			
		||||
    nemesisHenchmenKillsMultiplierGrineer?: number;
 | 
			
		||||
    nemesisHenchmenKillsMultiplierCorpus?: number;
 | 
			
		||||
    nemesisAntivirusGainMultiplier?: number;
 | 
			
		||||
    nemesisHintProgressMultiplierGrineer?: number;
 | 
			
		||||
    nemesisHintProgressMultiplierCorpus?: number;
 | 
			
		||||
    nemesisExtraWeapon?: number;
 | 
			
		||||
    playerSkillGainsMultiplierSpace?: number;
 | 
			
		||||
    playerSkillGainsMultiplierDrifter?: number;
 | 
			
		||||
    extraMissionRewards?: number;
 | 
			
		||||
    strippedItemRewardsMultiplier?: number;
 | 
			
		||||
    extraRelicRewards?: number;
 | 
			
		||||
    crackRelicForPlatinum?: boolean;
 | 
			
		||||
    relicPlatinumCommon?: number;
 | 
			
		||||
    relicPlatinumUncommon?: number;
 | 
			
		||||
    relicPlatinumRare?: number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface IInventoryDatabase
 | 
			
		||||
 | 
			
		||||
@ -1015,6 +1015,10 @@
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="finishInvasionsInOneMission" />
 | 
			
		||||
                                    <label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <div class="form-check">
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="gainNoNegativeSyndicateStanding" />
 | 
			
		||||
                                    <label class="form-check-label" for="gainNoNegativeSyndicateStanding" data-loc="cheats_gainNoNegativeSyndicateStanding"></label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <form class="form-group mt-2">
 | 
			
		||||
                                    <label class="form-label" for="nemesisHenchmenKillsMultiplierGrineer" data-loc="cheats_nemesisHenchmenKillsMultiplierGrineer"></label>
 | 
			
		||||
                                    <div class="input-group">
 | 
			
		||||
@ -1057,6 +1061,66 @@
 | 
			
		||||
                                        <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="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="strippedItemRewardsMultiplier" data-loc="cheats_strippedItemRewardsMultiplier"></label>
 | 
			
		||||
                                    <div class="input-group">
 | 
			
		||||
                                        <input class="form-control" id="strippedItemRewardsMultiplier" type="number" min="0" 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">
 | 
			
		||||
                                    <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>
 | 
			
		||||
 | 
			
		||||
@ -257,12 +257,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `Ändern`,
 | 
			
		||||
    cheats_markAllAsRead: `Posteingang als gelesen markieren`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `[UNTRANSLATED] Finish Invasions in One Mission`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
 | 
			
		||||
    cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to disable)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `[UNTRANSLATED] Stripped Item Rewards Multiplier`,
 | 
			
		||||
    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_creditBoost: `Event Booster: Credit`,
 | 
			
		||||
 | 
			
		||||
@ -256,12 +256,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `Change`,
 | 
			
		||||
    cheats_markAllAsRead: `Mark Inbox As Read`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `Finish Invasions in One Mission`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `Gain No Negative Syndicate Standing`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `Rage Progess Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `Rage Progess Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `Antivirus Progress Multiplier`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `Hint Progress Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `Hint Progress Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `Intrinsics Gains Multiplier (Space)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `Intrinsics Gains Multiplier (Drifter)`,
 | 
			
		||||
    cheats_extraMissionRewards: `Extra Mission Rewards (0 to disable)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `Stripped Item Rewards Multiplier`,
 | 
			
		||||
    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_creditBoost: `Credit Boost`,
 | 
			
		||||
 | 
			
		||||
@ -257,12 +257,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `Cambiar`,
 | 
			
		||||
    cheats_markAllAsRead: `Marcar bandeja de entrada como leída`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `Finaliza Invasión en una mision`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
 | 
			
		||||
    cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to disable)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `[UNTRANSLATED] Stripped Item Rewards Multiplier`,
 | 
			
		||||
    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_creditBoost: `Potenciador de Créditos`,
 | 
			
		||||
 | 
			
		||||
@ -257,12 +257,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `Changer`,
 | 
			
		||||
    cheats_markAllAsRead: `Marquer la boîte de réception comme lue`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `Compléter les invasions en une mission.`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
 | 
			
		||||
    cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to disable)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `[UNTRANSLATED] Stripped Item Rewards Multiplier`,
 | 
			
		||||
    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_creditBoost: `Booster de Crédit`,
 | 
			
		||||
 | 
			
		||||
@ -257,12 +257,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `Изменить`,
 | 
			
		||||
    cheats_markAllAsRead: `Пометить все входящие как прочитанные`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `Завершать вторжение за одну миссию`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `Мультипликатор прогресса ярости (Гринир)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `Мультипликатор прогресса ярости (Корпус)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `Мультипликатор прогресса антивируса`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `Мультипликатор прогресса подсказки (Гринир)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `Мультипликатор прогресса подсказки (Корпус)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `Дополнительное оружие/активный Кардиомиоцит за победу над Противником (0 для отключения)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
 | 
			
		||||
    cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to disable)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `[UNTRANSLATED] Stripped Item Rewards Multiplier`,
 | 
			
		||||
    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_creditBoost: `Глобальный бустер Кредитов`,
 | 
			
		||||
 | 
			
		||||
@ -257,12 +257,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `Змінити`,
 | 
			
		||||
    cheats_markAllAsRead: `Помітити всі вхідні як прочитані`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `Завершувати вторгнення за одну місію`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `[UNTRANSLATED] Gain No Negative Syndicate Standing`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `Множник прогресу люті (Ґрінери)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `Множник прогресу люті (Корпус)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `Мультиплікатор прогресу антивіруса`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `Множник прогресу підсказки (Ґрінери)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `Множник прогресу підсказки (Корпус)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `Додаткова зброя/Жива сердцевина за перемогу над Недругом (0 для вимкнення)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `[UNTRANSLATED] Intrinsics Gains Multiplier (Space)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `[UNTRANSLATED] Intrinsics Gains Multiplier (Drifter)`,
 | 
			
		||||
    cheats_extraMissionRewards: `[UNTRANSLATED] Extra Mission Rewards (0 to disable)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `[UNTRANSLATED] Stripped Item Rewards Multiplier`,
 | 
			
		||||
    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_creditBoost: `Глобальне посилення Кредитів`,
 | 
			
		||||
 | 
			
		||||
@ -257,12 +257,22 @@ dict = {
 | 
			
		||||
    cheats_changeButton: `更改`,
 | 
			
		||||
    cheats_markAllAsRead: `收件箱全部标记为已读`,
 | 
			
		||||
    cheats_finishInvasionsInOneMission: `一场任务完成整场入侵`,
 | 
			
		||||
    cheats_gainNoNegativeSyndicateStanding: `集团声望不倒扣不掉段`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierGrineer: `玄骸怒气倍率 (Grineer)`,
 | 
			
		||||
    cheats_nemesisHenchmenKillsMultiplierCorpus: `玄骸怒气倍率 (Corpus)`,
 | 
			
		||||
    cheats_nemesisAntivirusGainMultiplier: `杀毒进度倍率 (科腐者)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierGrineer: `解密进度倍率 (Grineer)`,
 | 
			
		||||
    cheats_nemesisHintProgressMultiplierCorpus: `解密进度倍率 (Corpus)`,
 | 
			
		||||
    cheats_nemesisExtraWeapon: `额外玄骸武器/代币 (0为禁用)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierSpace: `內源之力获取倍率 (九重天)`,
 | 
			
		||||
    cheats_playerSkillGainsMultiplierDrifter: `內源之力获取倍率 (漂泊者)`,
 | 
			
		||||
    cheats_extraMissionRewards: `额外任务奖励 (0为禁用)`,
 | 
			
		||||
    cheats_strippedItemRewardsMultiplier: `隐藏战利品奖励倍率`,
 | 
			
		||||
    cheats_extraRelicRewards: `额外遗物奖励`,
 | 
			
		||||
    cheats_crackRelicForPlatinum: `打开遗物时获得白金`,
 | 
			
		||||
    cheats_relicPlatinumCommon: `普通奖励的白金`,
 | 
			
		||||
    cheats_relicPlatinumUncommon: `罕见奖励的白金`,
 | 
			
		||||
    cheats_relicPlatinumRare: `稀有奖励的白金`,
 | 
			
		||||
 | 
			
		||||
    worldState: `世界状态配置`,
 | 
			
		||||
    worldState_creditBoost: `现金加成`,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user