コード例 #1
0
    public int DamageCalculation(DamageEffect.DamageCalculationInfo damageCalculationInfo, float variance = 0.15f)
    {
        var damageType = damageCalculationInfo.DamageType;
        var source     = damageCalculationInfo.Source;
        var target     = damageCalculationInfo.Target;

        int damage;

        switch (damageType)
        {
        case DamageType.Physical:
        {
            damage = (int)DamageFormula2(source.Level, source.Stats.PhysAtk, target.Level, target.Stats.PhysDef);
            break;
        }

        case DamageType.Magical:
        {
            damage = (int)DamageFormula2(source.Level, source.Stats.MagAtk, target.Level, target.Stats.MagDef);
            break;
        }

        case DamageType.Pure:
        {
            //damage = (int) DamageFormula1(source.Level, source.Stats.MagAtk, target.Level, target.Stats.MagDef);
            throw new NotImplementedException();
            //damage = (int) DamageFormula2(source.)
            //break;
        }

        default:
            throw new ArgumentOutOfRangeException();
        }

        var elementalMultiplier   = target.Stats.ElementalResistance[damageCalculationInfo.DamageElement];
        var finalDamageMultiplier = Random.Range(1 - variance, 1 + variance);

        Debug.Log($"Calculado {damage}");

        return((int)(damage * elementalMultiplier * finalDamageMultiplier));
    }
コード例 #2
0
 public void OverrideDamageCalculationInfo(ref DamageEffect.DamageCalculationInfo damageCalculationInfo)
 {
     Debug.Log($"Overriden element to {Element.ToString()}");
     damageCalculationInfo.DamageElement = Element;
     damageCalculationInfo.DamageType    = DamageType;
 }