private float ComputeAmmoDamage(IMyEntity ammoEnt) { AmmoInfo ammoInfo; Session.Instance.AmmoCollection.TryGetValue(ammoEnt.Model.AssetName, out ammoInfo); var damage = 10f; if (ammoInfo == null) { if (Session.Enforced.Debug == 3) { Log.Line($"ShieldId:{Shield.EntityId.ToString()} - No Missile Ammo Match Found for {((MyEntity)ammoEnt).DebugName}! Let wepaon mod author know their ammo definition has improper model path"); } return(damage); } var dmgMulti = UtilsStatic.GetDmgMulti(ammoInfo.BackKickForce); if (dmgMulti > 0) { if (ammoInfo.Explosive) { damage = (ammoInfo.Damage * (ammoInfo.Radius * 0.5f)) * 7.5f * dmgMulti; } else { damage = ammoInfo.Mass * ammoInfo.Speed * dmgMulti; } return(damage); } if (dmgMulti.Equals(-1f)) { damage = -damage; return(damage); } if (ammoInfo.BackKickForce < 0 && dmgMulti.Equals(0)) { damage = float.NegativeInfinity; } else if (ammoInfo.Explosive) { damage = ammoInfo.Damage * (ammoInfo.Radius * 0.5f) * 7.5f; } else { damage = ammoInfo.Mass * ammoInfo.Speed; } if (ammoInfo.Mass < 0 && ammoInfo.Radius <= 0) { damage = -damage; } return(damage); }