コード例 #1
0
ファイル: DiceRolls.cs プロジェクト: mpladow/DHSimulator
        //rolls die and returns three different values encapulated in an object
        public static D100Result RollD100(Cryptorandom rn)
        {
            //RNG.NumberBetween(1, 10);
            int[] die = new int[2];
            die[0] = rn.Next(1, 10); //10
            die[1] = rn.Next(1, 10); //10 = 100

            string strDie  = "";
            int    intDie  = 0;
            var    strTens = "";
            var    strOnes = "";

            //converts the die into readable ints
            if (die[1] == 10 && die[0] == 1)
            {
                intDie = 1;
            }
            if (die[1] == 10 && die[0] == 10)
            {
                intDie = 100;
            }
            if (die[1] == 10 && die[0] != 10)
            {
                die[1] = 0;
            }

            strTens = die[1].ToString();
            strOnes = die[0].ToString();

            strDie = strTens + strOnes;
            intDie = Convert.ToInt32(strDie);
            D100Result result = new D100Result(die, intDie, strDie);

            return(result);
        }
コード例 #2
0
        //
        public void UpdateHomeWorldCharacteristicBonuses()
        {
            Cryptorandom rn       = new Cryptorandom();
            var          posStats = HomeWorld.StatsAffectedPositive;
            var          negStats = HomeWorld.StatsAffectedNegative;

            foreach (var posStat in posStats)
            {
                foreach (var stat in Stats)
                {
                    if (stat.Name == posStat)
                    {
                        stat.BaseValue = Constants.StartingValue + 5;//rests basevaluee to 25
                        int[] roll = RollD10(3, rn);
                        stat.BaseValue += TakeDice(2, roll, true).Sum();
                    }
                }
            }
            foreach (var negStat in negStats)
            {
                foreach (var stat in Stats)
                {
                    if (stat.Name == negStat)
                    {
                        stat.BaseValue = Constants.StartingValue - 5;//resets basevaluee to 25
                        int[] roll = RollD10(3, rn);
                        stat.BaseValue += TakeDice(2, roll, false).Sum();
                    }
                }
            }
            this.Aptitudes.Add(HomeWorld.AptitudeBonus);
        }
コード例 #3
0
        public HomeWorld RandomlySelectHomeWorld()//used for random generation.
        {
            HomeWorld    homeworldRandom = null;
            Cryptorandom rn     = new Cryptorandom();
            var          result = Convert.ToInt32(DiceRolls.RollD100(rn));

            if (result >= 1 && result <= 15)
            {
                homeworldRandom = World.GetHomeworldById(Constants.FeralWorld);
            }
            if (result >= 16 && result <= 33)
            {
                homeworldRandom = World.GetHomeworldById(Constants.ForgeWorld);
            }
            if (result >= 34 && result <= 44)
            {
                homeworldRandom = World.GetHomeworldById(Constants.HighBorn);
            }
            if (result >= 45 && result <= 69)
            {
                homeworldRandom = World.GetHomeworldById(Constants.HiveWorld);
            }
            if (result >= 70 && result <= 85)
            {
                homeworldRandom = World.GetHomeworldById(Constants.ShrineWorld);
            }
            if (result >= 86 && result <= 100)
            {
                homeworldRandom = World.GetHomeworldById(Constants.VoidBorn);
            }
            return(homeworldRandom);
        }
コード例 #4
0
        public int CalculateDamage(int dietoroll = 1)
        {
            Cryptorandom rn   = new Cryptorandom();
            var          roll = DiceRolls.RollD10(dietoroll, rn);
            var          x    = roll[0];

            var damage = x + BaseDamage;

            return(x);
        }
コード例 #5
0
ファイル: DiceRolls.cs プロジェクト: mpladow/DHSimulator
        public static int[] RollD5(int times, Cryptorandom rn)
        {
            var results = new int[times];

            for (int i = 0; i < times; i++)
            {
                results[i] = rn.Next(1, 5);
            }
            return(results);
        }
コード例 #6
0
        public static D100Result DoCharacteristicCheck(int modCharValue)
        {
            Cryptorandom rn         = new Cryptorandom();
            var          d100result = RollD100(rn);

            d100result.isSuccess = d100result.IntValue <= (modCharValue) ? true : false;
            int[] modcharArray = modCharValue.ToString().ToCharArray().Select(x => (int)Char.GetNumericValue(x)).ToArray();
            Array.Reverse(modcharArray);
            d100result.DegreesofSuccess = modcharArray[1] - d100result.Result[1];
            d100result.isSuccess        = d100result.IntValue == 1 ? true : d100result.isSuccess;//if the roll is a 1, then you automatically pass
            return(d100result);
        }
コード例 #7
0
        //Character Setup
        public void AllocateValues()
        {
            Cryptorandom rn = new Cryptorandom();

            foreach (var stat in Stats)
            {
                var value = Constants.StartingValue;
                value         += RollD10(2, rn).Sum();
                stat.BaseValue = value;
            }
            if (HomeWorld != null)
            {
                Wounds = RollD5(1, rn)[0] + HomeWorld.BaseWounds;
            }
            XP = Constants.StartingExperience;
            SetPlayerMainStatOntoSkill();//sets the base value to the skill once the initial values have been set
        }