4745 {
4746 Weapon_Base weapon_base = Weapon_Base.Cast(weapon);
4749
4751 int last_ammo_magazine_count;
4752 int ammo_magazine_count;
4753
4755 int last_ammo_pile_count;
4756 int ammo_pile_count;
4757
4758
4759 for (int att_i = 0; att_i < GetInventory().AttachmentCount(); ++att_i)
4760 {
4761 EntityAI attachment = GetInventory().GetAttachmentFromIndex(att_i);
4762 ref CargoBase attachment_cargo = attachment.GetInventory().GetCargo();
4763
4764 if (attachment_cargo)
4765 {
4766 for (int cgo_i = 0; cgo_i < attachment_cargo.GetItemCount(); ++cgo_i)
4767 {
4768 EntityAI cargo_item = attachment_cargo.GetItem(cgo_i);
4769
4770
4771 if (cargo_item.IsMagazine())
4772 {
4773 Magazine magazine = Magazine.Cast(cargo_item);
4774 ammo_pile_count = magazine.GetAmmoCount();
4775
4776
4778 {
4779 if (ammo_pile_count > 0)
4780 {
4781 if (last_ammo_magazine_count == 0)
4782 {
4783 ammo_magazine = magazine;
4784 last_ammo_magazine_count = ammo_pile_count;
4785 }
4786 else
4787 {
4788 if (last_ammo_magazine_count < ammo_pile_count)
4789 {
4790 ammo_magazine = magazine;
4791 last_ammo_magazine_count = ammo_pile_count;
4792 }
4793 }
4794 }
4795 }
4796
4797 else if (weapon_manager.
CanLoadBullet(weapon_base, magazine))
4798 {
4799 if (ammo_pile_count > 0)
4800 {
4801 if (last_ammo_pile_count == 0)
4802 {
4803 ammo_pile = magazine;
4804 last_ammo_pile_count = ammo_pile_count;
4805 }
4806 else
4807 {
4808 if (last_ammo_pile_count > ammo_pile_count)
4809 {
4810 ammo_pile = magazine;
4811 last_ammo_pile_count = ammo_pile_count;
4812 }
4813 }
4814 }
4815 }
4816 }
4817 }
4818 }
4819 }
4820
4821
4822 if (ammo_magazine)
4823 {
4824 return ammo_magazine;
4825 }
4826
4827 return ammo_pile;
4828 }
override WeaponManager GetWeaponManager()
bool CanLoadBullet(Weapon_Base wpn, Magazine mag, bool reservationCheck=true)
bool CanAttachMagazine(Weapon_Base wpn, Magazine mag, bool reservationCheck=true)
bool CanSwapMagazine(Weapon_Base wpn, Magazine mag, bool reservationCheck=true)