public override void FinishBill(RuneBill bill, Pawn pawn)
        {
            SocketComp socket = bill.itemToBeManipulated.TryGetComp <SocketComp>();

            if (socket != null)
            {
                Thing rune = socket.RemoveRune(bill.runeToManipulate);

                if (rune != null)
                {
                    //Try to spawn it nearby.
                    GenPlace.TryPlaceThing(rune, pawn.Position, pawn.Map, ThingPlaceMode.Near);
                }
            }
        }
        public override IEnumerable <Toil> MakeWorkToils(Toil endToil)
        {
            yield return(Toils_General.Wait(100).WithProgressBarToilDelay(TargetIndex.A, false));

            Toil workToil = new Toil();

            workToil.initAction = delegate()
            {
                SocketComp socket = Item.TryGetComp <SocketComp>();
                if (socket != null)
                {
                    socket.RemoveRune(RuneThing);
                }
            };
            yield return(workToil);
        }