private void OnTriggerEnter(Collider other) { if (other.tag != "Player") { return; } Inventory inventory = PlayerController.player.GetComponent <Inventory>(); List <Drop> owned = drops.ContainsWeapon(inventory.arsenal); List <Drop> unowned = drops.DiscontainsWeapon(inventory.arsenal); if (unowned.Count > 0 && Chance(.01f * unowned.Count)) { // drop new weapon Drop drop = GetRandomWeaponFrom(unowned, true); NewWeapon(drop.weapon, drop.GetAmmo(), inventory); } else { // drop ammo if (unowned.Count == 0 || Chance(.6f)) { // for owned weapon Drop drop = GetRandomWeaponFrom(owned, false); MoreAmmo(drop.weapon, drop.GetAmmo()); } else { // for unowned weapon Drop drop = GetRandomWeaponFrom(unowned, false); MoreAmmo(drop.weapon, drop.GetAmmo()); } } Destroy(gameObject); }