示例#1
0
        private static float ApplyDamageFormulaToInitialDamage(InitialDamageParameter initialDamageParameter)
        {
            float attackPoints, defensePoints;

            (attackPoints, defensePoints) = GetDamageForSpecialOrNormalMove(initialDamageParameter);
            float finalDamageResult = GetFinalDamageFromFinalDamageFormula(attackPoints, defensePoints, initialDamageParameter.Modifier);

            return(Convert.ToInt32(Math.Ceiling(finalDamageResult)));
        }
示例#2
0
        public static int CalculateDamage(IPokemon attackingPokemon, IPokemon targetPokemon, IMove move, TypeEffect typeEffect)
        {
            float modifier = CalculateSTABModifier(attackingPokemon, move);

            var initialDamageParameter = new InitialDamageParameter(attackingPokemon, targetPokemon, modifier, move);

            int calculatedDamage = Convert.ToInt32(TypeDamageFormulas.DictionaryOfFormulas[typeEffect].DynamicInvoke(initialDamageParameter));

            return(calculatedDamage);
        }
示例#3
0
        private static (float, float) GetDamageForSpecialOrNormalMove(InitialDamageParameter initialDamageParameter)
        {
            float attackPoints, defensePoints;

            if (initialDamageParameter.Move.Special)
            {
                attackPoints  = initialDamageParameter.AttackingPokemon.SpecialAttackPoints;
                defensePoints = initialDamageParameter.TargetPokemon.SpecialDefensePoints;
            }
            else
            {
                attackPoints  = initialDamageParameter.AttackingPokemon.AttackPoints;
                defensePoints = initialDamageParameter.TargetPokemon.DefensePoints;
            }

            return(attackPoints, defensePoints);
        }
示例#4
0
 private static float NotVeryEffectiveDamage(InitialDamageParameter initialDamageParameter)
 {
     initialDamageParameter.Modifier -= initialDamageParameter.Modifier * NOT_VERY_EFFECTIVE_DAMAGE_SUBTRACTION;
     return(ApplyDamageFormulaToInitialDamage(initialDamageParameter));
 }
示例#5
0
 private static float SuperEffectiveDamage(InitialDamageParameter initialDamageParameter)
 {
     initialDamageParameter.Modifier += initialDamageParameter.Modifier * SUPER_EFFECTIVE_DAMAGE_ADDITION;
     return(ApplyDamageFormulaToInitialDamage(initialDamageParameter));
 }