void SendToPrison(BasePlayer player, string prisonName, double time) { int cellNumber = GetEmptyCell(prisonName); object spawnLocation = GetSpawnLocation(prisonName, cellNumber); if (spawnLocation is Vector3) { PrisonerEntry entry = new PrisonerEntry { cellNumber = cellNumber, prisonName = prisonName, releaseDate = time + GrabCurrentTime(), x = player.transform.position.x, y = player.transform.position.y, z = player.transform.position.z }; prisoners[player.userID] = entry; if (SaveInventory(player)) { player.inventory.Strip(); MovePosition(player, (Vector3)spawnLocation); CheckIn(player, prisonName); } } }
private void FreeFromJail(BasePlayer player) { PrisonerEntry entry = prisoners[player.userID]; prisons[entry.prisonName].occupiedCells[entry.cellNumber] = false; MovePosition(player, configData.ReturnHomeAfterRelease ? new Vector3(entry.x, entry.y, entry.z) : CalculateFreePosition(entry.prisonName)); RestoreAllInventory(player); }
private void RestoreAllInventory(BasePlayer player) { player.inventory.Strip(); PrisonerEntry entry = prisoners[player.userID]; timer.In(1, () => { foreach (var container in entry.savedInventory) { RestoreItems(player, container.Value, container.Key); } timer.In(1, () => prisoners.Remove(player.userID)); }); }