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)
}