public void AddResistance_ShouldAddDamageTypeToList() { // Arrange var instance = new HitPoints(42); // Act instance.AddResistance(DamageTypes.Fire); // Assert instance.Resistances.Should().HaveCount(1); instance.Resistances[0].Should().Be(DamageTypes.Fire); }
public void DealDamages_ShouldOnlyDoHalfDamage_WhenMultipleResistances() { // Arrange var instance = new HitPoints(42); instance.AddResistance(DamageTypes.Fire); instance.AddResistance(DamageTypes.Fire); instance.AddResistance(DamageTypes.Fire); var damages = new DealDamage[] { new DealDamage { DamageType = DamageTypes.Fire, Hp = 8 } }; // Act instance.DealDamages(damages); // Assert instance.CurrentHp.Should().Be(38); }
public void DealDamages_ShouldDoHalfDamageRoundedDown_WhenResitance() { // Arrange var instance = new HitPoints(42); instance.AddResistance(DamageTypes.Fire); var damages = new DealDamage[] { new DealDamage { DamageType = DamageTypes.Fire, Hp = 5 } }; // Act instance.DealDamages(damages); // Assert instance.CurrentHp.Should().Be(40); }
public void DealDamages_ShouldProcessResistanceThenVulnerability_WhenBoth() { // Arrange var instance = new HitPoints(42); instance.AddResistance(DamageTypes.Fire); instance.AddVulnerability(DamageTypes.Fire); var damages = new DealDamage[] { new DealDamage { DamageType = DamageTypes.Fire, Hp = 9 } }; // Act instance.DealDamages(damages); // Assert instance.CurrentHp.Should().Be(34); }
private void AddDamageModifiers(HitPoints hitPoints, IEnumerable <CreateDefense> defenses) { foreach (var defense in defenses) { switch (defense.Defense) { case DamageModifierTypes.Immunity: hitPoints.AddImmunity(defense.Type); break; case DamageModifierTypes.Resistance: hitPoints.AddResistance(defense.Type); break; case DamageModifierTypes.Vulnerability: hitPoints.AddVulnerability(defense.Type); break; } } }