change Attributes pseudo, closes #381

This commit is contained in:
Alexander Drozdov
2021-06-05 17:35:52 +03:00
parent 5b21a4e10b
commit 16b3fc0b15
2 changed files with 21 additions and 16 deletions
@@ -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": "Относительно небольшое значение у мода"
}
}
</i18n>
@@ -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<typeof pseudoStat>, total: number, hasFlat: boolean }> = []
const attrs: Array<{
pseudo: ReturnType<typeof pseudoStat>
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) {