protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); this.FailOn(() => !TargetCanBeBuried()); yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnForbidden(TargetIndex.A)); yield return(new Toil() { defaultCompleteMode = ToilCompleteMode.Delay, defaultDuration = Duration }.WithProgressBarToilDelay(TargetIndex.A) .FailOnDespawnedOrNull(TargetIndex.A)); yield return(Toils_General.Do(() => { var holeBuilding = TargetLocA.GetThingList(Map) .FirstOrDefault(t => t is Building_BuriedThing) as Building_BuriedThing; if (holeBuilding == null) { holeBuilding = ThingMaker.MakeThing(ThingDef.Named("Building_BuriedThing"), null) as Building_BuriedThing; GenSpawn.Spawn(holeBuilding, TargetLocA, Map, Rot4.North, WipeMode.Vanish); pawn.Map.edificeGrid?.Register(holeBuilding); } holeBuilding.AddThing((TargetThingA as Corpse)?.InnerPawn?.LabelShort ?? TargetThingA.LabelNoCount); pawn.Map.designationManager?.TryRemoveDesignationOn(TargetThingA, BuryOnTheSpotDefOf.BuryDesignation); TargetThingA.DeSpawn(); })); yield break; }