diff --git a/assets/src/ba_data/python/ba/_activity.py b/assets/src/ba_data/python/ba/_activity.py index 4fe4b7b1..f7690ed1 100644 --- a/assets/src/ba_data/python/ba/_activity.py +++ b/assets/src/ba_data/python/ba/_activity.py @@ -166,14 +166,14 @@ class Activity(DependencyComponent, Generic[PlayerType, TeamType]): session = _ba.getsession() if session is None: - raise Exception('No current session') + raise RuntimeError('No current session') self._session = weakref.ref(session) # Preloaded data for actors, maps, etc; indexed by type. self.preloads: Dict[Type, Any] = {} if not isinstance(settings, dict): - raise Exception('expected dict for settings') + raise TypeError('expected dict for settings') if _ba.getactivity(doraise=False) is not self: raise Exception('invalid context state') @@ -292,8 +292,8 @@ class Activity(DependencyComponent, Generic[PlayerType, TeamType]): (internal) """ if self.has_begun(): - raise Exception('This should only be called for Activities' - 'that have not yet begun.') + raise RuntimeError('This should only be called for Activities' + 'that have not yet begun.') if not self._should_end_immediately or force: self._should_end_immediately = True self._should_end_immediately_results = results @@ -340,7 +340,7 @@ class Activity(DependencyComponent, Generic[PlayerType, TeamType]): """ from ba import _actor as bsactor if not isinstance(actor, bsactor.Actor): - raise Exception('non-actor passed to _retain_actor') + raise TypeError('non-actor passed to retain_actor') if (self.has_transitioned_in() and _ba.time() - self._last_prune_dead_actors_time > 10.0): print_error('it looks like nodes/actors are not' @@ -356,7 +356,7 @@ class Activity(DependencyComponent, Generic[PlayerType, TeamType]): """ from ba import _actor as bsactor if not isinstance(actor, bsactor.Actor): - raise Exception('non-actor passed to _add_actor_weak_ref') + raise TypeError('non-actor passed to add_actor_weak_ref') if (self.has_transitioned_in() and _ba.time() - self._last_prune_dead_actors_time > 10.0): print_error('it looks like nodes/actors are ' diff --git a/assets/src/ba_data/python/ba/_gameactivity.py b/assets/src/ba_data/python/ba/_gameactivity.py index c2b6b03d..bda98c84 100644 --- a/assets/src/ba_data/python/ba/_gameactivity.py +++ b/assets/src/ba_data/python/ba/_gameactivity.py @@ -965,7 +965,7 @@ class GameActivity(Activity[PlayerType, TeamType]): The default implementation simply calls spawn_player_spaz(). """ if not player: - raise Exception('spawn_player() called for nonexistent player') + raise TypeError('spawn_player() called for nonexistent player') return self.spawn_player_spaz(player) diff --git a/assets/src/ba_data/python/ba/_map.py b/assets/src/ba_data/python/ba/_map.py index d5e57e31..0d5fce1c 100644 --- a/assets/src/ba_data/python/ba/_map.py +++ b/assets/src/ba_data/python/ba/_map.py @@ -365,11 +365,12 @@ class Map(Actor): player_pts = [] for player in players: try: - if player.node: + if player and player.node: pnt = _ba.Vec3(player.node.position) player_pts.append(pnt) - except Exception as exc: - print('EXC in get_ffa_start_position:', exc) + except Exception: + from ba import _error + _error.print_exception() def _getpt() -> Sequence[float]: point = self.ffa_spawn_points[self._next_ffa_start_index]