44 "fmt"
55
66 "github.com/genshinsim/gcsim/pkg/core"
7+ "github.com/genshinsim/gcsim/pkg/core/action"
78 "github.com/genshinsim/gcsim/pkg/core/attacks"
89 "github.com/genshinsim/gcsim/pkg/core/attributes"
910 "github.com/genshinsim/gcsim/pkg/core/combat"
@@ -65,8 +66,11 @@ func NewWeapon(c *core.Core, char *character.CharWrapper, p info.WeaponProfile)
6566 },
6667 })
6768
68- c .Events .Subscribe (event .OnPlunge , func (args ... interface {}) bool {
69- char .AddStatus (plungeBuff , 15 * 60 , true )
69+ c .Events .Subscribe (event .OnStateChange , func (args ... interface {}) bool {
70+ next := args [1 ].(action.AnimationState )
71+ if next == action .PlungeAttackState {
72+ char .AddStatus (plungeBuff , 15 * 60 , true )
73+ }
7074 return false
7175 }, fmt .Sprintf ("vividnotions-plunge-%s" , char .Base .Key .String ()))
7276
@@ -93,10 +97,16 @@ func NewWeapon(c *core.Core, char *character.CharWrapper, p info.WeaponProfile)
9397 }
9498
9599 // TODO: hitlag affected?
100+ plungeF := char .StatusExpiry (plungeBuff )
101+ skillBurstF := char .StatusExpiry (skillBurstBuff )
96102 char .QueueCharTask (func () {
97- char .DeleteStatus (plungeBuff )
98- char .DeleteStatus (skillBurstBuff )
99- }, 0.05 * 60 )
103+ if plungeF == char .StatusExpiry (plungeBuff ) {
104+ char .DeleteStatus (plungeBuff )
105+ }
106+ if skillBurstF == char .StatusExpiry (skillBurstBuff ) {
107+ char .DeleteStatus (skillBurstBuff )
108+ }
109+ }, 0.1 * 60 )
100110
101111 return false
102112 }, fmt .Sprintf ("vividnotions-%s" , char .Base .Key .String ()))
0 commit comments