diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 0dd45ef4..c6f16b08 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -1980,9 +1980,59 @@ const challengeRewardsInboxMessages: Record = msg: "/Lotus/Language/Inbox/EvolvingSekharaUnlockBDesc", icon: "/Lotus/Interface/Icons/Npcs/Ordis.png", att: ["/Lotus/Upgrades/Skins/Clan/ZarimanEvolvingSekharaBadgeItemC"] + }, + // In theory, the following should only give what is owned, but based on the limited information I can find, DE may have simply taken the easy way: https://www.reddit.com/r/Warframe/comments/rzlnku/receiving_all_protovyre_armor_evolution_but_only/ + SentEvoArmorRankOne: { + sub: "/Lotus/Language/Inbox/EvolvingArmorUnlockAName", + sndr: "/Lotus/Language/Bosses/Ordis", + msg: "/Lotus/Language/Inbox/EvolvingArmorUnlockADesc", + icon: "/Lotus/Interface/Icons/Npcs/Ordis.png", + att: [ + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2A", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2C", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2L" + ] + }, + SentEvoArmorRankTwo: { + sub: "/Lotus/Language/Inbox/EvolvingArmorUnlockBName", + sndr: "/Lotus/Language/Bosses/Ordis", + msg: "/Lotus/Language/Inbox/EvolvingArmorUnlockBDesc", + icon: "/Lotus/Interface/Icons/Npcs/Ordis.png", + att: [ + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3A", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3C", + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3L" + ] } }; +/*const evolvingWeaponSkins: Record = { + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1A": { + challenge: "SentEvoArmorRankOne", + reward: "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2A" + }, + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1C": { + challenge: "SentEvoArmorRankOne", + reward: "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2C" + }, + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor1L": { + challenge: "SentEvoArmorRankOne", + reward: "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2L" + }, + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2A": { + challenge: "SentEvoArmorRankTwo", + reward: "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3A" + }, + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2C": { + challenge: "SentEvoArmorRankTwo", + reward: "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3C" + }, + "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor2L": { + challenge: "SentEvoArmorRankTwo", + reward: "/Lotus/Upgrades/Skins/Armor/SentEvoArmor/SentEvoArmor3L" + } +};*/ + export const addChallenges = async ( account: TAccountDocument, inventory: TInventoryDatabaseDocument, @@ -2014,6 +2064,7 @@ export const addChallenges = async ( continue; } logger.warn(`ignoring unknown challenge completion`, { challenge: Name, completion }); + dbChallenge.Progress = 0; dbChallenge.Completed = []; } } diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 954099ff..96d80c1a 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -29,11 +29,13 @@ import { ExportWeapons, IDefaultUpgrade, IInboxMessage, + IKey, IMissionReward, IRecipe, TReward } from "warframe-public-export-plus"; import { IMessage } from "@/src/models/inboxModel"; +import { logger } from "@/src/utils/logger"; export type WeaponTypeInternal = | "LongGuns" @@ -210,15 +212,15 @@ export const getKeyChainItems = ({ KeyChain, ChainStage }: IKeyChainRequest): st export const getLevelKeyRewards = ( levelKey: string ): { levelKeyRewards?: IMissionReward; levelKeyRewards2?: TReward[] } => { - if (!(levelKey in ExportKeys)) { - throw new Error(`LevelKey ${levelKey} not found`); - } + const key = ExportKeys[levelKey] as IKey | undefined; - const levelKeyRewards = ExportKeys[levelKey].missionReward; - const levelKeyRewards2 = ExportKeys[levelKey].rewards; + const levelKeyRewards = key?.missionReward; + const levelKeyRewards2 = key?.rewards; if (!levelKeyRewards && !levelKeyRewards2) { - throw new Error(`LevelKey ${levelKey} does not contain either rewards1 or rewards2`); + logger.warn( + `Could not find any reward information for ${levelKey}, gonna have to potentially short-change you` + ); } return { diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index a7219d7f..28e40ec5 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1785,20 +1785,20 @@ function getRandomMissionDrops( if (mission?.Tier == 1) { logger.warn(`non-steel path duviri murmur tier used on steel path?!`); } - /*if (operation eight claw is active) { + if (config.worldState?.eightClaw) { drops.push({ StoreItem: "/Lotus/StoreItems/Types/Gameplay/DuviriMITW/Resources/DuviriMurmurItemEvent", ItemCount: 10 }); - }*/ + } rewardManifests = ["/Lotus/Types/Game/MissionDecks/DuviriEncounterRewards/DuviriMurmurFinalChestRewards"]; } else if (RewardInfo.T == 19) { - /*if (operation eight claw is active) { + if (config.worldState?.eightClaw) { drops.push({ StoreItem: "/Lotus/StoreItems/Types/Gameplay/DuviriMITW/Resources/DuviriMurmurItemEvent", ItemCount: 15 }); - }*/ + } rewardManifests = [ "/Lotus/Types/Game/MissionDecks/DuviriEncounterRewards/DuviriMurmurFinalSteelChestRewards" ]; diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 54fb50ce..d7afa021 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -262,9 +262,9 @@ dict = { worldState_proxyRebellion: `Rebelión Proxy`, worldState_proxyRebellionRewards: `Recompensas de Rebelión Proxy`, worldState_bellyOfTheBeast: `Vientre de la Bestia`, - worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`, + worldState_bellyOfTheBeastProgressOverride: `Progreso del Vientre de la Bestia`, worldState_eightClaw: `Octava Garra`, - worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`, + worldState_eightClawProgressOverride: `Progreso de Octava Garra`, worldState_from_year: `de |VAL|`, worldState_pre_year: `antes de |VAL|`, worldState_week: `[UNTRANSLATED] Week |VAL|`, @@ -312,7 +312,7 @@ dict = { worldState_varziaFullyStocked: `Varzia con stock completo`, worldState_varziaOverride: `Cambio en rotación de Varzia`, - import_importNote: `[UNTRANSLATED] You can provide a full or partial inventory.php or getShip.php response (client representation) here.`, + import_importNote: `Puedes proporcionar una respuesta de inventory.php o getShip.php completa o parcial (representación del cliente) aquí.`, import_importNote2: `Todos los campos compatibles con el importador serán sobrescritos en tu cuenta.`, import_submit: `Enviar`, import_samples: `Muestras:`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 119afa5b..5e11969a 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -10,7 +10,7 @@ dict = { code_loginFail: `Не удалось войти. Проверьте адрес электронной почты и пароль.`, code_regFail: `Не удалось зарегистрироваться. Учетная запись уже существует?`, code_changeNameConfirm: `Какое имя вы хотите установить для своей учетной записи?`, - code_changeNameRetry: `[UNTRANSLATED] |NAME| is already taken.`, + code_changeNameRetry: `|NAME| уже занято.`, code_deleteAccountConfirm: `Вы уверены, что хотите удалить аккаунт |DISPLAYNAME| (|EMAIL|)? Это действие нельзя отменить.`, code_archgun: `Арч-Пушка`, code_melee: `Ближний бой`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index ba0815cc..519f510f 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -10,7 +10,7 @@ dict = { code_loginFail: `Не вдалося увійти. Перевірте адресу електронної пошти та пароль.`, code_regFail: `Не вдалося зареєструватися. Обліковий запис вже існує?`, code_changeNameConfirm: `Яке ім'я ви хочете встановити для свого облікового запису?`, - code_changeNameRetry: `[UNTRANSLATED] |NAME| is already taken.`, + code_changeNameRetry: `|NAME| вже зайнято.`, code_deleteAccountConfirm: `Ви впевнені, що хочете видалити обліковий запис |DISPLAYNAME| (|EMAIL|)? Цю дію не можна скасувати.`, code_archgun: `Арк-гармата`, code_melee: `Холодна зброя`, @@ -247,8 +247,8 @@ dict = { worldState_baroTennoConRelay: `Реле Баро TennoCon`, worldState_starDays: `Зоряні дні`, worldState_galleonOfGhouls: `Гульський галеон`, - worldState_anniversary: `[UNTRANSLATED] Warframe Anniversary`, - worldState_useAnniversaryTagForOldGoals: `[UNTRANSLATED] Use Tag from Warframe Anniversary for old Events`, + worldState_anniversary: `Річниця Warframe`, + worldState_useAnniversaryTagForOldGoals: `Використати Tag з річниці Warframe для старих подій`, worldState_ghoulEmergence: `Зачищення від гулів`, worldState_plagueStar: `Морова зірка`, worldState_dogDays: `Спекотні дні`, @@ -267,7 +267,7 @@ dict = { worldState_eightClawProgressOverride: `Прогрес Восьми кігтів`, worldState_from_year: `з |VAL|`, worldState_pre_year: `до |VAL|`, - worldState_week: `[UNTRANSLATED] Week |VAL|`, + worldState_week: `Тиждень |VAL|`, worldState_incompatibleWith: `Несумісне з:`, enabled: `Увімкнено`, disabled: `Вимкнено`,