Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: memosprites #775

Merged
merged 37 commits into from
Jan 1, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
f7a1cc3
feat: memosprites
fribbels Dec 10, 2024
4850c94
hotfix: aglaea err rope
fribbels Dec 10, 2024
4c1498e
Merge branch 'beta' into feat/memosprites
fribbels Dec 11, 2024
9f273f6
feat: prototyping
fribbels Dec 11, 2024
961ffae
feat: prototyping
fribbels Dec 15, 2024
e7a1d11
feat: memosprite column prototyping
fribbels Dec 24, 2024
3185bb9
feat: memosprite base stats
fribbels Dec 25, 2024
c6936ba
feat: gpu prototype
fribbels Dec 25, 2024
51dba6e
feat: gpu damage refactor
fribbels Dec 25, 2024
64a2b11
feat: gpu basic calc
fribbels Dec 26, 2024
8f2771d
feat: memo buff target selection
fribbels Dec 27, 2024
89fcaa2
feat: character team buff targets
fribbels Dec 27, 2024
b04d9b2
feat: light cone team buff targets
fribbels Dec 27, 2024
d5e3ccd
feat: aglaea memosprite calculations
fribbels Dec 28, 2024
6a7e07f
feat: memosprite ui abilities
fribbels Dec 28, 2024
2ebd1b7
feat: ability type vs dmg type differentiation
fribbels Dec 29, 2024
166c69e
feat: memo skill combo selector
fribbels Dec 29, 2024
6006ec1
feat: memo skill dmg showcase display
fribbels Dec 29, 2024
0da5775
feat: memo column defs, metadata column cleanup
fribbels Dec 29, 2024
b26f4fd
fix: aglaea memo dynamic conditional
fribbels Dec 29, 2024
1b5d3c1
feat: rmc configs
fribbels Dec 29, 2024
98531f1
feat: rmc conditionals
fribbels Dec 30, 2024
1c68bfa
feat: max energy context
fribbels Dec 30, 2024
2115251
feat: remembrance lc conditionals
fribbels Dec 30, 2024
1ec02bd
feat: update assets
fribbels Dec 30, 2024
971de1b
feat: add sets metadata
fribbels Dec 30, 2024
9eaa159
feat: set conditionals
fribbels Dec 30, 2024
76e557c
feat: memo/sunday e6 dynamic conditionals
fribbels Dec 31, 2024
fecfc8e
feat: sunday lc memo
fribbels Dec 31, 2024
2719a93
feat: ratio based buffs update
fribbels Dec 31, 2024
3fd21c7
feat: hide nonmemo sidebar
fribbels Dec 31, 2024
dfaf0c0
feat: small sidebar memo
fribbels Jan 1, 2025
bec0c61
feat: memo team sets dynamic
fribbels Jan 1, 2025
c136eb0
fix: injection lag
fribbels Jan 1, 2025
9c4fb7a
fix: set debug to false
fribbels Jan 1, 2025
aa4861d
feat: add aglaea sim metadata
fribbels Jan 1, 2025
d0f08cd
Merge branch 'beta' into feat/memosprites
fribbels Jan 1, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified docs/dev/ide-settings/webstorm-settings.zip
Binary file not shown.
Binary file modified public/assets/icon/light_cone/21050.webp
Binary file not shown.
Binary file modified public/assets/icon/light_cone/21052.webp
Binary file not shown.
Binary file added public/assets/icon/relic/123.webp
Binary file not shown.
Binary file added public/assets/icon/relic/123_0.webp
Binary file not shown.
Binary file added public/assets/icon/relic/123_1.webp
Binary file not shown.
Binary file added public/assets/icon/relic/123_2.webp
Binary file not shown.
Binary file added public/assets/icon/relic/123_3.webp
Binary file not shown.
Binary file added public/assets/icon/relic/124.webp
Binary file not shown.
Binary file added public/assets/icon/relic/124_0.webp
Binary file not shown.
Binary file added public/assets/icon/relic/124_1.webp
Binary file not shown.
Binary file added public/assets/icon/relic/124_2.webp
Binary file not shown.
Binary file added public/assets/icon/relic/124_3.webp
Binary file not shown.
Binary file modified public/assets/image/light_cone_portrait/21050.webp
Binary file not shown.
Binary file modified public/assets/image/light_cone_portrait/21052.webp
Binary file not shown.
1 change: 1 addition & 0 deletions public/locales/en/charactersTab.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ CharacterPreview:
SKILL: SKILL
ULT: ULT
FUA: FUA
MEMO_SKILL: SKILLᴹ
DOTS: "DOTS:"
BREAKS: "BREAKS:"
CombatResults:
Expand Down
2 changes: 2 additions & 0 deletions public/locales/en/common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ DMGTypes:
SKILL: Skill Damage
ULT: Ult Damage
FUA: Fua Damage
MEMO_SKILL: Memo Skill Damage
DOT: Dot Damage
BREAK: Break Damage
CV: CV
Expand All @@ -171,6 +172,7 @@ ShortDMGTypes:
Skill: Skill DMG
Ult: Ult DMG
Fua: Fua DMG
Memo_Skill: Skillᴹ DMG
Dot: Dot DMG
Break: Break DMG
CV: CV
4 changes: 2 additions & 2 deletions public/locales/en/gameData.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -503,11 +503,11 @@ Lightcones:
"21048":
Name: Dream's Montage
"21050":
Name: Sweat Now, Cry Less
Name: Victory In a Blink
"21051":
Name: Geniuses' Greetings
"21052":
Name: Victory In a Blink
Name: Sweat Now, Cry Less
"22000":
Name: Before the Tutorial Mission Starts
"22001":
Expand Down
7 changes: 7 additions & 0 deletions public/locales/en/optimizerTab.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ Grid:
FUA: |-
FUA
DMG
MEMO_SKILL: |-
SKILLᴹ
DMG
DOT: |-
DOT
DMG
Expand Down Expand Up @@ -161,6 +164,9 @@ Grid:
FUA: |-
FUA
DMG
MEMO_SKILL: |-
SKILLᴹ
DMG
DOT: |-
DOT
DMG
Expand Down Expand Up @@ -406,6 +412,7 @@ ComboFilter:
Skill: Skill
Ult: Ult
Fua: Fua
MemoSkill: Skillᴹ
RotationButton: Advanced rotation
ComboDrawer:
NoConditionals: No conditional passives
Expand Down
10 changes: 5 additions & 5 deletions src/data/game_data.json
Original file line number Diff line number Diff line change
Expand Up @@ -1145,7 +1145,7 @@
"rarity": 5,
"path": "Remembrance",
"element": "Ice",
"max_sp": 150,
"max_sp": 160,
"stats": {
"HP": 1047.816,
"ATK": 543.312,
Expand All @@ -1162,7 +1162,7 @@
"rarity": 5,
"path": "Remembrance",
"element": "Ice",
"max_sp": 150,
"max_sp": 160,
"stats": {
"HP": 1047.816,
"ATK": 543.312,
Expand Down Expand Up @@ -2041,7 +2041,7 @@
},
"21050": {
"id": "21050",
"name": "Sweat Now, Cry Less",
"name": "Victory In a Blink",
"rarity": 4,
"path": "Remembrance",
"stats": {
Expand All @@ -2065,7 +2065,7 @@
},
"21052": {
"id": "21052",
"name": "Victory In a Blink",
"name": "Sweat Now, Cry Less",
"rarity": 4,
"path": "Remembrance",
"stats": {
Expand Down Expand Up @@ -2734,7 +2734,7 @@
{
"id": "124",
"name": "Poet of Mourning Collapse",
"skills": "Increases Quantum DMG dealt by <b>10%</b>.,Decreases the wearer's SPD by <b>12%</b>. When entering battle, if the wearer's SPD is less than <b>110</b>/<b>95</b>, increases the wearer's CRIT Rate by <b>20%</b>/<b>40%</b>. This effect also applies to the wearer's memosprite."
"skills": "Increases Quantum DMG dealt by <b>10%</b>.,Decreases the wearer's SPD by <b>8%</b>. Before entering battle, if the wearer's SPD is less than <b>110</b>/<b>95</b>, increases the wearer's CRIT Rate by <b>20%</b>/<b>32%</b>. This effect also applies to the wearer's memosprite."
},
{
"id": "123",
Expand Down
4 changes: 2 additions & 2 deletions src/lib/characterPreview/CharacterScoringSummary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,7 @@ export const CharacterScoringSummary = (props: {
index: number
}) {
const displayValue = i18n.exists(`charactersTab:CharacterPreview.BuildAnalysis.Rotation.${props.comboAbilities[props.index]}`)
// @ts-ignore ts is being dumb :/, key existence is verified on the line above and for some reason can't tell that t() always returns a string
? t(`CharacterPreview.BuildAnalysis.Rotation.${props.comboAbilities[props.index]}`)
? t(`CharacterPreview.BuildAnalysis.Rotation.${props.comboAbilities[props.index]}` as never)
: null
if (displayValue == null) return <></>

Expand Down Expand Up @@ -337,6 +336,7 @@ export const CharacterScoringSummary = (props: {
<ScoringNumber label={String(t('common:ShortDMGTypes.Skill')) + ':'} number={simResult.SKILL} precision={1}/>
<ScoringNumber label={String(t('common:ShortDMGTypes.Ult')) + ':'} number={simResult.ULT} precision={1}/>
<ScoringNumber label={String(t('common:ShortDMGTypes.Fua')) + ':'} number={simResult.FUA} precision={1}/>
<ScoringNumber label={String(t('common:ShortDMGTypes.Memo_Skill')) + ':'} number={simResult.MEMO_SKILL} precision={1}/>
<ScoringNumber label={String(t('common:ShortDMGTypes.Dot')) + ':'} number={simResult.DOT} precision={1}/>
<ScoringNumber label={String(t('common:ShortDMGTypes.Break')) + ':'} number={simResult.BREAK} precision={1}/>
</Flex>
Expand Down
Empty file.
6 changes: 3 additions & 3 deletions src/lib/conditionals/character/1000/Arlan.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SKILL_TYPE, ULT_TYPE } from 'lib/conditionals/conditionalConstants'
import { SKILL_DMG_TYPE, ULT_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardAtkFinalizer, standardAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg } from 'lib/optimization/calculateBuffs'
Expand Down Expand Up @@ -53,8 +53,8 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
x.ULT_SCALING.buff(ultScaling, Source.NONE)

// Boost
buffAbilityDmg(x, SKILL_TYPE, (e >= 1 && r.selfCurrentHpPercent <= 0.50) ? 0.10 : 0, Source.NONE)
buffAbilityDmg(x, ULT_TYPE, (e >= 6 && r.selfCurrentHpPercent <= 0.50) ? 0.20 : 0, Source.NONE)
buffAbilityDmg(x, SKILL_DMG_TYPE, (e >= 1 && r.selfCurrentHpPercent <= 0.50) ? 0.10 : 0, Source.NONE)
buffAbilityDmg(x, ULT_DMG_TYPE, (e >= 6 && r.selfCurrentHpPercent <= 0.50) ? 0.20 : 0, Source.NONE)

x.BASIC_TOUGHNESS_DMG.buff(30, Source.NONE)
x.SKILL_TOUGHNESS_DMG.buff(60, Source.NONE)
Expand Down
6 changes: 3 additions & 3 deletions src/lib/conditionals/character/1000/Asta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,10 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const m = action.characterConditionals as Conditionals<typeof teammateContent>

x.SPD.buff((m.ultSpdBuff) ? ultSpdBuffValue : 0, Source.NONE)
x.ATK_P.buff((m.talentBuffStacks) * talentStacksAtkBuff, Source.NONE)
x.SPD.buffTeam((m.ultSpdBuff) ? ultSpdBuffValue : 0, Source.NONE)
x.ATK_P.buffTeam((m.talentBuffStacks) * talentStacksAtkBuff, Source.NONE)

x.FIRE_DMG_BOOST.buff((m.fireDmgBoost) ? 0.18 : 0, Source.NONE)
x.FIRE_DMG_BOOST.buffTeam((m.fireDmgBoost) ? 0.18 : 0, Source.NONE)
},
finalizeCalculations: (x: ComputedStatsArray) => standardAtkFinalizer(x),
gpuFinalizeCalculations: () => gpuStandardAtkFinalizer(),
Expand Down
4 changes: 2 additions & 2 deletions src/lib/conditionals/character/1000/DanHeng.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BASIC_TYPE } from 'lib/conditionals/conditionalConstants'
import { BASIC_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardAtkFinalizer, standardAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg } from 'lib/optimization/calculateBuffs'
Expand Down Expand Up @@ -67,7 +67,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll

// Boost
x.RES_PEN.buff((r.talentPenBuff) ? extraPenValue : 0, Source.NONE)
buffAbilityDmg(x, BASIC_TYPE, (r.enemySlowed) ? 0.40 : 0, Source.NONE)
buffAbilityDmg(x, BASIC_DMG_TYPE, (r.enemySlowed) ? 0.40 : 0, Source.NONE)

x.BASIC_TOUGHNESS_DMG.buff(30, Source.NONE)
x.SKILL_TOUGHNESS_DMG.buff(60, Source.NONE)
Expand Down
8 changes: 4 additions & 4 deletions src/lib/conditionals/character/1000/Herta.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ASHBLAZING_ATK_STACK, FUA_TYPE, SKILL_TYPE, ULT_TYPE } from 'lib/conditionals/conditionalConstants'
import { ASHBLAZING_ATK_STACK, FUA_DMG_TYPE, SKILL_DMG_TYPE, ULT_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardFuaAtkFinalizer, standardFuaAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg } from 'lib/optimization/calculateBuffs'
Expand Down Expand Up @@ -148,11 +148,11 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
x.ULT_SCALING.buff(ultScaling, Source.NONE)
x.FUA_SCALING.buff(fuaScaling * r.fuaStacks, Source.NONE)

buffAbilityDmg(x, SKILL_TYPE, (r.enemyHpGte50) ? 0.20 : 0, Source.NONE)
buffAbilityDmg(x, SKILL_DMG_TYPE, (r.enemyHpGte50) ? 0.20 : 0, Source.NONE)

// Boost
buffAbilityDmg(x, ULT_TYPE, (r.targetFrozen) ? 0.20 : 0, Source.NONE)
buffAbilityDmg(x, FUA_TYPE, (e >= 4) ? 0.10 : 0, Source.NONE)
buffAbilityDmg(x, ULT_DMG_TYPE, (r.targetFrozen) ? 0.20 : 0, Source.NONE)
buffAbilityDmg(x, FUA_DMG_TYPE, (e >= 4) ? 0.10 : 0, Source.NONE)

x.BASIC_TOUGHNESS_DMG.buff(30, Source.NONE)
x.SKILL_TOUGHNESS_DMG.buff(30, Source.NONE)
Expand Down
6 changes: 2 additions & 4 deletions src/lib/conditionals/character/1000/Himeko.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ASHBLAZING_ATK_STACK, SKILL_TYPE } from 'lib/conditionals/conditionalConstants'
import { ASHBLAZING_ATK_STACK, SKILL_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardFuaAtkFinalizer, standardFuaAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg } from 'lib/optimization/calculateBuffs'
Expand Down Expand Up @@ -90,7 +90,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
x.DOT_SCALING.buff(dotScaling, Source.NONE)

// Boost
buffAbilityDmg(x, SKILL_TYPE, (r.targetBurned) ? 0.20 : 0, Source.NONE)
buffAbilityDmg(x, SKILL_DMG_TYPE, (r.targetBurned) ? 0.20 : 0, Source.NONE)
x.ELEMENTAL_DMG.buff((e >= 2 && r.e2EnemyHp50DmgBoost) ? 0.15 : 0, Source.NONE)

x.BASIC_TOUGHNESS_DMG.buff(30, Source.NONE)
Expand All @@ -102,8 +102,6 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll

return x
},
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
},
finalizeCalculations: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
standardFuaAtkFinalizer(x, action, context, hitMultiByTargets[context.enemyCount])
},
Expand Down
8 changes: 4 additions & 4 deletions src/lib/conditionals/character/1000/Kafka.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ASHBLAZING_ATK_STACK, DOT_TYPE } from 'lib/conditionals/conditionalConstants'
import { ASHBLAZING_ATK_STACK, DOT_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardFuaAtkFinalizer, standardFuaAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg, buffAbilityVulnerability } from 'lib/optimization/calculateBuffs'
import { buffAbilityDmg, buffAbilityVulnerability, Target } from 'lib/optimization/calculateBuffs'
import { ComputedStatsArray, Source } from 'lib/optimization/computedStatsArray'
import { TsUtils } from 'lib/utils/TsUtils'

Expand Down Expand Up @@ -79,8 +79,8 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const m = action.characterConditionals as Conditionals<typeof teammateContent>

buffAbilityVulnerability(x, DOT_TYPE, (e >= 1 && m.e1DotDmgReceivedDebuff) ? 0.30 : 0, Source.NONE)
buffAbilityDmg(x, DOT_TYPE, (e >= 2 && m.e2TeamDotBoost) ? 0.25 : 0, Source.NONE)
buffAbilityVulnerability(x, DOT_DMG_TYPE, (e >= 1 && m.e1DotDmgReceivedDebuff) ? 0.30 : 0, Source.NONE, Target.TEAM)
buffAbilityDmg(x, DOT_DMG_TYPE, (e >= 2 && m.e2TeamDotBoost) ? 0.25 : 0, Source.NONE, Target.TEAM)
},
finalizeCalculations: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
standardFuaAtkFinalizer(x, action, context, hitMulti)
Expand Down
10 changes: 5 additions & 5 deletions src/lib/conditionals/character/1000/SilverWolf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,11 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const m = action.characterConditionals as Conditionals<typeof teammateContent>

x.RES_PEN.buff((m.skillWeaknessResShredDebuff) ? 0.20 : 0, Source.NONE)
x.RES_PEN.buff((m.skillResShredDebuff) ? skillResShredValue : 0, Source.NONE)
x.RES_PEN.buff((m.skillResShredDebuff && m.targetDebuffs >= 3) ? 0.03 : 0, Source.NONE)
x.DEF_PEN.buff((m.ultDefShredDebuff) ? ultDefShredValue : 0, Source.NONE)
x.DEF_PEN.buff((m.talentDefShredDebuff) ? talentDefShredDebuffValue : 0, Source.NONE)
x.RES_PEN.buffTeam((m.skillWeaknessResShredDebuff) ? 0.20 : 0, Source.NONE)
x.RES_PEN.buffTeam((m.skillResShredDebuff) ? skillResShredValue : 0, Source.NONE)
x.RES_PEN.buffTeam((m.skillResShredDebuff && m.targetDebuffs >= 3) ? 0.03 : 0, Source.NONE)
x.DEF_PEN.buffTeam((m.ultDefShredDebuff) ? ultDefShredValue : 0, Source.NONE)
x.DEF_PEN.buffTeam((m.talentDefShredDebuff) ? talentDefShredDebuffValue : 0, Source.NONE)
},
finalizeCalculations: (x: ComputedStatsArray) => standardAtkFinalizer(x),
gpuFinalizeCalculations: () => gpuStandardAtkFinalizer(),
Expand Down
2 changes: 1 addition & 1 deletion src/lib/conditionals/character/1000/Welt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const m = action.characterConditionals as Conditionals<typeof teammateContent>

x.VULNERABILITY.buff((m.enemyDmgTakenDebuff) ? 0.12 : 0, Source.NONE)
x.VULNERABILITY.buffTeam((m.enemyDmgTakenDebuff) ? 0.12 : 0, Source.NONE)
},
finalizeCalculations: (x: ComputedStatsArray) => standardAtkFinalizer(x),
gpuFinalizeCalculations: () => gpuStandardAtkFinalizer(),
Expand Down
24 changes: 13 additions & 11 deletions src/lib/conditionals/character/1100/Bronya.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ASHBLAZING_ATK_STACK, BASIC_TYPE } from 'lib/conditionals/conditionalConstants'
import { ASHBLAZING_ATK_STACK, BASIC_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardFuaAtkFinalizer, standardFuaAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { ConditionalActivation, ConditionalType, Stats } from 'lib/constants/constants'
Expand Down Expand Up @@ -115,7 +115,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
defaults: () => defaults,
teammateDefaults: () => teammateDefaults,
precomputeEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
buffAbilityCr(x, BASIC_TYPE, 1.00, Source.NONE)
buffAbilityCr(x, BASIC_DMG_TYPE, 1.00, Source.NONE)

x.BASIC_SCALING.buff(basicScaling, Source.NONE)
x.FUA_SCALING.buff((e >= 4) ? fuaScaling : 0, Source.NONE)
Expand All @@ -126,19 +126,21 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const m = action.characterConditionals as Conditionals<typeof teammateContent>

x.DEF_P.buff((m.battleStartDefBuff) ? 0.20 : 0, Source.NONE)
x.SPD_P.buff((m.e2SkillSpdBuff) ? 0.30 : 0, Source.NONE)
x.ATK_P.buff((m.techniqueBuff) ? 0.15 : 0, Source.NONE)
x.ATK_P.buff((m.ultBuff) ? ultAtkBoostValue : 0, Source.NONE)
x.DEF_P.buffTeam((m.battleStartDefBuff) ? 0.20 : 0, Source.NONE)
x.SPD_P.buff((m.e2SkillSpdBuff) ? 0.30 : 0, Source.NONE) // TODO: MEMO
x.ATK_P.buffTeam((m.techniqueBuff) ? 0.15 : 0, Source.NONE)
x.ATK_P.buffTeam((m.ultBuff) ? ultAtkBoostValue : 0, Source.NONE)

x.ELEMENTAL_DMG.buff((m.teamDmgBuff) ? 0.10 : 0, Source.NONE)
x.ELEMENTAL_DMG.buff((m.skillBuff) ? skillDmgBoostValue : 0, Source.NONE)
x.ELEMENTAL_DMG.buffTeam((m.teamDmgBuff) ? 0.10 : 0, Source.NONE)
x.ELEMENTAL_DMG.buff((m.skillBuff) ? skillDmgBoostValue : 0, Source.NONE) // TODO: MEMO
},
precomputeTeammateEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const t = action.characterConditionals as Conditionals<typeof teammateContent>

x.CD.buff((t.ultBuff) ? ultCdBoostValue * t.teammateCDValue : 0, Source.NONE)
x.CD.buff((t.ultBuff) ? ultCdBoostBaseValue : 0, Source.NONE)
x.CD.buffTeam((t.ultBuff) ? ultCdBoostValue * t.teammateCDValue : 0, Source.NONE)
x.CD.buffTeam((t.ultBuff) ? ultCdBoostBaseValue : 0, Source.NONE)
x.RATIO_BASED_CD_BUFF.buffTeam((t.ultBuff) ? ultCdBoostValue * t.teammateCDValue : 0, Source.NONE)
x.RATIO_BASED_CD_BUFF.buffTeam((t.ultBuff) ? ultCdBoostBaseValue : 0, Source.NONE)
},
finalizeCalculations: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
standardFuaAtkFinalizer(x, action, context, hitMulti)
Expand Down Expand Up @@ -194,7 +196,7 @@ var stateBuffCD: f32 = ${ultCdBoostValue} * stateValue + ${ultCdBoostBaseValue};
let finalBuffCd = buffCD - select(0, stateBuffCD, stateValue > 0);
(*p_x).RATIO_BASED_CD_BUFF += finalBuffCd;

buffNonRatioDynamicCD(finalBuffCd, p_x, p_state);
buffNonRatioDynamicCD(finalBuffCd, p_x, p_m, p_state);
`)
},
},
Expand Down
4 changes: 2 additions & 2 deletions src/lib/conditionals/character/1100/Clara.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ASHBLAZING_ATK_STACK, FUA_TYPE } from 'lib/conditionals/conditionalConstants'
import { ASHBLAZING_ATK_STACK, FUA_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardFuaAtkFinalizer, standardFuaAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg } from 'lib/optimization/calculateBuffs'
Expand Down Expand Up @@ -89,7 +89,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
x.DMG_RED_MULTI.multiply((1 - 0.10), Source.NONE)
x.DMG_RED_MULTI.multiply((r.ultBuff) ? (1 - ultDmgReductionValue) : 1, Source.NONE)
x.DMG_RED_MULTI.multiply((e >= 4 && r.e4DmgReductionBuff) ? (1 - 0.30) : 1, Source.NONE)
buffAbilityDmg(x, FUA_TYPE, 0.30, Source.NONE)
buffAbilityDmg(x, FUA_DMG_TYPE, 0.30, Source.NONE)

x.BASIC_TOUGHNESS_DMG.buff(30, Source.NONE)
x.SKILL_TOUGHNESS_DMG.buff(30, Source.NONE)
Expand Down
4 changes: 2 additions & 2 deletions src/lib/conditionals/character/1100/Gepard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
precomputeMutualEffects: (x: ComputedStatsArray, action: OptimizerAction, context: OptimizerContext) => {
const m = action.characterConditionals as Conditionals<typeof teammateContent>

x.RES.buff((e >= 4 && m.e4TeamResBuff) ? 0.20 : 0, Source.NONE)
x.RES.buffTeam((e >= 4 && m.e4TeamResBuff) ? 0.20 : 0, Source.NONE)
},
finalizeCalculations: (x: ComputedStatsArray) => {
standardAtkFinalizer(x)
Expand Down Expand Up @@ -90,7 +90,7 @@ let stateValue: f32 = (*p_state).GepardConversionConditional;
let buffValue: f32 = 0.35 * def;

(*p_state).GepardConversionConditional = buffValue;
buffDynamicATK(buffValue - stateValue, p_x, p_state);
buffDynamicATK(buffValue - stateValue, p_x, p_m, p_state);
`)
},
},
Expand Down
4 changes: 2 additions & 2 deletions src/lib/conditionals/character/1100/Hook.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { SKILL_TYPE } from 'lib/conditionals/conditionalConstants'
import { SKILL_DMG_TYPE } from 'lib/conditionals/conditionalConstants'
import { gpuStandardAtkFinalizer, standardAtkFinalizer } from 'lib/conditionals/conditionalFinalizers'
import { AbilityEidolon, Conditionals, ContentDefinition } from 'lib/conditionals/conditionalUtils'
import { buffAbilityDmg } from 'lib/optimization/calculateBuffs'
Expand Down Expand Up @@ -60,7 +60,7 @@ export default (e: Eidolon, withContent: boolean): CharacterConditionalsControll
x.DOT_SCALING.buff(dotScaling, Source.NONE)

// Boost
buffAbilityDmg(x, SKILL_TYPE, (e >= 1 && r.enhancedSkill) ? 0.20 : 0, Source.NONE)
buffAbilityDmg(x, SKILL_DMG_TYPE, (e >= 1 && r.enhancedSkill) ? 0.20 : 0, Source.NONE)
x.ELEMENTAL_DMG.buff((e >= 6 && r.targetBurned) ? 0.20 : 0, Source.NONE)

x.BASIC_TOUGHNESS_DMG.buff(30, Source.NONE)
Expand Down
Loading
Loading