From 16b3fc0b15838394f385bc42ac5e6daea79d78fa Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Sat, 5 Jun 2021 17:35:52 +0300 Subject: [PATCH] change Attributes pseudo, closes #381 --- .../price-check/filters/FilterModifier.vue | 3 +- .../price-check/filters/pseudo/attributes.ts | 34 +++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/web/price-check/filters/FilterModifier.vue b/src/web/price-check/filters/FilterModifier.vue index fc318ec3..f44f2bde 100644 --- a/src/web/price-check/filters/FilterModifier.vue +++ b/src/web/price-check/filters/FilterModifier.vue @@ -331,7 +331,8 @@ export default defineComponent({ "Buyer will likely change anointment": "Покупатель, скорее всего, поменяет зачарование", "Select only if price-checking as base item for crafting": "Отмечайте, если проверяете цену в качестве базового предмета для крафта", "1 Empty or Crafted Modifier": "1 свободное или ремесленное свойство", - "Select only if item has 6 modifiers (1 of which is crafted) or if it has 5 modifiers": "Выбирайте, только если у предмета 6 свойств (1 из которых ремесленное) или если у него 5 свойств" + "Select only if item has 6 modifiers (1 of which is crafted) or if it has 5 modifiers": "Выбирайте, только если у предмета 6 свойств (1 из которых ремесленное) или если у него 5 свойств", + "Stat has a relatively small value": "Относительно небольшое значение у мода" } } diff --git a/src/web/price-check/filters/pseudo/attributes.ts b/src/web/price-check/filters/pseudo/attributes.ts index eb7fab85..c84be184 100644 --- a/src/web/price-check/filters/pseudo/attributes.ts +++ b/src/web/price-check/filters/pseudo/attributes.ts @@ -46,28 +46,23 @@ const TO_MAXIMUM_LIFE = stat('+# to maximum Life') const TO_MAXIMUM_MANA = stat('+# to maximum Mana') export function filterAttributes (ctx: FiltersCreationContext) { - const attrs: Array<{ pseudo: ReturnType, total: number, hasFlat: boolean }> = [] + const attrs: Array<{ + pseudo: ReturnType + total: number + hasFlat: boolean + countToAll: number + }> = [] for (const attr of ATTRS) { - const hasFlat = ctx.modifiers.some(m => - attr.stats.includes(m.stat.ref) && m.stat.ref !== TO_ALL_ATTRS) - const total = sumPseudoStats(ctx.modifiers, attr.stats) if (total !== undefined) { - attrs.push({ pseudo: attr.pseudo, total, hasFlat }) + const hasNotToAll = ctx.modifiers.some(m => attr.stats.includes(m.stat.ref) && m.stat.ref !== TO_ALL_ATTRS) + const countToAll = ctx.modifiers.filter(m => m.stat.ref === TO_ALL_ATTRS).length + + attrs.push({ pseudo: attr.pseudo, total, hasFlat: hasNotToAll, countToAll }) } } - for (const attr of attrs) { - if (!attr.hasFlat) continue - - ctx.filters.push({ - ...attr.pseudo, - disabled: true, - ...rollToFilter(attr.total, { neverNegated: true }) - }) - } - const isOnlyToTotal = (attrs.length && attrs.every(a => !a.hasFlat)) if (isOnlyToTotal) { const totalToAllAttrs = sumPseudoStats(ctx.modifiers, [TO_ALL_ATTRS])! @@ -77,6 +72,15 @@ export function filterAttributes (ctx: FiltersCreationContext) { disabled: true, ...rollToFilter(totalToAllAttrs, { neverNegated: true }) }) + } else { + for (const attr of attrs) { + ctx.filters.push({ + ...attr.pseudo, + disabled: true, + hidden: (attr.hasFlat || attr.countToAll >= 2) ? undefined : 'Stat has a relatively small value', + ...rollToFilter(attr.total, { neverNegated: true }) + }) + } } for (const attr of attrs) {