From e53223a1495294053bd2c8b0fc1b93b1f6ddb932 Mon Sep 17 00:00:00 2001 From: zerothebigboy Date: Thu, 2 Sep 2021 23:50:38 -0400 Subject: [PATCH] unversioned --- code/game/machinery/prisonlabor.dm | 66 ++++++++++++++++++ .../objects/items/stacks/license_plates.dm | 30 ++++++++ code/modules/jobs/job_types/prisoner.dm | 24 +++++++ icons/obj/machines/prison.dmi | Bin 0 -> 4246 bytes 4 files changed, 120 insertions(+) create mode 100644 code/game/machinery/prisonlabor.dm create mode 100644 code/game/objects/items/stacks/license_plates.dm create mode 100644 code/modules/jobs/job_types/prisoner.dm create mode 100644 icons/obj/machines/prison.dmi diff --git a/code/game/machinery/prisonlabor.dm b/code/game/machinery/prisonlabor.dm new file mode 100644 index 0000000000..b76a62a6be --- /dev/null +++ b/code/game/machinery/prisonlabor.dm @@ -0,0 +1,66 @@ +/obj/machinery/plate_press + name = "license plate press" + desc = "You know, we're making a lot of license plates for a station with literaly no cars in it." + icon = 'icons/obj/machines/prison.dmi' + icon_state = "offline" + use_power = IDLE_POWER_USE + idle_power_usage = 2 + active_power_usage = 50 + var/obj/item/stack/license_plates/empty/current_plate + var/pressing = FALSE + +/obj/machinery/plate_press/update_icon() + . = ..() + if(!is_operational()) + icon_state = "offline" + else if(pressing) + icon_state = "loop" + else if(current_plate) + icon_state = "online_loaded" + else + icon_state = "online" + +/obj/machinery/plate_press/Destroy() + QDEL_NULL(current_plate) + . = ..() + +/obj/machinery/plate_press/attackby(obj/item/I, mob/living/user, params) + if(!is_operational()) + to_chat(user, "[src] has to be on to do this!") + return FALSE + if(pressing) + to_chat(user, "[src] already has a plate in it!") + return FALSE + if(istype(I, /obj/item/stack/license_plates/empty)) + var/obj/item/stack/license_plates/empty/plate = I + plate.use(1) + current_plate = new plate.type(src, 1) //Spawn a new single sheet in the machine + update_icon() + else + return ..() + +/obj/machinery/plate_press/attack_hand(mob/living/user) + . = ..() + if(!pressing && current_plate) + work_press(user) + +///This proc attempts to create a plate. User cannot move during this process. +/obj/machinery/plate_press/proc/work_press(mob/living/user) + + pressing = TRUE + update_icon() + to_chat(user, "You start pressing a new license plate!") + + if(!do_after(user, 40, target = src)) + pressing = FALSE + update_icon() + return FALSE + + use_power(100) + to_chat(user, "You finish pressing a new license plate!") + + pressing = FALSE + QDEL_NULL(current_plate) + update_icon() + + new /obj/item/stack/license_plates/filled(drop_location(), 1) diff --git a/code/game/objects/items/stacks/license_plates.dm b/code/game/objects/items/stacks/license_plates.dm new file mode 100644 index 0000000000..06dc86ee61 --- /dev/null +++ b/code/game/objects/items/stacks/license_plates.dm @@ -0,0 +1,30 @@ +/obj/item/stack/license_plates + name = "invalid plate" + desc = "someone fucked up" + icon = 'icons/obj/machines/prison.dmi' + icon_state = "empty_plate" + novariants = FALSE + max_amount = 50 + +/obj/item/stack/license_plates/empty + name = "empty license plate" + desc = "Instead of a license plate number, this could contain a quote like \"Live laugh love\"." + +/obj/item/stack/license_plates/empty/fifty + amount = 50 + +/obj/item/stack/license_plates/filled + name = "license plate" + desc = "Prison labor paying off." + icon_state = "filled_plate_1_1" + +///Override to allow for variations +/obj/item/stack/license_plates/filled/update_icon_state() + if(novariants) + return + if(amount <= (max_amount * (1/3))) + icon_state = "filled_plate_[rand(1,6)]_1" + else if (amount <= (max_amount * (2/3))) + icon_state = "filled_plate_[rand(1,6)]_2" + else + icon_state = "filled_plate_[rand(1,6)]_3" diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm new file mode 100644 index 0000000000..67b2b2c020 --- /dev/null +++ b/code/modules/jobs/job_types/prisoner.dm @@ -0,0 +1,24 @@ +datum/job/prisoner + title = "Prisoner" + flag = PRISONER + department_head = list("The Security Team") + department_flag = CIVILIAN + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the security team" + + outfit = /datum/outfit/job/prisoner + plasma_outfit = /datum/outfit/plasmaman/prisoner + + display_order = JOB_DISPLAY_ORDER_PRISONER + +/datum/outfit/job/prisoner + name = "Prisoner" + jobtype = /datum/job/prisoner + + uniform = /obj/item/clothing/under/rank/prisoner + shoes = /obj/item/clothing/shoes/sneakers/orange + id = /obj/item/card/id/prisoner + ears = null + belt = null diff --git a/icons/obj/machines/prison.dmi b/icons/obj/machines/prison.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7ce58e93a2ce7aebcfa0198c7d396586d70f10ad GIT binary patch literal 4246 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 UVXp`y`SAo?oLn8N>;qE%1^&RHrvLx| literal 0 HcmV?d00001