feat(all): implement SkyWay progression, battles and dispatch; fix field reward position ordering
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package eventtasks
|
||||
|
||||
import (
|
||||
"bd2server/internal/server/domain/command"
|
||||
"slices"
|
||||
)
|
||||
|
||||
func (s *Service) RecordSkyWayClear(ctx command.Context, positionGroup, difficulty uint64) error {
|
||||
changed := false
|
||||
for _, schedule := range s.taskSchedules() {
|
||||
if schedule.Type != 4 || !s.active(schedule) {
|
||||
continue
|
||||
}
|
||||
for _, task := range s.design.Missions {
|
||||
if task.Type != 24 || task.SubType != positionGroup || !slices.Contains(task.Params, difficulty) || !s.availableTask(ctx, schedule, task) {
|
||||
continue
|
||||
}
|
||||
previous := s.state.Missions[scheduleKey(schedule)+"/"+key(task.ID)]
|
||||
var prior mission
|
||||
if previous != nil {
|
||||
prior = *previous
|
||||
}
|
||||
current := s.mission(schedule, task.ID)
|
||||
if previous == nil || prior != *current {
|
||||
changed = true
|
||||
}
|
||||
if !current.Claimed && current.Value < task.Target {
|
||||
current.Value++
|
||||
changed = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if !changed {
|
||||
return nil
|
||||
}
|
||||
return s.save(ctx)
|
||||
}
|
||||
Reference in New Issue
Block a user