diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 35348df3d1..d4ab59cbc1 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -42,6 +42,7 @@ #define CLOWN (1<<11) #define MIME (1<<12) #define ASSISTANT (1<<13) +#define PRISONER (1<<14) #define JOB_AVAILABLE 0 #define JOB_UNAVAILABLE_GENERIC 1 @@ -89,3 +90,4 @@ #define JOB_DISPLAY_ORDER_WARDEN 31 #define JOB_DISPLAY_ORDER_DETECTIVE 32 #define JOB_DISPLAY_ORDER_SECURITY_OFFICER 33 +#define JOB_DISPLAY_ORDER_PRISONER 34 diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 28f657828b..44101bea70 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -367,6 +367,7 @@ GLOBAL_LIST_INIT(job_heirlooms, list( "Janitor" = list(/obj/item/mop), "Scientist" = list(/obj/item/toy/plush/slimeplushie), "Assistant" = list(/obj/item/clothing/gloves/cut/family), + "Prisoner" = list (/obj/item/pen/blue), "Chaplain" = list(/obj/item/camera/spooky/family), "Head of Personnel" = list(/obj/item/pinpointer/ian) )) diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm index 65321f5820..aa8edeaa72 100644 --- a/code/game/gamemodes/bloodsucker/bloodsucker.dm +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -25,7 +25,7 @@ antag_flag = ROLE_BLOODSUCKER false_report_weight = 1 chaos = 4 - restricted_jobs = list("AI","Cyborg") + restricted_jobs = list("Prisoner", "AI","Cyborg") protected_jobs = list("Chaplain", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_players = 20 required_enemies = 2 diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index eda6b5f9e2..6da31e41bb 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -7,7 +7,7 @@ config_tag = "traitorbro" required_players = 25 chaos = 5 - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") announce_span = "danger" diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 20ef83a54c..83c1eec598 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -11,7 +11,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th antag_flag = ROLE_CHANGELING false_report_weight = 10 chaos = 5 - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 15 required_enemies = 1 diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 88a1cde8ce..691111031d 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -4,7 +4,7 @@ false_report_weight = 10 chaos = 6 traitors_possible = 3 //hard limit on traitors if scaling is turned off - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") required_players = 25 required_enemies = 1 // how many of each type are required recommended_enemies = 3 diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index d8ebf6f20c..7b6eaa6fa5 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -139,7 +139,7 @@ Credit where due: required_enemies = 3 recommended_enemies = 5 enemy_minimum_age = 7 - protected_jobs = list("AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //Silicons can eventually be converted + protected_jobs = list("Prisoner", "AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //Silicons can eventually be converted restricted_jobs = list("Chaplain", "Captain") announce_span = "brass" announce_text = "Servants of Ratvar are trying to summon the Justiciar!\n\ diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index ba9fad7a84..9a49c05739 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -39,7 +39,7 @@ antag_flag = ROLE_CULTIST false_report_weight = 10 chaos = 8 - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_players = 30 required_enemies = 3 diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm index 9bf7fc0e82..7fe2f91714 100644 --- a/code/game/gamemodes/devil/devil_game_mode.dm +++ b/code/game/gamemodes/devil/devil_game_mode.dm @@ -4,7 +4,7 @@ antag_flag = ROLE_DEVIL false_report_weight = 1 chaos = 3 - protected_jobs = list("Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") + protected_jobs = list("Prisoner", "Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") required_players = 0 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm index 1693163fa2..2086653012 100644 --- a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm +++ b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm @@ -4,7 +4,7 @@ antag_flag = ROLE_HERETIC false_report_weight = 5 chaos = 5 - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to heretic role blacklist required_players = 15 required_enemies = 1 diff --git a/code/game/gamemodes/gangs/gangs.dm b/code/game/gamemodes/gangs/gangs.dm index 100669c487..1352e9340d 100644 --- a/code/game/gamemodes/gangs/gangs.dm +++ b/code/game/gamemodes/gangs/gangs.dm @@ -7,7 +7,7 @@ GLOBAL_LIST_EMPTY(gangs) config_tag = "gang" antag_flag = ROLE_GANG chaos = 9 - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_players = 15 required_enemies = 0 diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 419a74d616..5b3e742336 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -13,7 +13,7 @@ antag_flag = ROLE_REV false_report_weight = 10 chaos = 8 - restricted_jobs = list("AI", "Cyborg") + restricted_jobs = list("Prisoner", "AI", "Cyborg") protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") required_players = 20 required_enemies = 1 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index d42fe615cd..220fbe9978 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -10,7 +10,7 @@ config_tag = "traitor" antag_flag = ROLE_TRAITOR false_report_weight = 20 //Reports of traitors are pretty common. - restricted_jobs = list("Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances + restricted_jobs = list("Prisoner", "Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist required_players = 0 required_enemies = 1 diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 6910bb1db0..a484f78b41 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -64,6 +64,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) name = "Assistant" icon_state = "Assistant" +/obj/effect/landmark/start/prisoner + name = "Prisoner" + icon_state = "Prisoner" + /obj/effect/landmark/start/assistant/override jobspawn_override = TRUE delete_after_roundstart = FALSE diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 5a0e1790a9..920af875d5 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -60,6 +60,48 @@ /obj/item/gun/ballistic/automatic/pistol/deagle, /obj/item/storage/box/syndie_kit/throwing_weapons = 3) +/obj/effect/spawner/lootdrop/prison_contraband + name = "prison contraband loot spawner" + loot = list(/obj/item/clothing/mask/cigarette/space_cigarette = 4, + /obj/item/clothing/mask/cigarette/robust = 2, + /obj/item/clothing/mask/cigarette/carp = 3, + /obj/item/clothing/mask/cigarette/uplift = 2, + /obj/item/clothing/mask/cigarette/dromedary = 3, + /obj/item/clothing/mask/cigarette/robustgold = 1, + /obj/item/storage/fancy/cigarettes/cigpack_uplift = 3, + /obj/item/storage/fancy/cigarettes = 3, + /obj/item/clothing/mask/cigarette/rollie/cannabis = 4, + /obj/item/toy/crayon/spraycan = 2, + /obj/item/crowbar = 1, + /obj/item/assembly/flash/handheld = 1, + /obj/item/restraints/handcuffs/cable/zipties = 1, + /obj/item/restraints/handcuffs = 1, + /obj/item/radio/off = 1, + /obj/item/lighter = 3, + /obj/item/storage/box/matches = 3, + /obj/item/reagent_containers/syringe/contraband/space_drugs = 1, + /obj/item/reagent_containers/syringe/contraband/krokodil = 1, + /obj/item/reagent_containers/syringe/contraband/crank = 1, + /obj/item/reagent_containers/syringe/contraband/methamphetamine = 1, + /obj/item/reagent_containers/syringe/contraband/bath_salts = 1, + /obj/item/reagent_containers/syringe/contraband/fentanyl = 1, + /obj/item/reagent_containers/syringe/contraband/morphine = 1, + /obj/item/storage/pill_bottle/happy = 1, + /obj/item/storage/pill_bottle/lsd = 1, + /obj/item/storage/pill_bottle/psicodine = 1, + /obj/item/reagent_containers/food/drinks/beer = 4, + /obj/item/reagent_containers/food/drinks/bottle/whiskey = 1, + /obj/item/paper/fluff/jobs/prisoner/letter = 1, + /obj/item/grenade/smokebomb = 1, + /obj/item/flashlight/seclite = 1, + /obj/item/tailclub = 1, //want to buy makeshift wooden club sprite + /obj/item/kitchen/knife/shiv = 4, + /obj/item/kitchen/knife/shiv/carrot = 1, + /obj/item/kitchen/knife = 1, + /obj/item/storage/wallet/random = 1, + /obj/item/pda = 1 + ) + /obj/effect/spawner/lootdrop/gambling name = "gambling valuables spawner" loot = list( diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 2e7cef2c9f..5a16c24b8e 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -255,18 +255,31 @@ icon_state = "knife" desc = "A cyborg-mounted plasteel knife. Extremely sharp and durable." -/obj/item/kitchen/knife/carrotshiv +/obj/item/kitchen/knife/shiv + name = "glass shiv" + icon = 'icons/obj/shards.dmi' + icon_state = "shiv" + item_state = "shiv" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + desc = "A makeshift glass shiv." + force = 8 + throwforce = 12//fuck git + attack_verb = list("shanked", "shivved") + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + custom_materials = list(/datum/material/glass=400) + +/obj/item/kitchen/knife/shiv/carrot name = "carrot shiv" icon_state = "carrotshiv" item_state = "carrotshiv" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + icon = 'icons/obj/kitchen.dmi' desc = "Unlike other carrots, you should probably keep this far away from your eyes." - force = 8 - throwforce = 12//fuck git custom_materials = null - attack_verb = list("shanked", "shivved") - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + +/obj/item/kitchen/knife/shiv/carrot/suicide_act(mob/living/carbon/user) + user.visible_message("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!") + return BRUTELOSS /obj/item/kitchen/rollingpin name = "rolling pin" diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 6b1220743f..e62b5421d4 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -355,7 +355,19 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( /obj/item/shard/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/lightreplacer)) - I.attackby(src, user) + var/obj/item/lightreplacer/L = I + L.attackby(src, user) + else if(istype(I, /obj/item/stack/sheet/cloth)) + var/obj/item/stack/sheet/cloth/C = I + to_chat(user, "You begin to wrap the [C] around the [src]...") + if(do_after(user, 35, target = src)) + var/obj/item/kitchen/knife/shiv/S = new /obj/item/kitchen/knife/shiv + C.use(1) + to_chat(user, "You wrap the [C] around the [src] forming a makeshift weapon.") + remove_item_from_storage(src) + qdel(src) + user.put_in_hands(S) + else return ..() diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index cb619a711b..6bb501807d 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -317,7 +317,7 @@ * Trays - Agouri */ /obj/item/storage/bag/tray - name = "tray" + name = "serving tray" icon = 'icons/obj/food/containers.dmi' icon_state = "tray" desc = "A metal tray to lay food on." @@ -377,6 +377,12 @@ . = ..() update_icon() +/obj/item/storage/bag/tray/cafeteria + name = "cafeteria tray" + icon = 'icons/obj/food/containers.dmi' + icon_state = "foodtray" + desc = "A cheap metal tray to pile today's meal onto." + //bluespace tray, holds more items /obj/item/storage/bag/tray/bluespace name = "bluespace tray" diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 030f7f4edf..f6153330e4 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -106,6 +106,16 @@ name = "trash cart" icon_state = "trashcart" +/obj/structure/closet/crate/trashcart/Moved() + . = ..() + if(has_gravity()) + playsound(src, 'sound/effects/roll.ogg', 100, TRUE) + +/obj/structure/closet/crate/trashcart/laundry + name = "laundry cart" + desc = "A large cart for hauling around large amounts of laundry." + icon_state = "laundry" + /obj/structure/closet/crate/medical desc = "A medical crate." name = "medical crate" diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index 242a7cc7fd..7648196f3e 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -2,7 +2,7 @@ name = "Prison Escapee" uniform = /obj/item/clothing/under/rank/prisoner shoes = /obj/item/clothing/shoes/sneakers/orange - r_pocket = /obj/item/kitchen/knife + r_pocket = /obj/item/kitchen/knife/shiv /datum/outfit/prisoner/post_equip(mob/living/carbon/human/H, visualsOnly=FALSE) if(visualsOnly) diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index b0676fbde2..058e0cc892 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -59,6 +59,11 @@ unit_name = "alien hide" export_types = list(/obj/item/stack/sheet/animalhide/xeno) +/datum/export/stack/licenseplate + cost = 25 + unit_name = "license plate" + export_types = list(/obj/item/stack/license_plates/filled) + // Common materials. // For base materials, see materials.dm diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 90629706b5..8b74b0fbe9 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -20,6 +20,13 @@ cost = 300 //thrice their export value contains = list(/obj/item/stack/sheet/cardboard/fifty) +/datum/supply_pack/materials/license50 + name = "50 Empty License Plates" + desc = "Create a bunch of boxes." + cost = 1000 // 50 * 25 + 700 - 1000 = 950 credits profit + contains = list(/obj/item/stack/license_plates/empty/fifty) + crate_name = "empty license plate crate" + /datum/supply_pack/materials/glass50 crate_type = /obj/structure/closet/secure_closet/cargo name = "50 Glass Sheets" diff --git a/code/modules/clothing/outfits/plasmaman.dm b/code/modules/clothing/outfits/plasmaman.dm index bd2c2b612d..5809cb8f50 100644 --- a/code/modules/clothing/outfits/plasmaman.dm +++ b/code/modules/clothing/outfits/plasmaman.dm @@ -71,6 +71,12 @@ head = /obj/item/clothing/head/helmet/space/plasmaman/security/hos uniform = /obj/item/clothing/under/plasmaman/security/hos +/datum/outfit/plasmaman/prisoner + name = "Prisoner Plasmaman" + + head = /obj/item/clothing/head/helmet/space/plasmaman/prisoner + uniform = /obj/item/clothing/under/plasmaman/prisoner + /datum/outfit/plasmaman/cargo name = "Cargo Plasmaman" diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index b50c2b45db..25ad19eee4 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -169,6 +169,10 @@ icon_state = "hos_envirohelm" item_state = "hos_envirohelm" +/obj/item/clothing/head/helmet/space/plasmaman/prisoner + name = "prisoner's plasma envirosuit helmet" + desc = "A plasmaman containment helmet for prisoners." + /obj/item/clothing/head/helmet/space/plasmaman/medical name = "medical's plasma envirosuit helmet" desc = "An envriohelmet designed for plasmaman medical doctors, having two stripes down it's length to denote as much." diff --git a/code/modules/clothing/under/jobs/Plasmaman/security.dm b/code/modules/clothing/under/jobs/Plasmaman/security.dm index c9b7b494a3..262b336011 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/security.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/security.dm @@ -18,3 +18,9 @@ desc = "A slick black and red plasmaman containment suit designed for the head of security, also called the LAW." icon_state = "hos_envirosuit" item_state = "hos_envirosuit" + +/obj/item/clothing/under/plasmaman/prisoner + name = "prisoner envirosuit" + desc = "An orange envirosuit identifying and protecting a criminal plasmaman." + icon_state = "prisoner_envirosuit" + item_state = "prisoner_envirosuit" diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index 5f9b55b881..843688b5a0 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -29,7 +29,7 @@ /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) if(I.get_sharpness()) to_chat(user, "You sharpen the carrot into a shiv with [I].") - var/obj/item/kitchen/knife/carrotshiv/Shiv = new /obj/item/kitchen/knife/carrotshiv + var/obj/item/kitchen/knife/shiv/carrot/Shiv = new /obj/item/kitchen/knife/shiv/carrot remove_item_from_storage(user) qdel(src) user.put_in_hands(Shiv) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 06e1863bc9..35a89b46db 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -355,7 +355,7 @@ return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", - "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer") + "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer", "Prisoner") /proc/get_all_job_icons() //For all existing HUD icons return get_all_jobs() + list("Prisoner") diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index 78b7dd3964..d91b102599 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -43,6 +43,7 @@ GLOBAL_LIST_INIT(civilian_positions, list( "Chaplain", "Clown", "Mime", + "Prisoner", "Assistant")) GLOBAL_LIST_INIT(security_positions, list( diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index a9bdff64b2..02b19909b0 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -554,6 +554,13 @@ color = "#302000" // rgb: 48, 32, 0 taste_description = "wet and cheap noodles" +/datum/reagent/consumable/nutraslop + name = "Nutraslop" + description = "Mixture of leftover prison foods served on previous days." + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#3E4A00" // rgb: 62, 74, 0 + taste_description = "your imprisonment" + /datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M) M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) ..() diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 93a07b1a6e..c2f80de761 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -218,6 +218,31 @@ volume = 50 list_reagents = list(/datum/reagent/medicine/stimulants = 50) +/obj/item/reagent_containers/syringe/contraband + name = "unlabeled syringe" + desc = "A syringe containing some sort of unknown chemical cocktail." + +/obj/item/reagent_containers/syringe/contraband/space_drugs + list_reagents = list(/datum/reagent/drug/space_drugs = 15) + +/obj/item/reagent_containers/syringe/contraband/krokodil + list_reagents = list(/datum/reagent/drug/krokodil = 15) + +/obj/item/reagent_containers/syringe/contraband/crank + list_reagents = list(/datum/reagent/drug/crank = 15) + +/obj/item/reagent_containers/syringe/contraband/methamphetamine + list_reagents = list(/datum/reagent/drug/methamphetamine = 15) + +/obj/item/reagent_containers/syringe/contraband/bath_salts + list_reagents = list(/datum/reagent/drug/bath_salts = 15) + +/obj/item/reagent_containers/syringe/contraband/fentanyl + list_reagents = list(/datum/reagent/toxin/fentanyl = 15) + +/obj/item/reagent_containers/syringe/contraband/morphine + list_reagents = list(/datum/reagent/medicine/morphine = 15) + /obj/item/reagent_containers/syringe/calomel name = "syringe (calomel)" desc = "Contains calomel." diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 26f0ca66ee..db82e5cdb2 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -233,6 +233,14 @@ anchored = TRUE reagent_id = /datum/reagent/consumable/cooking_oil +/obj/structure/reagent_dispensers/servingdish + name = "serving dish" + desc = "A dish full of food slop for your bowl." + icon = 'icons/obj/kitchen.dmi' + icon_state = "serving" + anchored = TRUE + reagent_id = /datum/reagent/consumable/nutraslop + //////// //Kegs// //////// diff --git a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm index 67890838db..fe9ffe2035 100644 --- a/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm +++ b/code/modules/research/designs/autolathe_desings/autolathe_designs_medical_and_dinnerware.dm @@ -30,13 +30,21 @@ category = list("initial","Dinnerware") /datum/design/tray - name = "Tray" - id = "tray" + name = "Serving Tray" + id = "servingtray" build_type = AUTOLATHE materials = list(/datum/material/iron = 3000) build_path = /obj/item/storage/bag/tray category = list("initial","Dinnerware") +/datum/design/tray + name = "Cafeteria Tray" + id = "foodtray" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 3000) + build_path = /obj/item/storage/bag/tray/cafeteria + category = list("initial","Dinnerware") + /datum/design/bowl name = "Bowl" id = "bowl" diff --git a/config/jobs.txt b/config/jobs.txt index 1bf271763b..fab38e70f6 100644 --- a/config/jobs.txt +++ b/config/jobs.txt @@ -11,6 +11,8 @@ Chief Medical Officer=1,1 Assistant=-1,-1 +Prisoner=0,2 + Quartermaster=1,1 Cargo Technician=3,2 Shaft Miner=3,3 diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 51675c8d7d..a688f3d9dd 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/uniform.dmi b/icons/mob/clothing/uniform.dmi index fd4ded6ad8..d4b1428f3e 100644 Binary files a/icons/mob/clothing/uniform.dmi and b/icons/mob/clothing/uniform.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 854928f2ca..27f9f5e0ac 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 2bbe93a410..e7467d6352 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/shards.dmi b/icons/obj/shards.dmi index e7875efa26..6e5f5821ce 100644 Binary files a/icons/obj/shards.dmi and b/icons/obj/shards.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 65c5b7acab..7b0806a921 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -876,6 +876,7 @@ #include "code\game\machinery\mass_driver.dm" #include "code\game\machinery\navbeacon.dm" #include "code\game\machinery\PDApainter.dm" +#include "code\game\machinery\prisonlabor.dm" #include "code\game\machinery\quantum_pad.dm" #include "code\game\machinery\recharger.dm" #include "code\game\machinery\rechargestation.dm" @@ -1237,6 +1238,7 @@ #include "code\game\objects\items\robot\robot_upgrades.dm" #include "code\game\objects\items\stacks\bscrystal.dm" #include "code\game\objects\items\stacks\cash.dm" +#include "code\game\objects\items\stacks\license_plates.dm" #include "code\game\objects\items\stacks\medical.dm" #include "code\game\objects\items\stacks\rods.dm" #include "code\game\objects\items\stacks\stack.dm" @@ -2369,6 +2371,7 @@ #include "code\modules\jobs\job_types\medical_doctor.dm" #include "code\modules\jobs\job_types\mime.dm" #include "code\modules\jobs\job_types\paramedic.dm" +#include "code\modules\jobs\job_types\prisoner.dm" #include "code\modules\jobs\job_types\quartermaster.dm" #include "code\modules\jobs\job_types\research_director.dm" #include "code\modules\jobs\job_types\roboticist.dm"