Skip to content

Commit c13ebd6

Browse files
committed
Adjusted lauma pale hymn usage priority to be c6, then moonsong, then burst.
1 parent 78551a9 commit c13ebd6

File tree

6 files changed

+61
-62
lines changed

6 files changed

+61
-62
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ require (
6060
github.com/docker/go-units v0.5.0 // indirect
6161
github.com/dustin/go-humanize v1.0.1 // indirect
6262
github.com/fatih/color v1.15.0 // indirect
63-
github.com/gammazero/deque v1.2.0 // indirect
6463
github.com/go-fed/httpsig v1.1.0 // indirect
6564
github.com/gobwas/httphead v0.1.0 // indirect
6665
github.com/gobwas/pool v0.2.1 // indirect

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
8787
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
8888
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
8989
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
90-
github.com/gammazero/deque v1.2.0 h1:scEFO8Uidhw6KDU5qg1HA5fYwM0+us2qdeJqm43bitU=
91-
github.com/gammazero/deque v1.2.0/go.mod h1:JVrR+Bj1NMQbPnYclvDlvSX0nVGReLrQZ0aUMuWLctg=
9290
github.com/go-chi/chi v1.5.5 h1:vOB/HbEMt9QqBqErz07QehcOKHaWFtuj87tTDVz2qXE=
9391
github.com/go-chi/chi v1.5.5/go.mod h1:C9JqLr3tIYjDOZpzn+BCuxY8z8vmca43EeMgyZt7irw=
9492
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=

internal/characters/lauma/burst.go

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ var burstFrames []int
1515

1616
const paleHymnDur = 15 * 60
1717

18+
const (
19+
paleHymnC6 = 0
20+
paleHymnMoonsong = 1
21+
paleHymnBurst = 2
22+
23+
paleHymnC6Key = "lauma-pale-hymn-c6"
24+
paleHymnMoonsongKey = "lauma-pale-hymn-moonsong"
25+
paleHymnBurstKey = "lauma-pale-hymn-burst"
26+
)
27+
1828
func init() {
1929
burstFrames = frames.InitAbilSlice(115) // Q -> walk
2030
burstFrames[action.ActionAttack] = 111
@@ -36,7 +46,7 @@ func (c *char) Burst(p map[string]int) (action.Info, error) {
3646
c.DeleteStatus(moonSongIcdKey)
3747
c.Core.Tasks.Add(func() {
3848
c.c1OnBurst()
39-
c.addPaleHymn(18)
49+
c.addPaleHymnBurst(18)
4050

4151
c.AddStatus(burstKey, paleHymnDur, true) // should this be here?
4252
c.moonSongOnBurst()
@@ -95,66 +105,59 @@ func (c *char) initBurst() {
95105
}
96106

97107
func (c *char) paleHymnCount() int {
98-
c.removeExpiredPaleHymn()
99-
return c.paleHymnStacksSrc.Len() + c.paleHymnStacksSrcC6.Len()
108+
return c.paleHymn[paleHymnBurst] + c.paleHymn[paleHymnMoonsong] + c.paleHymn[paleHymnC6]
100109
}
101110

102-
func (c *char) addPaleHymn(amount int) {
103-
startFrame := c.TimePassed
111+
func (c *char) addPaleHymnBurst(amount int) {
112+
ind := paleHymnBurst
113+
c.paleHymn[ind] += amount
114+
c.paleHymnSrc[ind] = c.Core.F
115+
c.AddStatus(paleHymnBurstKey, paleHymnDur, true)
116+
c.QueueCharTask(c.removeExpiredPaleHymn(c.paleHymnSrc[ind], ind), paleHymnDur)
117+
}
104118

105-
for range amount {
106-
c.paleHymnStacksSrc.PushBack(startFrame)
107-
}
108-
c.QueueCharTask(c.removeExpiredPaleHymn, paleHymnDur+1)
119+
func (c *char) addPaleHymnMoonsong(amount int) {
120+
ind := paleHymnMoonsong
121+
c.paleHymn[ind] += amount
122+
c.paleHymnSrc[ind] = c.Core.F
123+
c.AddStatus(paleHymnMoonsongKey, paleHymnDur, true)
124+
c.QueueCharTask(c.removeExpiredPaleHymn(c.paleHymnSrc[ind], ind), paleHymnDur)
109125
}
110126

111127
func (c *char) addC6PaleHymn(amount int) {
112-
startFrame := c.TimePassed
113-
for range amount {
114-
c.paleHymnStacksSrcC6.PushBack(startFrame)
115-
}
116-
c.c6PaleHymnExpiry = c.TimePassed + paleHymnDur
117-
c.QueueCharTask(c.removeExpiredPaleHymn, paleHymnDur+1)
128+
ind := paleHymnC6
129+
c.paleHymn[ind] += amount
130+
c.paleHymnSrc[ind] = c.Core.F
131+
c.AddStatus(paleHymnC6Key, paleHymnDur, true)
132+
c.QueueCharTask(c.removeExpiredPaleHymn(c.paleHymnSrc[ind], ind), paleHymnDur)
118133
}
119134

120135
// attempts to consume a pale hymn.
121136
func (c *char) consumePaleHymn() {
122-
c.removeExpiredPaleHymn()
123-
if c.paleHymnStacksSrc.Len() == 0 && c.paleHymnStacksSrcC6.Len() == 0 {
124-
// error?
125-
// panic("consumePaleHymn() called on without Pale Hymn stacks")
137+
if c.paleHymn[paleHymnC6] > 0 {
138+
c.paleHymn[paleHymnC6]--
126139
return
127140
}
128141

129-
if c.paleHymnStacksSrc.Len() == 0 {
130-
c.paleHymnStacksSrcC6.PopFront()
142+
if c.paleHymn[paleHymnMoonsong] > 0 {
143+
c.paleHymn[paleHymnMoonsong]--
131144
return
132145
}
133146

134-
if c.paleHymnStacksSrcC6.Len() == 0 {
135-
c.paleHymnStacksSrc.PopFront()
147+
if c.paleHymn[paleHymnBurst] > 0 {
148+
c.paleHymn[paleHymnBurst]--
136149
return
137150
}
138151

139-
// pop whichever one is closer to expiry
140-
paleHymnSrc := c.paleHymnStacksSrc.Front()
141-
paleHymnSrcC6 := c.paleHymnStacksSrcC6.Front()
142-
143-
if paleHymnSrc < paleHymnSrcC6 {
144-
c.paleHymnStacksSrc.PopFront()
145-
} else {
146-
c.paleHymnStacksSrcC6.PopFront()
147-
}
152+
// err or panic?
153+
// panic("consumePaleHymn called when there are no pale hymn stacks")
148154
}
149155

150-
func (c *char) removeExpiredPaleHymn() {
151-
currentFrame := c.TimePassed
152-
153-
for c.paleHymnStacksSrc.Len() > 0 && c.paleHymnStacksSrc.Front()+paleHymnDur < currentFrame {
154-
c.paleHymnStacksSrc.PopFront()
155-
}
156-
157-
if c.c6PaleHymnExpiry < currentFrame {
158-
c.paleHymnStacksSrcC6.Clear()
156+
func (c *char) removeExpiredPaleHymn(src, index int) func() {
157+
return func() {
158+
if c.paleHymnSrc[index] != src {
159+
return
160+
}
161+
c.paleHymn[index] = 0
159162
}
160163
}

internal/characters/lauma/cons.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,10 @@ func (c *char) c6OnSkill() {
146146
if c.Base.Cons < 6 {
147147
return
148148
}
149-
// TODO: Does this clear immediately on skill use?
150-
c.c6PaleHymnExpiry = -1
151-
c.paleHymnStacksSrcC6.Clear()
149+
// TODO: Does clearing on skill use have a delay?
150+
c.DeleteStatus(paleHymnC6Key)
151+
c.paleHymn[paleHymnC6] = 0
152+
c.paleHymnSrc[paleHymnC6] = 0
152153
c.c6Count = 0
153154
}
154155

@@ -184,8 +185,8 @@ func (c *char) c6OnFrostgroveTick() {
184185
nil,
185186
6,
186187
),
187-
0,
188-
0,
188+
16, // 0.26s delay from DM
189+
16,
189190
c.addC6PaleHymnCB,
190191
)
191192
}

internal/characters/lauma/lauma.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package lauma
22

33
import (
4-
"github.com/gammazero/deque"
5-
64
tmpl "github.com/genshinsim/gcsim/internal/template/character"
75
"github.com/genshinsim/gcsim/pkg/core"
86
"github.com/genshinsim/gcsim/pkg/core/action"
@@ -17,15 +15,15 @@ func init() {
1715

1816
type char struct {
1917
*tmpl.Character
20-
ascendantGleam bool
21-
deerStateReady bool
22-
skillSrc int
23-
moonSong int
24-
moonSongSrc int
25-
c6Count int
26-
paleHymnStacksSrc deque.Deque[int]
27-
paleHymnStacksSrcC6 deque.Deque[int]
28-
c6PaleHymnExpiry int
18+
ascendantGleam bool
19+
deerStateReady bool
20+
skillSrc int
21+
moonSong int
22+
moonSongSrc int
23+
c6Count int
24+
25+
paleHymn [3]int
26+
paleHymnSrc [3]int
2927
}
3028

3129
func NewChar(s *core.Core, w *character.CharWrapper, _ info.CharacterProfile) error {

internal/characters/lauma/skill.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func (c *char) addMoonSong(moonsong int) {
185185
}
186186

187187
if c.StatusIsActive(burstKey) && !c.StatusIsActive(moonSongIcdKey) {
188-
c.addPaleHymn(moonsong * 6)
188+
c.addPaleHymnMoonsong(moonsong * 6)
189189
c.AddStatus(moonSongIcdKey, c.StatusDuration(burstKey), true)
190190
c.moonSong = 0
191191
c.moonSongSrc = -1
@@ -217,7 +217,7 @@ func (c *char) moonSongOnBurst() {
217217
return
218218
}
219219

220-
c.addPaleHymn(c.moonSong * 6)
220+
c.addPaleHymnMoonsong(c.moonSong * 6)
221221
c.AddStatus(moonSongIcdKey, c.StatusDuration(burstKey), true)
222222
c.moonSong = 0
223223
c.moonSongSrc = -1

0 commit comments

Comments
 (0)