private int GetCritDamage(IModifier mod) { return(DamageDice.Select(x => Rng.Roll(x) + Rng.Roll(x)) //x2 because crit! .Sum() + mod.GetCrit()); }
private int GetDamage(IModifier mod) { int dmgDieResult = DamageDice.Select(x => Rng.Roll(x)) .Sum(); int x = mod.Get(); return(dmgDieResult + x); }
public void Test3() { var damage = new DamageDice(new Die(1, 1), DamageType.Bludgeoning, false); var result = damage.RollDamage(); result.Total.Should().Be(1); }
// ----- Public Methods --- // public Weapon(WeaponType type, AdditionalWeaponPropertiesDTO additionalProperties = null) { Type = type; Damage = new List <DamageDice>(); Properties = new List <WeaponProperty>(); MagicProperties = new List <string>(); ExternalDescriptions = new List <string>(); BasicWeaponSetup(additionalProperties != null ? additionalProperties.IsMagic : false); if (additionalProperties != null) { if (additionalProperties.ReplaceBaseDamageType) { var newDamage = new DamageDice(Damage.First().Die, additionalProperties.ReplacementDamageType, additionalProperties.IsMagic); Damage = new List <DamageDice> { newDamage }; } Material = additionalProperties.Material; MagicModifier = additionalProperties.MagicModifier; Damage.AddRange(additionalProperties.AdditionalDamage); MagicProperties.AddRange(additionalProperties.MagicProperties); RequiresAttunement = additionalProperties.RequiresAttunement; AttunementAlignment = additionalProperties.AttunementRequiresMatchingAlignment; Name = additionalProperties.Name; NamePostfix = additionalProperties.NamePostfix; ReplaceName = additionalProperties.ReplaceName; IsMagic = additionalProperties.IsMagic; IsSentient = additionalProperties.IsSentient; MagicItemRarity = additionalProperties.MagicItemRarity; Alignment = additionalProperties.Alignment; ExternalDescriptions.AddRange(additionalProperties.ExternalDescription); Properties.AddRange(additionalProperties.AdditionalProperties); } }
public async Task <int> RollAsync() { return(await DamageDice.GetTotalRollAsync()); }