Show anointments with Golden/Silver oil (#633)

Co-authored-by: Alexander Drozdov <snosme@gmail.com>
This commit is contained in:
JpnAlone
2022-06-09 18:02:33 +03:00
committed by GitHub
co-authored by Alexander Drozdov
parent 6a3994e218
commit bcbb68f560
2 changed files with 21 additions and 18 deletions
@@ -5,7 +5,7 @@ import { FilterTag, ItemHasEmptyModifier, StatFilter } from './interfaces'
import { filterPseudo } from './pseudo'
import { applyRules as applyAtzoatlRules } from './pseudo/atzoatl-rules'
import { filterItemProp } from './pseudo/item-property'
import { decodeOils } from './pseudo/anointments'
import { decodeOils, applyAnointmentRules } from './pseudo/anointments'
import { StatBetter } from '@/assets/data'
export interface FiltersCreationContext {
@@ -27,13 +27,7 @@ export function createExactStatFilters (
!item.isSynthesised
) return []
const keepByType = [ModifierType.Pseudo, ModifierType.Fractured]
if (
item.category !== ItemCategory.Amulet &&
item.category !== ItemCategory.Ring
) {
keepByType.push(ModifierType.Enchant)
}
const keepByType = [ModifierType.Pseudo, ModifierType.Fractured, ModifierType.Enchant]
if (
!item.influences.length &&
@@ -338,16 +332,8 @@ function finalFilterTweaks (ctx: FiltersCreationContext) {
})
}
if (item.category === ItemCategory.Amulet) {
const anointment = ctx.filters.find(filter => filter.statRef === 'Allocates #')
if (anointment) {
if (item.talismanTier) {
anointment.disabled = false
} else if (!item.isCorrupted && !item.isMirrored) {
anointment.hidden = 'Buyer will likely change anointment'
anointment.disabled = true
}
}
if (item.category === ItemCategory.Amulet || item.category === ItemCategory.Ring) {
applyAnointmentRules(ctx.filters, ctx.item)
}
for (const filter of ctx.filters) {
@@ -1,4 +1,6 @@
import { ModifierType, StatCalculated } from '@/parser/modifiers'
import type { ParsedItem } from '@/parser'
import type { StatFilter } from '../interfaces'
const OILS = [
'Clear Oil',
@@ -40,3 +42,18 @@ export function decodeOils (calc: StatCalculated): string[] | undefined {
return decoded
}
export function applyAnointmentRules (filters: StatFilter[], item: ParsedItem) {
const anointment = filters.find(filter => filter.oils)
if (!anointment) return
if (item.talismanTier) {
anointment.disabled = false
} else if (!item.isCorrupted && !item.isMirrored) {
const oils = anointment.oils!
if (oils[0] !== 'Golden Oil' && oils[0] !== 'Silver Oil') {
anointment.hidden = 'Buyer will likely change anointment'
anointment.disabled = true
}
}
}