Beispiel #1
0
        public void TakeDamage_IsReducedBy25Percent_IfCarrying50PercentOfTheMaximumCapacity()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                Health           = 100,
                CarryingCapacity = 490
            };

            // Act
            player.TakeDamage(100);
            // Assert
            player.Health.Should().Be(25);
        }
Beispiel #2
0
        public void TakeDamage_WithNoArmour_HealthIsReducedAndParticleEffectIsShown()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                Health = 200
            };

            // Act
            player.TakeDamage(100);
            // Assert
            player.Health.Should().Be(100);
            _specialEffect.PlaySpecialEffect(null);
            _engine.Received().PlaySpecialEffect("lots_of_gore");
        }
Beispiel #3
0
        public void TakeDamage_WithMoreArmourThanDamage_NoDamageIsDealtAndParryEffectIsPlayed()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(2000));
            player.CalculateStats();
            // Act
            player.TakeDamage(100);
            // Assert
            player.Health.Should().Be(200);
            _engine.Received().PlaySpecialEffect("parry");
        }
Beispiel #4
0
        public void TakeDamage_WithMoreArmourThanDamage_NoDamageIsDealtAndParryEffectIsPlayed()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200, Armour = 2000
            };

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(200);
            engine.Received().PlaySpecialEffect(Effects.Parry);
        }
Beispiel #5
0
        public void TakeDamage_With50Armour_DamageIsReducedBy50AndParticleEffectIsShown()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200, Armour = 50
            };

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(150);
            engine.Received().PlaySpecialEffect(Effects.LotsOfGore);
        }
Beispiel #6
0
        public void TakeDamage_WithNoArmour_HealthIsReducedAndParticleEffectIsShown()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200
            };

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(100);
            engine.Received().PlaySpecialEffect("lots_of_gore");
        }
Beispiel #7
0
        public void TakeDamage_With50Armour_DamageIsReducedBy50AndParticleEffectIsShown()
        {
            // Arrange
            var player = new RpgPlayer(_engine, _playerInventory, _specialEffect)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(50));
            player.CalculateStats();
            // Act
            player.TakeDamage(100);
            // Assert
            player.Health.Should().Be(150);
            _specialEffect.PlaySpecialEffect(null);
            _engine.Received().PlaySpecialEffect("lots_of_gore");
        }
Beispiel #8
0
        public void TakeDamage_WithMoreArmourThanDamage_NoDamageIsDealtAndParryEffectIsPlayed()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(2000));

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(200);
            engine.Received().PlaySpecialEffect("parry");
        }
Beispiel #9
0
        public void TakeDamage_With50Armour_DamageIsReducedBy50AndParticleEffectIsShown()
        {
            // Arrange
            var engine = Substitute.For <IGameEngine>();
            var player = new RpgPlayer(engine)
            {
                Health = 200
            };

            player.PickUpItem(ItemBuilder.Build.WithArmour(50));

            // Act
            player.TakeDamage(100);

            // Assert
            player.Health.Should().Be(150);
            engine.Received().PlaySpecialEffect("lots_of_gore");
        }
Beispiel #10
0
        public void TakeDamage_25PercentWhenCarryingCapacityIsHalf()
        {
            // Arrange
            int health       = 100;
            var engine       = Substitute.For <IGameEngine>();
            var itemsService = new Items(engine);
            var player       = new RpgPlayer(engine)
            {
                Health = health
            };

            Item item = ItemBuilder.Build.ReduceCapcity(true);

            // Act
            itemsService.PickUpItem(item);
            player.TakeDamage(health / 100 * 25);

            // Assert
            itemsService.CarryingCapacity.Should().Be(500);
            // 25% damage to health
            player.Health.Should().Be(health - (health / 100 * 25));
        }
Beispiel #11
0
    void Attack()
    {
        lastAttackTime = Time.time;

        player.TakeDamage(damage);
    }