public Weather() { climate = Climate.Temperate; elevation = Elevation.SeaLevel; season = Season.Spring; precipitationIntensity = PrecipitationIntensity.Heavy; precipitationFrequency = PrecipitationFrequency.Intermittent; precipitationForm = PrecipitationForm.RainHeavy; cloudCover = CloudCover.CloudsMedium; windStrength = WindStrength.Light; windCheckSize = CharacterSize.None; windBlownAwaySize = CharacterSize.None; severeWeatherEvent = SevereWeatherEvent.None; inDesert = false; isDay = true; nightTempDrop = 0; RecalculateAll(true); }
private void GetPrecipitation(bool reroll) { if (reroll) { precipitationFormRoll = DiceRoller.RollD100(); } int startTime = DiceRoller.RollD12(); string startM = DiceRoller.RollD6() > 3 ? "PM" : "AM"; if (currentTemp > 32) { switch (precipitationIntensity) { case PrecipitationIntensity.Light: if (precipitationFormRoll <= 20) { precipitationForm = PrecipitationForm.FogLight; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 21 && precipitationFormRoll <= 40) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD6(); } } else if (precipitationFormRoll >= 41 && precipitationFormRoll <= 50) { precipitationForm = PrecipitationForm.Drizzle; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 51 && precipitationFormRoll <= 75) { precipitationForm = PrecipitationForm.Drizzle; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } else if (precipitationFormRoll >= 76 && precipitationFormRoll <= 90) { precipitationForm = PrecipitationForm.RainLight; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 91 && precipitationFormRoll <= 100) { if (currentTemp >= 40) { precipitationForm = PrecipitationForm.RainLight; } else { precipitationForm = PrecipitationForm.Sleet; } if (reroll) { rainForHours = 1; } } break; case PrecipitationIntensity.Medium: if (precipitationFormRoll <= 10) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 11 && precipitationFormRoll <= 20) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD12(); } } else if (precipitationFormRoll >= 21 && precipitationFormRoll <= 30) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 31 && precipitationFormRoll <= 35) { precipitationForm = PrecipitationForm.Rain; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 36 && precipitationFormRoll <= 70) { precipitationForm = PrecipitationForm.Rain; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 71 && precipitationFormRoll <= 90) { precipitationForm = PrecipitationForm.Rain; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } else if (precipitationFormRoll >= 91 && precipitationFormRoll <= 100) { if (currentTemp >= 40) { precipitationForm = PrecipitationForm.Rain; } else { precipitationForm = PrecipitationForm.Sleet; } if (reroll) { rainForHours = DiceRoller.RollD4(); } } break; case PrecipitationIntensity.Heavy: if (precipitationFormRoll <= 10) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 11 && precipitationFormRoll <= 20) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD6(2); } } else if (precipitationFormRoll >= 21 && precipitationFormRoll <= 50) { precipitationForm = PrecipitationForm.RainHeavy; if (reroll) { rainForHours = DiceRoller.RollD12(); } } else if (precipitationFormRoll >= 51 && precipitationFormRoll <= 70) { precipitationForm = PrecipitationForm.RainHeavy; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } else if (precipitationFormRoll >= 71 && precipitationFormRoll <= 85) { if (currentTemp >= 40) { precipitationForm = PrecipitationForm.RainHeavy; } else { precipitationForm = PrecipitationForm.Sleet; } if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 86 && precipitationFormRoll <= 90) { precipitationForm = PrecipitationForm.Thunderstorm; if (reroll) { rainForHours = 1; } } else if (precipitationFormRoll >= 91 && precipitationFormRoll <= 100) { precipitationForm = PrecipitationForm.Thunderstorm; if (reroll) { rainForHours = DiceRoller.RollD3(); } } break; case PrecipitationIntensity.Torrential: if (precipitationFormRoll <= 5) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 6 && precipitationFormRoll <= 10) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD6(2); } } else if (precipitationFormRoll >= 11 && precipitationFormRoll <= 30) { precipitationForm = PrecipitationForm.RainHeavy; if (reroll) { rainForHours = DiceRoller.RollD6(2); } } else if (precipitationFormRoll >= 31 && precipitationFormRoll <= 60) { precipitationForm = PrecipitationForm.RainHeavy; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } else if (precipitationFormRoll >= 61 && precipitationFormRoll <= 80) { if (currentTemp >= 40) { precipitationForm = PrecipitationForm.RainHeavy; } else { precipitationForm = PrecipitationForm.Sleet; } if (reroll) { rainForHours = DiceRoller.RollD6(2); } } else if (precipitationFormRoll >= 81 && precipitationFormRoll <= 95) { precipitationForm = PrecipitationForm.Thunderstorm; if (reroll) { rainForHours = DiceRoller.RollD3(); } } else if (precipitationFormRoll >= 96 && precipitationFormRoll <= 100) { precipitationForm = PrecipitationForm.Thunderstorm; if (reroll) { rainForHours = DiceRoller.RollD6(); } } break; default: break; } } else { switch (precipitationIntensity) { case PrecipitationIntensity.Light: if (precipitationFormRoll <= 20) { precipitationForm = PrecipitationForm.FogLight; if (reroll) { rainForHours = DiceRoller.RollD6(); } } else if (precipitationFormRoll >= 21 && precipitationFormRoll <= 40) { precipitationForm = PrecipitationForm.FogLight; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 41 && precipitationFormRoll <= 50) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 51 && precipitationFormRoll <= 60) { precipitationForm = PrecipitationForm.SnowLight; if (reroll) { rainForHours = 1; } } else if (precipitationFormRoll >= 61 && precipitationFormRoll <= 75) { precipitationForm = PrecipitationForm.SnowLight; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 76 && precipitationFormRoll <= 100) { precipitationForm = PrecipitationForm.SnowLight; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } break; case PrecipitationIntensity.Medium: if (precipitationFormRoll <= 10) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD6(); } } else if (precipitationFormRoll >= 11 && precipitationFormRoll <= 20) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 21 && precipitationFormRoll <= 30) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 31 && precipitationFormRoll <= 50) { precipitationForm = PrecipitationForm.SnowMedium; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 51 && precipitationFormRoll <= 90) { precipitationForm = PrecipitationForm.SnowMedium; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 91 && precipitationFormRoll <= 100) { precipitationForm = PrecipitationForm.SnowMedium; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } break; case PrecipitationIntensity.Heavy: if (precipitationFormRoll <= 10) { precipitationForm = PrecipitationForm.FogMedium; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 11 && precipitationFormRoll <= 20) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD6(2); } } else if (precipitationFormRoll >= 21 && precipitationFormRoll <= 60) { precipitationForm = PrecipitationForm.SnowLight; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } else if (precipitationFormRoll >= 61 && precipitationFormRoll <= 90) { precipitationForm = PrecipitationForm.SnowMedium; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 91 && precipitationFormRoll <= 100) { precipitationForm = PrecipitationForm.SnowHeavy; if (reroll) { rainForHours = DiceRoller.RollD6(); } } break; case PrecipitationIntensity.Torrential: if (precipitationFormRoll <= 5) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 6 && precipitationFormRoll <= 10) { precipitationForm = PrecipitationForm.FogHeavy; if (reroll) { rainForHours = DiceRoller.RollD6(2); } } else if (precipitationFormRoll >= 11 && precipitationFormRoll <= 50) { precipitationForm = PrecipitationForm.SnowHeavy; if (reroll) { rainForHours = DiceRoller.RollD4(); } } else if (precipitationFormRoll >= 51 && precipitationFormRoll <= 90) { precipitationForm = PrecipitationForm.SnowHeavy; if (reroll) { rainForHours = DiceRoller.RollD8(); } } else if (precipitationFormRoll >= 91 && precipitationFormRoll <= 100) { precipitationForm = PrecipitationForm.SnowHeavy; if (reroll) { rainForHours = DiceRoller.RollD12(2); } } break; default: break; } } int endTime = startTime + rainForHours; string endM = startM; while (endTime > 12) { endTime -= 12; if (endM == "AM") { endM = "PM"; } else { endM = "AM"; } } rainFromTo = $"{startTime}{startM} - {endTime}{endM}"; }