diff --git a/renderer/public/data/cmn-Hant/client_strings.js b/renderer/public/data/cmn-Hant/client_strings.js index 6bf25034..118c822f 100644 --- a/renderer/public/data/cmn-Hant/client_strings.js +++ b/renderer/public/data/cmn-Hant/client_strings.js @@ -90,6 +90,7 @@ export default { DELVE_MODS: ['地下的', '地下之', '地底之'], VEILED_MODS: ['被選召的', '教團之'], INCURSION_MODS: ['瓜特利斯的', '柔派克的', '塔普塔特的', '特卡蒂的', '麥塔爾的', '麥塔爾之', '希特克拉多的', '希特克拉多之', '特卡蒂之', '瓜特利斯之', '普希瓦爾之'], + RELIC_UNIQUE: '古典傳奇', // --- CHAT_SYSTEM: /^: (?.+)$/, CHAT_TRADE: /^\$(?:<(?.+?)> )?(?.+?): (?.+)$/, diff --git a/renderer/public/data/en/client_strings.js b/renderer/public/data/en/client_strings.js index b29ff97a..5c021fa2 100644 --- a/renderer/public/data/en/client_strings.js +++ b/renderer/public/data/en/client_strings.js @@ -90,6 +90,7 @@ export default { DELVE_MODS: ['Subterranean', 'of the Underground'], VEILED_MODS: ['Chosen', 'of the Order'], INCURSION_MODS: ["Guatelitzi's", "Xopec's", "Topotante's", "Tacati's", "Matatl's", 'of Matatl', "Citaqualotl's", 'of Citaqualotl', 'of Tacati', 'of Guatelitzi', 'of Puhuarte'], + RELIC_UNIQUE: 'Relic Unique', // --- CHAT_SYSTEM: /^: (?.+)$/, CHAT_TRADE: /^\$(?:<(?.+?)> )?(?.+?): (?.+)$/, diff --git a/renderer/public/data/ru/client_strings.js b/renderer/public/data/ru/client_strings.js index ada5f4a6..6c6e5293 100644 --- a/renderer/public/data/ru/client_strings.js +++ b/renderer/public/data/ru/client_strings.js @@ -124,6 +124,7 @@ export default { 'Плодовитый', 'Плодовитая', 'Плодовитое', 'Плодовитые', 'Плодовитые', 'Плодовитые', 'Ситаквалотля', 'Мататля', 'Такати', 'Гвателитзи', 'Пухварте' ], + RELIC_UNIQUE: 'Уникальная Реликвия', // --- CHAT_SYSTEM: /^: (?.+)$/, CHAT_TRADE: /^\$(?:<(?.+?)> )?(?.+?): (?.+)$/, diff --git a/renderer/src/assets/data/interfaces.ts b/renderer/src/assets/data/interfaces.ts index 8ddd6b37..824deca1 100644 --- a/renderer/src/assets/data/interfaces.ts +++ b/renderer/src/assets/data/interfaces.ts @@ -169,6 +169,7 @@ export interface TranslationDict { DELVE_MODS: string[] VEILED_MODS: string[] INCURSION_MODS: string[] + RELIC_UNIQUE: string // --- CHAT_SYSTEM: RegExp CHAT_TRADE: RegExp diff --git a/renderer/src/parser/ParsedItem.ts b/renderer/src/parser/ParsedItem.ts index ae1f3f4e..2042b230 100644 --- a/renderer/src/parser/ParsedItem.ts +++ b/renderer/src/parser/ParsedItem.ts @@ -52,6 +52,7 @@ export interface ParsedItem { isSynthesised?: boolean isFractured?: boolean isVeiled?: boolean + isRelic?: boolean statsByType: StatCalculated[] newMods: ParsedModifier[] unknownModifiers: Array<{ diff --git a/renderer/src/parser/Parser.ts b/renderer/src/parser/Parser.ts index 425c0261..d6a6e37a 100644 --- a/renderer/src/parser/Parser.ts +++ b/renderer/src/parser/Parser.ts @@ -45,6 +45,7 @@ const parsers: Array = [ parseFlask, parseStackSize, parseCorrupted, + parseRelic, parseInfluence, parseMap, parseSockets, @@ -358,6 +359,17 @@ function parseCorrupted (section: string[], item: ParsedItem) { return 'SECTION_SKIPPED' } +function parseRelic (section: string[], item: ParsedItem) { + if (item.rarity !== ItemRarity.Unique) { + return 'PARSER_SKIPPED' + } + if (section[0] === _$.RELIC_UNIQUE) { + item.isRelic = true + return 'SECTION_PARSED' + } + return 'SECTION_SKIPPED' +} + function parseUnidentified (section: string[], item: ParsedItem) { if (section[0] === _$.UNIDENTIFIED) { item.isUnidentified = true diff --git a/renderer/src/web/price-check/filters/FilterBtnLogical.vue b/renderer/src/web/price-check/filters/FilterBtnLogical.vue index 311044ad..ef223f7c 100644 --- a/renderer/src/web/price-check/filters/FilterBtnLogical.vue +++ b/renderer/src/web/price-check/filters/FilterBtnLogical.vue @@ -80,6 +80,7 @@ export default defineComponent({ "Blight-ravaged": "Разорённая Скверной", "Mirrored": "Отражено", "Not Mirrored": "Не отражено", + "Relic Unique": "Реликвия", "Shaper": "Создатель", "Elder": "Древний", @@ -100,6 +101,7 @@ export default defineComponent({ "Blight-ravaged": "凋落蔓延的", "Mirrored": "已複製", "Not Mirrored": "未複製", + "Relic Unique": "古典傳奇", "Shaper": "塑界者", "Elder": "尊師", diff --git a/renderer/src/web/price-check/filters/FiltersBlock.vue b/renderer/src/web/price-check/filters/FiltersBlock.vue index 335a705b..d2ab119c 100644 --- a/renderer/src/web/price-check/filters/FiltersBlock.vue +++ b/renderer/src/web/price-check/filters/FiltersBlock.vue @@ -35,6 +35,8 @@ :filter="filters.unidentified" text="Unidentified" /> + ({ value: influence, diff --git a/renderer/src/web/price-check/filters/interfaces.ts b/renderer/src/web/price-check/filters/interfaces.ts index 303a8836..56b73d01 100644 --- a/renderer/src/web/price-check/filters/interfaces.ts +++ b/renderer/src/web/price-check/filters/interfaces.ts @@ -34,6 +34,9 @@ export interface ItemFilters { mirrored?: { disabled: boolean } + relic?: { + disabled: boolean + } influences?: Array<{ value: ItemInfluence disabled: boolean diff --git a/renderer/src/web/price-check/trade/pathofexile-trade.ts b/renderer/src/web/price-check/trade/pathofexile-trade.ts index 3ae5f38a..c3b945c8 100644 --- a/renderer/src/web/price-check/trade/pathofexile-trade.ts +++ b/renderer/src/web/price-check/trade/pathofexile-trade.ts @@ -101,7 +101,7 @@ interface TradeRequest { /* eslint-disable camelcase */ type_filters?: { filters: { rarity?: { - option?: 'unique' + option?: 'nonunique' | 'uniquefoil' } category?: { option?: string @@ -284,7 +284,9 @@ export function createTradeRequest (filters: ItemFilters, stats: StatFilter[], i query.type = nameToQuery(activeSearch.baseType, filters) } - if (filters.rarity) { + if (filters.relic && !filters.relic.disabled) { + propSet(query.filters, 'type_filters.filters.rarity.option', 'uniquefoil') + } else if (filters.rarity) { propSet(query.filters, 'type_filters.filters.rarity.option', filters.rarity.value) }