/** * Se le resta el valor de descuento al ataque */ public float descontar(iAttack <float> descuento) { float recibido = 0f; var cp = atq.copy(); atq.remAttack(descuento); foreach (var item in getTypes()) { recibido += cp.getAttack(item) - atq.getAttack(item); } return(recibido); }
/** * Se espera que el que lo invoco sea del tipo fraccionario */ public float remanente(iAttack <float> atenuado) { float recibido = 0f; //Se podria usar un lindo fold, no? var atkMax = atenuado.copy().add(atenuado.AttackMax()); foreach (var item in getTypes()) { recibido += atq.getAttack(item) * atenuado.getAttack(item); } atq.mulAttack(atkMax.remAttack(atenuado)); return(recibido); }
public void procesarDgm(Damage dmg, float evadio) { var max = evasion.AttackMax(); var atkEfectivo = evasion.copy().rem(max); foreach (string tipo in dmg.getTypes()) //Para cada tipo de ataque del daño { if (evasion.getAttack(tipo) > evadio) //Si las chances de evasion se cumplen { atkEfectivo.addAttack(new AttackSimple <float>(tipo, new Float(max))); } } dmg.remanente(atkEfectivo); }