public double GetAnimalCost(Thing thing) { if (statWorker == null) { StatDef marketValueStatDef = StatDefOf.MarketValue; statWorker = marketValueStatDef.Worker; } float value = statWorker.GetValue(StatRequest.For(thing)); return(value); }
private static float CalculateSufficientQuality(Pawn doctor, Pawn patient) { // (doctorQuality * medQuality + bedOffset) * seldTend is clamped to 1, // solve for medQuality, // medQuality = (1 / selfTend - bedOffset) / doctorQuality // this quality is sufficient. StatDef statDef = StatDefOf.MedicalTendQuality; float doctorQuality = statDef.defaultBaseValue; StatWorker statWorker = statDef.Worker; if (!statWorker.IsDisabledFor(doctor)) { doctorQuality = statWorker.GetValue(doctor); } float bedOffset = patient.CurrentBed()?.GetStatValue(StatDefOf.MedicalTendQualityOffset) ?? 0f; float selfTend = doctor != patient ? 1.0f : 0.7f; return((1 / selfTend - bedOffset) / doctorQuality * Settings.Get().goodEnoughDowngradeFactor); }
public static float GetValue(this StatWorker statWorker, ThingWithComps tool, ToolType toolType, bool applyPostProcess = true) { return(statWorker.GetValue(Patch_StatRequest_For.For(tool, toolType), applyPostProcess)); }