diff --git a/addons/escoria-core/game/core-scripts/esc/types/esc_object.gd b/addons/escoria-core/game/core-scripts/esc/types/esc_object.gd index 10f14b69..3edde98d 100644 --- a/addons/escoria-core/game/core-scripts/esc/types/esc_object.gd +++ b/addons/escoria-core/game/core-scripts/esc/types/esc_object.gd @@ -70,7 +70,8 @@ func get_save_data() -> Dictionary: save_data["interactive"] = self.interactive save_data["state"] = self.state - if self.node.get("is_movable") and self.node.is_movable: + if is_instance_valid(self.node) and \ + self.node.get("is_movable") and self.node.is_movable: save_data["global_transform"] = self.node.global_transform save_data["last_deg"] = wrapi(self.node._movable._get_angle() + 1, 0, 360) save_data["last_dir"] = self.node._movable.last_dir diff --git a/addons/escoria-core/game/core-scripts/esc_room.gd b/addons/escoria-core/game/core-scripts/esc_room.gd index 685089bc..6c0fce48 100644 --- a/addons/escoria-core/game/core-scripts/esc_room.gd +++ b/addons/escoria-core/game/core-scripts/esc_room.gd @@ -180,7 +180,8 @@ func perform_script_events(): ) escoria.globals_manager.set_global( "ESC_LAST_SCENE", - escoria.main.current_scene.global_id, + escoria.main.current_scene.global_id \ + if escoria.main.current_scene != null else "", true ) diff --git a/addons/escoria-core/game/main.gd b/addons/escoria-core/game/main.gd index bcc4f56b..fcb9998f 100644 --- a/addons/escoria-core/game/main.gd +++ b/addons/escoria-core/game/main.gd @@ -126,7 +126,9 @@ func set_camera_limits(camera_limit_id: int = 0) -> void: func save_game(p_savegame_res: Resource) -> void: p_savegame_res.main = { ESCSaveGame.MAIN_LAST_SCENE_GLOBAL_ID_KEY: last_scene_global_id, - ESCSaveGame.MAIN_CURRENT_SCENE_FILENAME_KEY: current_scene.filename + ESCSaveGame.MAIN_CURRENT_SCENE_FILENAME_KEY: current_scene.filename \ + if current_scene != null \ + else "No current scene (not loaded yet)" }