The exception is thrown in the venue_service from the following method
def request_zone_director(self, zone_director, request_type, preserve_state=True):
if self._requested_zone_directors is None:
raise RuntimeError('Cannot request a new zone director after one has been selected.')
if zone_director is None:
raise ValueError('Cannot request a None zone director.')
for (prior_request_type, prior_zone_director, _) in self._requested_zone_directors:
if prior_request_type == request_type:
raise ValueError('Multiple requests for zone directors with the same request type {}. Original: {} New: {}'.format(request_type, prior_zone_director, zone_director))
self._requested_zone_directors.append((request_type, zone_director, preserve_state))
in particular the following the part of it
for (prior_request_type, prior_zone_director, _) in self._requested_zone_directors:
if prior_request_type == request_type:
raise ValueError('Multiple requests for zone directors with the same request type {}. Original: {} New: {}'.format(request_type, prior_zone_director, zone_director))
Apparently it's called more than once with the same request type which
throws an exception that throws you out of the lot.
According to my own exception logs it seems that the drama_scheduler is causing the repeated calls
def make_zone_director_requests(self):
for drama_node in self._active_nodes.values():
if drama_node.zone_director_override is None:
pass
else:
services.venue_service().request_zone_director(drama_node.zone_director_override(), ZoneDirectorRequestType.DRAMA_SCHEDULER)
In the method they're iterating over several nodes that may or may not call the
request_zone_director method from the venue_service with it's own type.
It only needs to branch to else twice within the loop to cause an exception.
Honestly unhappy with how they handle errors within the request_zone_director method as it heavily impacts players.
I'd rather have them just log the errors and ignore the request.