Skip to content

Commit 9930829

Browse files
committed
fix raiden resolve stacks for varesa
1 parent a63a48c commit 9930829

3 files changed

Lines changed: 10 additions & 5 deletions

File tree

internal/characters/raiden/burst.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/genshinsim/gcsim/pkg/core/event"
1010
"github.com/genshinsim/gcsim/pkg/core/geometry"
1111
"github.com/genshinsim/gcsim/pkg/core/glog"
12+
"github.com/genshinsim/gcsim/pkg/core/player/character"
1213
"github.com/genshinsim/gcsim/pkg/core/targets"
1314
)
1415

@@ -126,13 +127,14 @@ func (c *char) onSwapClearBurst() {
126127

127128
func (c *char) onBurstStackCount() {
128129
// TODO: this used to be on PostBurst; need to check if it works correctly still
129-
c.Core.Events.Subscribe(event.OnBurst, func(_ ...interface{}) bool {
130+
c.Core.Events.Subscribe(event.OnEnergyBurst, func(args ...interface{}) bool {
130131
if c.Core.Player.Active() == c.Index {
131132
return false
132133
}
133-
char := c.Core.Player.ActiveChar()
134+
char := args[0].(*character.CharWrapper)
135+
amount := args[2].(float64)
134136
// add stacks based on char max energy
135-
stacks := resolveStackGain[c.TalentLvlBurst()] * char.EnergyMax
137+
stacks := resolveStackGain[c.TalentLvlBurst()] * amount
136138
if c.Base.Cons > 0 {
137139
if char.Base.Element == attributes.Electro {
138140
stacks *= 1.8

pkg/core/event/event.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ const (
4949
OnConstructSpawned // nil
5050
OnCharacterSwap // prev, next
5151
OnParticleReceived // particle
52-
OnEnergyChange // character_received_index, pre_energy, energy_change, src (post-energy available in character_received), is_particle (boolean)
52+
OnEnergyChange // character_received, pre_energy, energy_change, src (post-energy available in character_received), is_particle (boolean)
53+
OnEnergyBurst // character_drained, pre_energy, burst_cost
5354
OnTargetDied // target, AttackEvent
5455
OnTargetMoved // target
5556
OnCharacterHit // nil <- this is for when the character is going to get hit but might be shielded from dmg

pkg/core/player/character/energy.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ func (c *CharWrapper) ConsumeEnergy(delay int) {
1212

1313
func (c *CharWrapper) ConsumeEnergyPartial(delay int, amount float64) {
1414
f := func() {
15+
preEnergy := c.Energy
1516
post := max(c.Energy-amount, 0)
1617
c.log.NewEvent("draining energy", glog.LogEnergyEvent, c.Index).
17-
Write("pre_drain", c.Energy).
18+
Write("pre_drain", preEnergy).
1819
Write("post_drain", post).
1920
Write("source", c.Base.Key.String()+"-burst-energy-drain").
2021
Write("max_energy", c.EnergyMax)
2122
c.Energy = post
23+
c.events.Emit(event.OnEnergyBurst, c, preEnergy, amount)
2224
}
2325

2426
if delay == 0 {

0 commit comments

Comments
 (0)