- Character priority filter
+ Allow equipped relics
{' '}
- - When this option is enabled, the character may only steal relics from lower priority characters. The optimizer will ignore relics equipped by higher priority characters on the list. Change character ranks from the priority selector or by dragging them on the Characters page.
+ - When enabled, the optimizer will allow using currently equipped by a character for the search. Otherwise equipped relics are excluded
- Boost main stat
+ Character priority filter
{' '}
- - Calculates relic mains stats as if they were this level (or their max if they can't reach this level) if they are currently below it. Substats are not changed accordingly, so builds with lower level relics may be stronger once you level them.
+ - When this option is enabled, the character may only steal relics from lower priority characters. The optimizer will ignore relics equipped by higher priority characters on the list. Change character ranks from the priority selector or by dragging them on the Characters page.
Keep current relics
@@ -143,9 +143,9 @@ export const Hint = {
- The character must use its currently equipped items, and the optimizer will try to fill in empty slots
- Include equipped relics
+ Ignore wearer restrictions
{' '}
- - When enabled, the optimizer will allow using currently equipped by a character for the search. Otherwise equipped relics are excluded
+ - When this option is enabled, the character will ignore the wearer restrictions of relics
Priority
@@ -158,10 +158,15 @@ export const Hint = {
- Select specific characters' equipped relics to exclude for the search. This setting overrides the priority filter
- Enhance / grade
+ Enhance / Rarity
{' '}
- Select the minimum enhance to search for and minimum stars for relics to include
+
+ Boost main stat
+ {' '}
+ - Calculates relic mains stats as if they were this level (or their max if they can't reach this level) if they are currently below it. Substats are not changed accordingly, so builds with lower level relics may be stronger once you level them.
+
),
}
diff --git a/src/lib/optimizer/optimizer.js b/src/lib/optimizer/optimizer.js
index 5a28fb8b2..2b9a5e279 100644
--- a/src/lib/optimizer/optimizer.js
+++ b/src/lib/optimizer/optimizer.js
@@ -46,6 +46,8 @@ export const Optimizer = {
relics = RelicFilters.applyRankFilter(request, relics)
relics = RelicFilters.applyExcludeFilter(request, relics)
+ relics = RelicFilters.applyRestrictionFilter(request, relics)
+
// Pre-split filters
const preFilteredRelicsByPart = RelicFilters.splitRelicsByPart(relics)
@@ -62,7 +64,7 @@ export const Optimizer = {
return [relics, preFilteredRelicsByPart]
},
- optimize: function(request) {
+ optimize: function (request) {
CANCEL = false
window.store.getState().setPermutationsSearched(0)
diff --git a/src/lib/relicFilters.js b/src/lib/relicFilters.js
index bff8589ca..c382080c0 100644
--- a/src/lib/relicFilters.js
+++ b/src/lib/relicFilters.js
@@ -135,6 +135,12 @@ export const RelicFilters = {
return ret
},
+ applyRestrictionFilter: (request, relics) => {
+ if (request.ignoreRestrictions) return relics
+ const ret = relics.filter((x) => !(x.restriction.list).includes(request.characterId) || !x.restriction.enabled)
+ return ret
+ },
+
applyGradeFilter: (request, relics) => {
return relics.filter((x) => x.grade ? x.grade >= request.grade : true)
},
diff --git a/src/lib/relicModalController.ts b/src/lib/relicModalController.ts
index 25a44cbf8..9e6f68ce6 100644
--- a/src/lib/relicModalController.ts
+++ b/src/lib/relicModalController.ts
@@ -45,6 +45,8 @@ export type RelicForm = {
substatValue2: number
substatValue3: number
equippedBy: string
+ restrictionEnabled: boolean
+ restrictionList: string[]
}
export function validateRelic(relicForm: RelicForm): Relic | void {
@@ -170,6 +172,10 @@ export function validateRelic(relicForm: RelicForm): Relic | void {
}
relic.substats = substats
RelicAugmenter.augment(relic)
+ relic.restriction = {
+ enabled: relicForm.restrictionEnabled,
+ list: relicForm.restrictionList,
+ }
return relic
}
diff --git a/src/lib/renderer.jsx b/src/lib/renderer.jsx
index 5981d0d31..65eb0cd13 100644
--- a/src/lib/renderer.jsx
+++ b/src/lib/renderer.jsx
@@ -1,5 +1,5 @@
import { Flex, Image, Tooltip } from 'antd'
-import { CheckCircleFilled, CloseCircleFilled } from '@ant-design/icons'
+import { CheckCircleFilled, CloseCircleFilled, FilterTwoTone } from '@ant-design/icons'
import { Constants, StatsToReadableShort } from './constants.ts'
import { Assets } from './assets'
import { Utils } from './utils'
@@ -193,6 +193,17 @@ export const Renderer = {
: