예제 #1
0
        public virtual int DamageRoll(bool critical = false, bool rollMax = false)
        {
            Weapon           weapon    = equipment.ContainsKey(Slot.MainHand) ? (Weapon)equipment[Slot.MainHand] : null;
            bool             finesse   = weapon?.Finesse ?? false;
            bool             versatile = weapon?.Versatile ?? false;
            Func <bool, int> damageDie = ((versatile && (Equipment.ContainsKey(Slot.OffHand) && Equipment[Slot.OffHand] != null) ?
                                           DiceRoller.EnlargeDie(weapon?.DamageDie) : weapon?.DamageDie) ?? DiceRoller.FourSidedDie);

            return((finesse ? Math.Max(StrengthMod, DexterityMod) : StrengthMod) + (critical ? damageDie(rollMax) + damageDie(rollMax) : damageDie(rollMax)) + AddAllModifiers(Attribute.DamageBonus));
        }