public PawnCalcForApparel(Saveable_Pawn saveablePawn, Month month, float temperatureAjust) { this.saveablePawn = saveablePawn; this.pawn = saveablePawn.pawn; this.outfit = pawn.outfits.CurrentOutfit; this.stats = saveablePawn.NormalizeCalculedStatDef().ToArray(); float targetTemperature = GenTemperature.AverageTemperatureAtWorldCoordsForMonth(Find.Map.WorldCoords, month) + temperatureAjust; #region [ needWarmCurve ] float stat = this.pawn.def.GetStatValueAbstract(StatDefOf.ComfyTemperatureMin, null); stat = targetTemperature - stat; Log.Message("Target: " + targetTemperature + " Stat: " + this.pawn.def.GetStatValueAbstract(StatDefOf.ComfyTemperatureMin, null) + " Value: " + stat); if (stat > 10f) { this.needWarmCurve = new SimpleCurve { new CurvePoint(0f, 1f) } } ; else if (stat > 3f) { this.needWarmCurve = new SimpleCurve { new CurvePoint(+10f, -1.00f), new CurvePoint(+03f, +0.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(-03f, +1.10f) } } ; else if (stat > 0) { this.needWarmCurve = new SimpleCurve { new CurvePoint(+03f, -1.00f), new CurvePoint(+01f, -1.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(-03f, +1.20f), new CurvePoint(-10f, +1.50f) } } ; else if (stat > -3) { this.needWarmCurve = new SimpleCurve { new CurvePoint(+03f, -1.00f), new CurvePoint(+01f, -1.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(-03f, +1.20f), new CurvePoint(-100f, +2.00f) } } ; else { this.needWarmCurve = new SimpleCurve { new CurvePoint(+01f, -1.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(-03f, +1.50f), new CurvePoint(-100f, +20.00f) } }; #endregion #region [ needCoolCurve ] stat = this.pawn.def.GetStatValueAbstract(StatDefOf.ComfyTemperatureMax, null); stat = targetTemperature - stat; if (stat < -10) { this.needCoolCurve = new SimpleCurve { new CurvePoint(0f, 1f) } } ; else if (stat < -3) { this.needCoolCurve = new SimpleCurve { new CurvePoint(-10f, -1.00f), new CurvePoint(-03f, +0.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(+03f, +1.10f) } } ; else if (stat < 0) { this.needCoolCurve = new SimpleCurve { new CurvePoint(-03f, -1.00f), new CurvePoint(-01f, -1.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(+03f, +1.20f), new CurvePoint(+10f, +1.50f) } } ; else { this.needCoolCurve = new SimpleCurve { new CurvePoint(-01f, -1.00f), new CurvePoint(+00f, +1.00f), new CurvePoint(+03f, +1.50f), new CurvePoint(+100f, +20.00f) } }; #endregion }