static float OldAddictionSeverityOffset(ThingDef d)
 {
     if (IsDrug(d))
     {
         return(DrugStatsUtility.GetDrugComp(d).existingAddictionSeverityOffset);
     }
     return(-1f);
 }
 static FloatRange OverdoseSeverity(ThingDef d)
 {
     if (IsDrug(d))
     {
         return(DrugStatsUtility.GetDrugComp(d).overdoseSeverityOffset);
     }
     return(FloatRange.Zero);
 }
 static float NewAddictionChance(ThingDef d)
 {
     if (IsDrug(d))
     {
         return(DrugStatsUtility.GetDrugComp(d).addictiveness);
     }
     return(-1f);
 }
 static float NewAddictionSeverity(ThingDef d)
 {
     if (IsDrug(d))
     {
         return(DrugStatsUtility.GetChemical(d).addictionHediff.initialSeverity);
     }
     return(-1f);
 }
 static float MinToleranceToAddict(ThingDef d)
 {
     if (IsDrug(d))
     {
         return(DrugStatsUtility.GetDrugComp(d).minToleranceToAddict);
     }
     return(-1f);
 }
 static float LargeOverdoseChance(ThingDef d)
 {
     if (IsDrug(d))
     {
         return(DrugStatsUtility.GetDrugComp(d).largeOverdoseChance);
     }
     return(-1f);
 }
 static bool Addictive(ThingDef d)
 {
     if (!IsDrug(d))
     {
         return(false);
     }
     return(DrugStatsUtility.GetDrugComp(d).Addictive);
 }
 static HediffDef Addiction(ThingDef d)
 {
     if (!Addictive(d))
     {
         return(null);
     }
     return(DrugStatsUtility.GetChemical(d).addictionHediff);
 }
 public static void Drugs()
 {
     DebugTables.MakeTablesDialog(DefDatabase <ThingDef> .AllDefs.Where((ThingDef d) => d.IsWithinCategory(ThingCategoryDefOf.Medicine) || d.IsWithinCategory(ThingCategoryDefOf.Drugs)), new TableDataGetter <ThingDef>("name", (ThingDef d) => d.defName), new TableDataGetter <ThingDef>("market\nvalue", (ThingDef d) => d.BaseMarketValue.ToStringMoney()), new TableDataGetter <ThingDef>("ingredients", (ThingDef d) => CostListString(d, divideByVolume : true, starIfOnlyBuyable : true)), new TableDataGetter <ThingDef>("work\namount", (ThingDef d) => (!(WorkToProduceBest(d) > 0f)) ? "-" : WorkToProduceBest(d).ToString("F0")), new TableDataGetter <ThingDef>("real\ningredient cost", (ThingDef d) => RealIngredientCost(d).ToString("F1")), new TableDataGetter <ThingDef>("real\nsell price", (ThingDef d) => RealSellPrice(d).ToStringMoney()), new TableDataGetter <ThingDef>("real\nprofit\nper item", (ThingDef d) => (RealSellPrice(d) - RealIngredientCost(d)).ToStringMoney()), new TableDataGetter <ThingDef>("real\nprofit\nper day's work", (ThingDef d) => ((RealSellPrice(d) - RealIngredientCost(d)) / WorkToProduceBest(d) * 30000f).ToStringMoney()), new TableDataGetter <ThingDef>("real\nbuy price", (ThingDef d) => RealBuyPrice(d).ToStringMoney()), new TableDataGetter <ThingDef>("for\npleasure", (ThingDef d) => d.IsPleasureDrug.ToStringCheckBlank()), new TableDataGetter <ThingDef>("non\nmedical", (ThingDef d) => d.IsNonMedicalDrug.ToStringCheckBlank()), new TableDataGetter <ThingDef>("joy", (ThingDef d) => (!d.IsPleasureDrug) ? "-" : d.ingestible.joy.ToString()), new TableDataGetter <ThingDef>("high\ngain", delegate(ThingDef d)
     {
         if (DrugStatsUtility.GetDrugHighGiver(d) == null)
         {
             return("-");
         }
         return((!(DrugStatsUtility.GetDrugHighGiver(d).severity > 0f)) ? "-" : DrugStatsUtility.GetDrugHighGiver(d).severity.ToString());
     }), new TableDataGetter <ThingDef>("high\noffset\nper day", (ThingDef d) => (DrugStatsUtility.GetDrugHighGiver(d)?.hediffDef == null) ? "-" : DrugStatsUtility.GetHighOffsetPerDay(d).ToString()), new TableDataGetter <ThingDef>("high\ndays\nper dose", (ThingDef d) => (DrugStatsUtility.GetDrugHighGiver(d)?.hediffDef == null) ? "-" : (DrugStatsUtility.GetDrugHighGiver(d).severity / (0f - DrugStatsUtility.GetHighOffsetPerDay(d))).ToString("F2")), new TableDataGetter <ThingDef>("tolerance\ngain", (ThingDef d) => (!(DrugStatsUtility.GetToleranceGain(d) > 0f)) ? "-" : DrugStatsUtility.GetToleranceGain(d).ToStringPercent()), new TableDataGetter <ThingDef>("tolerance\noffset\nper day", (ThingDef d) => (DrugStatsUtility.GetTolerance(d) == null) ? "-" : DrugStatsUtility.GetToleranceOffsetPerDay(d).ToStringPercent()), new TableDataGetter <ThingDef>("tolerance\ndays\nper dose", (ThingDef d) => (DrugStatsUtility.GetTolerance(d) == null) ? "-" : (DrugStatsUtility.GetToleranceGain(d) / (0f - DrugStatsUtility.GetToleranceOffsetPerDay(d))).ToString("F2")), new TableDataGetter <ThingDef>("addiction\nmin tolerance", (ThingDef d) => (!Addictive(d)) ? "-" : MinToleranceToAddict(d).ToString()), new TableDataGetter <ThingDef>("addiction\nnew chance", (ThingDef d) => (!Addictive(d)) ? "-" : NewAddictionChance(d).ToStringPercent()), new TableDataGetter <ThingDef>("addiction\nnew severity", (ThingDef d) => (!Addictive(d)) ? "-" : NewAddictionSeverity(d).ToString()), new TableDataGetter <ThingDef>("addiction\nold severity gain", (ThingDef d) => (!Addictive(d)) ? "-" : OldAddictionSeverityOffset(d).ToString()), new TableDataGetter <ThingDef>("addiction\noffset\nper day", (ThingDef d) => (Addiction(d) == null) ? "-" : DrugStatsUtility.GetAddictionOffsetPerDay(d).ToString()), new TableDataGetter <ThingDef>("addiction\nrecover\nmin days", (ThingDef d) => (Addiction(d) == null) ? "-" : (NewAddictionSeverity(d) / (0f - DrugStatsUtility.GetAddictionOffsetPerDay(d))).ToString("F2")), new TableDataGetter <ThingDef>("need fall\nper day", (ThingDef d) => (DrugStatsUtility.GetNeed(d) == null) ? "-" : DrugStatsUtility.GetNeed(d).fallPerDay.ToString("F2")), new TableDataGetter <ThingDef>("need cost\nper day", (ThingDef d) => (DrugStatsUtility.GetNeed(d) == null) ? "-" : DrugStatsUtility.GetAddictionNeedCostPerDay(d).ToStringMoney()), new TableDataGetter <ThingDef>("overdose\nseverity gain", (ThingDef d) => (!IsDrug(d)) ? "-" : OverdoseSeverity(d).ToString()), new TableDataGetter <ThingDef>("overdose\nrandom-emerg\nchance", (ThingDef d) => (!IsDrug(d)) ? "-" : LargeOverdoseChance(d).ToStringPercent()), new TableDataGetter <ThingDef>("combat\ndrug", (ThingDef d) => (IsDrug(d) && d.GetCompProperties <CompProperties_Drug>().isCombatEnhancingDrug).ToStringCheckBlank()), new TableDataGetter <ThingDef>("safe dose\ninterval", (ThingDef d) => DrugStatsUtility.GetSafeDoseIntervalReadout(d)));