mirror of
https://github.com/Kvan7/Exiled-Exchange-2.git
synced 2026-09-29 08:05:58 +00:00
fallback to exact
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { ParsedItem, ItemRarity } from '@/parser'
|
||||
import { ItemModifier } from '@/parser/modifiers'
|
||||
import { ItemModifier, ModifierType } from '@/parser/modifiers'
|
||||
import { uniqueModFilterPartial } from './unique-roll'
|
||||
import { rollToFilter } from './util'
|
||||
import { StatFilter } from './interfaces'
|
||||
@@ -52,9 +52,9 @@ export function itemModToFilter (mod: ItemModifier, item: ParsedItem) {
|
||||
|
||||
if (
|
||||
item.rarity === ItemRarity.Unique &&
|
||||
uniqueModFilterPartial(item, mod, filter)
|
||||
mod.type !== ModifierType.Enchant
|
||||
) {
|
||||
// ok. parsed as stat on unique item
|
||||
uniqueModFilterPartial(item, mod, filter)
|
||||
} else {
|
||||
itemModFilterPartial(mod, filter)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { rollToFilter, percentRollDelta } from '../util'
|
||||
import { percentRollDelta } from '../util'
|
||||
import { INTERNAL_TRADE_ID, StatFilter } from '../interfaces'
|
||||
import { FiltersCreationContext, itemModToFilter } from '../create-stat-filters'
|
||||
import { propAt20Quality, variablePropAt20Quality, QUALITY_STATS } from './calc-q20'
|
||||
@@ -157,7 +157,11 @@ function propToFilter (
|
||||
text,
|
||||
type,
|
||||
disabled: true,
|
||||
...rollToFilter(totalQ20, { neverNegated: true })
|
||||
defaultMin: totalQ20,
|
||||
defaultMax: totalQ20,
|
||||
min: totalQ20,
|
||||
max: undefined,
|
||||
roll: totalQ20
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,15 +22,15 @@ export function uniqueModFilterPartial (
|
||||
item: ParsedItem,
|
||||
mod: ItemModifier,
|
||||
filter: Writeable<StatFilter>
|
||||
): boolean {
|
||||
): void {
|
||||
const uniqueInfo = Uniques.get(`${item.name} ${item.baseType}`)
|
||||
if (!uniqueInfo) return false
|
||||
if (!uniqueInfo) return fallbackToExact(mod, filter)
|
||||
|
||||
const modInfo = uniqueInfo.stats.find(stat =>
|
||||
stat.text === mod.stat.ref &&
|
||||
stat.implicit === (mod.type === 'implicit' ? true : undefined)
|
||||
)
|
||||
if (!modInfo) return false
|
||||
if (!modInfo) return fallbackToExact(mod, filter)
|
||||
|
||||
filter.variant = modInfo.variant
|
||||
|
||||
@@ -40,7 +40,7 @@ export function uniqueModFilterPartial (
|
||||
}
|
||||
|
||||
// it may be catalysts or stale data after patch
|
||||
if (!isWithinBounds(mod, modInfo)) return false
|
||||
if (!isWithinBounds(mod, modInfo)) return fallbackToExact(mod, filter)
|
||||
|
||||
if (isConstantMod(modInfo)) {
|
||||
filter.defaultMin = getRollAsSingleNumber(mod.values)
|
||||
@@ -61,6 +61,13 @@ export function uniqueModFilterPartial (
|
||||
filter.defaultMin = Math.max(percentRollDelta(roll, (filter.boundMax - filter.boundMin), -percent, Math.floor), filter.boundMin)
|
||||
filter.defaultMax = Math.min(percentRollDelta(roll, (filter.boundMax - filter.boundMin), +percent, Math.ceil), filter.boundMax)
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
function fallbackToExact (mod: ItemModifier, filter: Writeable<StatFilter>) {
|
||||
if (!mod.values) return
|
||||
|
||||
filter.roll = getRollAsSingleNumber(mod.values)
|
||||
filter.defaultMin = filter.roll
|
||||
filter.defaultMax = filter.roll
|
||||
filter.min = filter.roll
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user