private float GetAverageMedicalPotency(List <Thing> ingredients, Bill bill) { ThingDef thingDef = (bill as Bill_Medical)?.consumedInitialMedicineDef; int num = 0; float num2 = 0f; if (thingDef != null) { num++; num2 += thingDef.GetStatValueAbstract(StatDefOf.MedicalPotency); } for (int i = 0; i < ingredients.Count; i++) { Medicine medicine = ingredients[i] as Medicine; if (medicine != null) { num += medicine.stackCount; num2 += medicine.GetStatValue(StatDefOf.MedicalPotency) * (float)medicine.stackCount; } } if (num == 0) { return(1f); } return(num2 / (float)num); }
private static float GetMedicalPotency(Medicine medicine) { return(1f); //TODO: remove when the bug is fixed if (medicine == null) { return(1f); } //herbal: 0.6 //regular: 1.0 //glitterworld: 2.2 return(medicine.GetStatValue(StatDefOf.MedicalPotency, true)); }
public void Stabilize(Pawn medic, Medicine medicine) { if (stabilized) { Log.Error("CE tried to stabilize an injury that is already stabilized before"); return; } if (medicine == null) { Log.Error("CE tried to stabilize without medicine"); return; } float bleedReduction = 2f * medic.GetStatValue(StatDefOf.MedicalTendQuality) * medicine.GetStatValue(StatDefOf.MedicalPotency); bleedModifier = 1 - bleedReduction; // Especially high treatment quality extends time at 0% bleed by setting bleedModifier to a negative number stabilized = true; }