protected override IEnumerable <Task> GetTasks() { string desc = $"{DescForTool(mineable.tool)} {mineable.def.name}."; yield return(new TaskGoTo(game, desc, PathCfg.Adjacent(tile.pos))); yield return(new TaskTimedLambda( game, desc, MinionAnim.Slash, mineable.tool, mineable.mineAmt, TaskTimed.FacePt(tile.pos), _ => 1, (task, workAmt) => { BB.Assert(task.work == activeWork); mineable.mineAmt -= workAmt; return true; }, (task) => { BB.Assert(task.work == activeWork); BB.Assert(mineable.mineAmt <= 0); mineable.jobHandles.Remove(this); game.RemoveBuilding(mineable); game.DropItems(tile, mineable.GetMinedMaterials()); } )); }