diff --git a/kloppy/domain/models/event.py b/kloppy/domain/models/event.py index 2ab23ec9..2d4298db 100644 --- a/kloppy/domain/models/event.py +++ b/kloppy/domain/models/event.py @@ -1076,18 +1076,22 @@ def _update_formations_and_positions(self): for event in self.events: if isinstance(event, SubstitutionEvent): - if event.replacement_player.starting_position: - replacement_player_position = ( - event.replacement_player.starting_position - ) - else: - replacement_player_position = event.player.positions.last( - default=PositionType.Unknown + # substitution does not per se have a sub off (replacement player) + if event.replacement_player: + if event.replacement_player.starting_position: + replacement_player_position = ( + event.replacement_player.starting_position + ) + else: + replacement_player_position = ( + event.player.positions.last( + default=PositionType.Unknown + ) + ) + event.replacement_player.set_position( + event.time, + replacement_player_position, ) - event.replacement_player.set_position( - event.time, - replacement_player_position, - ) event.player.set_position(event.time, None) elif isinstance(event, FormationChangeEvent):