public static double CalculateTankInDps(double healPerSecond, ResistanceProfile resistanceProfile, DamageProfile damageProfile = null) { damageProfile = damageProfile ?? DamageProfile.OMNI_DAMAGE_PROFILE; return healPerSecond / (damageProfile.EmRatio * (1.0 - resistanceProfile.EmResistance) + damageProfile.KineticRatio * (1.0 - resistanceProfile.KineticResistance) + damageProfile.ThermalRatio * (1.0 - resistanceProfile.ThermalResistance) + damageProfile.ExplosiveRatio * (1.0 - resistanceProfile.ExplosiveResistance)); }
private static float CalculateDamage(ResistanceProfile rp, DamageProfile dp, float multip) { float damage = 0; float explosionDamage = dp.ExplosionDamage, laserDamage = dp.LaserDamage, plasmaDamage = dp.PlasmaDamage, piercingDamage = dp.PiercingDamage; if (explosionDamage > 0) { damage += explosionDamage * (rp.ExplosionResistance / (100 + rp.ExplosionResistance)); } if (laserDamage > 0) { damage += laserDamage * (rp.LaserResistance / (100 + rp.LaserResistance)); } if (plasmaDamage > 0) { damage += plasmaDamage * (rp.PlasmaResistance / (100 + rp.PlasmaResistance)); } if (piercingDamage > 0) { damage += piercingDamage * (rp.PiercingResistance / (100 + rp.PlasmaResistance)); } Debug.Log ("Damage dealt: " + damage); return damage * multip; }
public void SetDamageProfile(DamageProfile dp) { this.damageProfile = dp; }
public void SetDamageProfile(DamageProfile dp) { }
void OnEnable() { dmgProfile = target as DamageProfile; }
public void DamageWithFallOff(DamageProfile dp, float reduction) { if (1 - reduction > 0) { currentHealth -= CalculateDamage (resistanceProfile, dp, 1 - reduction); } }
public void Damage(DamageProfile dp) { currentHealth -= CalculateDamage (resistanceProfile, dp, 1); }
public double GetActiveHullTankPerSecond(DamageProfile damageProfile = null) { damageProfile = damageProfile ?? DamageProfile.OMNI_DAMAGE_PROFILE; return CalculateTankInDps(HullRepPerSecond, HullResitanceProfile, damageProfile); }
public double GetActiveArmorTankPerSecond(DamageProfile damageProfile = null) { return CalculateTankInDps(ArmorRepPerSecond, ArmorResitanceProfile, damageProfile); }
public double GetPeakPassiveTank(DamageProfile damageProfile = null) { return CalculateTankInDps(ShieldRecharge.PeakRecharge, ShieldResitanceProfile, damageProfile); }
public double GetActiveShieldTankPerSecond(DamageProfile damageProfile = null) { return CalculateTankInDps(ShieldBoostPerSecond, ShieldResitanceProfile, damageProfile); }
public double GetHullEhp(DamageProfile damageProfile = null) { return CalculateTankInDps(HullHp, HullResitanceProfile, damageProfile); }
public double GetArmorEhp(DamageProfile damageProfile = null) { return CalculateTankInDps(ArmorHp, ArmorResitanceProfile, damageProfile); }
public double GetShieldEhp(DamageProfile damageProfile = null) { return CalculateTankInDps(ShieldHp, ShieldResitanceProfile, damageProfile); }
public double GetEhp(DamageProfile damageProfile = null) { return GetHullEhp(damageProfile) + GetShieldEhp(damageProfile) + GetArmorEhp(damageProfile); }