@@ -116,24 +116,25 @@ func NewDendroCore(c *core.Core, shp geometry.Shape, a *combat.AttackEvent) *Den
116116
117117 explode := func (reason string ) func () {
118118 return func () {
119- ai , snap := NewBloomAttack (char , s )
120- ap := combat .NewCircleHitOnTarget (s , nil , 5 )
121- c .QueueAttackWithSnap (ai , snap , ap , 1 )
119+ s .Core .Tasks .Add (func () {
120+ ai , snap := NewBloomAttack (char , s )
121+ ap := combat .NewCircleHitOnTarget (s , nil , 5 )
122+ c .QueueAttackWithSnap (ai , snap , ap , 0 )
122123
123- // self damage
124- ai .Abil += reactions .SelfDamageSuffix
125- ai .FlatDmg = 0.05 * ai .FlatDmg
126- ap .SkipTargets [targets .TargettablePlayer ] = false
127- ap .SkipTargets [targets .TargettableEnemy ] = true
128- ap .SkipTargets [targets .TargettableGadget ] = true
129- c .QueueAttackWithSnap (ai , snap , ap , 1 )
124+ // self damage
125+ ai .Abil += reactions .SelfDamageSuffix
126+ ai .FlatDmg = 0.05 * ai .FlatDmg
127+ ap .SkipTargets [targets .TargettablePlayer ] = false
128+ ap .SkipTargets [targets .TargettableEnemy ] = true
129+ ap .SkipTargets [targets .TargettableGadget ] = true
130+ c .QueueAttackWithSnap (ai , snap , ap , 0 )
130131
131- c .Log .NewEvent (
132- "dendro core " + reason ,
133- glog .LogElementEvent ,
134- char .Index ,
135- ).
136- Write ( "src" , s . Src () )
132+ c .Log .NewEvent (
133+ "dendro core " + reason ,
134+ glog .LogElementEvent ,
135+ char .Index ,
136+ ). Write ( "src" , s . Src ())
137+ }, 1 )
137138 }
138139 }
139140 s .Gadget .OnExpiry = explode ("expired" )
@@ -164,21 +165,23 @@ func (s *DendroCore) Attack(atk *combat.AttackEvent, evt glog.Event) (float64, b
164165 case attributes .Electro :
165166 // trigger hyperbloom targets the nearest enemy
166167 // it can also do damage to player in small aoe
167- ai , snap := NewHyperbloomAttack (char , s )
168- // queue dmg nearest enemy within radius 15
169- enemy := s .Core .Combat .ClosestEnemyWithinArea (combat .NewCircleHitOnTarget (s .Gadget , nil , 15 ), nil )
170- if enemy != nil {
171- ap := combat .NewCircleHitOnTarget (enemy , nil , 1 )
172- s .Core .QueueAttackWithSnap (ai , snap , ap , 60 )
168+ s .Core .Tasks .Add (func () {
169+ ai , snap := NewHyperbloomAttack (char , s )
170+ // queue dmg nearest enemy within radius 15
171+ enemy := s .Core .Combat .ClosestEnemyWithinArea (combat .NewCircleHitOnTarget (s .Gadget , nil , 15 ), nil )
172+ if enemy != nil {
173+ ap := combat .NewCircleHitOnTarget (enemy , nil , 1 )
174+ s .Core .QueueAttackWithSnap (ai , snap , ap , 0 )
173175
174- // also queue self damage
175- ai .Abil += reactions .SelfDamageSuffix
176- ai .FlatDmg = 0.05 * ai .FlatDmg
177- ap .SkipTargets [targets .TargettablePlayer ] = false
178- ap .SkipTargets [targets .TargettableEnemy ] = true
179- ap .SkipTargets [targets .TargettableGadget ] = true
180- s .Core .QueueAttackWithSnap (ai , snap , ap , 60 )
181- }
176+ // also queue self damage
177+ ai .Abil += reactions .SelfDamageSuffix
178+ ai .FlatDmg = 0.05 * ai .FlatDmg
179+ ap .SkipTargets [targets .TargettablePlayer ] = false
180+ ap .SkipTargets [targets .TargettableEnemy ] = true
181+ ap .SkipTargets [targets .TargettableGadget ] = true
182+ s .Core .QueueAttackWithSnap (ai , snap , ap , 0 )
183+ }
184+ }, 60 )
182185
183186 s .Gadget .OnKill = nil
184187 s .Gadget .Kill ()
@@ -193,18 +196,19 @@ func (s *DendroCore) Attack(atk *combat.AttackEvent, evt glog.Event) (float64, b
193196 case attributes .Pyro :
194197 // trigger burgeon, aoe dendro damage
195198 // self damage
196- ai , snap := NewBurgeonAttack ( char , s )
197- ap := combat . NewCircleHitOnTarget ( s , nil , 5 )
198-
199- s .Core .QueueAttackWithSnap (ai , snap , ap , 1 )
199+ s . Core . Tasks . Add ( func () {
200+ ai , snap := NewBurgeonAttack ( char , s )
201+ ap := combat . NewCircleHitOnTarget ( s , nil , 5 )
202+ s .Core .QueueAttackWithSnap (ai , snap , ap , 0 )
200203
201- // queue self damage
202- ai .Abil += reactions .SelfDamageSuffix
203- ai .FlatDmg = 0.05 * ai .FlatDmg
204- ap .SkipTargets [targets .TargettablePlayer ] = false
205- ap .SkipTargets [targets .TargettableEnemy ] = true
206- ap .SkipTargets [targets .TargettableGadget ] = true
207- s .Core .QueueAttackWithSnap (ai , snap , ap , 1 )
204+ // queue self damage
205+ ai .Abil += reactions .SelfDamageSuffix
206+ ai .FlatDmg = 0.05 * ai .FlatDmg
207+ ap .SkipTargets [targets .TargettablePlayer ] = false
208+ ap .SkipTargets [targets .TargettableEnemy ] = true
209+ ap .SkipTargets [targets .TargettableGadget ] = true
210+ s .Core .QueueAttackWithSnap (ai , snap , ap , 0 )
211+ }, 1 )
208212
209213 s .Gadget .OnKill = nil
210214 s .Gadget .Kill ()
0 commit comments