Exemplo n.º 1
0
        public void AttackTarget(Character attacked)
        {
            int chance = BattleHelper.CalculateMeleeChance(this, attacked);
            int damage = BattleHelper.CalculatePhysicalDamage(this, attacked);
            damage = damage >= attacked.Stats.Hp ? attacked.Stats.Hp : damage;

            var rand = new Random(DateTime.Now.Millisecond);

            bool criticalHit = rand.Next(0, 100) <= BattleHelper.CalculateCriticalChance(this);

            if (rand.Next(100) < chance)
            {
                var args = new AttackEventArgs();
                args.Attacker = this;
                args.Target = attacked;

                StatusEffect lifeSteal = StatusEffects.Find(x => x.HealthOnAttack > 0);
                if (lifeSteal != null)
                {
                    args.Damage = lifeSteal.HealthOnAttack;
                    ChangeHealth(args, true);
                }

                if (criticalHit)
                    damage *= 2;
                args.Damage = -damage;

                attacked.ChangeHealth(args, true);
            }
        }