public void AutoEvadeStatus_DoesNotEvadeMagic()
        {
            _humanFighter.AddStatus(_evadeButDoNotCounterStatus);

            _humanFighter.SetMove(_doNothing);

            Spell fireball = new Spell("fire", MagicType.Fire, SpellType.Attack, TargetType.SingleEnemy, 0, 1);

            _enemy.AddSpell(fireball);
            _enemy.SetMove(fireball);

            _battleManager.Battle(_humanTeam, _enemyTeam);

            Assert.AreEqual(0, _humanFighter.CurrentHealth);
        }
Exemplo n.º 2
0
        public void DoesNotCounter_MagicAttacks()
        {
            Spell fireball = new Spell("fire", MagicType.Fire, SpellType.Attack, TargetType.SingleEnemy, 0, 1);

            _humanFighter.AddStatus(_status);

            _humanFighter.SetHealth(_enemy.MagicStrength + fireball.Power + 1);
            _humanFighter.SetMove(_doNothing, 1);
            _humanFighter.SetMove(_runawayMove);

            _enemy.AddSpell(fireball);
            _enemy.SetMove(fireball);

            _battleManager.Battle(_humanTeam, _enemyTeam);

            Assert.AreEqual(1, _humanFighter.CurrentHealth);
            Assert.AreEqual(_enemy.MaxHealth, _enemy.CurrentHealth);
        }
Exemplo n.º 3
0
        public void BattleManager_CorrectlyCalculatesMagicalDamageForShield([Values(MagicType.Fire, MagicType.Ice)] MagicType spellMagicType)
        {
            int shieldResistance = 10;

            IronBattleShield shield = new IronBattleShield((shieldResistance * 2) + 1, 0, shieldResistance);

            _humanPlayer1.SetBattleShield(shield);

            _logger.SubscribeAll(_humanPlayer1.BattleShield);

            _humanPlayer1.SetMagicResistance(shieldResistance);
            _humanPlayer1.SetStrength(_enemyPlayer1.MaxHealth + _enemyPlayer1.Defense);
            _humanPlayer1.SetMove(_basicAttackMove);
            _humanPlayer1.SetMoveTarget(_enemyPlayer1);

            _enemyPlayer1.SetSpeed(1);
            _enemyPlayer1.SetMagicStrength(shieldResistance * 2);
            Spell spell = new Spell("foo", spellMagicType, SpellType.Attack, TargetType.SingleEnemy, 0, 0);

            _enemyPlayer1.AddSpell(spell);
            _enemyPlayer1.SetMove(spell);

            _chanceService.PushEventsOccur(true, false); //attack hits, not misses

            _humanTeam = new Team(_menuManager, _humanPlayer1);
            _enemyTeam = new Team(_menuManager, _enemyPlayer1);

            _battleManager.Battle(_humanTeam, _enemyTeam);

            List <EventLog> logs = _logger.Logs;

            Assert.AreEqual(1, logs.Count);

            MagicalDamageTakenEventArgs e = logs[0].E as MagicalDamageTakenEventArgs;

            Assert.NotNull(e);
            Assert.AreEqual(shieldResistance, e.Damage);
            Assert.AreEqual(spellMagicType, e.MagicType);
        }