private void UpdateBulletMode(FVRFireArm firearm) { if (Attachment != null && Attachment.GetRootObject() != null && Attachment.GetRootObject() == firearm) { MeatTrak.NumberTarget = 0; FVRFireArmMagazine mag = firearm.GetComponentInChildren <FVRFireArmMagazine>(); if (mag != null) { MeatTrak.NumberTarget = mag.m_numRounds; } FVRFireArmClip clip = firearm.GetComponentInChildren <FVRFireArmClip>(); if (clip != null) { MeatTrak.NumberTarget = clip.m_numRounds; } if (firearm is FVRFireArm) { if (firearm is BreakActionWeapon) { BreakActionWeapon baw = firearm as BreakActionWeapon; for (int j = 0; j < baw.Barrels.Length; j++) { if (baw.Barrels[j].Chamber.IsFull && !baw.Barrels[j].Chamber.IsSpent) { MeatTrak.NumberTarget += 1; } } } else if (firearm is Derringer) { Derringer derringer = firearm as Derringer; for (int j = 0; j < derringer.Barrels.Count; j++) { if (derringer.Barrels[j].Chamber.IsFull && !derringer.Barrels[j].Chamber.IsSpent) { MeatTrak.NumberTarget += 1; } } } else if (firearm is SingleActionRevolver) { SingleActionRevolver saRevolver = firearm as SingleActionRevolver; for (int j = 0; j < saRevolver.Cylinder.Chambers.Length; j++) { if (saRevolver.Cylinder.Chambers[j].IsFull && !saRevolver.Cylinder.Chambers[j].IsSpent) { MeatTrak.NumberTarget += 1; } } } if (firearm.GetType().GetField("Chamber") != null) //handles most guns { FVRFireArmChamber Chamber = (FVRFireArmChamber)firearm.GetType().GetField("Chamber").GetValue(firearm); if (Chamber.IsFull && !Chamber.IsSpent) { MeatTrak.NumberTarget += 1; } } if (firearm.GetType().GetField("Chambers") != null) //handles Revolver, LAPD2019, RevolvingShotgun { FVRFireArmChamber[] Chambers = (FVRFireArmChamber[])firearm.GetType().GetField("Chambers").GetValue(firearm); for (int j = 0; j < Chambers.Length; j++) { if (Chambers[j].IsFull && !Chambers[j].IsSpent) { MeatTrak.NumberTarget += 1; } } } } } }