diff --git a/libs/gi/page-artifacts/src/DupModal.tsx b/libs/gi/page-artifacts/src/DupModal.tsx
index 4faf747fa2..9e631b2aaf 100644
--- a/libs/gi/page-artifacts/src/DupModal.tsx
+++ b/libs/gi/page-artifacts/src/DupModal.tsx
@@ -38,7 +38,7 @@ export default function DupModal({
alignItems="center"
>
- {t`showDup`}
+ {t('showDup')}
}
action={
@@ -111,7 +111,9 @@ function DupContent({
))}
{!dupList.length && (
- {t`noDupAlert`}
+
+ {t('noDupAlert')}
+
)}
)
diff --git a/libs/gi/page-artifacts/src/index.tsx b/libs/gi/page-artifacts/src/index.tsx
index 3b5caf8367..cb76fac7a4 100644
--- a/libs/gi/page-artifacts/src/index.tsx
+++ b/libs/gi/page-artifacts/src/index.tsx
@@ -139,7 +139,7 @@ export default function PageArtifact() {
@@ -176,7 +176,9 @@ export default function PageArtifact() {
onClick={() => setArtifactIdToEdit('new')}
color="info"
startIcon={}
- >{t`addNew`}
+ >
+ {t('addNew')}
+
}
- >{t`showDup`}
+ >
+ {t('showDup')}
+
setnewCharacter(true)}
color="info"
startIcon={}
- >{t`addNew`}
+ >
+ {t('addNew')}
+
{t`inventoryCard.title`}}
+ title={{t('inventoryCard.title')}}
avatar={}
/>
@@ -108,7 +108,7 @@ export default function InventoryCard() {
- {t(`ui:tabs.characters`)} {characterTotal}
+ {t('ui:tabs.characters')} {characterTotal}
}
icon={}
@@ -145,7 +145,7 @@ export default function InventoryCard() {
- {t(`ui:tabs.weapons`)} {weaponTotal}
+ {t('ui:tabs.weapons')} {weaponTotal}
}
icon={}
@@ -182,7 +182,7 @@ export default function InventoryCard() {
- {t(`ui:tabs.artifacts`)} {artifactTotal}
+ {t('ui:tabs.artifacts')} {artifactTotal}
}
icon={}
@@ -222,7 +222,7 @@ export default function InventoryCard() {
icon={}
label={
- {t(`ui:tabs.teams`)} {numTeams}
+ {t('ui:tabs.teams')} {numTeams}
}
/>
@@ -232,7 +232,7 @@ export default function InventoryCard() {
icon={}
label={
- {t(`ui:tabs.loadouts`)} {numLoadout}
+ {t('ui:tabs.loadouts')} {numLoadout}
}
/>
@@ -242,7 +242,7 @@ export default function InventoryCard() {
icon={}
label={
- {t(`ui:tabs.builds`)} {numBuilds}
+ {t('ui:tabs.builds')} {numBuilds}
}
/>
diff --git a/libs/gi/page-home/src/QuickLinksCard.tsx b/libs/gi/page-home/src/QuickLinksCard.tsx
index 9da8ae3834..7ae2702283 100644
--- a/libs/gi/page-home/src/QuickLinksCard.tsx
+++ b/libs/gi/page-home/src/QuickLinksCard.tsx
@@ -40,12 +40,12 @@ const genshin_optimizer_links = [
url: process.env['NX_URL_GITHUB_GO'],
},
{
- title: (t: TFunction) => t`quickLinksCard.buttons.patchNotes.title`,
+ title: (t: TFunction) => t('quickLinksCard.buttons.patchNotes.title'),
icon: ,
url: `${process.env['NX_URL_GITHUB_GO']}/releases`,
},
{
- title: (t: TFunction) => t`quickLinksCard.buttons.tyGuide.title`,
+ title: (t: TFunction) => t('quickLinksCard.buttons.tyGuide.title'),
icon: ,
url: process.env['NX_URL_YOUTUBE_TUTPL'],
},
@@ -76,22 +76,22 @@ const frzyc_links = [
const other_links = [
{
- title: (t: TFunction) => t`quickLinksCard.buttons.scanners.title`,
+ title: (t: TFunction) => t('quickLinksCard.buttons.scanners.title'),
icon: ,
to: '/scanner',
},
{
- title: (t: TFunction) => t`quickLinksCard.buttons.kqm.title`,
+ title: (t: TFunction) => t('quickLinksCard.buttons.kqm.title'),
icon: ,
url: process.env['NX_URL_WEBSITE_KQM'],
},
{
- title: (t: TFunction) => t`quickLinksCard.buttons.devDiscord.title`,
+ title: (t: TFunction) => t('quickLinksCard.buttons.devDiscord.title'),
icon: ,
url: process.env['NX_URL_DISCORD_GDEV'],
},
{
- title: (t: TFunction) => t`quickLinksCard.buttons.good.title`,
+ title: (t: TFunction) => t('quickLinksCard.buttons.good.title'),
icon: ,
to: '/doc',
},
@@ -102,7 +102,9 @@ export default function QuickLinksCard() {
return (
{t`quickLinksCard.title`}}
+ title={
+ {t('quickLinksCard.title')}
+ }
avatar={}
/>
diff --git a/libs/gi/page-home/src/TeamCard.tsx b/libs/gi/page-home/src/TeamCard.tsx
index 72339d5b69..795b8dec1d 100644
--- a/libs/gi/page-home/src/TeamCard.tsx
+++ b/libs/gi/page-home/src/TeamCard.tsx
@@ -26,77 +26,77 @@ const team = [
{
name: 'frzyc',
img: frzyc,
- title: (t) => t`teamCard.jobTitle.leadDev`,
+ title: (t) => t('teamCard.jobTitle.leadDev'),
subtitle: 'Insomniac in Chief',
url: process.env.NX_URL_GITHUB_FRZYC,
},
{
name: 'Lantua',
img: lantua,
- title: (t) => t`teamCard.jobTitle.dev`,
+ title: (t) => t('teamCard.jobTitle.dev'),
subtitle: 'Copium Calculator',
url: process.env.NX_URL_GITHUB_LANTUA,
},
{
name: 'Van',
img: van,
- title: (t) => t`teamCard.jobTitle.dev`,
+ title: (t) => t('teamCard.jobTitle.dev'),
subtitle: 'Waverider Stowaway',
url: process.env.NX_URL_GITHUB_VAN,
},
{
name: '✦ Sin ✦',
img: sin,
- title: (t) => t`teamCard.jobTitle.admin`,
+ title: (t) => t('teamCard.jobTitle.admin'),
subtitle: 'Ohh, shiny.',
url: '',
},
{
name: 'Stain',
img: stain,
- title: (t) => t`teamCard.jobTitle.admin`,
+ title: (t) => t('teamCard.jobTitle.admin'),
subtitle: 'Australia Man',
url: '',
},
{
name: 'yae!',
img: yae,
- title: (t) => t`teamCard.jobTitle.dev`,
+ title: (t) => t('teamCard.jobTitle.dev'),
subtitle: 'eeeqeee',
url: '',
},
{
name: 'tooflesswulf',
img: toofless,
- title: (t) => t`teamCard.jobTitle.dev`,
+ title: (t) => t('teamCard.jobTitle.dev'),
subtitle: 'Mad Mathematician',
url: '',
},
{
name: 'Qbe',
img: qbe,
- title: (t) => t`teamCard.jobTitle.dev`,
+ title: (t) => t('teamCard.jobTitle.dev'),
subtitle: 'Irminsul Debugger',
url: '',
},
{
name: 'Polomo',
img: polomo,
- title: (t) => t`teamCard.jobTitle.translator`,
+ title: (t) => t('teamCard.jobTitle.translator'),
subtitle: 'Director of Text',
url: '',
},
{
name: 'Vlad',
img: vlad,
- title: (t) => t`teamCard.jobTitle.TC`,
+ title: (t) => t('teamCard.jobTitle.TC'),
subtitle: 'Spreadsheet Renegade',
url: '',
},
{
name: 'D1firehail',
img: d1,
- title: (t) => t`teamCard.jobTitle.mod`,
+ title: (t) => t('teamCard.jobTitle.mod'),
subtitle: 'Scanner Spy',
url: '',
},
@@ -107,7 +107,7 @@ export default function TeamCard() {
return (
{t`teamCard.title`}}
+ title={{t('teamCard.title')}}
avatar={}
/>
diff --git a/libs/gi/page-home/src/VidGuideCard.tsx b/libs/gi/page-home/src/VidGuideCard.tsx
index d6409466c7..66a1c22c8e 100644
--- a/libs/gi/page-home/src/VidGuideCard.tsx
+++ b/libs/gi/page-home/src/VidGuideCard.tsx
@@ -27,7 +27,9 @@ export default function VidGuideCard() {
href={process.env.NX_URL_YOUTUBE_TUTPL}
target="_blank"
rel="noopener"
- >{t`vidGuideCard.title`}
+ >
+ {t('vidGuideCard.title')}
+
}
avatar={}
/>
diff --git a/libs/gi/page-home/src/index.tsx b/libs/gi/page-home/src/index.tsx
index 50a6805fdb..6f356f6b57 100644
--- a/libs/gi/page-home/src/index.tsx
+++ b/libs/gi/page-home/src/index.tsx
@@ -114,7 +114,9 @@ function PatchNotesCard() {
{t`quickLinksCard.buttons.patchNotes.title`}
+
+ {t('quickLinksCard.buttons.patchNotes.title')}
+
}
avatar={}
/>
diff --git a/libs/gi/page-settings/src/SillyCard.tsx b/libs/gi/page-settings/src/SillyCard.tsx
index a4e4a98a6b..7bd4f33bd3 100644
--- a/libs/gi/page-settings/src/SillyCard.tsx
+++ b/libs/gi/page-settings/src/SillyCard.tsx
@@ -22,7 +22,7 @@ export default function SillyCard() {
- {t`sillyPageTitle`}
+ {t('sillyPageTitle')}
@@ -40,8 +40,8 @@ export default function SillyCard() {
color={silly ? 'success' : 'secondary'}
>
{silly
- ? t`settings:sillyCard.toggle.enabled`
- : t`settings:sillyCard.toggle.disabled`}
+ ? t('settings:sillyCard.toggle.enabled')
+ : t('settings:sillyCard.toggle.disabled')}
}
diff --git a/libs/gi/page-team/src/BuildDropdown.tsx b/libs/gi/page-team/src/BuildDropdown.tsx
index de390f9d6f..91a3a82a32 100644
--- a/libs/gi/page-team/src/BuildDropdown.tsx
+++ b/libs/gi/page-team/src/BuildDropdown.tsx
@@ -30,7 +30,7 @@ export default function BuildDropdown({
{database.teams.getActiveBuildName(loadoutDatum)}
{buildType === 'tc' && (
- {t`buildDropdown.tcBadge`}
+ {t('buildDropdown.tcBadge')}
)}
}
@@ -41,7 +41,7 @@ export default function BuildDropdown({
onClick={() => onChangeLoadoutDatum({ buildType: 'equipped' })}
sx={{ display: 'flex', gap: 1 }}
>
- {t`buildDropdown.equipped`}
+ {t('buildDropdown.equipped')}
{buildIds.map((bId) => {
const { name } = database.builds.get(bId)!
@@ -71,7 +71,7 @@ export default function BuildDropdown({
sx={{ display: 'flex', gap: 1 }}
>
{name}
- {t`buildDropdown.tcBadge`}
+ {t('buildDropdown.tcBadge')}
)
})}
diff --git a/libs/gi/page-team/src/CharProfileCard.tsx b/libs/gi/page-team/src/CharProfileCard.tsx
index 3066ec56b1..8407e4b51f 100644
--- a/libs/gi/page-team/src/CharProfileCard.tsx
+++ b/libs/gi/page-team/src/CharProfileCard.tsx
@@ -38,7 +38,7 @@ export default function CharacterProfileCard() {
onClick={onShowEditor}
startIcon={}
>
- {t`charProfile.button`}
+ {t('charProfile.button')}
diff --git a/libs/gi/page-team/src/CharProfileCharEditor.tsx b/libs/gi/page-team/src/CharProfileCharEditor.tsx
index 3cdacf2365..c4dd131efe 100644
--- a/libs/gi/page-team/src/CharProfileCharEditor.tsx
+++ b/libs/gi/page-team/src/CharProfileCharEditor.tsx
@@ -103,7 +103,7 @@ function Content({ onClose }: { onClose?: () => void }) {
})
}}
>
- {t`buildTcCharOverride.btn`}
+ {t('buildTcCharOverride.btn')}
)}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Build/BuildEquipped.tsx b/libs/gi/page-team/src/CharacterDisplay/Build/BuildEquipped.tsx
index f3a537eefd..d3e7601910 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Build/BuildEquipped.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Build/BuildEquipped.tsx
@@ -27,7 +27,7 @@ export function BuildEquipped({ active = false }: { active?: boolean }) {
})
const onDupe = () =>
database.teamChars.newBuild(teamCharId, {
- name: t`buildEqCard.copy.nameReal`,
+ name: t('buildEqCard.copy.nameReal'),
artifactIds: equippedArtifacts,
weaponId: equippedWeapon,
})
@@ -42,14 +42,14 @@ export function BuildEquipped({ active = false }: { active?: boolean }) {
if (!newBuildTcId) return
// copy over name
database.buildTcs.set(newBuildTcId, {
- name: t`buildEqCard.copy.nameTc`,
- description: t`buildEqCard.copy.desc`,
+ name: t('buildEqCard.copy.nameTc'),
+ description: t('buildEqCard.copy.desc'),
})
}
return (
@@ -246,14 +246,14 @@ function BuildEditor({
setName(e.target.value)}
/>
setDesc(e.target.value)}
multiline
diff --git a/libs/gi/page-team/src/CharacterDisplay/Build/BuildTc.tsx b/libs/gi/page-team/src/CharacterDisplay/Build/BuildTc.tsx
index f051c49da8..4c7aaae2bb 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Build/BuildTc.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Build/BuildTc.tsx
@@ -271,7 +271,7 @@ function BuildTcEditor({
return (
@@ -282,14 +282,14 @@ function BuildTcEditor({
setName(e.target.value)}
/>
setDesc(e.target.value)}
multiline
diff --git a/libs/gi/page-team/src/CharacterDisplay/CompareBtn.tsx b/libs/gi/page-team/src/CharacterDisplay/CompareBtn.tsx
index 340d019d90..f5fd88ba78 100644
--- a/libs/gi/page-team/src/CharacterDisplay/CompareBtn.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/CompareBtn.tsx
@@ -41,11 +41,11 @@ export default function CompareBtn({
{database.buildTcs.get(compareBuildTcId)?.name ?? ''}{' '}
- {t`compareBtn.tcBadge`}
+ {t('compareBtn.tcBadge')}
) : (
- t`compareBtn.equipped`
+ t('compareBtn.equipped')
)
const current =
(compareType === 'equipped' && buildType === 'equipped') ||
@@ -66,7 +66,7 @@ export default function CompareBtn({
})
}
>
- {t`compareBtn.compare`}
+ {t('compareBtn.compare')}
- {t`compareBtn.crrBadge`}
+ {t('compareBtn.crrBadge')}
)}
>
@@ -88,10 +88,10 @@ export default function CompareBtn({
})
}
>
- {t`compareBtn.equipped`}
+ {t('compareBtn.equipped')}
{buildType === 'equipped' && (
- {t`compareBtn.crrBadge`}
+ {t('compareBtn.crrBadge')}
)}
@@ -109,7 +109,7 @@ export default function CompareBtn({
{database.builds.get(bId)!.name}{' '}
{buildType === 'real' && bId === buildId && (
- {t`compareBtn.crrBadge`}
+ {t('compareBtn.crrBadge')}
)}
@@ -126,11 +126,11 @@ export default function CompareBtn({
>
{database.buildTcs.get(bTcId)?.name ?? ''}{' '}
- {t`compareBtn.tcBadge`}
+ {t('compareBtn.tcBadge')}
{buildType === 'tc' && bTcId === buildTcId && (
- {t`compareBtn.crrBadge`}
+ {t('compareBtn.crrBadge')}
)}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Content.tsx b/libs/gi/page-team/src/CharacterDisplay/Content.tsx
index b49127a14a..177bac1cc8 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Content.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Content.tsx
@@ -156,7 +156,7 @@ function TabNav({
- {t`loadout.editNameDesc`}
+ {t('loadout.editNameDesc')}
{!!teamChar.description && (
@@ -209,7 +209,7 @@ function TabNav({
setEditMode(false)}>
}
titleTypographyProps={{ variant: 'h6' }}
action={
@@ -227,13 +227,13 @@ function TabNav({
sx={{ mt: 2 }}
>
() => {
if (
Object.values(target.targets[index].bonusStats).length &&
- !window.confirm(t`multiTarget.confirm`)
+ !window.confirm(t('multiTarget.confirm'))
)
return
const targets = [...target.targets]
@@ -124,7 +124,7 @@ export default function CustomMultiTargetCard({
const copyToClipboard = () =>
navigator.clipboard
.writeText(JSON.stringify(target))
- .then(() => alert(t`multiTarget.copyMsg`))
+ .then(() => alert(t('multiTarget.copyMsg')))
.catch(console.error)
const customTargetDisplays = useMemo(
@@ -192,7 +192,7 @@ export default function CustomMultiTargetCard({
>
setTarget((target) => ({
@@ -204,7 +204,7 @@ export default function CustomMultiTargetCard({
{description && descIsJson && }
{
setDescIsJson(
@@ -243,7 +243,7 @@ export default function CustomMultiTargetCard({
startIcon={}
sx={{ flexGrow: 1 }}
>
- {t`multiTarget.export`}
+ {t('multiTarget.export')}
+ } sx={{ mb: 1 }}>
+ {t('multiTarget.addNewTarget')}
+
- {t`mTargetImport.button`}
+ {t('mTargetImport.button')}
-
+
- {t`mTargetImport.desc`}
+ {t('mTargetImport.desc')}
setData(e.target.value)}
multiline
@@ -67,7 +67,7 @@ export default function CustomMultiTargetImportBtn({
disabled={!data}
onClick={importData}
>
- {t`mTargetImport.import`}
+ {t('mTargetImport.import')}
diff --git a/libs/gi/page-team/src/CharacterDisplay/CustomMultiTarget/MTargetEditor.tsx b/libs/gi/page-team/src/CharacterDisplay/CustomMultiTarget/MTargetEditor.tsx
index ed626cf15c..0bbb3a91a7 100644
--- a/libs/gi/page-team/src/CharacterDisplay/CustomMultiTarget/MTargetEditor.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/CustomMultiTarget/MTargetEditor.tsx
@@ -146,7 +146,9 @@ export default function MTargetEditor({
}}
onClick={() => setcollapse((c) => !c)}
>
- {t`loadout:mTargetEditor.title`}
+
+ {t('loadout:mTargetEditor.title')}
+
{collapse ? : }
{isMobile
- ? t`loadout:mTargetEditor.rankMobile`
- : t`loadout:mTargetEditor.rank`}
+ ? t('loadout:mTargetEditor.rankMobile')
+ : t('loadout:mTargetEditor.rank')}
),
}}
@@ -288,7 +290,7 @@ export default function MTargetEditor({
setCustomTarget({ ...customTarget, description })
@@ -340,12 +342,12 @@ function ReactionDropdown({
)
) : (
- t`noReaction`
+ t('noReaction')
)
return (
{reactions.map((rm) => (
diff --git a/libs/gi/page-team/src/CharacterDisplay/LoadoutSettingElement.tsx b/libs/gi/page-team/src/CharacterDisplay/LoadoutSettingElement.tsx
index f9bf8383a1..085f7fd9be 100644
--- a/libs/gi/page-team/src/CharacterDisplay/LoadoutSettingElement.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/LoadoutSettingElement.tsx
@@ -112,7 +112,7 @@ function BuildManagementContent() {
title={
- {t`loadoutSettings.title`}
+ {t('loadoutSettings.title')}
}
/>
@@ -128,14 +128,14 @@ function BuildManagementContent() {
- {t`loadoutSettings.builds`}
+ {t('loadoutSettings.builds')}
}
color="info"
size="small"
onClick={() => database.teamChars.newBuild(teamCharId)}
>
- {t`loadoutSettings.newBuildBtn`}
+ {t('loadoutSettings.newBuildBtn')}
@@ -156,7 +156,7 @@ function BuildManagementContent() {
- {t`loadoutSettings.tcBuilds`}
+ {t('loadoutSettings.tcBuilds')}
}
color="info"
@@ -165,7 +165,7 @@ function BuildManagementContent() {
database.teamChars.newBuildTcFromBuild(teamCharId, weaponTypeKey)
}
>
- {t`loadoutSettings.newTcBuildBtn`}
+ {t('loadoutSettings.newTcBuildBtn')}
@@ -203,7 +203,7 @@ function DetailStatButton({ buttonProps = {} }: { buttonProps?: ButtonProps }) {
onClick={onOpen}
{...buttonProps}
>
- {t`addStats.title`}
+ {t('addStats.title')}
{!!bStatsNum && (
{bStatsNum}
@@ -224,7 +224,7 @@ function FormulasButton({ buttonProps = {} }: { buttonProps?: ButtonProps }) {
onClick={onModalOpen}
{...buttonProps}
>
- {t`showFormulas.button`}
+ {t('showFormulas.button')}
)
}
diff --git a/libs/gi/page-team/src/CharacterDisplay/StatModal.tsx b/libs/gi/page-team/src/CharacterDisplay/StatModal.tsx
index c6a64726e8..4c6b73b46f 100644
--- a/libs/gi/page-team/src/CharacterDisplay/StatModal.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/StatModal.tsx
@@ -57,7 +57,7 @@ export default function StatModal({
title={
- {t`addStats.title`}
+ {t('addStats.title')}
}
action={
@@ -215,7 +215,7 @@ function MainStatsCards() {
-
+
-
+
{!!miscStatReadNodes.length && (
-
+
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ArtifactSetConfig.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ArtifactSetConfig.tsx
index 037e47ab61..dddc725c30 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ArtifactSetConfig.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ArtifactSetConfig.tsx
@@ -190,31 +190,31 @@ export default function ArtifactSetConfig({
- {t`artSetConfig.title`}
+ {t('artSetConfig.title')}
- {t`artSetConfig.setEffCond`}{' '}
+ {t('artSetConfig.setEffCond')}{' '}
{artifactCondCount} {t('artSetConfig.enabled')}
- {t`sheet:2set`}{' '}
+ {t('sheet:2set')}{' '}
{allowTotals['2']} {' '}
{t('artSetConfig.allowed')}
- {t`sheet:4set`}{' '}
+ {t('sheet:4set')}{' '}
{allowTotals['4']} {' '}
{t('artSetConfig.allowed')}
- {t`artSetConfig.2rainbow`}{' '}
+ {t('artSetConfig.2rainbow')}{' '}
{allowRainbow2 ? (
@@ -225,7 +225,7 @@ export default function ArtifactSetConfig({
- {t`artSetConfig.4rainbow`}{' '}
+ {t('artSetConfig.4rainbow')}{' '}
{allowRainbow4 ? (
@@ -251,7 +251,7 @@ export default function ArtifactSetConfig({
- {t`artSetConfig.title`}
+ {t('artSetConfig.title')}
@@ -262,7 +262,7 @@ export default function ArtifactSetConfig({
- {t`artSetConfig.modal.setCond.title`}
+ {t('artSetConfig.modal.setCond.title')}
@@ -274,9 +274,11 @@ export default function ArtifactSetConfig({
onClick={resetArtConds}
color="error"
startIcon={}
- >{t`artSetConfig.modal.setCond.reset`}
+ >
+ {t('artSetConfig.modal.setCond.reset')}
+
- {t`artSetConfig.modal.setCond.text`}
+ {t('artSetConfig.modal.setCond.text')}
@@ -462,7 +464,9 @@ export default function ArtifactSetConfig({
endIcon={
allowRainbow2 ? :
}
- >{t`artSetConfig.2rainbow`}
+ >
+ {t('artSetConfig.2rainbow')}
+
@@ -485,7 +489,9 @@ export default function ArtifactSetConfig({
endIcon={
allowRainbow4 ? :
}
- >{t`artSetConfig.4rainbow`}
+ >
+ {t('artSetConfig.4rainbow')}
+
@@ -657,7 +663,7 @@ function ArtifactSetCard({
>
- {t`2set`}
+ {t('2set')}
- {t`4set`}
+ {t('4set')}
- {t`bonusStats.title`}
+
+ {t('bonusStats.title')}
+
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/CustomTooltip.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/CustomTooltip.tsx
index 9cd4440ff7..8826af6ded 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/CustomTooltip.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/CustomTooltip.tsx
@@ -133,7 +133,7 @@ export default function CustomTooltip({
)}
{activeBuild && (
- {t`activeBuild`}
+ {t('activeBuild')}
)}
{generLabel && {generLabel}}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/index.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/index.tsx
index 9518557e31..6b6788c8f8 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/index.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ChartCard/index.tsx
@@ -218,7 +218,7 @@ export default function ChartCard({
- {t`tcGraph.vs`}
+ {t('tcGraph.vs')}
: }
color={showMin ? 'success' : 'secondary'}
onClick={() => setshowMin(!showMin)}
- >{t`tcGraph.showStatThr`}
+ >
+ {t('tcGraph.showStatThr')}
+
)}
{!!downloadData && (
@@ -281,7 +283,9 @@ export default function ChartCard({
color="info"
startIcon={}
onClick={() => setshowDownload(!showDownload)}
- >{t`tcGraph.downloadData`}
+ >
+ {t('tcGraph.downloadData')}
+
)}
@@ -436,7 +440,7 @@ function Chart({
? [
{
id: 'min',
- value: t`tcGraph.statReqThr`,
+ value: t('tcGraph.statReqThr'),
type: 'line' as LegendType,
color: lineColor,
},
@@ -444,19 +448,19 @@ function Chart({
: []),
{
id: 'trueY',
- value: t`tcGraph.generatedBuilds`,
+ value: t('tcGraph.generatedBuilds'),
type: 'circle',
color: optTargetColor,
},
{
id: 'highlighted',
- value: t`tcGraph.highlightedBuilds`,
+ value: t('tcGraph.highlightedBuilds'),
type: 'square',
color: highlightedColor,
},
{
id: 'current',
- value: t`tcGraph.currentBuild`,
+ value: t('tcGraph.currentBuild'),
type: 'diamond',
color: currentColor,
},
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ExcludeArt.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ExcludeArt.tsx
index 502249f99d..6ddabf1c5c 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ExcludeArt.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/ExcludeArt.tsx
@@ -108,9 +108,13 @@ export default function ExcludeArt({
- {t`excludeArt.title_exclude`}
+
+ {t('excludeArt.title_exclude')}
+
{t`excludeArt.title_tooltip`}}
+ title={
+ {t('excludeArt.title_tooltip')}
+ }
/>
}
@@ -136,10 +140,14 @@ export default function ExcludeArt({
color="info"
sx={{ mb: 1 }}
startIcon={}
- >{t`excludeArt.addExc`}
+ >
+ {t('excludeArt.addExc')}
+
{!!numExcludedArt && (
- {t`excludeArt.deSelectExc`}
+
+ {t('excludeArt.deSelectExc')}
+
)}
}
>
- {t`optExcludeModal.excludeBtn`}
+ {t('optExcludeModal.excludeBtn')}
{numExclude}
@@ -267,7 +275,7 @@ function ExcludeArtRedButtons({
onClick={includeArtifacts}
startIcon={}
>
- {t`optExcludeModal.includeBtn`}
+ {t('optExcludeModal.includeBtn')}
{numInclude}
@@ -341,7 +349,7 @@ function ArtifactSelectModal({
>
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/MainStatSelectionCard.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/MainStatSelectionCard.tsx
index 09cd465328..cb702be1fc 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/MainStatSelectionCard.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/MainStatSelectionCard.tsx
@@ -90,7 +90,7 @@ export default function MainStatSelectionCard({
{t(`slotName.flower`)}}
+ title={{t('slotName.flower')}}
>
@@ -106,7 +106,7 @@ export default function MainStatSelectionCard({
{t(`slotName.plume`)}}
+ title={{t('slotName.plume')}}
>
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/StatFilterCard.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/StatFilterCard.tsx
index ce63313da9..34e1270e10 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/StatFilterCard.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/StatFilterCard.tsx
@@ -39,11 +39,11 @@ export default function StatFilterCard({
}}
>
- {t`constraintFilter.title`}
+
+ {t('constraintFilter.title')}
+
{t`constraintFilter.tooltip`}}
+ title={{t('constraintFilter.tooltip')}}
/>
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/TargetSelectorModal.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/TargetSelectorModal.tsx
index 19c7b495a4..f333375343 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/TargetSelectorModal.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/TargetSelectorModal.tsx
@@ -76,7 +76,7 @@ export function TargetSelectorModal({
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseEquipped.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseEquipped.tsx
index 2851b9a9cf..1592106068 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseEquipped.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseEquipped.tsx
@@ -303,7 +303,7 @@ export default function UseEquipped({
{/* Header */}
@@ -359,7 +359,7 @@ export default function UseEquipped({
- {t`excludeChar.modal.allow_all`}
+ {t('excludeChar.modal.allow_all')}
{locListTotals['allowed']}
@@ -367,7 +367,7 @@ export default function UseEquipped({
- {t`excludeChar.modal.disallow_All`}
+ {t('excludeChar.modal.disallow_All')}
{locListTotals['excluded']}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseTeammateArt.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseTeammateArt.tsx
index 588429003b..6c6a769bdd 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseTeammateArt.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/Components/UseTeammateArt.tsx
@@ -94,7 +94,9 @@ export const UseTeammateArt = memo(function UseTeammateArt({
) : (
- {t`tcBadge`}
+
+ {t('tcBadge')}
+
)}
@@ -122,7 +124,7 @@ export const UseTeammateArt = memo(function UseTeammateArt({
disabled={disabled}
>
- {t`useTeamArts`}
+ {t('useTeamArts')}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/index.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/index.tsx
index df7093c1eb..23363433e6 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/index.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOptimize/index.tsx
@@ -454,7 +454,7 @@ export default function TabBuild() {
if (results && notificationRef.current) {
audio.play()
if (!tabFocused.current)
- setTimeout(() => window.alert(t`buildCompleted`), 1)
+ setTimeout(() => window.alert(t('buildCompleted')), 1)
}
}, 100)
} catch (e) {
@@ -573,9 +573,9 @@ export default function TabBuild() {
{/* Main Stat Filters */}
- {t`mainStat.title`}
+
+ {t('mainStat.title')}
+
@@ -594,8 +594,12 @@ export default function TabBuild() {
- {t`mainStat.levelAssTooltip.title`}
- {t`mainStat.levelAssTooltip.desc`}
+
+ {t('mainStat.levelAssTooltip.title')}
+
+
+ {t('mainStat.levelAssTooltip.desc')}
+
}
/>
@@ -629,7 +633,7 @@ export default function TabBuild() {
}
disabled={generatingBuilds}
>
- {t`allowPartial`}
+ {t('allowPartial')}
@@ -712,7 +716,7 @@ export default function TabBuild() {
))}
-
+
{' '}
{!!buildDate && (
- {t`generatedOn`}
+ {t('generatedOn')}
{new Date(buildDate).toLocaleString()}
)}
) : (
- {t`selectChar`}
+ {t('selectChar')}
)}
- {t`clearBuildsBtn`}
+ {t('clearBuildsBtn')}
@@ -868,7 +872,7 @@ const LevelFilter = memo(function LevelFilter({
return (
- {t`levelFilter`}
+ {t('levelFilter')}
{levelTotal}
@@ -1028,13 +1032,13 @@ function CopyTcButton({ build }: { build: GeneratedBuild }) {
startIcon={}
onClick={onShowTcPrompt}
>
- {t`createBuildTc.button`}
+ {t('createBuildTc.button')}
{/* TODO: Dialog Wanted to use a Dialog here, but was having some weird issues with closing out of it */}
@@ -1045,21 +1049,21 @@ function CopyTcButton({ build }: { build: GeneratedBuild }) {
- {t`createBuildTc.desc`}
+ {t('createBuildTc.desc')}
setName(e.target.value)}
autoFocus
margin="dense"
- label={t`createBuildTc.label`}
+ label={t('createBuildTc.label')}
fullWidth
/>
- {t`createBuildTc.cancel`}
+
+ {t('createBuildTc.cancel')}
+
- {t`createBuildTc.create`}
+ {t('createBuildTc.create')}
@@ -1099,7 +1103,7 @@ function CopyBuildButton({
startIcon={}
onClick={onShowPrompt}
>
- {t`createBuildReal.button`}
+ {t('createBuildReal.button')}
{/* TODO: Dialog Wanted to use a Dialog here, but was having some weird issues with closing out of it */}
@@ -1120,22 +1124,22 @@ function CopyBuildButton({
- {t`createBuildReal.desc`}
+ {t('createBuildReal.desc')}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOverview/EquipmentSection.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOverview/EquipmentSection.tsx
index be57c784c4..74eb0bc979 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOverview/EquipmentSection.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabOverview/EquipmentSection.tsx
@@ -177,7 +177,9 @@ function ArtifactSectionCard() {
onClick={unequipArts}
fullWidth
sx={{ borderBottomRightRadius: 0, borderBottomLeftRadius: 0 }}
- >{t`tabEquip.unequipArts`}
+ >
+ {t('tabEquip.unequipArts')}
+
)}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTalent.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTalent.tsx
index c04cf0bceb..34e51ff194 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTalent.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTalent.tsx
@@ -355,7 +355,7 @@ export function ConstellationDropdown() {
})
}
>
- {t(`constellationLvl`, { level: i })}
+ {t('constellationLvl', { level: i })}
))}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactAllSubstatEditor.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactAllSubstatEditor.tsx
index c6bc60ce7f..5f2bd3f842 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactAllSubstatEditor.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactAllSubstatEditor.tsx
@@ -133,9 +133,9 @@ export function ArtifactAllSubstatEditor({
}}
InputProps={{
startAdornment: (
- {t`tabTheorycraft.all.rolls`}
+
+ {t('tabTheorycraft.all.rolls')}
+
),
}}
focused
@@ -152,7 +152,9 @@ export function ArtifactAllSubstatEditor({
}}
InputProps={{
startAdornment: (
- {t`tabTheorycraft.all.max`}
+
+ {t('tabTheorycraft.all.max')}
+
),
}}
focused
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactSubstatEditor.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactSubstatEditor.tsx
index 8305b21215..523c30c67f 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactSubstatEditor.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/ArtifactSubCard/ArtifactSubstatEditor.tsx
@@ -239,7 +239,7 @@ export function ArtifactSubstatEditor({
InputProps={{
startAdornment: (
- {t`tabTheorycraft.substat.max`}
+ {t('tabTheorycraft.substat.max')}
),
}}
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/index.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/index.tsx
index 8e787be005..35d6629ba0 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/index.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabTheorycraft/index.tsx
@@ -315,7 +315,7 @@ export default function TabTheorycraft() {
value={distributedSubstats}
disabled={!optimizationTarget || solving}
onChange={(v) => v !== undefined && setDistributedSubstats(v)}
- endAdornment={t`tabTheorycraft.distInput`}
+ endAdornment={t('tabTheorycraft.distInput')}
sx={{
borderRadius: 1,
px: 1,
@@ -343,7 +343,7 @@ export default function TabTheorycraft() {
color="success"
startIcon={}
>
- {t`tabTheorycraft.distribute`}
+ {t('tabTheorycraft.distribute')}
) : (
- {t`upOptLevelFilter`}
+
+ {t('upOptLevelFilter')}
+
{levelTotal}
-
+
diff --git a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabUpgradeOpt/UpgradeOptChartCard.tsx b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabUpgradeOpt/UpgradeOptChartCard.tsx
index f1087a0252..70077b1019 100644
--- a/libs/gi/page-team/src/CharacterDisplay/Tabs/TabUpgradeOpt/UpgradeOptChartCard.tsx
+++ b/libs/gi/page-team/src/CharacterDisplay/Tabs/TabUpgradeOpt/UpgradeOptChartCard.tsx
@@ -226,13 +226,13 @@ function UpgradeOptChartCardGraph({
const probUpgradeText = (
- {t('upOptChart.prob', { est: isExact ? '' : t`upOptChart.est` })}
+ {t('upOptChart.prob', { est: isExact ? '' : t('upOptChart.est') })}
{(100 * reportP).toFixed(1)}%
)
const avgIncText = (
- {t('upOptChart.average', { est: isExact ? '' : t`upOptChart.est` })}
+ {t('upOptChart.average', { est: isExact ? '' : t('upOptChart.est') })}
{reportD <= 0 ? '' : '+'}
{((100 * reportD) / thr0).toFixed(1)}%
@@ -264,9 +264,9 @@ function UpgradeOptChartCardGraph({
>
{isCurrentlyEquipped ? (
- {t`upOptChart.equipped`}
+ {t('upOptChart.equipped')}
) : (
- {t`upOptChart.current`}
+ {t('upOptChart.current')}
)}
@@ -293,7 +293,7 @@ function UpgradeOptChartCardGraph({
tickFormatter={(v) => `${v <= 0 ? '' : '+'}${v}%`}
>
)
}
@@ -531,7 +531,7 @@ export default function TabUpopt() {
/>
{!upOptCalc?.artifacts.length && (
- {t`upOptNoResults`}
+ {t('upOptNoResults')}
)}
setNewName(e.target.value)}
/>
setNewDesc(e.target.value)}
multiline
@@ -86,7 +86,7 @@ export function LoadoutDropdown({
/>
- {t`loDropdown.createModal.cancel`}
+ {t('loDropdown.createModal.cancel')}
- {t`loDropdown.createModal.confirm`}
+ {t('loDropdown.createModal.confirm')}
@@ -115,7 +115,7 @@ export function LoadoutDropdown({
>
{label ? (
- {t`loDropdown.label`}
+ {t('loDropdown.label')}
{name}
) : (
@@ -125,7 +125,7 @@ export function LoadoutDropdown({
}
{...dropdownBtnProps}
>
-
+
{teamCharIds.map((tcId) => {
const { name, buildIds, buildTcIds, customMultiTargets } =
database.teamChars.get(tcId)!
@@ -141,15 +141,15 @@ export function LoadoutDropdown({
color={buildIds.length ? 'primary' : 'secondary'}
sx={{ marginLeft: 'auto' }}
>
- {t(`loDropdown.builds`, { count: buildIds.length })}
+ {t('loDropdown.builds', { count: buildIds.length })}
- {t(`loDropdown.tcs`, { count: buildTcIds.length })}
+ {t('loDropdown.tcs', { count: buildTcIds.length })}
- {t(`loDropdown.multi`, { count: customMultiTargets.length })}
+ {t('loDropdown.multi', { count: customMultiTargets.length })}
)
diff --git a/libs/gi/page-team/src/TeamCharacterSelector.tsx b/libs/gi/page-team/src/TeamCharacterSelector.tsx
index bf9a126a35..c070a03505 100644
--- a/libs/gi/page-team/src/TeamCharacterSelector.tsx
+++ b/libs/gi/page-team/src/TeamCharacterSelector.tsx
@@ -133,7 +133,7 @@ export default function TeamCharacterSelector({
>
- {t`team.editNameDesc`}
+ {t('team.editNameDesc')}
{!!team.description && (
@@ -164,7 +164,7 @@ export default function TeamCharacterSelector({
setEditMode(false)}>
}
titleTypographyProps={{ variant: 'h6' }}
action={
@@ -177,13 +177,13 @@ export default function TeamCharacterSelector({
handleName(teamName)}
autoFocus
/>
handleDesc(teamDesc)}
multiline
@@ -203,7 +203,7 @@ export default function TeamCharacterSelector({
icon={}
iconPosition="start"
value={'team'}
- label={t`teamSettings.tab.team`}
+ label={t('teamSettings.tab.team')}
onClick={() => navigate(`/teams/${teamId}/`)}
/>
{loadoutData.map((loadoutDatum, ind) => {
diff --git a/libs/gi/page-team/src/TeamSetting/ResonanceDisplay.tsx b/libs/gi/page-team/src/TeamSetting/ResonanceDisplay.tsx
index 3ae7beeb11..ebea390a16 100644
--- a/libs/gi/page-team/src/TeamSetting/ResonanceDisplay.tsx
+++ b/libs/gi/page-team/src/TeamSetting/ResonanceDisplay.tsx
@@ -51,7 +51,7 @@ export function ResonanceDisplay({
{' '}
{t`tabTeambuff.resonance_tip`}}
+ title={{t('tabTeambuff.resonance_tip')}}
/>
}
diff --git a/libs/gi/page-team/src/TeamSetting/TeamComponents.tsx b/libs/gi/page-team/src/TeamSetting/TeamComponents.tsx
index 5027d92d38..3d72c86d37 100644
--- a/libs/gi/page-team/src/TeamSetting/TeamComponents.tsx
+++ b/libs/gi/page-team/src/TeamSetting/TeamComponents.tsx
@@ -72,7 +72,7 @@ export function TeamBuffDisplay() {
>
}>
- {t`teamComponents.teamBuffs`}
+ {t('teamComponents.teamBuffs')}
{nodes.length}
@@ -208,7 +208,7 @@ function TcEquipmentRow({
gap: 1,
}}
>
- {t`teamComponents.tcBadge`}
+ {t('teamComponents.tcBadge')}
{Object.entries(sets).map(([setKey, number]) => (
alert(t`exportModal.msg`))
+ .then(() => alert(t('exportModal.msg')))
.catch(console.error)
}
const [selAll, setSelAll] = useState(true)
@@ -135,7 +135,7 @@ export default function TeamExportModal({
@@ -164,7 +164,7 @@ export default function TeamExportModal({
color="info"
onClick={selAll ? onSelAll : onUnselAll}
>
- {selAll ? t`exportModal.selAll` : t`exportModal.unselAll`}
+ {selAll ? t('exportModal.selAll') : t('exportModal.unselAll')}
@@ -197,7 +197,7 @@ export default function TeamExportModal({
sx={{ display: 'flex', gap: 2, justifyContent: 'flex-end' }}
>
- {t`exportModal.export`}
+ {t('exportModal.export')}
@@ -267,7 +267,7 @@ function LoadoutSetting({
sx={{ display: 'flex', gap: 1, alignItems: 'center' }}
>
- {t`exportModal.target`}
+ {t('exportModal.target')}
- {t`exportModal.mTargets`}
+ {t('exportModal.mTargets')}
@@ -335,7 +335,7 @@ function LoadoutSetting({
- {t`exportModal.builds`}
+ {t('exportModal.builds')}
@@ -351,7 +351,7 @@ function LoadoutSetting({
tabIndex={-1}
disableRipple
/>
-
+
{buildIds.map((buildId) => {
@@ -404,7 +404,8 @@ function LoadoutSetting({
- {buildTc.name} {t`exportModal.tcBadge`}
+ {buildTc.name}{' '}
+ {t('exportModal.tcBadge')}
}
/>
diff --git a/libs/gi/page-team/src/TeamSetting/index.tsx b/libs/gi/page-team/src/TeamSetting/index.tsx
index 08f61a1452..8480c7ce19 100644
--- a/libs/gi/page-team/src/TeamSetting/index.tsx
+++ b/libs/gi/page-team/src/TeamSetting/index.tsx
@@ -74,7 +74,7 @@ export default function TeamSetting({
disabled={noChars}
onClick={onShow}
>
- {t`teamSettings.exportBtn`}
+ {t('teamSettings.exportBtn')}
}
>
- {t`teamSettings.dupBtn`}
+ {t('teamSettings.dupBtn')}
}
>
- {t`teamSettings.deleteBtn`}
+ {t('teamSettings.deleteBtn')}
@@ -285,7 +285,7 @@ function TeamEditor({
disabled={!!ind && !loadoutData.some((id) => id)}
startIcon={}
>
- {t`teamSettings.addCharBtn`}
+ {t('teamSettings.addCharBtn')}
)}
@@ -370,11 +370,11 @@ function CharSelButton({
/>
{index ? (
- {t`teamSettings.toFieldBtn`}
+ {t('teamSettings.toFieldBtn')}
) : (
- {t`teamSettings.onFieldBtn`}
+ {t('teamSettings.onFieldBtn')}
)}
{dataContextValue && (
diff --git a/libs/gi/page-team/src/index.tsx b/libs/gi/page-team/src/index.tsx
index 96b109b9dd..15063b7cdc 100644
--- a/libs/gi/page-team/src/index.tsx
+++ b/libs/gi/page-team/src/index.tsx
@@ -138,11 +138,11 @@ function Page({ teamId }: { teamId: string }) {
silly ? 'sillyWisher_charNames' : 'charNames_gen'
}:${charKeyToLocGenderedCharKey(characterKey, gender)}`
)
- : t`page_team:teamSettings.tab.team`
+ : t('page_team:teamSettings.tab.team')
const tabName = tab
? t(`page_character:tabs.${tab}`)
: characterKey
- ? t`page_character:tabs.setting`
+ ? t('page_character:tabs.setting')
: tab
return tabName
? `${team.name} - ${charName} - ${tabName}`
diff --git a/libs/gi/page-teams/src/index.tsx b/libs/gi/page-teams/src/index.tsx
index 05300f3a6e..0492c116b7 100644
--- a/libs/gi/page-teams/src/index.tsx
+++ b/libs/gi/page-teams/src/index.tsx
@@ -69,10 +69,10 @@ export default function PageTeams() {
try {
const dataObj = JSON.parse(data)
if (!database.teams.import(dataObj))
- window.alert(t`importForm.error.verifi`)
+ window.alert(t('importForm.error.verifi'))
onHideImport()
} catch (e) {
- window.alert(t`importForm.error.import` + `\n${e}`)
+ window.alert(t('importForm.error.import') + `\n${e}`)
return
}
@@ -154,7 +154,7 @@ export default function PageTeams() {
onChange={(e: ChangeEvent) =>
setSearchTerm(e.target.value)
}
- label={t`searchLabel.team`}
+ label={t('searchLabel.team')}
// size="small"
sx={{ height: '100%', flexGrow: 1 }}
InputProps={{
@@ -178,20 +178,20 @@ export default function PageTeams() {
}>
- {t`addTeamBtn`}
+ {t('addTeamBtn')}
-
+
- {t`importForm.desc`}
+ {t('importForm.desc')}
setData(e.target.value)}
multiline
@@ -202,7 +202,7 @@ export default function PageTeams() {
disabled={!data}
onClick={importData}
>
- {t`importForm.importBtn`}
+ {t('importForm.importBtn')}
@@ -213,7 +213,7 @@ export default function PageTeams() {
color="info"
startIcon={}
>
- {t`importTeamBtn`}
+ {t('importTeamBtn')}
- {t`weaponFilterTitle`}
+ {t('weaponFilterTitle')}
- {t`weaponInInv`}{' '}
+ {t('weaponInInv')}{' '}
- {t`equippedWeapon`}{' '}
+ {t('equippedWeapon')}{' '}
diff --git a/libs/gi/sheets/src/Weapons/Sword/FinaleOfTheDeep/index.tsx b/libs/gi/sheets/src/Weapons/Sword/FinaleOfTheDeep/index.tsx
index d8641f9e4d..d67182d2ff 100644
--- a/libs/gi/sheets/src/Weapons/Sword/FinaleOfTheDeep/index.tsx
+++ b/libs/gi/sheets/src/Weapons/Sword/FinaleOfTheDeep/index.tsx
@@ -61,7 +61,7 @@ const sheet: IWeaponSheet = {
header: headerTemplate(key, st('conditional')),
path: condAfterSkillPath,
value: condAfterSkill,
- name: st('hitOp.skill'),
+ name: st('afterUse.skill'),
states: {
on: {
fields: [
diff --git a/libs/gi/ui/src/components/EnemyEditor.tsx b/libs/gi/ui/src/components/EnemyEditor.tsx
index fc9f6e4c7c..eb5d787d2a 100644
--- a/libs/gi/ui/src/components/EnemyEditor.tsx
+++ b/libs/gi/ui/src/components/EnemyEditor.tsx
@@ -69,7 +69,7 @@ export function EnemyExpandCard({ teamId }: { teamId: string }) {
color="success"
label={
- {t`enemyEditor.enemyLevel`}
+ {t('enemyEditor.enemyLevel')}
{enemyLevel}
}
@@ -157,7 +157,7 @@ export function EnemyEditor({
target="_blank"
rel="noreferrer"
>
- {t`enemyEditor.announceBtn`}
+ {t('enemyEditor.announceBtn')}
@@ -225,7 +225,7 @@ export function EnemyEditor({
)
}
>
- {t`enemyEditor.immunity`}
+ {t('enemyEditor.immunity')}
@@ -262,7 +262,7 @@ export function EnemyEditor({
/>
- {t`enemyEditor.note`}
+ {t('enemyEditor.note')}
)
diff --git a/libs/gi/ui/src/components/HitModeEditor.tsx b/libs/gi/ui/src/components/HitModeEditor.tsx
index 7ea4c7127a..9e791d496a 100644
--- a/libs/gi/ui/src/components/HitModeEditor.tsx
+++ b/libs/gi/ui/src/components/HitModeEditor.tsx
@@ -133,7 +133,9 @@ export function ReactionToggle(props: ReactionToggleProps) {
disabled={!teamCharId}
{...props}
>
- {t`noReaction`}
+
+ {t('noReaction')}
+
{reactions.map((rm) => (
{([...allAmpReactionKeys] as string[]).includes(rm) ? (
diff --git a/libs/gi/ui/src/components/artifact/ArtifactCard.tsx b/libs/gi/ui/src/components/artifact/ArtifactCard.tsx
index 29a72826b3..2fb7385a78 100644
--- a/libs/gi/ui/src/components/artifact/ArtifactCard.tsx
+++ b/libs/gi/ui/src/components/artifact/ArtifactCard.tsx
@@ -312,10 +312,9 @@ export function ArtifactCardObj({
variant="caption"
sx={{ display: 'flex', gap: 1, alignItems: 'center' }}
>
- {t`artifact:editor.curSubEff`}
+
+ {t('artifact:editor.curSubEff')}
+
{currentEfficiency !== maxEfficiency && (
- {t`artifact:editor.maxSubEff`}
+
+ {t('artifact:editor.maxSubEff')}
+
{!!onEdit && (
{t`artifact:edit`}}
+ title={{t('artifact:edit')}}
placement="top"
arrow
>
diff --git a/libs/gi/ui/src/components/artifact/ArtifactFilterDisplay.tsx b/libs/gi/ui/src/components/artifact/ArtifactFilterDisplay.tsx
index eecd6b8ded..b40fbcef35 100644
--- a/libs/gi/ui/src/components/artifact/ArtifactFilterDisplay.tsx
+++ b/libs/gi/ui/src/components/artifact/ArtifactFilterDisplay.tsx
@@ -335,7 +335,7 @@ export function ArtifactFilterDisplay({
filterOptionDispatch({ showInventory: !showInventory })
}
>
- {t`artInInv`}{' '}
+ {t('artInInv')}{' '}
- {t`equippedArt`}{' '}
+ {t('equippedArt')}{' '}
diff --git a/libs/gi/ui/src/components/artifact/ArtifactLevelSlider.tsx b/libs/gi/ui/src/components/artifact/ArtifactLevelSlider.tsx
index 48e43d29dc..cef736db9b 100644
--- a/libs/gi/ui/src/components/artifact/ArtifactLevelSlider.tsx
+++ b/libs/gi/ui/src/components/artifact/ArtifactLevelSlider.tsx
@@ -64,7 +64,7 @@ export function ArtifactLevelSlider({
backgroundColor: 'rgb(30,120,200)',
}}
>
- {t`levelSliderTitle`}
+ {t('levelSliderTitle')}
>
diff --git a/libs/gi/ui/src/components/artifact/ArtifactRarityDropdown.tsx b/libs/gi/ui/src/components/artifact/ArtifactRarityDropdown.tsx
index a8c33c592e..f7ba219f3a 100644
--- a/libs/gi/ui/src/components/artifact/ArtifactRarityDropdown.tsx
+++ b/libs/gi/ui/src/components/artifact/ArtifactRarityDropdown.tsx
@@ -20,7 +20,9 @@ export function ArtifactRarityDropdown({
return (
: t`editor.rarity`}
+ title={
+ rarity ? : t('editor.rarity')
+ }
color={rarity ? 'success' : 'primary'}
>
{([5, 4, 3] as ArtifactRarity[]).map((rarity) => (
diff --git a/libs/gi/ui/src/components/artifact/ArtifactSlotDropdown.tsx b/libs/gi/ui/src/components/artifact/ArtifactSlotDropdown.tsx
index 629f2257e2..a6065fc6d9 100644
--- a/libs/gi/ui/src/components/artifact/ArtifactSlotDropdown.tsx
+++ b/libs/gi/ui/src/components/artifact/ArtifactSlotDropdown.tsx
@@ -36,7 +36,7 @@ export function ArtifactSlotDropdown({
- {t`ui:unselect`}
+ {t('ui:unselect')}
)}
{hasUnselect && }
diff --git a/libs/gi/ui/src/components/artifact/ArtifactSwapModal.tsx b/libs/gi/ui/src/components/artifact/ArtifactSwapModal.tsx
index 02c4b262d6..1ed1367c86 100644
--- a/libs/gi/ui/src/components/artifact/ArtifactSwapModal.tsx
+++ b/libs/gi/ui/src/components/artifact/ArtifactSwapModal.tsx
@@ -164,7 +164,7 @@ export function ArtifactSwapModal({
>
{slotKey ? : null}{' '}
- {t`tabEquip.swapArt`}
+ {t('tabEquip.swapArt')}
@@ -241,7 +241,9 @@ export function ArtifactSwapModal({
}}
>
- {t`artifact:button.unequipArtifact`}
+
+ {t('artifact:button.unequipArtifact')}
+
diff --git a/libs/gi/ui/src/components/artifact/RVSlide.tsx b/libs/gi/ui/src/components/artifact/RVSlide.tsx
index 6bbafcceb2..13047392be 100644
--- a/libs/gi/ui/src/components/artifact/RVSlide.tsx
+++ b/libs/gi/ui/src/components/artifact/RVSlide.tsx
@@ -68,7 +68,7 @@ export function RVSlide({
color: 'rgba(255,255,255,0.9)',
}}
>
- {MRV_RV ? t`rvSliderBtn.maximum` : t`rvSliderBtn.current`}
+ {MRV_RV ? t('rvSliderBtn.maximum') : t('rvSliderBtn.current')}
diff --git a/libs/gi/ui/src/components/artifact/SetInclusionButton.tsx b/libs/gi/ui/src/components/artifact/SetInclusionButton.tsx
index 0595294c6a..2e839b28fa 100644
--- a/libs/gi/ui/src/components/artifact/SetInclusionButton.tsx
+++ b/libs/gi/ui/src/components/artifact/SetInclusionButton.tsx
@@ -41,7 +41,9 @@ export function SetInclusionButton({
}
color={exclude2 ? 'secondary' : 'success'}
endIcon={exclude2 ? : }
- >{t`2set`}
+ >
+ {t('2set')}
+
: }
onClick={() =>
@@ -51,7 +53,9 @@ export function SetInclusionButton({
}
color={exclude4 ? 'secondary' : 'success'}
endIcon={exclude4 ? : }
- >{t`4set`}
+ >
+ {t('4set')}
+
)
}
diff --git a/libs/gi/ui/src/components/artifact/editor/SubstatInput.tsx b/libs/gi/ui/src/components/artifact/editor/SubstatInput.tsx
index a93d298139..ee8183f4e1 100644
--- a/libs/gi/ui/src/components/artifact/editor/SubstatInput.tsx
+++ b/libs/gi/ui/src/components/artifact/editor/SubstatInput.tsx
@@ -71,7 +71,8 @@ export function SubstatInput({
}
const rollOffset = 7 - rollData.length
- if (!rollNum && key && value) error = error || t`editor.substat.error.noCalc`
+ if (!rollNum && key && value)
+ error = error || t('editor.substat.error.noCalc')
if (allowedRolls < 0)
error =
error ||
@@ -108,7 +109,9 @@ export function SubstatInput({
{key && (
+ >
+ {t('editor.substat.noSubstat')}
+
)}
{allSubstatKeys
.filter((key) => mainStatKey !== key)
@@ -139,7 +142,7 @@ export function SubstatInput({
},
}}
float={unit === '%'}
- placeholder={t`editor.substat.selectSub`}
+ placeholder={t('editor.substat.selectSub')}
value={key ? value : 0}
onChange={(value) => setSubstat(index, { key, value: value ?? 0 })}
disabled={!key}
@@ -149,7 +152,7 @@ export function SubstatInput({
}}
/>
{!!rollData.length && (
- {t`editor.substat.nextRolls`}
+ {t('editor.substat.nextRolls')}
)}
{rollData.map((v, i) => {
let newValue = artDisplayValue(accurateValue + v, unit)
@@ -183,7 +186,7 @@ export function SubstatInput({
{error ? (
- {t`ui:error`}
+ {t('ui:error')}
) : (
@@ -196,7 +199,7 @@ export function SubstatInput({
>
{rollNum
? t('editor.substat.RollCount', { count: rollNum })
- : t`editor.substat.noRoll`}
+ : t('editor.substat.noRoll')}
@@ -230,7 +233,7 @@ export function SubstatInput({
value={
efficiency
? efficiency
- : (t`editor.substat.noStat` as string)
+ : (t('editor.substat.noStat') as string)
}
/>
diff --git a/libs/gi/ui/src/components/artifact/editor/UploadExplainationModal.tsx b/libs/gi/ui/src/components/artifact/editor/UploadExplainationModal.tsx
index b92124d12f..7205aa3d0f 100644
--- a/libs/gi/ui/src/components/artifact/editor/UploadExplainationModal.tsx
+++ b/libs/gi/ui/src/components/artifact/editor/UploadExplainationModal.tsx
@@ -28,7 +28,7 @@ export function UploadExplainationModal({
- {t`editor.uploadExp.title`}
+ {t('editor.uploadExp.title')}
diff --git a/libs/gi/ui/src/components/artifact/editor/index.tsx b/libs/gi/ui/src/components/artifact/editor/index.tsx
index e2806370c7..34b20b9ea2 100644
--- a/libs/gi/ui/src/components/artifact/editor/index.tsx
+++ b/libs/gi/ui/src/components/artifact/editor/index.tsx
@@ -312,7 +312,7 @@ export function ArtifactEditor({
)
const isValid = !errors.length
const canClearArtifact = (): boolean =>
- window.confirm(t`editor.clearPrompt` as string)
+ window.confirm(t('editor.clearPrompt') as string)
const { rarity = 5, level = 0 } = artifact ?? {}
// Same as above when assigning newValue.slotKey in update.
const slotKey = useMemo(() => {
@@ -326,7 +326,7 @@ export function ArtifactEditor({
if (
!artifactIdToEdit &&
(queueTotal || artifact) &&
- !window.confirm(t`editor.clearPrompt` as string)
+ !window.confirm(t('editor.clearPrompt') as string)
) {
e?.preventDefault()
return
@@ -464,7 +464,7 @@ export function ArtifactEditor({
) : (
- t`editor.unknownPieceName`
+ t('editor.unknownPieceName')
)}
@@ -552,7 +552,7 @@ export function ArtifactEditor({
{artifact ? (
) : (
- t`mainStat`
+ t('mainStat')
)}
}
@@ -578,7 +578,7 @@ export function ArtifactEditor({
rarity,
level
)
- : t`mainStat`}
+ : t('mainStat')}
}
>
- {t`editor.uploadBtn`}
+ {t('editor.uploadBtn')}
@@ -745,9 +745,9 @@ export function ArtifactEditor({
>
{oldType !== 'edit'
? oldType === 'duplicate'
- ? t`editor.dupArt`
- : t`editor.upArt`
- : t`editor.beforeEdit`}
+ ? t('editor.dupArt')
+ : t('editor.upArt')
+ : t('editor.beforeEdit')}
@@ -772,7 +772,9 @@ export function ArtifactEditor({
py={1}
variant="h6"
color="text.secondary"
- >{t`editor.preview`}
+ >
+ {t('editor.preview')}
+
{cArtifact && }
@@ -803,7 +805,7 @@ export function ArtifactEditor({
disabled={!artifact || !isValid}
color="primary"
>
- {t`editor.btnSave`}
+ {t('editor.btnSave')}
) : (
- {t`editor.btnAdd`}
+ {t('editor.btnAdd')}
)}
{allowEmpty && (
@@ -830,7 +832,9 @@ export function ArtifactEditor({
canClearArtifact() && reset()
}}
color="error"
- >{t`editor.btnClear`}
+ >
+ {t('editor.btnClear')}
+
)}
{process.env['NODE_ENV'] === 'development' && (
{t`editor.btnRandom`}
+ >
+ {t('editor.btnRandom')}
+
)}
{old && oldType !== 'edit' && (
{t`editor.btnUpdate`}
+ >
+ {t('editor.btnUpdate')}
+
)}
{!!removeId && (
}
onClick={() => {
- if (!window.confirm(t`editor.confirmDelete`)) return
+ if (!window.confirm(t('editor.confirmDelete'))) return
database.arts.remove(removeId)
reset()
if (!allowEmpty) setShow(false)
}}
disabled={!artifact || !isValid}
color="error"
- >{t`editor.delete`}
+ >
+ {t('editor.delete')}
+
)}
diff --git a/libs/gi/ui/src/components/build/BuildCard.tsx b/libs/gi/ui/src/components/build/BuildCard.tsx
index 932645e545..abc9d5c37b 100644
--- a/libs/gi/ui/src/components/build/BuildCard.tsx
+++ b/libs/gi/ui/src/components/build/BuildCard.tsx
@@ -88,7 +88,7 @@ export function BuildCard({
}}
>
{t`buildCardTip.edit`}}
+ title={{t('buildCardTip.edit')}}
placement="top"
arrow
>
@@ -104,7 +104,7 @@ export function BuildCard({
{t`buildCardTip.copyTc`}}
+ title={{t('buildCardTip.copyTc')}}
placement="top"
arrow
>
@@ -118,7 +118,7 @@ export function BuildCard({
{t`buildCardTip.duplicate`}}
+ title={{t('buildCardTip.duplicate')}}
placement="top"
arrow
>
@@ -132,7 +132,7 @@ export function BuildCard({
{t`buildCardTip.equip`}}
+ title={{t('buildCardTip.equip')}}
placement="top"
arrow
>
@@ -146,7 +146,7 @@ export function BuildCard({
{t`buildCardTip.delete`}}
+ title={{t('buildCardTip.delete')}}
placement="top"
arrow
>
diff --git a/libs/gi/ui/src/components/build/BuildDisplayItem.tsx b/libs/gi/ui/src/components/build/BuildDisplayItem.tsx
index 20e2e64a80..d97ff7acf1 100644
--- a/libs/gi/ui/src/components/build/BuildDisplayItem.tsx
+++ b/libs/gi/ui/src/components/build/BuildDisplayItem.tsx
@@ -346,7 +346,7 @@ export const BuildDisplayItem = memo(function BuildDisplayItem({
{label}
{currentlyEquipped && (
- {t`buildDisplay.equippedBadge`}
+ {t('buildDisplay.equippedBadge')}
)}
@@ -362,7 +362,9 @@ export const BuildDisplayItem = memo(function BuildDisplayItem({
)?.name
}
- {isActiveBuild && {t`buildDisplay.currentBadge`}}
+ {isActiveBuild && (
+ {t('buildDisplay.currentBadge')}
+ )}
{sameAsBuildIds.length > 1 && (
}
>
- {t`buildDisplay.equipToCrr`}
+ {t('buildDisplay.equipToCrr')}
{extraButtonsRight}
@@ -480,12 +482,12 @@ function CompareWeaponModal({
- {t`buildDisplay.oldWeapon`}
+ {t('buildDisplay.oldWeapon')}
{oldId === 'tc' ? (
- {t`buildDisplay.tcWeapon`}
+ {t('buildDisplay.tcWeapon')}
) : (
@@ -502,7 +504,7 @@ function CompareWeaponModal({
- {t`buildDisplay.newWeapon`}
+ {t('buildDisplay.newWeapon')}
@@ -565,12 +567,12 @@ function CompareArtifactModal({
- {t`compareArtModal.oldArt`}
+ {t('compareArtModal.oldArt')}
{oldId === 'tc' ? (
- {t`compareArtModal.tcArt`}
+ {t('compareArtModal.tcArt')}
) : (
- {t`compareArtModal.newArt`}
+ {t('compareArtModal.newArt')}
)}
@@ -661,7 +663,7 @@ function ArtInclusionButton({ id }: { id: string }) {
- {t`excludeArt.includeArtifactTip`}
+ {t('excludeArt.includeArtifactTip')}
}
placement="top"
@@ -673,7 +675,7 @@ function ArtInclusionButton({ id }: { id: string }) {
size="small"
startIcon={excluded ? : }
>
- {t`excludeArt.includeArtifactButton`}
+ {t('excludeArt.includeArtifactButton')}
)
@@ -710,7 +712,7 @@ function ExcludeEquipButton({
startIcon={excluded ? : }
>
- {t`excludeChar.allowEquip`}{' '}
+ {t('excludeChar.allowEquip')}{' '}
diff --git a/libs/gi/ui/src/components/build/EquipBuildModal.tsx b/libs/gi/ui/src/components/build/EquipBuildModal.tsx
index 9b2c89c9ea..34185e8f54 100644
--- a/libs/gi/ui/src/components/build/EquipBuildModal.tsx
+++ b/libs/gi/ui/src/components/build/EquipBuildModal.tsx
@@ -129,7 +129,9 @@ function Content(props: Props) {
}}
>
{/* Confirmation Message */}
- {t`equipBuildModal.desc`}
+
+ {t('equipBuildModal.desc')}
+
{teamCharId && (
setName(e.target.value)}
@@ -167,10 +169,10 @@ function Content(props: Props) {
}}
>
- {t`equipBuildModal.cancel`}
+ {t('equipBuildModal.cancel')}
- {t`equipBuildModal.equip`}
+ {t('equipBuildModal.equip')}
{/* Active Build */}
diff --git a/libs/gi/ui/src/components/character/CharacterMultiAutocomplete.tsx b/libs/gi/ui/src/components/character/CharacterMultiAutocomplete.tsx
index f6fd9a8f7a..442e89fa2d 100644
--- a/libs/gi/ui/src/components/character/CharacterMultiAutocomplete.tsx
+++ b/libs/gi/ui/src/components/character/CharacterMultiAutocomplete.tsx
@@ -134,7 +134,7 @@ export function CharacterMultiAutocomplete({
return (
}>
{t`tabEquip.swapArt`}}
+ title={{t('tabEquip.swapArt')}}
placement="top"
arrow
>
@@ -286,7 +286,7 @@ function WeaponSwapButton({
return (
<>
{t`tabEquip.swapWeapon`}}
+ title={{t('tabEquip.swapWeapon')}}
placement="top"
arrow
>
@@ -317,11 +317,9 @@ function LargeWeaponSwapButton({
const [show, onOpen, onClose] = useBoolState()
return (
<>
- }
- >{t`tabEquip.swapWeapon`}
+ }>
+ {t('tabEquip.swapWeapon')}
+
[
{
key: '',
- label: t`artifact:filterLocation.inventory`,
+ label: t('artifact:filterLocation.inventory'),
},
...Array.from(
new Set(
diff --git a/libs/gi/ui/src/components/character/LocationFilterMultiAutocomplete.tsx b/libs/gi/ui/src/components/character/LocationFilterMultiAutocomplete.tsx
index 0dce6d5c16..69b7b5b454 100644
--- a/libs/gi/ui/src/components/character/LocationFilterMultiAutocomplete.tsx
+++ b/libs/gi/ui/src/components/character/LocationFilterMultiAutocomplete.tsx
@@ -111,7 +111,7 @@ export function LocationFilterMultiAutocomplete({
toImg={toImg}
toExLabel={toExLabel}
toExItemLabel={toExItemLabel}
- label={t`artifact:filterLocation.location`}
+ label={t('artifact:filterLocation.location')}
chipProps={{ variant: 'outlined' }}
/>
diff --git a/libs/gi/ui/src/components/character/card/CharacterCardEquipmentRow.tsx b/libs/gi/ui/src/components/character/card/CharacterCardEquipmentRow.tsx
index fe1dbeaa97..0541a1f9a8 100644
--- a/libs/gi/ui/src/components/character/card/CharacterCardEquipmentRow.tsx
+++ b/libs/gi/ui/src/components/character/card/CharacterCardEquipmentRow.tsx
@@ -77,7 +77,7 @@ export function CharacterCardEquipmentRowTC({
}}
>
- {t`tcBuild`}
+ {t('tcBuild')}
diff --git a/libs/gi/ui/src/components/character/card/CharacterCardStats.tsx b/libs/gi/ui/src/components/character/card/CharacterCardStats.tsx
index 232f0e63c4..874cd47cc7 100644
--- a/libs/gi/ui/src/components/character/card/CharacterCardStats.tsx
+++ b/libs/gi/ui/src/components/character/card/CharacterCardStats.tsx
@@ -20,7 +20,7 @@ export function CharacterCardStats({ bgt }: { bgt?: CardBackgroundColor }) {
{name && (
- {t`specialized`}
+ {t('specialized')}
{icon}
{name}
diff --git a/libs/gi/ui/src/components/character/editor/Content.tsx b/libs/gi/ui/src/components/character/editor/Content.tsx
index 24810c8e33..398435f411 100644
--- a/libs/gi/ui/src/components/character/editor/Content.tsx
+++ b/libs/gi/ui/src/components/character/editor/Content.tsx
@@ -275,7 +275,7 @@ function InTeam() {
variant="outlined"
sx={{ backgroundColor: 'contentLight.main' }}
>
- {t`charContentModal.addLoAndTeam`}
+ {t('charContentModal.addLoAndTeam')}
diff --git a/libs/gi/ui/src/components/character/editor/LoadoutCard.tsx b/libs/gi/ui/src/components/character/editor/LoadoutCard.tsx
index 5677221ad8..e73ea23f5c 100644
--- a/libs/gi/ui/src/components/character/editor/LoadoutCard.tsx
+++ b/libs/gi/ui/src/components/character/editor/LoadoutCard.tsx
@@ -72,7 +72,7 @@ export function LoadoutCard({
color="info"
startIcon={}
>
- {t`charContentModal.addTeam`}
+ {t('charContentModal.addTeam')}
diff --git a/libs/gi/ui/src/components/character/editor/LoadoutEditor.tsx b/libs/gi/ui/src/components/character/editor/LoadoutEditor.tsx
index c784cc7130..dc8d270c05 100644
--- a/libs/gi/ui/src/components/character/editor/LoadoutEditor.tsx
+++ b/libs/gi/ui/src/components/character/editor/LoadoutEditor.tsx
@@ -124,14 +124,14 @@ export function LoadoutEditor({
database.teamChars.set(teamCharId, { name })}
/>
database.teamChars.set(teamCharId, { description })
@@ -148,7 +148,7 @@ export function LoadoutEditor({
fullWidth
startIcon={}
>
- {t`loadoutEditor.dupBtn`}
+ {t('loadoutEditor.dupBtn')}
@@ -166,7 +166,7 @@ export function LoadoutEditor({
color="error"
onClick={onShowRemoval}
>
- {t`loadoutEditor.delBtn`}
+ {t('loadoutEditor.delBtn')}
@@ -192,7 +192,7 @@ export function LoadoutEditor({
}}
>
- {t`loadoutEditor.optTarget`}
+ {t('loadoutEditor.optTarget')}
}
/>
@@ -220,7 +220,7 @@ export function LoadoutEditor({
- {t`loadoutEditor.conditionals`}
+ {t('loadoutEditor.conditionals')}
{conditionalCount}
@@ -234,7 +234,7 @@ export function LoadoutEditor({
title={
- {t`loadoutEditor.builds`}
+ {t('loadoutEditor.builds')}
}
/>
@@ -270,7 +270,7 @@ export function LoadoutEditor({
title={
- {t`loadoutEditor.teams`}
+ {t('loadoutEditor.teams')}
}
/>
@@ -298,7 +298,7 @@ export function LoadoutEditor({
color="info"
startIcon={}
>
- {t`loadoutEditor.addNewTeam`}
+ {t('loadoutEditor.addNewTeam')}
@@ -326,7 +326,7 @@ function BonusStatsCard({
}}
>
- {t`loadoutEditor.bonusStats`}
+ {t('loadoutEditor.bonusStats')}
}
titleTypographyProps={{ variant: 'h6' }}
@@ -365,7 +365,7 @@ function MultiTargetCard({
}}
>
- {t`loadoutEditor.mltTargets`}
+ {t('loadoutEditor.mltTargets')}
}
titleTypographyProps={{ variant: 'h6' }}
diff --git a/libs/gi/ui/src/components/character/editor/LoadoutHeaderContent.tsx b/libs/gi/ui/src/components/character/editor/LoadoutHeaderContent.tsx
index dc4b39bbd2..f76eb1adf4 100644
--- a/libs/gi/ui/src/components/character/editor/LoadoutHeaderContent.tsx
+++ b/libs/gi/ui/src/components/character/editor/LoadoutHeaderContent.tsx
@@ -48,21 +48,21 @@ export function LoadoutHeaderContent({
- {t`loadoutHeader.builds`}
+ {t('loadoutHeader.builds')}
{buildIds.length}
- {t`loadoutHeader.tcBuilds`}
+ {t('loadoutHeader.tcBuilds')}
{buildTcIds.length}
- {t`loadoutHeader.mltTargets`}
+ {t('loadoutHeader.mltTargets')}
{customMultiTargets.length}
@@ -70,7 +70,7 @@ export function LoadoutHeaderContent({
{optimizationTarget && (
- {t`loadoutHeader.optTarget`}
+ {t('loadoutHeader.optTarget')}
{description}
)}
- {t`loadoutDelModal.desc`}
+ {t('loadoutDelModal.desc')}
{!!buildIds.length && (
- {t`loadoutDelModal.builds`}
+ {t('loadoutDelModal.builds')}
{buildIds.length}{' '}
- {t`loadoutDelModal.tcBuilds`}
+ {t('loadoutDelModal.tcBuilds')}
{buildTcIds.length}{' '}
- {t`loadoutDelModal.mTargets`}
+ {t('loadoutDelModal.mTargets')}
{customMultiTargets.length}{' '}
- {t`loadoutDelModal.bonus`}
+ {t('loadoutDelModal.bonus')}
{Object.keys(bonusStats).length}
)}
{!!conditionalCount && (
- {t`loadoutDelModal.condi`}
+ {t('loadoutDelModal.condi')}
{conditionalCount}
)}
- {t`loadoutDelModal.optConfig`}
+ {t('loadoutDelModal.optConfig')}
{!!teamIds.length && (
- {t`loadoutDelModal.affected`}
+ {t('loadoutDelModal.affected')}
{teamIds.length}
@@ -224,14 +224,14 @@ export function RemoveLoadout({
} color="secondary" onClick={onHide}>
- {t`loadoutDelModal.cancel`}
+ {t('loadoutDelModal.cancel')}
}
color="error"
onClick={onDeleteLoadout}
>
- {t`loadoutDelModal.delete`}
+ {t('loadoutDelModal.delete')}
diff --git a/libs/gi/ui/src/components/database/DatabaseCard.tsx b/libs/gi/ui/src/components/database/DatabaseCard.tsx
index d342c29458..34c99238ab 100644
--- a/libs/gi/ui/src/components/database/DatabaseCard.tsx
+++ b/libs/gi/ui/src/components/database/DatabaseCard.tsx
@@ -27,7 +27,7 @@ export function DatabaseCard({ readOnly = false }: { readOnly?: boolean }) {
return (
- {t`DatabaseCard.title`}
+ {t('DatabaseCard.title')}
@@ -147,14 +147,16 @@ function DataCard({ index, readOnly }: { index: number; readOnly: boolean }) {
onClick={onSwap}
color="warning"
disabled={readOnly}
- >{t`DatabaseCard.button.swap`}
+ >
+ {t('DatabaseCard.button.swap')}
+
)}
@@ -209,7 +211,7 @@ function DataCard({ index, readOnly }: { index: number; readOnly: boolean }) {
onClick={onOpen}
disabled={readOnly}
>
- {t`DatabaseCard.button.upload`}
+ {t('DatabaseCard.button.upload')}
@@ -219,7 +221,7 @@ function DataCard({ index, readOnly }: { index: number; readOnly: boolean }) {
onClick={download}
startIcon={}
>
- {t`DatabaseCard.button.download`}
+ {t('DatabaseCard.button.download')}
@@ -230,7 +232,7 @@ function DataCard({ index, readOnly }: { index: number; readOnly: boolean }) {
onClick={onDelete}
startIcon={}
>
- {t`DatabaseCard.button.delete`}
+ {t('DatabaseCard.button.delete')}
diff --git a/libs/gi/ui/src/components/database/UploadCard.tsx b/libs/gi/ui/src/components/database/UploadCard.tsx
index 38a54b3070..5430937eba 100644
--- a/libs/gi/ui/src/components/database/UploadCard.tsx
+++ b/libs/gi/ui/src/components/database/UploadCard.tsx
@@ -125,11 +125,9 @@ export function UploadCard({
type="file"
onChange={onUpload}
/>
- }
- >{t`uploadCard.buttons.open`}
+ }>
+ {t('uploadCard.buttons.open')}
+
@@ -154,8 +152,8 @@ export function UploadCard({
title={
{ignoreDups
- ? t`uploadCard.tooltip.ignoreDup`
- : t`uploadCard.tooltip.detectdup`}
+ ? t('uploadCard.tooltip.ignoreDup')
+ : t('uploadCard.tooltip.detectdup')}
}
placement="top"
@@ -169,7 +167,7 @@ export function UploadCard({
onClick={() => setIgnoreDups(!ignoreDups)}
startIcon={ignoreDups ? : }
>
- {t`uploadCard.buttons.detectDups`}
+ {t('uploadCard.buttons.detectDups')}
@@ -177,8 +175,8 @@ export function UploadCard({
title={
{keepNotInImport
- ? t`uploadCard.tooltip.keepNotInImport`
- : t`uploadCard.tooltip.delNotInImport`}
+ ? t('uploadCard.tooltip.keepNotInImport')
+ : t('uploadCard.tooltip.delNotInImport')}
}
placement="top"
@@ -194,7 +192,7 @@ export function UploadCard({
keepNotInImport ? :
}
>
- {t`uploadCard.buttons.delNotInImport`}
+ {t('uploadCard.buttons.delNotInImport')}
diff --git a/libs/gi/ui/src/components/team/TeamDelModal.tsx b/libs/gi/ui/src/components/team/TeamDelModal.tsx
index 00dce246a9..7388c3e5b0 100644
--- a/libs/gi/ui/src/components/team/TeamDelModal.tsx
+++ b/libs/gi/ui/src/components/team/TeamDelModal.tsx
@@ -80,7 +80,7 @@ export function TeamDelModal({
alignItems: 'center',
}}
>
- {t`teamDelModal.teamName`}
+ {t('teamDelModal.teamName')}
{name}
{description && (
@@ -123,7 +123,7 @@ export function TeamDelModal({
startIcon={}
onClick={onDelete}
>
- {t`teamDelModal.delBtn`}
+ {t('teamDelModal.delBtn')}
@@ -167,7 +167,7 @@ function LoadoutDisplay({
{inTeams.length === 1
- ? t`teamDelModal.onlyCrrTeam`
+ ? t('teamDelModal.onlyCrrTeam')
: t('teamDelModal.usingMltTeams', { count: inTeams.length })}
diff --git a/libs/gi/ui/src/components/weapon/WeaponCard.tsx b/libs/gi/ui/src/components/weapon/WeaponCard.tsx
index 885a0b0c50..1fc9f1face 100644
--- a/libs/gi/ui/src/components/weapon/WeaponCard.tsx
+++ b/libs/gi/ui/src/components/weapon/WeaponCard.tsx
@@ -233,7 +233,7 @@ export function WeaponCardObj({
>
{!!onEdit && (
{t`page_weapon:edit`}}
+ title={{t('page_weapon:edit')}}
placement="top"
arrow
>
diff --git a/libs/gi/ui/src/components/weapon/WeaponSwapModal.tsx b/libs/gi/ui/src/components/weapon/WeaponSwapModal.tsx
index da592194b3..6fcc123095 100644
--- a/libs/gi/ui/src/components/weapon/WeaponSwapModal.tsx
+++ b/libs/gi/ui/src/components/weapon/WeaponSwapModal.tsx
@@ -187,7 +187,7 @@ export function WeaponSwapModal({
{weaponTypeKey ? (
) : null}
- {t`page_character:tabEquip.swapWeapon`}
+ {t('page_character:tabEquip.swapWeapon')}
}
action={
diff --git a/libs/pando/engine/src/node/optimization.ts b/libs/pando/engine/src/node/optimization.ts
index b8063591ce..4c3955902e 100644
--- a/libs/pando/engine/src/node/optimization.ts
+++ b/libs/pando/engine/src/node/optimization.ts
@@ -316,6 +316,18 @@ function dedupMapArray(x: I[], map: (_: I) => O): O[] {
return x.every((x, i) => (x as any) === newX[i]) ? (x as any) : newX
}
+/**
+ * Generates a custom function, "cuz speed".
+ *
+ * @param n
+ * @param dynTagCategory
+ * @param slotCount
+ * @param initial
+ * @param header
+ * @returns a custom function that accepts an array `_` of data.
+ *
+ * NOTE: `slotCount` === `_.length` for optimization reasons.
+ */
export function compile(
n: NumTagFree[],
dynTagCategory: string,
diff --git a/libs/sr/formula/src/data/common/index.ts b/libs/sr/formula/src/data/common/index.ts
index 16555c68b9..f1e15c21b1 100644
--- a/libs/sr/formula/src/data/common/index.ts
+++ b/libs/sr/formula/src/data/common/index.ts
@@ -1,4 +1,5 @@
import { max, min, prod } from '@genshin-optimizer/pando/engine'
+import { allLightConeKeys } from '@genshin-optimizer/sr/consts'
import type { TagMapNodeEntries } from '../util'
import { own, ownBuff, percent, reader } from '../util'
import dmg from './dmg'
@@ -14,6 +15,11 @@ const data: TagMapNodeEntries = [
// convert sheet: to sheet:agg for accumulation
// sheet: is reread in src/util.ts:relicsData()
reader.sheet('agg').reread(reader.sheet('char')),
+
+ // add all light cones by default
+ ...allLightConeKeys.map((lc) =>
+ reader.sheet('lightCone').reread(reader.sheet(lc))
+ ),
reader.sheet('agg').reread(reader.sheet('lightCone')),
// Final <= Premod <= Base
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ASecretVow.ts b/libs/sr/formula/src/data/lightCone/sheets/ASecretVow.ts
index 8fbeb49527..1d44233307 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ASecretVow.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ASecretVow.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ASecretVow'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Adversarial.ts b/libs/sr/formula/src/data/lightCone/sheets/Adversarial.ts
index f392bffd86..e4743bc5d6 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Adversarial.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Adversarial.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Adversarial'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/AfterTheCharmonyFall.ts b/libs/sr/formula/src/data/lightCone/sheets/AfterTheCharmonyFall.ts
index a1331ef634..6cae3431f3 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/AfterTheCharmonyFall.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/AfterTheCharmonyFall.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'AfterTheCharmonyFall'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/AlongThePassingShore.ts b/libs/sr/formula/src/data/lightCone/sheets/AlongThePassingShore.ts
index 901b0b2b5e..0e1ad601ce 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/AlongThePassingShore.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/AlongThePassingShore.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'AlongThePassingShore'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Amber.ts b/libs/sr/formula/src/data/lightCone/sheets/Amber.ts
index 961f211b6a..516bc53a00 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Amber.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Amber.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Amber'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/AnInstantBeforeAGaze.ts b/libs/sr/formula/src/data/lightCone/sheets/AnInstantBeforeAGaze.ts
index ae11b5b14c..4a5ac5215a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/AnInstantBeforeAGaze.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/AnInstantBeforeAGaze.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'AnInstantBeforeAGaze'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Arrows.ts b/libs/sr/formula/src/data/lightCone/sheets/Arrows.ts
index 5f3015e5de..6e7fd14ae0 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Arrows.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Arrows.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Arrows'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/BaptismOfPureThought.ts b/libs/sr/formula/src/data/lightCone/sheets/BaptismOfPureThought.ts
index 51f1735d59..229fc1ffe1 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/BaptismOfPureThought.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/BaptismOfPureThought.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'BaptismOfPureThought'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/BeforeDawn.ts b/libs/sr/formula/src/data/lightCone/sheets/BeforeDawn.ts
index 7608d8aa46..db4ca6d2f3 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/BeforeDawn.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/BeforeDawn.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'BeforeDawn'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/BeforeTheTutorialMissionStarts.ts b/libs/sr/formula/src/data/lightCone/sheets/BeforeTheTutorialMissionStarts.ts
index 71e0e08ea3..b509cc958b 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/BeforeTheTutorialMissionStarts.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/BeforeTheTutorialMissionStarts.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'BeforeTheTutorialMissionStarts'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/BoundlessChoreo.ts b/libs/sr/formula/src/data/lightCone/sheets/BoundlessChoreo.ts
index 2faca25298..e1f7f2bfdc 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/BoundlessChoreo.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/BoundlessChoreo.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'BoundlessChoreo'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/BrighterThanTheSun.ts b/libs/sr/formula/src/data/lightCone/sheets/BrighterThanTheSun.ts
index 819bf17fda..61bb1fac5a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/BrighterThanTheSun.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/BrighterThanTheSun.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'BrighterThanTheSun'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ButTheBattleIsntOver.ts b/libs/sr/formula/src/data/lightCone/sheets/ButTheBattleIsntOver.ts
index af90eb9013..2e2f5c75ef 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ButTheBattleIsntOver.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ButTheBattleIsntOver.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ButTheBattleIsntOver'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/CarveTheMoonWeaveTheClouds.ts b/libs/sr/formula/src/data/lightCone/sheets/CarveTheMoonWeaveTheClouds.ts
index 2a743d04cd..cb5e925c1d 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/CarveTheMoonWeaveTheClouds.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/CarveTheMoonWeaveTheClouds.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'CarveTheMoonWeaveTheClouds'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Chorus.ts b/libs/sr/formula/src/data/lightCone/sheets/Chorus.ts
index a9a456ad7c..5e21a0af24 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Chorus.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Chorus.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Chorus'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/CollapsingSky.ts b/libs/sr/formula/src/data/lightCone/sheets/CollapsingSky.ts
index e3a96c33be..2eac88c730 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/CollapsingSky.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/CollapsingSky.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'CollapsingSky'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ConcertForTwo.ts b/libs/sr/formula/src/data/lightCone/sheets/ConcertForTwo.ts
index cf156885a5..425787d234 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ConcertForTwo.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ConcertForTwo.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ConcertForTwo'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Cornucopia.ts b/libs/sr/formula/src/data/lightCone/sheets/Cornucopia.ts
index a5847959a2..b745e53c0f 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Cornucopia.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Cornucopia.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Cornucopia'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/CruisingInTheStellarSea.ts b/libs/sr/formula/src/data/lightCone/sheets/CruisingInTheStellarSea.ts
index 3e64ec126a..a1a26f155e 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/CruisingInTheStellarSea.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/CruisingInTheStellarSea.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'CruisingInTheStellarSea'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DanceAtSunset.ts b/libs/sr/formula/src/data/lightCone/sheets/DanceAtSunset.ts
index ade59321ce..39d655d77a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DanceAtSunset.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DanceAtSunset.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DanceAtSunset'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DanceDanceDance.ts b/libs/sr/formula/src/data/lightCone/sheets/DanceDanceDance.ts
index c8426e61bc..fc451955af 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DanceDanceDance.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DanceDanceDance.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DanceDanceDance'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DartingArrow.ts b/libs/sr/formula/src/data/lightCone/sheets/DartingArrow.ts
index 0a727a0297..fde2f1676e 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DartingArrow.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DartingArrow.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DartingArrow'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DataBank.ts b/libs/sr/formula/src/data/lightCone/sheets/DataBank.ts
index 8a5c51380b..25188ca6e4 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DataBank.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DataBank.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DataBank'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DayOneOfMyNewLife.ts b/libs/sr/formula/src/data/lightCone/sheets/DayOneOfMyNewLife.ts
index e71d0f4e89..ee73854f6f 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DayOneOfMyNewLife.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DayOneOfMyNewLife.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DayOneOfMyNewLife'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Defense.ts b/libs/sr/formula/src/data/lightCone/sheets/Defense.ts
index 9ebb1b99a9..baa70e2692 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Defense.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Defense.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Defense'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DestinysThreadsForewoven.ts b/libs/sr/formula/src/data/lightCone/sheets/DestinysThreadsForewoven.ts
index 9d4ea01833..128037c472 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DestinysThreadsForewoven.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DestinysThreadsForewoven.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DestinysThreadsForewoven'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/DreamvilleAdventure.ts b/libs/sr/formula/src/data/lightCone/sheets/DreamvilleAdventure.ts
index 1139edc4d4..2d52810dad 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/DreamvilleAdventure.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/DreamvilleAdventure.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'DreamvilleAdventure'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/EarthlyEscapade.ts b/libs/sr/formula/src/data/lightCone/sheets/EarthlyEscapade.ts
index f42afd17b0..fb153d06f6 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/EarthlyEscapade.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/EarthlyEscapade.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'EarthlyEscapade'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/EchoesOfTheCoffin.ts b/libs/sr/formula/src/data/lightCone/sheets/EchoesOfTheCoffin.ts
index 87c58b2a3d..44e4fe1381 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/EchoesOfTheCoffin.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/EchoesOfTheCoffin.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'EchoesOfTheCoffin'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/EyesOfThePrey.ts b/libs/sr/formula/src/data/lightCone/sheets/EyesOfThePrey.ts
index dcb2ae2ef0..d95b3ac4dd 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/EyesOfThePrey.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/EyesOfThePrey.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'EyesOfThePrey'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Fermata.ts b/libs/sr/formula/src/data/lightCone/sheets/Fermata.ts
index 829e40b8dd..4c154a0d9d 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Fermata.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Fermata.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Fermata'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/FinalVictor.ts b/libs/sr/formula/src/data/lightCone/sheets/FinalVictor.ts
index bc5d242a82..8e1ecdff61 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/FinalVictor.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/FinalVictor.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'FinalVictor'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/FineFruit.ts b/libs/sr/formula/src/data/lightCone/sheets/FineFruit.ts
index b6f5625c77..d8dac90e1a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/FineFruit.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/FineFruit.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'FineFruit'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/FlamesAfar.ts b/libs/sr/formula/src/data/lightCone/sheets/FlamesAfar.ts
index 482270ea9c..fa52b483de 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/FlamesAfar.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/FlamesAfar.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'FlamesAfar'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/FlowingNightglow.ts b/libs/sr/formula/src/data/lightCone/sheets/FlowingNightglow.ts
index c2d62f3a13..a849f52ad2 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/FlowingNightglow.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/FlowingNightglow.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'FlowingNightglow'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/GeniusesRepose.ts b/libs/sr/formula/src/data/lightCone/sheets/GeniusesRepose.ts
index 5c6110cdcf..1faab60ab3 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/GeniusesRepose.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/GeniusesRepose.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'GeniusesRepose'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/GoodNightAndSleepWell.ts b/libs/sr/formula/src/data/lightCone/sheets/GoodNightAndSleepWell.ts
index aee04a3b98..6bd84c247d 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/GoodNightAndSleepWell.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/GoodNightAndSleepWell.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'GoodNightAndSleepWell'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/HeyOverHere.ts b/libs/sr/formula/src/data/lightCone/sheets/HeyOverHere.ts
index 261520d9ba..5ecb0fba3c 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/HeyOverHere.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/HeyOverHere.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'HeyOverHere'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/HiddenShadow.ts b/libs/sr/formula/src/data/lightCone/sheets/HiddenShadow.ts
index d81459947d..92b995ba84 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/HiddenShadow.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/HiddenShadow.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'HiddenShadow'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/IShallBeMyOwnSword.ts b/libs/sr/formula/src/data/lightCone/sheets/IShallBeMyOwnSword.ts
index ab2c0d3372..238dee3636 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/IShallBeMyOwnSword.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/IShallBeMyOwnSword.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'IShallBeMyOwnSword'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/InTheNameOfTheWorld.ts b/libs/sr/formula/src/data/lightCone/sheets/InTheNameOfTheWorld.ts
index 65845f6de8..9cbbfecedd 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/InTheNameOfTheWorld.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/InTheNameOfTheWorld.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'InTheNameOfTheWorld'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/InTheNight.ts b/libs/sr/formula/src/data/lightCone/sheets/InTheNight.ts
index 1fc8726af0..4c90bfc4d7 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/InTheNight.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/InTheNight.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'InTheNight'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/IncessantRain.ts b/libs/sr/formula/src/data/lightCone/sheets/IncessantRain.ts
index 72053630d7..736f24e222 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/IncessantRain.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/IncessantRain.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'IncessantRain'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/IndeliblePromise.ts b/libs/sr/formula/src/data/lightCone/sheets/IndeliblePromise.ts
index 9f54861e04..a327674e9a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/IndeliblePromise.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/IndeliblePromise.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'IndeliblePromise'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/InherentlyUnjustDestiny.ts b/libs/sr/formula/src/data/lightCone/sheets/InherentlyUnjustDestiny.ts
index f76afc82b7..1d9b02fdc7 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/InherentlyUnjustDestiny.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/InherentlyUnjustDestiny.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'InherentlyUnjustDestiny'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ItsShowtime.ts b/libs/sr/formula/src/data/lightCone/sheets/ItsShowtime.ts
index 8db547f6b2..411f979b7c 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ItsShowtime.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ItsShowtime.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ItsShowtime'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/LandausChoice.ts b/libs/sr/formula/src/data/lightCone/sheets/LandausChoice.ts
index aee7713795..fc9aa639dd 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/LandausChoice.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/LandausChoice.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'LandausChoice'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Loop.ts b/libs/sr/formula/src/data/lightCone/sheets/Loop.ts
index 6d66d4c847..81273bec95 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Loop.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Loop.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Loop'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/MakeTheWorldClamor.ts b/libs/sr/formula/src/data/lightCone/sheets/MakeTheWorldClamor.ts
index 028799ea01..5a9d78b0fa 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/MakeTheWorldClamor.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/MakeTheWorldClamor.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'MakeTheWorldClamor'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Mediation.ts b/libs/sr/formula/src/data/lightCone/sheets/Mediation.ts
index 8cb6f78848..e34a08535f 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Mediation.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Mediation.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Mediation'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/MemoriesOfThePast.ts b/libs/sr/formula/src/data/lightCone/sheets/MemoriesOfThePast.ts
index 221a410f5a..12d84f0e80 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/MemoriesOfThePast.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/MemoriesOfThePast.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'MemoriesOfThePast'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/MeshingCogs.ts b/libs/sr/formula/src/data/lightCone/sheets/MeshingCogs.ts
index bb8857ee46..4ba6550b1f 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/MeshingCogs.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/MeshingCogs.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'MeshingCogs'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/MomentOfVictory.ts b/libs/sr/formula/src/data/lightCone/sheets/MomentOfVictory.ts
index b9942f1daf..5130c71fba 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/MomentOfVictory.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/MomentOfVictory.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'MomentOfVictory'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Multiplication.ts b/libs/sr/formula/src/data/lightCone/sheets/Multiplication.ts
index cf83edc828..3a7359c9c2 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Multiplication.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Multiplication.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Multiplication'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/MutualDemise.ts b/libs/sr/formula/src/data/lightCone/sheets/MutualDemise.ts
index 3e4e272bc8..6b8abaa4c1 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/MutualDemise.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/MutualDemise.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'MutualDemise'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/NightOfFright.ts b/libs/sr/formula/src/data/lightCone/sheets/NightOfFright.ts
index a64e0fc210..01eb16ba34 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/NightOfFright.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/NightOfFright.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'NightOfFright'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/NightOnTheMilkyWay.ts b/libs/sr/formula/src/data/lightCone/sheets/NightOnTheMilkyWay.ts
index 9a7c67397c..96e811662f 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/NightOnTheMilkyWay.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/NightOnTheMilkyWay.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'NightOnTheMilkyWay'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/NowhereToRun.ts b/libs/sr/formula/src/data/lightCone/sheets/NowhereToRun.ts
index b4d27bdcd6..0cbded6f9b 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/NowhereToRun.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/NowhereToRun.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'NowhereToRun'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/OnTheFallOfAnAeon.ts b/libs/sr/formula/src/data/lightCone/sheets/OnTheFallOfAnAeon.ts
index defe1d00ec..56d5351282 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/OnTheFallOfAnAeon.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/OnTheFallOfAnAeon.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'OnTheFallOfAnAeon'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/OnlySilenceRemains.ts b/libs/sr/formula/src/data/lightCone/sheets/OnlySilenceRemains.ts
index 03ea0144a7..54c4d7de9b 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/OnlySilenceRemains.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/OnlySilenceRemains.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'OnlySilenceRemains'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Passkey.ts b/libs/sr/formula/src/data/lightCone/sheets/Passkey.ts
index ac9faf8dee..e6a28c1c97 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Passkey.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Passkey.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Passkey'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PastAndFuture.ts b/libs/sr/formula/src/data/lightCone/sheets/PastAndFuture.ts
index 23e757b8db..b76b806b3a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PastAndFuture.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PastAndFuture.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PastAndFuture'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PastSelfInMirror.ts b/libs/sr/formula/src/data/lightCone/sheets/PastSelfInMirror.ts
index 8785dd7638..3f34402efa 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PastSelfInMirror.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PastSelfInMirror.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -13,7 +13,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PastSelfInMirror'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
const { useUltimate } = allBoolConditionals(key)
@@ -21,12 +21,14 @@ const { useUltimate } = allBoolConditionals(key)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// Conditional buffs
registerBuff(
'cond_dmg_',
- teamBuff.premod.dmg_.add(useUltimate.ifOn(subscript(superimpose, dm.dmg_)))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, useUltimate.ifOn(subscript(superimpose, dm.dmg_)))
+ )
)
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PatienceIsAllYouNeed.ts b/libs/sr/formula/src/data/lightCone/sheets/PatienceIsAllYouNeed.ts
index f7ff75b104..71c5bf5a42 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PatienceIsAllYouNeed.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PatienceIsAllYouNeed.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PatienceIsAllYouNeed'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PerfectTiming.ts b/libs/sr/formula/src/data/lightCone/sheets/PerfectTiming.ts
index 200973c9b3..0c35f23ecb 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PerfectTiming.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PerfectTiming.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PerfectTiming'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Pioneering.ts b/libs/sr/formula/src/data/lightCone/sheets/Pioneering.ts
index 81a36eaf49..1439394ab6 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Pioneering.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Pioneering.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Pioneering'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PlanetaryRendezvous.ts b/libs/sr/formula/src/data/lightCone/sheets/PlanetaryRendezvous.ts
index f9644e2a69..d9b9d02ccf 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PlanetaryRendezvous.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PlanetaryRendezvous.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PlanetaryRendezvous'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PoisedToBloom.ts b/libs/sr/formula/src/data/lightCone/sheets/PoisedToBloom.ts
index 590dee8d02..d73b5c5ab7 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PoisedToBloom.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PoisedToBloom.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PoisedToBloom'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/PostOpConversation.ts b/libs/sr/formula/src/data/lightCone/sheets/PostOpConversation.ts
index db679e1e50..95dbd41842 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/PostOpConversation.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/PostOpConversation.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'PostOpConversation'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/QuidProQuo.ts b/libs/sr/formula/src/data/lightCone/sheets/QuidProQuo.ts
index a235a24d2a..8867909983 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/QuidProQuo.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/QuidProQuo.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'QuidProQuo'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ReforgedRemembrance.ts b/libs/sr/formula/src/data/lightCone/sheets/ReforgedRemembrance.ts
index e670cad6be..28211956fb 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ReforgedRemembrance.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ReforgedRemembrance.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ReforgedRemembrance'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ResolutionShinesAsPearlsOfSweat.ts b/libs/sr/formula/src/data/lightCone/sheets/ResolutionShinesAsPearlsOfSweat.ts
index 25aeefe8f8..ece22982bc 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ResolutionShinesAsPearlsOfSweat.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ResolutionShinesAsPearlsOfSweat.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ResolutionShinesAsPearlsOfSweat'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ReturnToDarkness.ts b/libs/sr/formula/src/data/lightCone/sheets/ReturnToDarkness.ts
index 1d04096975..18d2c65764 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ReturnToDarkness.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ReturnToDarkness.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ReturnToDarkness'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/RiverFlowsInSpring.ts b/libs/sr/formula/src/data/lightCone/sheets/RiverFlowsInSpring.ts
index 5193dc665c..94899d2697 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/RiverFlowsInSpring.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/RiverFlowsInSpring.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'RiverFlowsInSpring'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Sagacity.ts b/libs/sr/formula/src/data/lightCone/sheets/Sagacity.ts
index 0d97aa8445..8f9fcd6d2e 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Sagacity.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Sagacity.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Sagacity'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SailingTowardsASecondLife.ts b/libs/sr/formula/src/data/lightCone/sheets/SailingTowardsASecondLife.ts
index 324cf592e4..c1defde4b4 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SailingTowardsASecondLife.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SailingTowardsASecondLife.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SailingTowardsASecondLife'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SharedFeeling.ts b/libs/sr/formula/src/data/lightCone/sheets/SharedFeeling.ts
index 0ef2a7279e..ddb3a3f27e 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SharedFeeling.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SharedFeeling.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SharedFeeling'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ShatteredHome.ts b/libs/sr/formula/src/data/lightCone/sheets/ShatteredHome.ts
index 22d4ff62a8..216db67deb 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ShatteredHome.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ShatteredHome.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ShatteredHome'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SheAlreadyShutHerEyes.ts b/libs/sr/formula/src/data/lightCone/sheets/SheAlreadyShutHerEyes.ts
index f7ba3ce3b4..0f1cd5322e 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SheAlreadyShutHerEyes.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SheAlreadyShutHerEyes.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SheAlreadyShutHerEyes'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SleepLikeTheDead.ts b/libs/sr/formula/src/data/lightCone/sheets/SleepLikeTheDead.ts
index 057d60c904..df9a4af6ee 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SleepLikeTheDead.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SleepLikeTheDead.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SleepLikeTheDead'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SolitaryHealing.ts b/libs/sr/formula/src/data/lightCone/sheets/SolitaryHealing.ts
index 32c1baec36..f4a50d87e0 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SolitaryHealing.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SolitaryHealing.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SolitaryHealing'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SomethingIrreplaceable.ts b/libs/sr/formula/src/data/lightCone/sheets/SomethingIrreplaceable.ts
index fde51403a8..af8c3c5052 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SomethingIrreplaceable.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SomethingIrreplaceable.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SomethingIrreplaceable'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/SubscribeForMore.ts b/libs/sr/formula/src/data/lightCone/sheets/SubscribeForMore.ts
index 6c26de0766..40b866068a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/SubscribeForMore.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/SubscribeForMore.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'SubscribeForMore'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Swordplay.ts b/libs/sr/formula/src/data/lightCone/sheets/Swordplay.ts
index 2f03e2572f..7193ede45e 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Swordplay.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Swordplay.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Swordplay'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TextureOfMemories.ts b/libs/sr/formula/src/data/lightCone/sheets/TextureOfMemories.ts
index eace042cea..468c303d51 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TextureOfMemories.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TextureOfMemories.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TextureOfMemories'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TheBirthOfTheSelf.ts b/libs/sr/formula/src/data/lightCone/sheets/TheBirthOfTheSelf.ts
index e977365588..3c1d691282 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TheBirthOfTheSelf.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TheBirthOfTheSelf.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TheBirthOfTheSelf'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TheDayTheCosmosFell.ts b/libs/sr/formula/src/data/lightCone/sheets/TheDayTheCosmosFell.ts
index bd86077636..a87150d298 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TheDayTheCosmosFell.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TheDayTheCosmosFell.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TheDayTheCosmosFell'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TheMolesWelcomeYou.ts b/libs/sr/formula/src/data/lightCone/sheets/TheMolesWelcomeYou.ts
index 47a0432058..0de0d9fbde 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TheMolesWelcomeYou.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TheMolesWelcomeYou.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TheMolesWelcomeYou'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TheSeriousnessOfBreakfast.ts b/libs/sr/formula/src/data/lightCone/sheets/TheSeriousnessOfBreakfast.ts
index 646e7b3c66..91a6798a05 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TheSeriousnessOfBreakfast.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TheSeriousnessOfBreakfast.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TheSeriousnessOfBreakfast'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TheUnreachableSide.ts b/libs/sr/formula/src/data/lightCone/sheets/TheUnreachableSide.ts
index c32447502c..0d5672a32b 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TheUnreachableSide.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TheUnreachableSide.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TheUnreachableSide'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/ThisIsMe.ts b/libs/sr/formula/src/data/lightCone/sheets/ThisIsMe.ts
index eba50b7d07..4f247d88a1 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/ThisIsMe.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/ThisIsMe.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'ThisIsMe'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TimeWaitsForNoOne.ts b/libs/sr/formula/src/data/lightCone/sheets/TimeWaitsForNoOne.ts
index fcdba820a3..c54606f56a 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TimeWaitsForNoOne.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TimeWaitsForNoOne.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TimeWaitsForNoOne'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TodayIsAnotherPeacefulDay.ts b/libs/sr/formula/src/data/lightCone/sheets/TodayIsAnotherPeacefulDay.ts
index 1eb5ba4120..be570472d2 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TodayIsAnotherPeacefulDay.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TodayIsAnotherPeacefulDay.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TodayIsAnotherPeacefulDay'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/TrendOfTheUniversalMarket.ts b/libs/sr/formula/src/data/lightCone/sheets/TrendOfTheUniversalMarket.ts
index 7fa9141855..f02c178576 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/TrendOfTheUniversalMarket.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/TrendOfTheUniversalMarket.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'TrendOfTheUniversalMarket'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/UnderTheBlueSky.ts b/libs/sr/formula/src/data/lightCone/sheets/UnderTheBlueSky.ts
index 45ca26af63..33b3e98b2d 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/UnderTheBlueSky.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/UnderTheBlueSky.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'UnderTheBlueSky'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/Void.ts b/libs/sr/formula/src/data/lightCone/sheets/Void.ts
index 80e15c7763..ccf760d354 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/Void.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/Void.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'Void'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WarmthShortensColdNights.ts b/libs/sr/formula/src/data/lightCone/sheets/WarmthShortensColdNights.ts
index d3b09bed55..500b98419f 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WarmthShortensColdNights.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WarmthShortensColdNights.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WarmthShortensColdNights'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WeAreWildfire.ts b/libs/sr/formula/src/data/lightCone/sheets/WeAreWildfire.ts
index bc99dbc136..f96d055cf3 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WeAreWildfire.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WeAreWildfire.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WeAreWildfire'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WeWillMeetAgain.ts b/libs/sr/formula/src/data/lightCone/sheets/WeWillMeetAgain.ts
index 46149f2fbb..1226d7bc11 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WeWillMeetAgain.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WeWillMeetAgain.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WeWillMeetAgain'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WhatIsReal.ts b/libs/sr/formula/src/data/lightCone/sheets/WhatIsReal.ts
index 5232a8ac24..4b63e861f8 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WhatIsReal.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WhatIsReal.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WhatIsReal'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WhereaboutsShouldDreamsRest.ts b/libs/sr/formula/src/data/lightCone/sheets/WhereaboutsShouldDreamsRest.ts
index b5a6d420be..697f493066 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WhereaboutsShouldDreamsRest.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WhereaboutsShouldDreamsRest.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WhereaboutsShouldDreamsRest'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WoofWalkTime.ts b/libs/sr/formula/src/data/lightCone/sheets/WoofWalkTime.ts
index 16b533a7d8..69dcd44270 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WoofWalkTime.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WoofWalkTime.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WoofWalkTime'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/WorrisomeBlissful.ts b/libs/sr/formula/src/data/lightCone/sheets/WorrisomeBlissful.ts
index 219be5226e..c94ec235f4 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/WorrisomeBlissful.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/WorrisomeBlissful.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'WorrisomeBlissful'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/sheets/YetHopeIsPriceless.ts b/libs/sr/formula/src/data/lightCone/sheets/YetHopeIsPriceless.ts
index 2e10eef9e9..7acb3efb51 100644
--- a/libs/sr/formula/src/data/lightCone/sheets/YetHopeIsPriceless.ts
+++ b/libs/sr/formula/src/data/lightCone/sheets/YetHopeIsPriceless.ts
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = 'YetHopeIsPriceless'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/data/lightCone/util.ts b/libs/sr/formula/src/data/lightCone/util.ts
index 39d8ef6d42..c6071a4961 100644
--- a/libs/sr/formula/src/data/lightCone/util.ts
+++ b/libs/sr/formula/src/data/lightCone/util.ts
@@ -1,23 +1,36 @@
-import { cmpEq, prod, subscript, sum } from '@genshin-optimizer/pando/engine'
+import {
+ cmpEq,
+ cmpGE,
+ prod,
+ subscript,
+ sum,
+} from '@genshin-optimizer/pando/engine'
+import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import type { LightConeDatum } from '@genshin-optimizer/sr/stats'
import type { TagMapNodeEntries } from '../util'
import { getStatFromStatKey, own, ownBuff } from '../util'
export function entriesForLightCone(
+ key: LightConeKey,
dataGen: LightConeDatum
): TagMapNodeEntries {
const { ascension, superimpose } = own.lightCone
// The "add" only applies to lvl - 1, since "base" is stat at lvl1
const lvl1 = sum(own.lightCone.lvl, -1)
+ const lcCount = own.common.count.sheet(key)
return [
// Base stats
...(['hp', 'atk', 'def'] as const).map((sk) => {
const basePerAsc = dataGen.ascension.map((p) => p[sk].base)
const addPerAsc = dataGen.ascension.map((p) => p[sk].add)
return ownBuff.base[sk].add(
- sum(
- subscript(ascension, basePerAsc),
- prod(lvl1, subscript(ascension, addPerAsc))
+ cmpGE(
+ lcCount,
+ 1,
+ sum(
+ subscript(ascension, basePerAsc),
+ prod(lvl1, subscript(ascension, addPerAsc))
+ )
)
)
}),
@@ -25,7 +38,11 @@ export function entriesForLightCone(
...Object.entries(dataGen.superimpose.passiveStats).map(
([statKey, values]) =>
getStatFromStatKey(ownBuff.premod, statKey).add(
- cmpEq(dataGen.path, own.char.path, subscript(superimpose, values))
+ cmpGE(
+ lcCount,
+ 1,
+ cmpEq(dataGen.path, own.char.path, subscript(superimpose, values))
+ )
)
),
]
diff --git a/libs/sr/formula/src/generators/gen-sheet/lightCone/__sheet__.ts.template b/libs/sr/formula/src/generators/gen-sheet/lightCone/__sheet__.ts.template
index 0eff6f7746..58e7769a14 100644
--- a/libs/sr/formula/src/generators/gen-sheet/lightCone/__sheet__.ts.template
+++ b/libs/sr/formula/src/generators/gen-sheet/lightCone/__sheet__.ts.template
@@ -1,4 +1,4 @@
-import { subscript } from '@genshin-optimizer/pando/engine'
+import { cmpGE, subscript } from '@genshin-optimizer/pando/engine'
import type { LightConeKey } from '@genshin-optimizer/sr/consts'
import { allStats, mappedStats } from '@genshin-optimizer/sr/stats'
import {
@@ -17,7 +17,7 @@ import { entriesForLightCone } from '../util'
const key: LightConeKey = '<%= sheet %>'
const data_gen = allStats.lightCone[key]
const dm = mappedStats.lightCone[key]
-
+const lcCount = own.common.count.sheet(key)
const { superimpose } = own.lightCone
// TODO: Add conditionals
@@ -28,20 +28,27 @@ const { numConditional } = allNumConditionals(key, true, 0, 2)
const sheet = register(
key,
// Handles base stats and passive buffs
- entriesForLightCone(data_gen),
+ entriesForLightCone(key, data_gen),
// TODO: Add formulas/buffs
// Conditional buffs
registerBuff(
'cond_dmg_',
ownBuff.premod.dmg_.add(
- boolConditional.ifOn(subscript(superimpose, dm.cond_dmg_))
+ boolConditional.ifOn(
+ cmpGE(lcCount, 1, subscript(superimpose, dm.cond_dmg_))
+ )
)
),
registerBuff(
'team_dmg_',
- teamBuff.premod.dmg_.add(listConditional.map({ val1: 1, val2: 2 }))
+ teamBuff.premod.dmg_.add(
+ cmpGE(lcCount, 1, listConditional.map({ val1: 1, val2: 2 }))
+ )
),
- registerBuff('enemy_defIgn_', enemyDebuff.common.defIgn_.add(numConditional))
+ registerBuff(
+ 'enemy_defIgn_',
+ enemyDebuff.common.defIgn_.add(cmpGE(lcCount, 1, numConditional))
+ )
)
export default sheet
diff --git a/libs/sr/formula/src/util.ts b/libs/sr/formula/src/util.ts
index 1d05605674..675c9ea810 100644
--- a/libs/sr/formula/src/util.ts
+++ b/libs/sr/formula/src/util.ts
@@ -63,7 +63,8 @@ export function lightConeData(data: ILightCone | undefined): TagMapNodeEntries {
const { lvl, ascension, superimpose } = own.lightCone
return [
- reader.sheet('lightCone').reread(reader.sheet(data.key)),
+ // Mark light cones as used
+ own.common.count.sheet(data.key).add(1),
lvl.add(data.level),
ascension.add(data.ascension),
diff --git a/libs/sr/page-team/src/Optimize/GeneratedBuildsDisplay.tsx b/libs/sr/page-team/src/Optimize/GeneratedBuildsDisplay.tsx
index 3353c11940..63fd2a2f72 100644
--- a/libs/sr/page-team/src/Optimize/GeneratedBuildsDisplay.tsx
+++ b/libs/sr/page-team/src/Optimize/GeneratedBuildsDisplay.tsx
@@ -110,7 +110,7 @@ function NewBuildButton({
startIcon={}
onClick={onShowPrompt}
>
- {t`createBuildReal.button`}
+ {t('createBuildReal.button')}
{/* TODO: Dialog Wanted to use a Dialog here, but was having some weird issues with closing out of it */}
@@ -131,7 +131,7 @@ function NewBuildButton({
- {t`createBuildReal.desc`}
+ {t('createBuildReal.desc')}
setName(e.target.value)}
autoFocus
margin="dense"
- label={t`createBuildReal.label`}
+ label={t('createBuildReal.label')}
fullWidth
/>
- {t`createBuildReal.cancel`}
+
+ {t('createBuildReal.cancel')}
+
- {t`createBuildReal.create`}
+ {t('createBuildReal.create')}
diff --git a/libs/sr/page-team/src/Optimize/StatFilterCard.tsx b/libs/sr/page-team/src/Optimize/StatFilterCard.tsx
index 956f9b1406..77ac92751a 100644
--- a/libs/sr/page-team/src/Optimize/StatFilterCard.tsx
+++ b/libs/sr/page-team/src/Optimize/StatFilterCard.tsx
@@ -34,11 +34,11 @@ export function StatFilterCard({ disabled = false }: { disabled?: boolean }) {
}}
>
- {t`constraintFilter.title`}
+
+ {t('constraintFilter.title')}
+
{t`constraintFilter.tooltip`}}
+ title={{t('constraintFilter.tooltip')}}
/>
diff --git a/libs/sr/page-team/src/Optimize/index.tsx b/libs/sr/page-team/src/Optimize/index.tsx
index 5411340486..343581f4fb 100644
--- a/libs/sr/page-team/src/Optimize/index.tsx
+++ b/libs/sr/page-team/src/Optimize/index.tsx
@@ -1,4 +1,5 @@
import { CardThemed } from '@genshin-optimizer/common/ui'
+import { characterKeyToGenderedKey } from '@genshin-optimizer/sr/assets'
import type { RelicSlotKey } from '@genshin-optimizer/sr/consts'
import { type ICachedRelic } from '@genshin-optimizer/sr/db'
import {
@@ -7,6 +8,7 @@ import {
} from '@genshin-optimizer/sr/db-ui'
import type { ProgressResult } from '@genshin-optimizer/sr/solver'
import { MAX_BUILDS, Solver } from '@genshin-optimizer/sr/solver'
+import { getCharStat, getLightConeStat } from '@genshin-optimizer/sr/stats'
import { useSrCalcContext } from '@genshin-optimizer/sr/ui'
import CloseIcon from '@mui/icons-material/Close'
import TrendingUpIcon from '@mui/icons-material/TrendingUp'
@@ -106,9 +108,21 @@ function OptimizeWrapper() {
),
[database.relics.values]
)
- const totalPermutations = Object.values(relicsBySlot).reduce(
- (total, relics) => total * relics.length,
- 1
+ const lightCones = useMemo(() => {
+ const { path } = getCharStat(characterKeyToGenderedKey(characterKey))
+ return database.lightCones.values.filter(({ key }) => {
+ // filter by path
+ const { path: lcPath } = getLightConeStat(key)
+ return path === lcPath
+ })
+ }, [characterKey, database.lightCones.values])
+ const totalPermutations = useMemo(
+ () =>
+ Object.values(relicsBySlot).reduce(
+ (total, relics) => total * relics.length,
+ 1
+ ) * lightCones.length,
+ [lightCones.length, relicsBySlot]
)
const [optimizing, setOptimizing] = useState(false)
@@ -137,6 +151,7 @@ function OptimizeWrapper() {
calc,
team.frames,
statFilters,
+ lightCones,
relicsBySlot,
numWorkers,
setProgress
@@ -152,7 +167,7 @@ function OptimizeWrapper() {
// Save results to optConfig
if (results.length)
database.optConfigs.newOrSetGeneratedBuildList(optConfigId, {
- builds: results.slice(0, 5).map(({ ids, value }) => ({
+ builds: results.slice(0, 5).map(({ relicIds: ids, value }) => ({
lightConeId: equippedLightCone,
relicIds: ids,
value,
@@ -164,6 +179,7 @@ function OptimizeWrapper() {
optConfig.statFilters,
characterKey,
team.frames,
+ lightCones,
relicsBySlot,
numWorkers,
database.optConfigs,
diff --git a/libs/sr/page-team/src/TeamCharacterSelector.tsx b/libs/sr/page-team/src/TeamCharacterSelector.tsx
index 933afd118e..3633c13848 100644
--- a/libs/sr/page-team/src/TeamCharacterSelector.tsx
+++ b/libs/sr/page-team/src/TeamCharacterSelector.tsx
@@ -80,7 +80,7 @@ export function TeamCharacterSelector({
- {t`team.editNameDesc`}
+ {t('team.editNameDesc')}
{!!team.description && (
@@ -117,7 +117,7 @@ export function TeamCharacterSelector({
setEditMode(false)}>
}
titleTypographyProps={{ variant: 'h6' }}
action={
@@ -130,13 +130,13 @@ export function TeamCharacterSelector({
handleName(teamName)}
autoFocus
/>
handleDesc(teamDesc)}
multiline
diff --git a/libs/sr/solver/src/childWorker.ts b/libs/sr/solver/src/childWorker.ts
index 8f70e089ff..5b1903d137 100644
--- a/libs/sr/solver/src/childWorker.ts
+++ b/libs/sr/solver/src/childWorker.ts
@@ -2,16 +2,18 @@ import type { NumTagFree } from '@genshin-optimizer/pando/engine'
import { compile } from '@genshin-optimizer/pando/engine'
import type { RelicSlotKey } from '@genshin-optimizer/sr/consts'
import { MAX_BUILDS } from './common'
-import type { RelicStats } from './parentWorker'
+import type { LightConeStats, RelicStats } from './parentWorker'
import type { BuildResult } from './solver'
const MAX_BUILDS_TO_SEND = 200_000
let compiledCalcFunction: (relicStats: RelicStats['stats'][]) => number[]
+let lightConeStats: LightConeStats[]
let relicStatsBySlot: Record
let constraints: Array<{ value: number; isMax: boolean }> = []
export interface ChildCommandInit {
command: 'init'
+ lightConeStats: LightConeStats[]
relicStatsBySlot: Record
constraints: Array<{ value: number; isMax: boolean }>
detachedNodes: NumTagFree[]
@@ -71,6 +73,7 @@ async function handleEvent(e: MessageEvent): Promise {
// Create compiledCalcFunction
async function init({
+ lightConeStats: lcs,
relicStatsBySlot: relics,
detachedNodes: combinedNodes,
constraints: initCons,
@@ -79,17 +82,50 @@ async function init({
compiledCalcFunction = compile(
combinedNodes,
'q', // Tag category for object key
- 6, // Number of slots
+ 7, // Number of slots
{} // Initial values
// Header; includes custom formulas, such as `res`
)
+ lightConeStats = lcs
relicStatsBySlot = relics
constraints = initCons
// Let parent know we are ready to optimize
postMessage({ resultType: 'initialized' })
}
-
+function* generateCombinations(): Generator<{
+ lightCone: LightConeStats
+ head: RelicStats
+ hands: RelicStats
+ feet: RelicStats
+ body: RelicStats
+ sphere: RelicStats
+ rope: RelicStats
+}> {
+ for (const lightCone of lightConeStats) {
+ for (const head of relicStatsBySlot.head) {
+ for (const hands of relicStatsBySlot.hands) {
+ for (const feet of relicStatsBySlot.feet) {
+ for (const body of relicStatsBySlot.body) {
+ for (const sphere of relicStatsBySlot.sphere) {
+ for (const rope of relicStatsBySlot.rope) {
+ yield {
+ lightCone,
+ head,
+ hands,
+ feet,
+ body,
+ sphere,
+ rope,
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
// Actually start calculating builds and sending back periodic responses
async function start() {
let builds: BuildResult[] = []
@@ -109,50 +145,49 @@ async function start() {
builds = []
skipped = 0
}
-
- relicStatsBySlot.head.forEach((head) => {
- relicStatsBySlot.hands.forEach((hands) => {
- relicStatsBySlot.feet.forEach((feet) => {
- relicStatsBySlot.body.forEach((body) => {
- relicStatsBySlot.sphere.forEach((sphere) => {
- relicStatsBySlot.rope.forEach((rope) => {
- // Step 5: Calculate the value
- const results = compiledCalcFunction([
- head.stats,
- hands.stats,
- feet.stats,
- body.stats,
- sphere.stats,
- rope.stats,
- ])
- if (
- constraints.every(({ value, isMax }, i) =>
- isMax ? results[i + 1] <= value : results[i + 1] >= value
- )
- ) {
- builds.push({
- value: results[0], // We only pass 1 target to calculate, so just grab the 1st result
- ids: {
- head: head.id,
- hands: hands.id,
- feet: feet.id,
- body: body.id,
- sphere: sphere.id,
- rope: rope.id,
- },
- })
- } else {
- skipped++
- }
- if (builds.length > MAX_BUILDS_TO_SEND) {
- sliceSortSendBuilds()
- }
- })
- })
- })
+ for (const {
+ lightCone,
+ head,
+ hands,
+ feet,
+ body,
+ sphere,
+ rope,
+ } of generateCombinations()) {
+ // Step 5: Calculate the value
+ const results = compiledCalcFunction([
+ lightCone.stats,
+ head.stats,
+ hands.stats,
+ feet.stats,
+ body.stats,
+ sphere.stats,
+ rope.stats,
+ ])
+ if (
+ constraints.every(({ value, isMax }, i) =>
+ isMax ? results[i + 1] <= value : results[i + 1] >= value
+ )
+ ) {
+ builds.push({
+ value: results[0], // We only pass 1 target to calculate, so just grab the 1st result
+ lightConeId: lightCone.id,
+ relicIds: {
+ head: head.id,
+ hands: hands.id,
+ feet: feet.id,
+ body: body.id,
+ sphere: sphere.id,
+ rope: rope.id,
+ },
})
- })
- })
+ } else {
+ skipped++
+ }
+ if (builds.length > MAX_BUILDS_TO_SEND) {
+ sliceSortSendBuilds()
+ }
+ }
if (builds.length > 0) {
sliceSortSendBuilds()
diff --git a/libs/sr/solver/src/parentWorker.ts b/libs/sr/solver/src/parentWorker.ts
index fd6bf8da6c..2153fb15d4 100644
--- a/libs/sr/solver/src/parentWorker.ts
+++ b/libs/sr/solver/src/parentWorker.ts
@@ -5,7 +5,7 @@ import {
allRelicSlotKeys,
type RelicSlotKey,
} from '@genshin-optimizer/sr/consts'
-import type { ICachedRelic } from '@genshin-optimizer/sr/db'
+import type { ICachedLightCone, ICachedRelic } from '@genshin-optimizer/sr/db'
import { getRelicMainStatVal } from '@genshin-optimizer/sr/util'
import type { ChildCommandInit, ChildMessage } from './childWorker'
import { MAX_BUILDS } from './common'
@@ -15,6 +15,7 @@ let workers: Worker[]
export interface ParentCommandStart {
command: 'start'
+ lightCones: ICachedLightCone[]
relicsBySlot: Record
detachedNodes: NumTagFree[]
constraints: Array<{ value: number; isMax: boolean }>
@@ -53,6 +54,10 @@ export type RelicStats = {
id: string
stats: Record
}
+export type LightConeStats = {
+ id: string
+ stats: Record
+}
// Get proper typings for posting a message back to main thread
declare function postMessage(message: ParentMessage): void
@@ -81,6 +86,7 @@ async function handleEvent(e: MessageEvent): Promise {
}
async function start({
+ lightCones,
relicsBySlot,
detachedNodes,
constraints,
@@ -89,7 +95,7 @@ async function start({
// Step 3: Optimize nodes, as needed
detachedNodes = flatten(detachedNodes)
detachedNodes = combineConst(detachedNodes)
-
+ const lightConeStats = lightCones.map(convertLightConeToStats)
const relicStatsBySlot = objKeyMap(allRelicSlotKeys, (slot) =>
relicsBySlot[slot].map(convertRelicToStats)
)
@@ -172,6 +178,7 @@ async function start({
// Initialize worker
const message: ChildCommandInit = {
command: 'init',
+ lightConeStats,
relicStatsBySlot: chunkedRelicStatsBySlot[index],
detachedNodes,
constraints,
@@ -201,18 +208,30 @@ function terminate() {
}
function convertRelicToStats(relic: ICachedRelic): RelicStats {
+ const { id, mainStatKey, level, rarity, setKey, substats } = relic
return {
- id: relic.id,
+ id,
stats: {
- [relic.mainStatKey]: getRelicMainStatVal(
- relic.rarity,
- relic.mainStatKey,
- relic.level
- ),
+ [mainStatKey]: getRelicMainStatVal(rarity, mainStatKey, level),
...Object.fromEntries(
- relic.substats.map((substat) => [substat.key, substat.value])
+ substats
+ .filter(({ key, value }) => key && value)
+ .map(({ key, value }) => [key, value])
),
- [relic.setKey]: 1,
+ [setKey]: 1,
+ },
+ }
+}
+
+function convertLightConeToStats(lightCone: ICachedLightCone): LightConeStats {
+ const { id, key, level: lvl, ascension, superimpose } = lightCone
+ return {
+ id,
+ stats: {
+ lvl,
+ superimpose,
+ ascension,
+ [key]: 1,
},
}
}
diff --git a/libs/sr/solver/src/solver.ts b/libs/sr/solver/src/solver.ts
index 960ea73757..dac0a10c84 100644
--- a/libs/sr/solver/src/solver.ts
+++ b/libs/sr/solver/src/solver.ts
@@ -1,7 +1,12 @@
import { detach, sum } from '@genshin-optimizer/pando/engine'
import type { CharacterKey, RelicSlotKey } from '@genshin-optimizer/sr/consts'
-import { allRelicSetKeys } from '@genshin-optimizer/sr/consts'
-import type { ICachedRelic, StatFilter, Team } from '@genshin-optimizer/sr/db'
+import { allLightConeKeys, allRelicSetKeys } from '@genshin-optimizer/sr/consts'
+import type {
+ ICachedLightCone,
+ ICachedRelic,
+ StatFilter,
+ Team,
+} from '@genshin-optimizer/sr/db'
import {
Read,
type Calculator,
@@ -16,7 +21,8 @@ import type {
export interface BuildResult {
value: number
- ids: Record
+ lightConeId: string
+ relicIds: Record
}
export interface ProgressResult {
@@ -28,6 +34,7 @@ export class Solver {
private calc: Calculator
private frames: Team['frames']
private statFilters: Array>
+ private lightCones: ICachedLightCone[]
private relicsBySlot: Record
private numWorkers: number
private setProgress: (progress: ProgressResult) => void
@@ -39,6 +46,7 @@ export class Solver {
calc: Calculator,
frames: Team['frames'],
statFilters: Array>,
+ lightCones: ICachedLightCone[],
relicsBySlot: Record,
numWorkers: number,
setProgress: (progress: ProgressResult) => void
@@ -47,6 +55,7 @@ export class Solver {
this.calc = calc
this.frames = frames
this.statFilters = statFilters
+ this.lightCones = lightCones
this.relicsBySlot = relicsBySlot
this.numWorkers = numWorkers
this.setProgress = setProgress
@@ -78,6 +87,7 @@ export class Solver {
// Start worker
const message: ParentCommandStart = {
command: 'start',
+ lightCones: this.lightCones,
relicsBySlot: this.relicsBySlot,
detachedNodes: this.detachNodes(),
constraints: this.statFilters.map(({ value, isMax }) => ({
@@ -118,6 +128,7 @@ export class Solver {
private detachNodes() {
// Step 2: Detach nodes from Calculator
const relicSetKeys = new Set(allRelicSetKeys)
+ const lightConeKeys = new Set(allLightConeKeys)
const detachedNodes = detach(
[
// team
@@ -131,6 +142,10 @@ export class Solver {
],
this.calc,
(tag: Tag) => {
+ /**
+ * Removes relic and lightcone nodes from the opt character, while retaining data from the rest of the team.
+ * TODO: make lightcone node detachment opt-in.
+ */
if (tag['src'] !== this.characterKey) return undefined // Wrong member
if (tag['et'] !== 'own') return undefined // Not applied (only) to self
@@ -138,6 +153,14 @@ export class Solver {
return { q: tag['q']! } // Relic stat bonus
if (tag['q'] === 'count' && relicSetKeys.has(tag['sheet'] as any))
return { q: tag['sheet']! } // Relic set counter
+ if (
+ tag['qt'] == 'lightCone' &&
+ ['lvl', 'ascension', 'superimpose'].includes(tag['q'] as string)
+ )
+ return { q: tag['q']! } // Light cone bonus
+ if (tag['q'] === 'count' && lightConeKeys.has(tag['sheet'] as any))
+ return { q: tag['sheet']! } // Relic set counter
+
return undefined
}
)
diff --git a/libs/sr/ui/src/Relic/RelicEditor/RelicRarityDropdown.tsx b/libs/sr/ui/src/Relic/RelicEditor/RelicRarityDropdown.tsx
index 891b0948af..f40bb99285 100644
--- a/libs/sr/ui/src/Relic/RelicEditor/RelicRarityDropdown.tsx
+++ b/libs/sr/ui/src/Relic/RelicEditor/RelicRarityDropdown.tsx
@@ -23,7 +23,9 @@ export default function RelicRarityDropdown({
return (
: t`editor.rarity`}
+ title={
+ rarity ? : t('editor.rarity')
+ }
color={rarity ? 'success' : 'primary'}
>
{allRelicRarityKeys.map((rarity) => (
diff --git a/libs/sr/ui/src/Relic/RelicEditor/SubstatInput.tsx b/libs/sr/ui/src/Relic/RelicEditor/SubstatInput.tsx
index 57715213cf..11abcb0c9c 100644
--- a/libs/sr/ui/src/Relic/RelicEditor/SubstatInput.tsx
+++ b/libs/sr/ui/src/Relic/RelicEditor/SubstatInput.tsx
@@ -69,7 +69,7 @@ export default function SubstatInput({
}
const rollOffset = 7 - rollData.length
- // if (!rollNum && key && value) error = error || t`editor.substat.error.noCalc`
+ // if (!rollNum && key && value) error = error || t('editor.substat.error.noCalc')
if (allowedRolls < 0)
error =
error ||
@@ -106,7 +106,9 @@ export default function SubstatInput({
{key && (
+ >
+ {t('editor.substat.noSubstat')}
+
)}
{allRelicSubStatKeys
.filter((key) => mainStatKey !== key)
@@ -131,7 +133,7 @@ export default function SubstatInput({
>
{!!rollData.length && (
- {t`editor.substat.nextRolls`}
+ {t('editor.substat.nextRolls')}
)}
{/* {rollData.map((v, i) => {
let newValue = artDisplayValue(accurateValue + v, unit)
@@ -193,7 +195,7 @@ export default function SubstatInput({
{error ? (
- {t`ui:error`}
+ {t('ui:error')}
) : (
{/*
@@ -206,7 +208,7 @@ export default function SubstatInput({
>
{rollNum
? t('editor.substat.RollCount', { count: rollNum })
- : t`editor.substat.noRoll`}
+ : t('editor.substat.noRoll')}
*/}
@@ -241,7 +243,7 @@ export default function SubstatInput({
value={
efficiency
? efficiency
- : (t`editor.substat.noStat` as string)
+ : (t('editor.substat.noStat') as string)
}
/> */}
{efficiency}
diff --git a/libs/sr/ui/src/Settings/DatabaseCard.tsx b/libs/sr/ui/src/Settings/DatabaseCard.tsx
index 260f74a403..72c9dcc49c 100644
--- a/libs/sr/ui/src/Settings/DatabaseCard.tsx
+++ b/libs/sr/ui/src/Settings/DatabaseCard.tsx
@@ -27,7 +27,7 @@ export function DatabaseCard() {
return (
- {t`DatabaseCard.title`}
+ {t('DatabaseCard.title')}
@@ -140,19 +140,17 @@ function DataCard({ index }: { index: number }) {
onKeyDown={onKeyDown}
/>
{!current && (
- }
- onClick={onSwap}
- color="warning"
- >{t`DatabaseCard.button.swap`}
+ } onClick={onSwap} color="warning">
+ {t('DatabaseCard.button.swap')}
+
)}
@@ -203,7 +201,7 @@ function DataCard({ index }: { index: number }) {
startIcon={}
onClick={onOpen}
>
- {t`DatabaseCard.button.upload`}
+ {t('DatabaseCard.button.upload')}
@@ -213,7 +211,7 @@ function DataCard({ index }: { index: number }) {
onClick={download}
startIcon={}
>
- {t`DatabaseCard.button.download`}
+ {t('DatabaseCard.button.download')}
@@ -224,7 +222,7 @@ function DataCard({ index }: { index: number }) {
onClick={onDelete}
startIcon={}
>
- {t`DatabaseCard.button.delete`}
+ {t('DatabaseCard.button.delete')}
diff --git a/libs/sr/ui/src/Settings/UploadCard.tsx b/libs/sr/ui/src/Settings/UploadCard.tsx
index 0a19d5cb06..0da6403fd8 100644
--- a/libs/sr/ui/src/Settings/UploadCard.tsx
+++ b/libs/sr/ui/src/Settings/UploadCard.tsx
@@ -123,7 +123,7 @@ export function UploadCard({
onChange={onUpload}
/>
}>
- {t`uploadCard.buttons.open`}
+ {t('uploadCard.buttons.open')}
@@ -149,8 +149,8 @@ export function UploadCard({
title={
{ignoreDups
- ? t`uploadCard.tooltip.ignoreDup`
- : t`uploadCard.tooltip.detectdup`}
+ ? t('uploadCard.tooltip.ignoreDup')
+ : t('uploadCard.tooltip.detectdup')}
}
placement="top"
@@ -164,7 +164,7 @@ export function UploadCard({
onClick={() => setIgnoreDups(!ignoreDups)}
startIcon={ignoreDups ? : }
>
- {t`uploadCard.buttons.detectDups`}
+ {t('uploadCard.buttons.detectDups')}
@@ -172,8 +172,8 @@ export function UploadCard({
title={
{keepNotInImport
- ? t`uploadCard.tooltip.keepNotInImport`
- : t`uploadCard.tooltip.delNotInImport`}
+ ? t('uploadCard.tooltip.keepNotInImport')
+ : t('uploadCard.tooltip.delNotInImport')}
}
placement="top"
@@ -189,7 +189,7 @@ export function UploadCard({
keepNotInImport ? :
}
>
- {t`uploadCard.buttons.delNotInImport`}
+ {t('uploadCard.buttons.delNotInImport')}