Ejemplo n.º 1
0
        public void Hydra_TakeDamageTwoTimesEnoughDamageToGrowAHead()
        {
            hydra.TakeDamage(20, damageNonFire.Object, attacker1.Object);

            Assert.AreEqual(2, (int)newHeadsToGrow.GetValue(hydra));
            Assert.IsFalse((bool)tookFireDamage.GetValue(hydra));
            Assert.AreEqual(4, hydra.EquipedWeapon.Count());
            RoundOfDamage rndOfDamage = (RoundOfDamage)roundOfDamage.GetValue(hydra);

            Assert.AreEqual(20, rndOfDamage.TotalDamage);
            Assert.AreEqual(attacker1.Object, rndOfDamage.LastAttacker);
            Assert.AreEqual(0u, rndOfDamage.CombatRound);
            Assert.IsTrue(rndOfDamage.HeadCut);
            notify.Verify(e => e.Mob(attacker1.Object, It.Is <ITranslationMessage>(f => f.Message == "You cut off on of the hydras heads.")), Times.Once);
            notify.Verify(e => e.Room(attacker1.Object, hydra, null, It.Is <ITranslationMessage>(f => f.Message == "{performer} cut off on of the hydras heads."), null, false, false), Times.Once);


            hydra.TakeDamage(20, damageNonFire.Object, attacker2.Object);

            Assert.AreEqual(4, (int)newHeadsToGrow.GetValue(hydra));
            Assert.IsFalse((bool)tookFireDamage.GetValue(hydra));
            Assert.AreEqual(3, hydra.EquipedWeapon.Count());
            RoundOfDamage rndOfDamage2 = (RoundOfDamage)roundOfDamage.GetValue(hydra);

            Assert.AreEqual(20, rndOfDamage2.TotalDamage);
            Assert.AreEqual(attacker2.Object, rndOfDamage2.LastAttacker);
            Assert.AreEqual(0u, rndOfDamage2.CombatRound);
            Assert.IsTrue(rndOfDamage2.HeadCut);
            Assert.AreNotSame(rndOfDamage, rndOfDamage2);
            notify.Verify(e => e.Mob(attacker2.Object, It.Is <ITranslationMessage>(f => f.Message == "You cut off on of the hydras heads.")), Times.Once);
            notify.Verify(e => e.Room(attacker2.Object, hydra, null, It.Is <ITranslationMessage>(f => f.Message == "{performer} cut off on of the hydras heads."), null, false, false), Times.Once);
        }
Ejemplo n.º 2
0
        public void Hydra_TakeDamageTwoTimesNotEnoughDamageToGrowAHead()
        {
            hydra.TakeDamage(5, damageNonFire.Object, attacker1.Object);

            Assert.AreEqual(0, (int)newHeadsToGrow.GetValue(hydra));
            Assert.IsFalse((bool)tookFireDamage.GetValue(hydra));
            Assert.AreEqual(5, hydra.EquipedWeapon.Count());
            RoundOfDamage rndOfDamage = (RoundOfDamage)roundOfDamage.GetValue(hydra);

            Assert.AreEqual(5, rndOfDamage.TotalDamage);
            Assert.AreEqual(attacker1.Object, rndOfDamage.LastAttacker);
            Assert.AreEqual(0u, rndOfDamage.CombatRound);
            Assert.IsFalse(rndOfDamage.HeadCut);


            hydra.TakeDamage(5, damageNonFire.Object, attacker2.Object);

            Assert.AreEqual(0, (int)newHeadsToGrow.GetValue(hydra));
            Assert.IsFalse((bool)tookFireDamage.GetValue(hydra));
            Assert.AreEqual(5, hydra.EquipedWeapon.Count());
            RoundOfDamage rndOfDamage2 = (RoundOfDamage)roundOfDamage.GetValue(hydra);

            Assert.AreEqual(5, rndOfDamage2.TotalDamage);
            Assert.AreEqual(attacker2.Object, rndOfDamage2.LastAttacker);
            Assert.AreEqual(0u, rndOfDamage2.CombatRound);
            Assert.IsFalse(rndOfDamage2.HeadCut);
            Assert.AreNotSame(rndOfDamage, rndOfDamage2);
        }