@@ -167,15 +167,17 @@ def interpreter(state, env):
167
167
step = state [0 ].observation .step
168
168
169
169
end_early = (active1 and active1 .status ) in (TIMEOUT , ERROR ) or (active2 and active2 .status in (TIMEOUT , ERROR ))
170
- either_guessed = False
170
+ one_guessed = False
171
+ two_guessed = False
171
172
172
173
if active1 is not None :
173
174
guessed = False
174
175
if active1 .observation .role == GUESSER :
175
176
guessed = guesser_action (active1 , inactive1 , step )
176
- either_guessed = guessed
177
+ one_guessed = guessed
177
178
else :
178
179
answerer_action (active1 , inactive1 )
180
+
179
181
if active1 .status in (TIMEOUT , ERROR ):
180
182
end_game (active1 , inactive1 , 0 , active1 .status , DONE )
181
183
elif end_early :
@@ -187,16 +189,23 @@ def interpreter(state, env):
187
189
guessed = False
188
190
if active2 .observation .role == GUESSER :
189
191
guessed = guesser_action (active2 , inactive2 , step )
190
- either_guessed = either_guessed or guessed
192
+ two_guessed = guessed
191
193
else :
192
194
answerer_action (active2 , inactive2 )
195
+
193
196
if active2 .status in (TIMEOUT , ERROR ):
194
197
end_game (active2 , inactive2 , 0 , active2 .status , DONE )
195
198
elif end_early :
196
199
end_game (active2 , inactive2 , 0 , DONE , DONE )
197
200
else :
198
201
increment_turn (active2 , inactive2 , step , guessed )
199
202
203
+ # make sure to end the game if only one team guessed correctly this round
204
+ if one_guessed and not two_guessed :
205
+ end_game (active2 , inactive2 , 0 , DONE , DONE )
206
+ elif two_guessed and not one_guessed :
207
+ end_game (active1 , inactive1 , 0 , DONE , DONE )
208
+
200
209
return state
201
210
202
211
0 commit comments