コード例 #1
0
ファイル: Weather.cs プロジェクト: SirSteev/3.5-DM-Tool
        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);
        }
コード例 #2
0
ファイル: Weather.cs プロジェクト: SirSteev/3.5-DM-Tool
        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}";
        }