func (s *service) nextFloor(e exploration.Exploration, eventTime time.Time) (exploration.Exploration, error) { floorNo := e.NextFloorNo() ef := exploration.NewFloor(floorNo, eventTime) e.Floors = append(e.Floors, ef) p, err := s.playerRepository.Resolve(e.PlayerID) if err != nil { return e, fmt.Errorf("player error %d: %s", e.PlayerID, err.Error()) } p.AddExp(calcNextFloorExp(floorNo)) if err := s.playerRepository.Store(p); err != nil { return e, fmt.Errorf("player store error %d: %s", e.PlayerID, err.Error()) } // Clear判定 if dungeon.ResolveDungeon(e.DungeonID).IsClear(e.NowFloorNo()) { return s.activeEvent(e, eventTime, event.PlayerClearEvent) } else { return e, nil } }