Skip to content

Commit

Permalink
Add nonstacking to all relevant buffs (#2623)
Browse files Browse the repository at this point in the history
* Add nonstacking to all relevant buffs

* fix

* dumdum proof

* Reapply "Add non-stacking buff back to NO4 in a smarter way (#2592)" (#2629)

This reverts commit e8a420a.

* Reapply "Fix formula text being janky (#2618)" (#2627)

This reverts commit 72d89fb.

---------

Co-authored-by: lantua <[email protected]>
  • Loading branch information
nguyentvan7 and lantua authored Jan 27, 2025
1 parent 6f18a25 commit bc408c9
Show file tree
Hide file tree
Showing 29 changed files with 583 additions and 351 deletions.
33 changes: 26 additions & 7 deletions libs/gi/sheets/src/Artifacts/ArchaicPetra/index.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
import { ColorText } from '@genshin-optimizer/common/ui'
import { objMap } from '@genshin-optimizer/common/util'
import type { ArtifactSetKey } from '@genshin-optimizer/gi/consts'
import { absorbableEle } from '@genshin-optimizer/gi/consts'
import type { Data } from '@genshin-optimizer/gi/wr'
import { equal, greaterEq, input, percent } from '@genshin-optimizer/gi/wr'
import { cond, stg, trans } from '../../SheetUtil'
import {
equal,
greaterEq,
greaterEqStr,
input,
percent,
sum,
} from '@genshin-optimizer/gi/wr'
import { cond, nonStackBuff, stg, trans } from '../../SheetUtil'
import { ArtifactSheet, setHeaderTemplate } from '../ArtifactSheet'
import type { SetEffectSheet } from '../IArtifactSheet'
import { dataObjForArtifactSheet } from '../dataUtil'
Expand All @@ -13,10 +21,20 @@ const [, trm] = trans('artifact', key)

const set2 = greaterEq(input.artSet.ArchaicPetra, 2, percent(0.15))
const [condPath, condNode] = cond(key, 'element')
const set4TallyWrite = greaterEqStr(
input.artSet[key],
4,
// Only allow one element at all to be buffed
greaterEqStr(
sum(...absorbableEle.map((ele) => equal(condNode, ele, 1))),
1,
input.charKey
)
)
const set4Nodes = Object.fromEntries(
absorbableEle.map((e) => [
`${e}_dmg_`,
greaterEq(input.artSet.ArchaicPetra, 4, equal(e, condNode, percent(0.35))),
nonStackBuff('ap4', `${e}_dmg_`, equal(condNode, e, percent(0.35))),
])
)

Expand All @@ -25,7 +43,10 @@ export const data: Data = dataObjForArtifactSheet(key, {
geo_dmg_: set2,
},
teamBuff: {
premod: set4Nodes,
premod: objMap(set4Nodes, (nodes) => nodes[0]), // First node is active node
nonStacking: {
ap4: set4TallyWrite,
},
},
})

Expand All @@ -45,9 +66,7 @@ const sheet: SetEffectSheet = {
{
name: <ColorText color={e}>{stg(`element.${e}`)}</ColorText>,
fields: [
{
node: set4Nodes[`${e}_dmg_`],
},
...set4Nodes[`${e}_dmg_`].map((node) => ({ node })),
{
text: stg('duration'),
value: 10,
Expand Down
27 changes: 22 additions & 5 deletions libs/gi/sheets/src/Artifacts/DeepwoodMemories/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import type { ArtifactSetKey } from '@genshin-optimizer/gi/consts'
import type { Data } from '@genshin-optimizer/gi/wr'
import { equal, greaterEq, input } from '@genshin-optimizer/gi/wr'
import { cond, st, stg } from '../../SheetUtil'
import {
equalStr,
greaterEq,
greaterEqStr,
input,
percent,
} from '@genshin-optimizer/gi/wr'
import { cond, nonStackBuff, st, stg } from '../../SheetUtil'
import { ArtifactSheet, setHeaderTemplate } from '../ArtifactSheet'
import type { SetEffectSheet } from '../IArtifactSheet'
import { dataObjForArtifactSheet } from '../dataUtil'
Expand All @@ -12,10 +18,15 @@ const setHeader = setHeaderTemplate(key)
const set2 = greaterEq(input.artSet.DeepwoodMemories, 2, 0.15)

const [condSet4Path, condSet4] = cond(key, 'set4')
const set4 = greaterEq(
input.artSet.DeepwoodMemories,
const set4TallyWrite = greaterEqStr(
input.artSet[key],
4,
equal(condSet4, 'on', -0.3)
equalStr(condSet4, 'on', input.charKey)
)
const [set4, set4Inactive] = nonStackBuff(
'dm4',
'dendro_enemyRes_',
percent(-0.3)
)

export const data: Data = dataObjForArtifactSheet(key, {
Expand All @@ -26,6 +37,9 @@ export const data: Data = dataObjForArtifactSheet(key, {
premod: {
dendro_enemyRes_: set4,
},
nonStacking: {
dm4: set4TallyWrite,
},
},
})

Expand All @@ -45,6 +59,9 @@ const sheet: SetEffectSheet = {
{
node: set4,
},
{
node: set4Inactive,
},
{
text: stg('duration'),
value: 8,
Expand Down
22 changes: 19 additions & 3 deletions libs/gi/sheets/src/Artifacts/Instructor/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import type { ArtifactSetKey } from '@genshin-optimizer/gi/consts'
import type { Data } from '@genshin-optimizer/gi/wr'
import { equal, greaterEq, input } from '@genshin-optimizer/gi/wr'
import { cond, st, stg } from '../../SheetUtil'
import {
equalStr,
greaterEq,
greaterEqStr,
input,
} from '@genshin-optimizer/gi/wr'
import { cond, nonStackBuff, st, stg } from '../../SheetUtil'
import { ArtifactSheet, setHeaderTemplate } from '../ArtifactSheet'
import type { SetEffectSheet } from '../IArtifactSheet'
import { dataObjForArtifactSheet } from '../dataUtil'
Expand All @@ -12,7 +17,12 @@ const setHeader = setHeaderTemplate(key)
const [condStatePath, condState] = cond(key, 'set4')

const set2 = greaterEq(input.artSet.Instructor, 2, 80)
const set4 = greaterEq(input.artSet.Instructor, 4, equal('on', condState, 120))
const set4TallyWrite = greaterEqStr(
input.artSet[key],
4,
equalStr(condState, 'on', input.charKey)
)
const [set4, set4Inactive] = nonStackBuff('inst4', 'eleMas', 120)

export const data: Data = dataObjForArtifactSheet(key, {
premod: {
Expand All @@ -22,6 +32,9 @@ export const data: Data = dataObjForArtifactSheet(key, {
premod: {
eleMas: set4,
},
nonStacking: {
inst4: set4TallyWrite,
},
},
})

Expand All @@ -41,6 +54,9 @@ const sheet: SetEffectSheet = {
{
node: set4,
},
{
node: set4Inactive,
},
{
text: stg('duration'),
value: 8,
Expand Down
21 changes: 17 additions & 4 deletions libs/gi/sheets/src/Artifacts/NoblesseOblige/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import type { ArtifactSetKey } from '@genshin-optimizer/gi/consts'
import type { Data } from '@genshin-optimizer/gi/wr'
import { equal, greaterEq, input, percent } from '@genshin-optimizer/gi/wr'
import { cond, st, stg } from '../../SheetUtil'
import {
equalStr,
greaterEq,
greaterEqStr,
input,
percent,
} from '@genshin-optimizer/gi/wr'
import { cond, nonStackBuff, st, stg } from '../../SheetUtil'
import { ArtifactSheet, setHeaderTemplate } from '../ArtifactSheet'
import type { SetEffectSheet } from '../IArtifactSheet'
import { dataObjForArtifactSheet } from '../dataUtil'
Expand All @@ -12,11 +18,12 @@ const setHeader = setHeaderTemplate(key)
const set2 = greaterEq(input.artSet.NoblesseOblige, 2, percent(0.2))

const [condSet4Path, condSet4] = cond(key, 'set4')
const set4 = greaterEq(
const set4TallyWrite = greaterEqStr(
input.artSet.NoblesseOblige,
4,
equal(condSet4, 'on', percent(0.2))
equalStr(condSet4, 'on', input.charKey)
)
const [set4, set4Inactive] = nonStackBuff('no4', 'atk_', percent(0.2))

export const data: Data = dataObjForArtifactSheet(key, {
premod: {
Expand All @@ -26,6 +33,9 @@ export const data: Data = dataObjForArtifactSheet(key, {
premod: {
atk_: set4,
},
nonStacking: {
no4: set4TallyWrite,
},
},
})

Expand All @@ -45,6 +55,9 @@ const sheet: SetEffectSheet = {
{
node: set4,
},
{
node: set4Inactive,
},
{
text: stg('duration'),
value: 12,
Expand Down
Loading

0 comments on commit bc408c9

Please sign in to comment.