public override bool Valid(LocalTargetInfo target, bool throwMessages = false) { Pawn pawn = parent?.verb?.CasterPawn; Map map = parent?.verb?.CasterPawn?.Map; IntVec3 cell = target.Cell; if (map == null || pawn == null || cell == null) { return(false); } if (cell.GetRoofHolderOrImpassable(map) != null) { throwMessages = true; return(false); } if (cell.Roofed(map)) { if (cell.GetRoof(map) == RoofDefOf.RoofRockThick) { throwMessages = true; return(false); } } return(base.Valid(target, throwMessages)); }