Example #1
0
 public DiceRoll(DiceRollKind kind = DiceRollKind.Normal, string damageDice = "")
 {
     DamageDice         = damageDice;
     Kind               = kind;
     ThrowPower         = 1.0;
     MinCrit            = 20;   // Some feats allow for a 19 to crit.
     SuccessMessage     = "Success!";
     FailMessage        = "Fail!";
     CritFailMessage    = "Critical Fail!";
     CritSuccessMessage = "Critical Success!";
 }
Example #2
0
        private DiceRoll PrepareRoll(DiceRollType type)
        {
            DiceRollKind diceRollKind = DiceRollKind.Normal;

            if (CanIncludeVantageDice(type))
            {
                if (rbTestAdvantageDieRoll.IsChecked == true)
                {
                    diceRollKind = DiceRollKind.Advantage;
                }
                else if (rbTestDisadvantageDieRoll.IsChecked == true)
                {
                    diceRollKind = DiceRollKind.Disadvantage;
                }
            }

            string damageDice = string.Empty;

            if (IsAttack(type) || type == DiceRollType.DamageOnly || type == DiceRollType.HealthOnly)
            {
                damageDice = tbxDamageDice.Text;
            }

            DiceRoll diceRoll = new DiceRoll(diceRollKind, damageDice);

            diceRoll.CritFailMessage    = "";
            diceRoll.CritSuccessMessage = "";
            diceRoll.SuccessMessage     = "";
            diceRoll.FailMessage        = "";

            switch (type)
            {
            case DiceRollType.SkillCheck:
                diceRoll.CritFailMessage    = "COMPLETE FAILURE!";
                diceRoll.CritSuccessMessage = "Nat 20!";
                diceRoll.SuccessMessage     = "Success!";
                diceRoll.FailMessage        = "Fail!";
                break;

            case DiceRollType.Attack:
            case DiceRollType.ChaosBolt:
                diceRoll.CritFailMessage    = "SPECTACULAR MISS!";
                diceRoll.CritSuccessMessage = "Critical Hit!";
                diceRoll.SuccessMessage     = "Hit!";
                diceRoll.FailMessage        = "Miss!";
                break;

            case DiceRollType.SavingThrow:
                diceRoll.CritFailMessage    = "COMPLETE FAILURE!";
                diceRoll.CritSuccessMessage = "Critical Success!";
                diceRoll.SuccessMessage     = "Success!";
                diceRoll.FailMessage        = "Fail!";
                break;

            case DiceRollType.DeathSavingThrow:
                diceRoll.CritFailMessage    = "COMPLETE FAILURE!";
                diceRoll.CritSuccessMessage = "Critical Success!";
                diceRoll.SuccessMessage     = "Success!";
                diceRoll.FailMessage        = "Fail!";
                break;
            }


            diceRoll.ThrowPower = new Random().Next() * 2;
            if (diceRoll.ThrowPower < 0.3)
            {
                diceRoll.ThrowPower = 0.3;
            }

            if (double.TryParse(tbxModifier.Text, out double modifierResult))
            {
                diceRoll.Modifier = modifierResult;
            }

            if (double.TryParse(tbxHiddenThreshold.Text, out double thresholdResult))
            {
                diceRoll.HiddenThreshold = thresholdResult;
            }

            diceRoll.IsMagic = ckbUseMagic.IsChecked == true && IsAttack(type);
            diceRoll.Type    = type;
            return(diceRoll);
        }
Example #3
0
 public DiceRoll(DiceRollKind kind = DiceRollKind.Normal, string damageDice = "")
 {
     DamageDice = damageDice;
     Kind       = kind;
     ThrowPower = 1.0;
 }