diff --git a/src/entities/tasks/job_pathfinding.rs b/src/entities/tasks/job_pathfinding.rs index 1d1595a..33d9718 100644 --- a/src/entities/tasks/job_pathfinding.rs +++ b/src/entities/tasks/job_pathfinding.rs @@ -301,6 +301,7 @@ pub fn job_pathfinding_system( *state = TaskState::Pending; ambulatory.current_path = None; ambulatory.path_index = 0; + ambulatory.target = None; // Clear old target from previous task info!( "[PATHFIND] SUCCESS: Assigned job {:?} to dorf {:?} with approach {:?}", diff --git a/src/world/tiles/tilemap.rs b/src/world/tiles/tilemap.rs index a2fe3c3..ade0a84 100644 --- a/src/world/tiles/tilemap.rs +++ b/src/world/tiles/tilemap.rs @@ -309,6 +309,11 @@ impl TileMap { /// O(1) standability check using bit-packed chunk data. /// Returns false if chunk is not loaded (unloaded chunks have no valid tiles). pub fn is_standable(&self, world_pos: IVec3) -> bool { + // Cargo tiles override chunk standability - dorfs can stand on cargo to pick it up. + if self.cargo_tiles.contains_key(&world_pos) { + return true; + } + let chunk_pos = world_to_chunk(world_pos); let Some(chunk) = self.chunks.get(&chunk_pos) else { return false;