From 6a8625260e2bd20c785fc77869a9693e511f08b7 Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 12:40:41 -0800 Subject: [PATCH 01/11] feat: remove parens from char score --- src/lib/characterPreview/ShowcaseStatScore.tsx | 4 ++-- src/lib/utils/colorUtils.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseStatScore.tsx b/src/lib/characterPreview/ShowcaseStatScore.tsx index 357f72691..ee766410c 100644 --- a/src/lib/characterPreview/ShowcaseStatScore.tsx +++ b/src/lib/characterPreview/ShowcaseStatScore.tsx @@ -15,10 +15,10 @@ export function ShowcaseStatScore(props: { return ( - + {t('CharacterPreview.CharacterScore', { score: scoringResults.totalScore.toFixed(0), - grade: scoringResults.totalScore == 0 ? '' : '(' + scoringResults.totalRating + ')', + grade: scoringResults.totalScore == 0 ? '' : scoringResults.totalRating, })} diff --git a/src/lib/utils/colorUtils.ts b/src/lib/utils/colorUtils.ts index 9f72edf8a..06b25f063 100644 --- a/src/lib/utils/colorUtils.ts +++ b/src/lib/utils/colorUtils.ts @@ -14,7 +14,7 @@ export function showcaseCardBackgroundColor(color: string, darkMode: boolean) { const adjustedColor = chromaColor.set('hsl.s', clampedSaturation) const finalColor = adjustedColor - .luminance(scaleTowardsRange(adjustedColor.luminance(), 0.025, 0.0285, 0.935)) + .luminance(scaleTowardsRange(adjustedColor.luminance(), 0.025, 0.0285, 0.94)) .alpha(darkMode ? 0.70 : 0.765) // console.log(finalColor.luminance()) @@ -87,7 +87,7 @@ export function measureOrangeness(color: string): number { const [hue, saturation, lightness] = chroma(color).hsl() const hueDifference = Math.abs(hue - targetHue) - let orangenessHue = 1 - Math.min(hueDifference / orangeRange, 1) + const orangenessHue = 1 - Math.min(hueDifference / orangeRange, 1) const saturationAdjustment = Math.max(0, saturation - 0.2) // Ignore very desaturated colors From 570b975a401a0dcaad5f3b07bd09d60c0b2dac9d Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 12:53:53 -0800 Subject: [PATCH 02/11] feat: lessen stat letter spacing --- .../ShowcaseCustomizationSidebar.tsx | 2 +- src/lib/tabs/tabRelics/RelicPreview.tsx | 26 ++++++++++--------- .../tabRelics/relicPreview/RelicStatText.tsx | 1 + 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 6049f31b5..406a29695 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -374,7 +374,7 @@ export function getDefaultColor(characterId: string, portraitUrl: string, colorM 1307: ['#a37df4'], // blackswan 1308: ['#8982d6'], // acheron 1309: ['#bb9cf4'], // robin - 1310: ['#8fbdcd'], // firefly + 1310: ['#a3d6e4'], // firefly 1312: ['#b0b7d0'], // misha 1313: ['#7e95e9'], // sunday 1314: ['#8a74dc'], // jade diff --git a/src/lib/tabs/tabRelics/RelicPreview.tsx b/src/lib/tabs/tabRelics/RelicPreview.tsx index 0013da4a3..64da3fa69 100644 --- a/src/lib/tabs/tabRelics/RelicPreview.tsx +++ b/src/lib/tabs/tabRelics/RelicPreview.tsx @@ -154,19 +154,21 @@ function ScoreFooter(props: { score?: RelicScoringResult }) { } = props const scored = score !== undefined - return <> - - - - - + return ( + <> + + + + + + + {(scored) ? t('Score') : ''} + + - {(scored) ? t('Score') : ''} + {(scored) ? `${score.score} (${score.rating})${score.meta?.modified ? ' *' : ''}` : ''} - - {(scored) ? `${score.score} (${score.rating})${score.meta?.modified ? ' *' : ''}` : ''} - - - + + ) } diff --git a/src/lib/tabs/tabRelics/relicPreview/RelicStatText.tsx b/src/lib/tabs/tabRelics/relicPreview/RelicStatText.tsx index aba913c90..246e7bc1c 100644 --- a/src/lib/tabs/tabRelics/relicPreview/RelicStatText.tsx +++ b/src/lib/tabs/tabRelics/relicPreview/RelicStatText.tsx @@ -23,6 +23,7 @@ function generateStyling(language?: Languages) { default: return ` white-space: nowrap; + letter-spacing: -0.2px; ` } } From 68d6f48ad314cff0a2546dca0d7359450f69e7a9 Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 15:00:49 -0800 Subject: [PATCH 03/11] feat: showcase customization prototypes for spd / buff targets --- .../ShowcaseCustomizationSidebar.tsx | 60 ++++++++++++++++--- src/lib/overlays/modals/ScoringModal.tsx | 2 +- src/lib/state/db.ts | 19 ++++++ src/lib/tabs/tabRelics/RelicPreview.tsx | 4 +- src/lib/utils/colorUtils.ts | 2 +- 5 files changed, 75 insertions(+), 12 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 406a29695..38e953df9 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -3,13 +3,14 @@ import { Button, ColorPicker, Flex, Segmented, ThemeConfig } from 'antd' import { AggregationColor } from 'antd/es/color-picker/color' import { GlobalToken } from 'antd/lib/theme/interface' import { DEFAULT_SHOWCASE_COLOR, editShowcasePreferences } from 'lib/characterPreview/showcaseCustomizationController' -import { ShowcaseColorMode } from 'lib/constants/constants' +import { ShowcaseColorMode, Stats } from 'lib/constants/constants' import { SavedSessionKeys } from 'lib/constants/constantsSession' import DB from 'lib/state/db' import { defaultPadding } from 'lib/tabs/tabOptimizer/optimizerForm/grid/optimizerGridColumns' import { HorizontalDivider } from 'lib/ui/Dividers' import { HeaderText } from 'lib/ui/HeaderText' import { organizeColors, selectClosestColor } from 'lib/utils/colorUtils' +import { TsUtils } from 'lib/utils/TsUtils' import { Utils } from 'lib/utils/utils' import { getPalette, PaletteResponse } from 'lib/utils/vibrantFork' import React, { forwardRef, useImperativeHandle, useState } from 'react' @@ -55,6 +56,7 @@ export const ShowcaseCustomizationSidebar = forwardRef(false) const showcaseDarkMode = window.store((s) => s.savedSession.showcaseDarkMode) const showcasePreciseSpd = window.store((s) => s.savedSession.showcasePreciseSpd) + const spdValue = window.store((s) => s.scoringMetadataOverrides[characterId].stats[Stats.SPD]) useImperativeHandle(ref, () => ({ onPortraitLoad: (img: string, characterId: string) => { @@ -121,6 +123,17 @@ export const ShowcaseCustomizationSidebar = forwardRef - @@ -184,6 +196,38 @@ export const ShowcaseCustomizationSidebar = forwardRef + + + + + SPD value + + + + + + + + Targeted buffs + + + - {(scored) ? t('Score') : ''} + {(scored) ? `${t('Score')}${score.meta?.modified ? ' *' : ''}` : ''} - {(scored) ? `${score.score} (${score.rating})${score.meta?.modified ? ' *' : ''}` : ''} + {(scored) ? `${score.score} (${score.rating})` : ''} diff --git a/src/lib/utils/colorUtils.ts b/src/lib/utils/colorUtils.ts index 06b25f063..3c7167523 100644 --- a/src/lib/utils/colorUtils.ts +++ b/src/lib/utils/colorUtils.ts @@ -14,7 +14,7 @@ export function showcaseCardBackgroundColor(color: string, darkMode: boolean) { const adjustedColor = chromaColor.set('hsl.s', clampedSaturation) const finalColor = adjustedColor - .luminance(scaleTowardsRange(adjustedColor.luminance(), 0.025, 0.0285, 0.94)) + .luminance(scaleTowardsRange(adjustedColor.luminance(), 0.025, 0.0285, 0.9375)) .alpha(darkMode ? 0.70 : 0.765) // console.log(finalColor.luminance()) From 0b42cedeeeeefcaac6150d8a097252c4fd276f98 Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 16:02:30 -0800 Subject: [PATCH 04/11] feat: sidebar dps role selector, fix tests --- .../ShowcaseCustomizationSidebar.tsx | 29 +++++++++++++------ src/style/style.css | 4 +-- src/types/metadata.d.ts | 1 + 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 38e953df9..1f821d47b 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -2,6 +2,7 @@ import { CameraOutlined, DownloadOutlined, MoonOutlined, SettingOutlined, SunOut import { Button, ColorPicker, Flex, Segmented, ThemeConfig } from 'antd' import { AggregationColor } from 'antd/es/color-picker/color' import { GlobalToken } from 'antd/lib/theme/interface' +import { usePublish } from 'hooks/usePublish' import { DEFAULT_SHOWCASE_COLOR, editShowcasePreferences } from 'lib/characterPreview/showcaseCustomizationController' import { ShowcaseColorMode, Stats } from 'lib/constants/constants' import { SavedSessionKeys } from 'lib/constants/constantsSession' @@ -50,13 +51,14 @@ export const ShowcaseCustomizationSidebar = forwardRef([]) const globalShowcasePreferences = window.store((s) => s.showcasePreferences) const setGlobalShowcasePreferences = window.store((s) => s.setShowcasePreferences) const [loading, setLoading] = useState(false) const showcaseDarkMode = window.store((s) => s.savedSession.showcaseDarkMode) const showcasePreciseSpd = window.store((s) => s.savedSession.showcasePreciseSpd) - const spdValue = window.store((s) => s.scoringMetadataOverrides[characterId].stats[Stats.SPD]) + const spdValue = window.store((s) => DB.getScoringMetadata(characterId).stats[Stats.SPD]) useImperativeHandle(ref, () => ({ onPortraitLoad: (img: string, characterId: string) => { @@ -127,11 +129,10 @@ export const ShowcaseCustomizationSidebar = forwardRef - SPD value + SPD weight - Targeted buffs + DPS role @@ -319,7 +330,7 @@ function clipboardClicked(elementId: string, action: string, setLoading: (b: boo const shadow = 'rgba(0, 0, 0, 0.25) 0px 0.0625em 0.0625em, rgba(0, 0, 0, 0.25) 0px 0.125em 0.5em, rgba(255, 255, 255, 0.15) 0px 0px 0px 1px inset' -const STANDARD_COLOR = '#2d58b6' +const STANDARD_COLOR = '#628ae9' export function standardShowcasePreferences() { return { diff --git a/src/style/style.css b/src/style/style.css index e5439b0a5..3427f782e 100644 --- a/src/style/style.css +++ b/src/style/style.css @@ -86,8 +86,8 @@ body, } #relicGrid .ag-header { - height: 36px !important; - min-height: 36px !important; + height: 48px !important; + min-height: 48px !important; } .ag-header-cell-label .ag-header-cell-text { diff --git a/src/types/metadata.d.ts b/src/types/metadata.d.ts index db9950f5b..c3eef7a08 100644 --- a/src/types/metadata.d.ts +++ b/src/types/metadata.d.ts @@ -31,6 +31,7 @@ export type SimulationMetadata = { } substats: string[] errRopeEidolon?: number + subDps?: boolean comboAbilities: string[] comboDot: number comboBreak: number From 0dc6e23b2e68304b11db1efde158179fe751df5c Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 16:59:52 -0800 Subject: [PATCH 05/11] fix: unnecessary char preview rerender --- .../ShowcaseCustomizationSidebar.tsx | 22 ++++++++++--------- src/lib/tabs/tabCharacters/CharacterTab.jsx | 13 +++++------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 1f821d47b..05332659e 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -58,7 +58,8 @@ export const ShowcaseCustomizationSidebar = forwardRef(false) const showcaseDarkMode = window.store((s) => s.savedSession.showcaseDarkMode) const showcasePreciseSpd = window.store((s) => s.savedSession.showcasePreciseSpd) - const spdValue = window.store((s) => DB.getScoringMetadata(characterId).stats[Stats.SPD]) + const spdValue = window.store(() => DB.getScoringMetadata(characterId).stats[Stats.SPD]) + const subDps = window.store(() => DB.getScoringMetadata(characterId).simulation?.subDps ?? false) useImperativeHandle(ref, () => ({ onPortraitLoad: (img: string, characterId: string) => { @@ -140,13 +141,14 @@ export const ShowcaseCustomizationSidebar = forwardRef diff --git a/src/lib/tabs/tabCharacters/CharacterTab.jsx b/src/lib/tabs/tabCharacters/CharacterTab.jsx index 3c10b6c63..cd5351698 100644 --- a/src/lib/tabs/tabCharacters/CharacterTab.jsx +++ b/src/lib/tabs/tabCharacters/CharacterTab.jsx @@ -3,7 +3,6 @@ import 'ag-grid-community/styles/ag-grid.css' import 'ag-grid-community/styles/ag-theme-balham.css' import { Button, Dropdown, Flex, Input, Modal, theme, Typography } from 'antd' -import { useSubscribe } from 'hooks/useSubscribe' import { CharacterPreview } from 'lib/characterPreview/CharacterPreview' import { ShowcaseSource } from 'lib/characterPreview/CharacterPreviewComponents' import { arrowKeyGridNavigation } from 'lib/interactions/arrowKeyGridNavigation' @@ -56,12 +55,12 @@ export default function CharacterTab() { console.log('======================================================================= RENDER CharacterTab') - useSubscribe('refreshRelicsScore', () => { - // TODO: understand why setTimeout is needed and refactor - setTimeout(() => { - window.forceCharacterTabUpdate() - }, 100) - }) + // useSubscribe('refreshRelicsScore', () => { + // // TODO: understand why setTimeout is needed and refactor + // setTimeout(() => { + // window.forceCharacterTabUpdate() + // }, 100) + // }) const characterGrid = useRef() // Optional - for accessing Grid's API window.characterGrid = characterGrid From c2cf6f7274bc9f1239985e8d83585a7784f6912a Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 17:30:45 -0800 Subject: [PATCH 06/11] feat: reorder options --- src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 05332659e..7b6cbbd41 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -218,8 +218,8 @@ export const ShowcaseCustomizationSidebar = forwardRef Date: Mon, 20 Jan 2025 21:17:26 -0800 Subject: [PATCH 07/11] feat: add deprioritize buffs logic --- src/lib/characterPreview/CharacterPreview.tsx | 1 + .../ShowcaseCustomizationSidebar.tsx | 12 ++++++------ src/lib/conditionals/conditionalConstants.ts | 1 + src/lib/gpu/wgsl/structComputedStats.wgsl | 1 + src/lib/optimization/computedStatsArray.ts | 1 + src/lib/optimization/context/calculateContext.ts | 2 ++ src/lib/optimization/rotation/comboStateTransform.ts | 4 ++++ src/lib/scoring/characterScorer.ts | 3 +++ src/types/form.d.ts | 1 + src/types/metadata.d.ts | 2 +- src/types/optimizer.d.ts | 1 + 11 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/lib/characterPreview/CharacterPreview.tsx b/src/lib/characterPreview/CharacterPreview.tsx index 12c6e2be9..aab5d090a 100644 --- a/src/lib/characterPreview/CharacterPreview.tsx +++ b/src/lib/characterPreview/CharacterPreview.tsx @@ -93,6 +93,7 @@ export function CharacterPreview(props: { const darkMode = window.store((s) => s.savedSession.showcaseDarkMode) const refreshOnTraceChange = window.store((s) => s.scoringMetadataOverrides[character?.id]?.traces) + const refreshOnDeprioritizeBuffsChange = window.store((s) => s.scoringMetadataOverrides[character?.id]?.simulation?.deprioritizeBuffs) if (!character || (activeKey != AppPages.CHARACTERS && activeKey != AppPages.SHOWCASE)) { return ( diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 7b6cbbd41..fe697b6be 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -59,7 +59,7 @@ export const ShowcaseCustomizationSidebar = forwardRef s.savedSession.showcaseDarkMode) const showcasePreciseSpd = window.store((s) => s.savedSession.showcasePreciseSpd) const spdValue = window.store(() => DB.getScoringMetadata(characterId).stats[Stats.SPD]) - const subDps = window.store(() => DB.getScoringMetadata(characterId).simulation?.subDps ?? false) + const deprioritizeBuffs = window.store(() => DB.getScoringMetadata(characterId).simulation?.deprioritizeBuffs ?? false) useImperativeHandle(ref, () => ({ onPortraitLoad: (img: string, characterId: string) => { @@ -141,13 +141,13 @@ export const ShowcaseCustomizationSidebar = forwardRef diff --git a/src/lib/conditionals/conditionalConstants.ts b/src/lib/conditionals/conditionalConstants.ts index 382151947..7ce77e321 100644 --- a/src/lib/conditionals/conditionalConstants.ts +++ b/src/lib/conditionals/conditionalConstants.ts @@ -174,6 +174,7 @@ export const baseComputedStatsObject = { FUA_ADDITIONAL_DMG: 0, MEMO_BUFF_PRIORITY: 0, + DEPRIORITIZE_BUFFS: 0, MEMO_HP_SCALING: 0, MEMO_HP_FLAT: 0, diff --git a/src/lib/gpu/wgsl/structComputedStats.wgsl b/src/lib/gpu/wgsl/structComputedStats.wgsl index 8660729cd..335a2b287 100644 --- a/src/lib/gpu/wgsl/structComputedStats.wgsl +++ b/src/lib/gpu/wgsl/structComputedStats.wgsl @@ -144,6 +144,7 @@ struct ComputedStats { FUA_ADDITIONAL_DMG: f32, MEMO_BUFF_PRIORITY: f32, + DEPRIORITIZE_BUFFS: f32, MEMO_HP_SCALING: f32, MEMO_HP_FLAT: f32, diff --git a/src/lib/optimization/computedStatsArray.ts b/src/lib/optimization/computedStatsArray.ts index 55a65a64f..6f005f01f 100644 --- a/src/lib/optimization/computedStatsArray.ts +++ b/src/lib/optimization/computedStatsArray.ts @@ -68,6 +68,7 @@ export class ComputedStatsArrayCore { }, buffSingle: (value: number, source: string) => { if (value == 0) return + if (this.a[Key.DEPRIORITIZE_BUFFS]) return if (this.a[Key.MEMO_BUFF_PRIORITY]) { this.m.a[index] += value } else { diff --git a/src/lib/optimization/context/calculateContext.ts b/src/lib/optimization/context/calculateContext.ts index 19b2430bf..701e6bbf7 100644 --- a/src/lib/optimization/context/calculateContext.ts +++ b/src/lib/optimization/context/calculateContext.ts @@ -84,6 +84,8 @@ function generateCharacterMetadataContext(request: Form, context: Partial Date: Mon, 20 Jan 2025 22:12:31 -0800 Subject: [PATCH 08/11] feat: conditional fixes for deprioritized buffs/sunday --- src/lib/characterPreview/CharacterPreview.tsx | 3 +- .../ShowcaseCustomizationSidebar.tsx | 39 +++++++++++-------- src/lib/conditionals/character/1300/Sunday.ts | 12 +++++- src/lib/optimization/computedStatsArray.ts | 2 + src/lib/tabs/tabRelics/RelicFilterBar.tsx | 3 +- 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/src/lib/characterPreview/CharacterPreview.tsx b/src/lib/characterPreview/CharacterPreview.tsx index aab5d090a..efc04d651 100644 --- a/src/lib/characterPreview/CharacterPreview.tsx +++ b/src/lib/characterPreview/CharacterPreview.tsx @@ -32,7 +32,7 @@ import { ShowcaseLightConeLarge, ShowcaseLightConeLargeName, ShowcaseLightConeSm import { ShowcasePortrait } from 'lib/characterPreview/ShowcasePortrait' import { ShowcaseRelicsPanel } from 'lib/characterPreview/ShowcaseRelicsPanel' import { ShowcaseStatScore } from 'lib/characterPreview/ShowcaseStatScore' -import { COMBAT_STATS, NONE_SCORE, ShowcaseColorMode, SIMULATION_SCORE } from 'lib/constants/constants' +import { COMBAT_STATS, NONE_SCORE, ShowcaseColorMode, SIMULATION_SCORE, Stats } from 'lib/constants/constants' import { SavedSessionKeys } from 'lib/constants/constantsSession' import { defaultGap, middleColumnWidth, parentH } from 'lib/constants/constantsUi' import RelicModal from 'lib/overlays/modals/RelicModal' @@ -92,6 +92,7 @@ export function CharacterPreview(props: { const activeKey = window.store((s) => s.activeKey) const darkMode = window.store((s) => s.savedSession.showcaseDarkMode) + const refreshOnSpdValueChange = window.store((s) => s.scoringMetadataOverrides[character?.id]?.stats[Stats.SPD]) const refreshOnTraceChange = window.store((s) => s.scoringMetadataOverrides[character?.id]?.traces) const refreshOnDeprioritizeBuffsChange = window.store((s) => s.scoringMetadataOverrides[character?.id]?.simulation?.deprioritizeBuffs) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index fe697b6be..f4c4a1609 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -58,8 +58,9 @@ export const ShowcaseCustomizationSidebar = forwardRef(false) const showcaseDarkMode = window.store((s) => s.savedSession.showcaseDarkMode) const showcasePreciseSpd = window.store((s) => s.savedSession.showcasePreciseSpd) - const spdValue = window.store(() => DB.getScoringMetadata(characterId).stats[Stats.SPD]) - const deprioritizeBuffs = window.store(() => DB.getScoringMetadata(characterId).simulation?.deprioritizeBuffs ?? false) + const scoringMetadata = window.store(() => DB.getScoringMetadata(characterId)) + const spdValue = window.store(() => scoringMetadata.stats[Stats.SPD]) + const deprioritizeBuffs = window.store(() => scoringMetadata.simulation?.deprioritizeBuffs ?? false) useImperativeHandle(ref, () => ({ onPortraitLoad: (img: string, characterId: string) => { @@ -225,22 +226,26 @@ export const ShowcaseCustomizationSidebar = forwardRef + {scoringMetadata.simulation && + <> + + + + DPS role + + + + + } - - - - DPS role - - - - if (!(e >= 6 && r.e6CrToCdConversion)) { + if (!(e >= 6 && r.e6CrToCdConversion && !x.a[Key.DEPRIORITIZE_BUFFS])) { return } @@ -190,6 +190,10 @@ if (${wgslFalse(e >= 6 && r.e6CrToCdConversion)}) { return; } +if (x.DEPRIORITIZE_BUFFS > 0) { + return; +} + let cr = (*p_m).CR; if (cr > 1.00) { @@ -213,7 +217,7 @@ if (cr > 1.00) { }, effect: function (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) { const r = action.teammateCharacterConditionals as Conditionals - if (!(e >= 6 && r.e6CrToCdConversion)) { + if (!(e >= 6 && r.e6CrToCdConversion && !x.a[Key.DEPRIORITIZE_BUFFS])) { return } @@ -231,6 +235,10 @@ if (${wgslFalse(e >= 6 && r.e6CrToCdConversion)}) { return; } +if (x.DEPRIORITIZE_BUFFS > 0) { + return; +} + let cr = (*p_x).CR; if (cr > 1.00) { diff --git a/src/lib/optimization/computedStatsArray.ts b/src/lib/optimization/computedStatsArray.ts index 6f005f01f..fe792d47d 100644 --- a/src/lib/optimization/computedStatsArray.ts +++ b/src/lib/optimization/computedStatsArray.ts @@ -77,12 +77,14 @@ export class ComputedStatsArrayCore { }, buffMemo: (value: number, source: string) => { if (value == 0) return + if (this.a[Key.DEPRIORITIZE_BUFFS]) return if (this.m) { this.m.a[index] += value } }, buffDual: (value: number, source: string) => { if (value == 0) return + if (this.a[Key.DEPRIORITIZE_BUFFS]) return this.a[index] += value if (this.m) { diff --git a/src/lib/tabs/tabRelics/RelicFilterBar.tsx b/src/lib/tabs/tabRelics/RelicFilterBar.tsx index 872f472c4..4dd9e2901 100644 --- a/src/lib/tabs/tabRelics/RelicFilterBar.tsx +++ b/src/lib/tabs/tabRelics/RelicFilterBar.tsx @@ -1,7 +1,6 @@ import { ClearOutlined } from '@ant-design/icons' import { Button, Flex, Select, theme, Tooltip, Typography } from 'antd' import CheckableTag from 'antd/lib/tag/CheckableTag' -import { useSubscribe } from 'hooks/useSubscribe' import { Constants, Sets, SetsRelics, setToId, Stats, UnreleasedSets } from 'lib/constants/constants' import { Hint } from 'lib/interactions/hint' import { SettingOptions } from 'lib/overlays/drawers/SettingsDrawer' @@ -150,7 +149,7 @@ export default function RelicFilterBar(props: { }, 100) } - useSubscribe('refreshRelicsScore', window.refreshRelicsScore) + // useSubscribe('refreshRelicsScore', window.refreshRelicsScore) // Kick off an initial calculation to populate value columns. Though empty dependencies // are warned about, we genuinely only want to do this on first component render (updates From 58eb4cd01610cd122a6c3a71fd064d7210f4dd88 Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 23:14:27 -0800 Subject: [PATCH 09/11] feat: change buffs label --- src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index f4c4a1609..88ec9cac4 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -231,13 +231,13 @@ export const ShowcaseCustomizationSidebar = forwardRef - DPS role + Targeted buffs Date: Mon, 20 Jan 2025 23:17:19 -0800 Subject: [PATCH 10/11] feat: cleanup --- src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx | 2 +- src/lib/scoring/characterScorer.ts | 1 + src/lib/tabs/tabCharacters/CharacterTab.jsx | 7 ------- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx index 88ec9cac4..59a23d9ee 100644 --- a/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx +++ b/src/lib/characterPreview/ShowcaseCustomizationSidebar.tsx @@ -146,7 +146,7 @@ export const ShowcaseCustomizationSidebar = forwardRef { - // // TODO: understand why setTimeout is needed and refactor - // setTimeout(() => { - // window.forceCharacterTabUpdate() - // }, 100) - // }) - const characterGrid = useRef() // Optional - for accessing Grid's API window.characterGrid = characterGrid From 2ad495fda7754492e0ac4449c5e89af95ef5c578 Mon Sep 17 00:00:00 2001 From: Fribbels Date: Mon, 20 Jan 2025 23:31:15 -0800 Subject: [PATCH 11/11] feat: add default subdps: aventurine fugue serval tribbie --- src/lib/state/metadata.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/lib/state/metadata.ts b/src/lib/state/metadata.ts index d11a21985..ab676f688 100644 --- a/src/lib/state/metadata.ts +++ b/src/lib/state/metadata.ts @@ -2221,6 +2221,7 @@ function getScoringMetadata(): Record { comboDot: 0, comboBreak: 0, errRopeEidolon: 0, + deprioritizeBuffs: true, relicSets: [ [Sets.PioneerDiverOfDeadWaters, Sets.PioneerDiverOfDeadWaters], [Sets.ScholarLostInErudition, Sets.ScholarLostInErudition], @@ -4786,6 +4787,7 @@ function getScoringMetadata(): Record { comboAbilities: [NULL, ULT, BASIC, BASIC, BASIC], comboDot: 0, comboBreak: 3, + deprioritizeBuffs: true, relicSets: [ [Sets.ThiefOfShootingMeteor, Sets.ThiefOfShootingMeteor], [Sets.EagleOfTwilightLine, Sets.EagleOfTwilightLine], @@ -5081,6 +5083,7 @@ function getScoringMetadata(): Record { comboAbilities: [NULL, ULT, BASIC, FUA, BASIC, FUA], comboDot: 0, comboBreak: 0, + deprioritizeBuffs: true, relicSets: [ [Sets.PioneerDiverOfDeadWaters, Sets.PioneerDiverOfDeadWaters], [Sets.KnightOfPurityPalace, Sets.KnightOfPurityPalace], @@ -6806,6 +6809,7 @@ function getScoringMetadata(): Record { comboDot: 0, comboBreak: 0, errRopeEidolon: 0, + deprioritizeBuffs: true, relicSets: [ [Sets.LongevousDisciple, Sets.LongevousDisciple], [Sets.GeniusOfBrilliantStars, Sets.GeniusOfBrilliantStars],