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)); }
public void OverrideDamageCalculationInfo(ref DamageEffect.DamageCalculationInfo damageCalculationInfo) { Debug.Log($"Overriden element to {Element.ToString()}"); damageCalculationInfo.DamageElement = Element; damageCalculationInfo.DamageType = DamageType; }