Example #1
0
        public Damage ExecuteCalculation(
            ActorId from,
            ActorId to,
            SkillId skillId)
        {
            var attacker = actorRepository.Find(from);
            var victim   = actorRepository.Find(to);
            var skill    = skillRepository.Find(skillId);

            // Build Base Damage
            attacker.NotifyAttackFactor(attackPowerBuilder);
            skill.NotifyForceFactor(attackPowerBuilder);
            var damage = attackPowerBuilder.Build();

            var defenseRate = defenseRateBuilder.Build();

            damage = damage.Multiply(defenseRate.GenerateRate());

            var randomRate = new Rate(random.Random());

            damage = damage.Multiply(randomRate);

            damage = damage.Multiply(damageRate);

            return(damage);
        }