diff --git a/src/overcooked_ai_py/mdp/overcooked_mdp.py b/src/overcooked_ai_py/mdp/overcooked_mdp.py index fb6cd925..047cd452 100644 --- a/src/overcooked_ai_py/mdp/overcooked_mdp.py +++ b/src/overcooked_ai_py/mdp/overcooked_mdp.py @@ -22,7 +22,8 @@ class Recipe: def __new__(cls, ingredients): if not cls._configured: - raise ValueError("Recipe class must be configured before recipes can be created") + cls.configure({}) + # raise ValueError("Recipe class must be configured before recipes can be created") # Some basic argument verification if not ingredients or not hasattr(ingredients, '__iter__') or len(ingredients) == 0: raise ValueError("Invalid input recipe. Must be ingredients iterable with non-zero length") @@ -1197,6 +1198,10 @@ def resolve_interacts(self, new_state, joint_action, events_infos): soup.add_ingredient(obj) shaped_reward[player_idx] += self.reward_shaping_params["PLACEMENT_IN_POT_REW"] + # Start cooking without extra INTERACT action if recipe is done + if self.soup_to_be_cooked_at_location(new_state, i_pos) and soup.is_full and soup.is_valid: + soup.begin_cooking() + # Log potting self.log_object_potting(events_infos, new_state, old_soup, soup, obj.name, player_idx) if obj.name == Recipe.ONION: diff --git a/src/overcooked_ai_py/mdp/overcooked_trajectory.py b/src/overcooked_ai_py/mdp/overcooked_trajectory.py index 158a3b24..ff7c60d0 100644 --- a/src/overcooked_ai_py/mdp/overcooked_trajectory.py +++ b/src/overcooked_ai_py/mdp/overcooked_trajectory.py @@ -31,7 +31,7 @@ } """ -TIMESTEP_TRAJ_KEYS = set(["ep_states", "ep_actions", "ep_rewards", "ep_dones", "ep_infos"]) +TIMESTEP_TRAJ_KEYS = set(["ep_states", "ep_actions", "ep_other_actions", "ep_rewards", "ep_dones", "ep_infos"]) EPISODE_TRAJ_KEYS = set(["ep_returns", "ep_lengths", "mdp_params", "env_params"]) DEFAULT_TRAJ_KEYS = set(list(TIMESTEP_TRAJ_KEYS) + list(EPISODE_TRAJ_KEYS) + ["metadatas"])