public void UpdateDamageRow(DamageClasses damageClass, byte[] modifiers) { for (byte i = 0; i < (byte)DistanceTypes.COUNT; i++) { _damageTable[(byte)damageClass, i] = modifiers[i]; } }
public uint GetRadiusDamageTo(DamageClasses typeOfDamage, uint explosionModifier) { uint totalDamage = 0; double explosionMuliplier = explosionModifier; // (ranges from 100 to 0) double vulnerabilityModifier = _damageTable[(byte)typeOfDamage, 1]; explosionModifier = explosionModifier / 100; vulnerabilityModifier = vulnerabilityModifier / 100; totalDamage = (uint)Math.Round(RawPower * explosionModifier * vulnerabilityModifier); totalDamage = (totalDamage > 1000) ? 1000 : totalDamage; return(totalDamage); }
public uint GetDamageTo(DamageClasses typeOfDamage, DamageLocations location, DistanceTypes distance) { uint totalDamage = 0; double vulnerabilityModifier = _damageTable[(byte)typeOfDamage, (byte)distance]; //gets the modifier based on distance and type of entity attacked: ie ship, or player double locationModifier = (uint)location; locationModifier = locationModifier / 100; vulnerabilityModifier = vulnerabilityModifier / 100; totalDamage = (uint)Math.Round(RawPower * vulnerabilityModifier * locationModifier); totalDamage = (totalDamage > 1000) ? 1000 : totalDamage; return(totalDamage); }