diff --git a/src/assets/data/en/client_strings.ts b/src/assets/data/en/client_strings.ts index 77741f24..ed3b00ab 100644 --- a/src/assets/data/en/client_strings.ts +++ b/src/assets/data/en/client_strings.ts @@ -76,7 +76,8 @@ const dict = { 'SUFFIX_MODIFIER': 'Suffix Modifier', 'CRAFTED_PREFIX': 'Master Crafted Prefix Modifier', 'CRAFTED_SUFFIX': 'Master Crafted Suffix Modifier', - 'UNSCALABLE_VALUE': ' — Unscalable Value' + 'UNSCALABLE_VALUE': ' — Unscalable Value', + 'CORRUPTED_IMPLICIT': 'Corruption Implicit Modifier' } export default dict diff --git a/src/assets/data/ru/client_strings.ts b/src/assets/data/ru/client_strings.ts index e68b36df..87a0fb66 100644 --- a/src/assets/data/ru/client_strings.ts +++ b/src/assets/data/ru/client_strings.ts @@ -78,7 +78,8 @@ const dict: TranslationDict = { 'SUFFIX_MODIFIER': 'Суффикс', 'CRAFTED_PREFIX': 'Мастерский префикс', 'CRAFTED_SUFFIX': 'Мастерский суффикс', - 'UNSCALABLE_VALUE': ' — Неизменяемое значение' + 'UNSCALABLE_VALUE': ' — Неизменяемое значение', + 'CORRUPTED_IMPLICIT': 'Осквернённое собственное свойство' } export default dict diff --git a/src/parser/advanced-mod-desc.ts b/src/parser/advanced-mod-desc.ts index bee1999f..51b9f7ec 100644 --- a/src/parser/advanced-mod-desc.ts +++ b/src/parser/advanced-mod-desc.ts @@ -12,7 +12,7 @@ export interface ParsedModifier { export interface ModifierInfo { type: ModifierType - generation?: 'suffix' | 'prefix' + generation?: 'suffix' | 'prefix' | 'corrupted' name?: string tier?: number rank?: number @@ -39,6 +39,8 @@ export function parseModInfoLine (line: string, type: ModifierType): ModifierInf case _$.SUFFIX_MODIFIER: case _$.CRAFTED_SUFFIX: generation = 'suffix'; break + case _$.CORRUPTED_IMPLICIT: + generation = 'corrupted'; break } const name = match.groups!.name || undefined @@ -168,6 +170,7 @@ export function sumStatsFromMods (mods: readonly ParsedModifier[]): LegacyItemMo trade: dbStatA.trade, string: translation.string, type: modA.info.type, + corrupted: (modA.info.generation === 'corrupted') || undefined, negate: translation.negate, value: statA.roll?.value, bounds: statA.roll && { min: statA.roll.min, max: statA.roll.max } @@ -195,6 +198,7 @@ export function sumStatsFromMods (mods: readonly ParsedModifier[]): LegacyItemMo trade: dbStatA.trade, string: translation.string, type: modA.info.type, + corrupted: (modA.info.generation === 'corrupted') || undefined, negate: translation.negate, value: roll.value, bounds: { diff --git a/src/parser/modifiers.ts b/src/parser/modifiers.ts index a2e8c393..0c604815 100644 --- a/src/parser/modifiers.ts +++ b/src/parser/modifiers.ts @@ -19,6 +19,7 @@ export interface LegacyItemModifier extends max: number } type: ModifierType + corrupted?: true } export { LegacyItemModifier as ItemModifier } diff --git a/src/web/price-check/filters/FilterModifier.vue b/src/web/price-check/filters/FilterModifier.vue index f44f2bde..48336833 100644 --- a/src/web/price-check/filters/FilterModifier.vue +++ b/src/web/price-check/filters/FilterModifier.vue @@ -41,6 +41,8 @@ class="text-xs leading-none px-1 rounded" :class="`mod-type-${filter.type}`">{{ t(filter.type) }} {{ t('variant') }} + {{ t('corrupted') }}
{ - if (props.filter.boundMin !== undefined || props.filter.variant) { + if (props.filter.boundMin !== undefined || props.filter.variant || props.filter.corrupted) { return false } return props.filter.type !== 'armour' && @@ -204,6 +206,10 @@ export default defineComponent({ @apply bg-yellow-700 text-yellow-100 } +.mod-type-corrupted { + @apply bg-red-700 text-red-100 +} + .mod-type-fractured { @apply bg-yellow-400 text-black } @@ -320,6 +326,7 @@ export default defineComponent({ "Map is not occupied by Elder Guardian": "Карта не захвачена Хранителем Древнего", "Block: #%": "Блок: #%", "variant": "вариант", + "corrupted": "осквернено", "pseudo": "псевдо", "Roll is not variable": "Ролл не варьируется", "Elemental damage is not the main source of DPS": "Стихийный урон не основной источник ДПСа", diff --git a/src/web/price-check/filters/create-stat-filters.ts b/src/web/price-check/filters/create-stat-filters.ts index 47604373..8a2b1666 100644 --- a/src/web/price-check/filters/create-stat-filters.ts +++ b/src/web/price-check/filters/create-stat-filters.ts @@ -88,6 +88,7 @@ export function itemModToFilter (mod: ItemModifier, item: ParsedItem) { text: mod.string, type: mod.type, option: mod.trade.option, + corrupted: mod.corrupted, roll: undefined, disabled: true, min: undefined, diff --git a/src/web/price-check/filters/interfaces.ts b/src/web/price-check/filters/interfaces.ts index a9fcc840..83f840cb 100644 --- a/src/web/price-check/filters/interfaces.ts +++ b/src/web/price-check/filters/interfaces.ts @@ -87,6 +87,7 @@ export interface StatFilter { readonly boundMin?: number readonly boundMax?: number readonly variant?: true + readonly corrupted?: true readonly hidden?: string readonly invert?: boolean disabled: boolean diff --git a/src/web/price-check/filters/unique-roll.ts b/src/web/price-check/filters/unique-roll.ts index 7e341ba2..427159be 100644 --- a/src/web/price-check/filters/unique-roll.ts +++ b/src/web/price-check/filters/unique-roll.ts @@ -22,7 +22,7 @@ export function uniqueModFilterPartial ( filter.min = filter.defaultMin filter.max = filter.defaultMax filter.roll = mod.value - if (!filter.variant) { + if (!filter.variant && !filter.corrupted) { filter.hidden = 'Roll is not variable' } } else {