internal static void SpawnItemToSpawn(Locker.ItemToSpawn toSpawn, Locker locker, bool locked) { for (int i = 0; i <= toSpawn._amount; i++) { var item = new Synapse.Api.Items.SynapseItem(toSpawn._id, 0f, 0, 0, 0); item.Drop(toSpawn._pos); item.pickup.SetupPickup(item.ItemType, item.Durabillity, item.pickup.ownerPlayer, item.pickup.weaponMods, item.pickup.position, toSpawn._rot); item.pickup.RefreshDurability(true, true); item.pickup.Locked = locked; item.pickup.Chamber = toSpawn.chamberId; locker.AssignPickup(item.pickup); var rb = item.pickup.GetComponent <Rigidbody>(); rb.velocity = Vector3.zero; if (locker.enableSorting && locker.sortingTarget != null) { rb.useGravity = false; var normalized = (item.Position - locker.sortingTarget.transform.position).normalized; rb.velocity = normalized * locker.sortingForce; rb.angularVelocity = locker.sortingTorque; Timing.CallDelayed(0.5f, () => rb.useGravity = true); return; } rb.useGravity = true; } }