internal float GetCarryBonus() { float storedCalorieRatio = (float)(storedCalories / Tuning.maximumStoredCalories); float storedCalorieScore = 2 * storedCalorieRatio - 1; float carryBonus = Tuning.GetCarryBonus((float)wellFedHungerScore, storedCalorieScore); return((float)Math.Round(carryBonus, 1)); }
private void UpdateWellFedHungerScore(float todHours) { double decay = Math.Pow(Tuning.wellFedHungerScoreDecayPerHour, todHours); float hungerRatio = hunger.m_CurrentReserveCalories / hunger.m_MaxReserveCalories; float hungerScoreChange = Tuning.GetWellFedHungerScoreChange(hungerRatio); // First change the hunger score ... wellFedHungerScore = decay * wellFedHungerScore + (1 - decay) * hungerScoreChange; // ... then clamp it to [-1, 1] wellFedHungerScore = Math.Min(Math.Max(wellFedHungerScore, -1), 1); }
internal float GetConditionChangePerHour() { float hungerRatio = hunger.m_CurrentReserveCalories / hunger.m_MaxReserveCalories; if (hungerRatio < Tuning.hungerLevelStarving) { return(Tuning.GetConditionChangePerHour(hungerRatio, storedCalories)); } else { return(0f); } }
private static float GetStoredCaloriesChangePerHour(float hungerRatio, double storedCalories, float calorieBurnRate) { if (hungerRatio > Tuning.hungerLevelWellFed) { // Add calories if possible return(Tuning.GetCaloriesStoredPerHour(hungerRatio)); } else if (hungerRatio < Tuning.hungerLevelMalnourished) { // Remove calories if possible return(Tuning.GetCaloriesRemovedPerHour(hungerRatio, storedCalories, calorieBurnRate)); } else { return(0f); } }
internal float GetCalorieBurnRateMultiplier() { float storedCalorieRatio = (float)(storedCalories / Tuning.maximumStoredCalories); return(Tuning.GetCalorieBurnRateMultiplier(storedCalorieRatio)); }
internal float GetStoredCaloriesWarmthBonus() { float storedCalorieRatio = (float)(storedCalories / Tuning.maximumStoredCalories); return(Tuning.GetStoredCaloriesWarmthBonus(storedCalorieRatio)); }