private void Fulfill(Caravan caravan) { int remaining = requestCount; List <Thing> list = CaravanInventoryUtility.TakeThings(caravan, delegate(Thing thing) { if (requestThingDef != thing.def) { return(0); } if (!PlayerCanGive(thing)) { return(0); } int num = Mathf.Min(remaining, thing.stackCount); remaining -= num; return(num); }); for (int i = 0; i < list.Count; i++) { list[i].Destroy(); } if (parent.Faction != null) { parent.Faction.TryAffectGoodwillWith(Faction.OfPlayer, 12, canSendMessage: true, canSendHostilityLetter: true, "GoodwillChangedReason_FulfilledTradeRequest".Translate(), parent); } QuestUtility.SendQuestTargetSignals(parent.questTags, "TradeRequestFulfilled", parent.Named("SUBJECT"), caravan.Named("CARAVAN")); Disable(); }