diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 24b21c761e6..cdb8e195b7c 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -67155,11 +67155,11 @@ name = "north bump"; pixel_y = 24 }, -/obj/structure/dresser, /obj/machinery/power/apc/directional/east, /obj/structure/cable{ icon_state = "0-8" }, +/obj/structure/dresser/wardrobe/captain, /turf/simulated/floor/carpet, /area/station/command/office/captain/bedroom) "ooI" = ( diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 8a38ef61780..8d4713dd581 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -2753,7 +2753,7 @@ /turf/simulated/floor/plasteel/dark, /area/station/legal/courtroom) "auR" = ( -/obj/structure/dresser, +/obj/structure/dresser/wardrobe/captain, /turf/simulated/floor/wood, /area/station/command/office/captain) "auS" = ( @@ -4494,20 +4494,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/storage) -"aLQ" = ( -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters" - }, -/obj/effect/mapping_helpers/airlock/access/all/command/captain, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/station/command/office/captain) "aLU" = ( /obj/structure/chair/comfy/brown{ dir = 1 @@ -18389,6 +18375,15 @@ /obj/structure/lattice/catwalk, /turf/space, /area/station/maintenance/disposal/external/southeast) +"cSI" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/item/radio/intercom{ + name = "east bump"; + pixel_x = 28 + }, +/turf/simulated/floor/carpet/royalblack, +/area/station/command/office/captain) "cSJ" = ( /obj/structure/closet/secure_closet/magistrate, /obj/item/megaphone, @@ -23419,12 +23414,6 @@ /obj/effect/turf_decal/tiles/neutral, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/north) -"dPP" = ( -/obj/machinery/computer/arcade{ - dir = 4 - }, -/turf/simulated/floor/carpet/black, -/area/station/command/office/captain) "dPY" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -54567,6 +54556,9 @@ /obj/effect/turf_decal/tiles/neutral, /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore/north) +"kHX" = ( +/turf/simulated/floor/wood, +/area/station/command/office/captain) "kHZ" = ( /obj/structure/table, /obj/item/dest_tagger, @@ -63251,6 +63243,12 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/plating, /area/station/supply/miningdock) +"mEo" = ( +/obj/machinery/computer/arcade{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/station/command/office/captain) "mEq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/wall, @@ -75198,9 +75196,6 @@ }, /turf/simulated/floor/plasteel, /area/station/security/lobby) -"poW" = ( -/turf/simulated/floor/wood, -/area/station/command/office/captain) "poY" = ( /obj/effect/spawner/random/dirt/often, /turf/simulated/floor/plasteel/freezer, @@ -104113,15 +104108,6 @@ /obj/machinery/firealarm/directional/south, /turf/simulated/floor/carpet/green, /area/station/service/library) -"vGs" = ( -/obj/structure/bed, -/obj/item/bedsheet/captain, -/obj/item/radio/intercom{ - name = "east bump"; - pixel_x = 28 - }, -/turf/simulated/floor/carpet/royalblack, -/area/station/command/office/captain) "vGt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -112518,6 +112504,20 @@ icon_regular_floor = "yellowsiding" }, /area/station/service/theatre) +"xxS" = ( +/obj/machinery/door/airlock/command{ + name = "Captain's Quarters" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/captain, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/station/command/office/captain) "xxU" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, @@ -147865,8 +147865,8 @@ abW dxS auU ikc -vGs -poW +cSI +kHX wPw uXj aCb @@ -148124,7 +148124,7 @@ eTm awk eTm eTm -aLQ +xxS uXj uXj uXj @@ -148383,7 +148383,7 @@ eTm uBe vUn aVo -dPP +mEo qEF uaz eTm diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index cbaa7f38ea6..577be7b1abc 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -27224,7 +27224,7 @@ /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "cea" = ( -/obj/structure/dresser, +/obj/structure/dresser/wardrobe/captain, /turf/simulated/floor/carpet/black, /area/station/command/office/captain/bedroom) "ceb" = ( diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index 4259a29a68e..f5b967f57d4 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -67453,7 +67453,7 @@ /turf/simulated/floor/plating, /area/station/engineering/atmos/asteroid_maint) "nGM" = ( -/obj/structure/dresser, +/obj/structure/dresser/wardrobe/captain, /turf/simulated/floor/wood, /area/station/command/office/captain/bedroom) "nGR" = ( diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index d740d2ecd7c..f13bcbc3259 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -11039,7 +11039,7 @@ /turf/simulated/floor/engine, /area/station/science/test_chamber) "bnE" = ( -/obj/structure/dresser, +/obj/structure/dresser/wardrobe/captain, /obj/structure/sign/bobross{ pixel_y = 32 }, diff --git a/code/game/objects/items/storage/garment.dm b/code/game/objects/items/storage/garment.dm index 3ae28ed64b1..df608e5595d 100644 --- a/code/game/objects/items/storage/garment.dm +++ b/code/game/objects/items/storage/garment.dm @@ -23,39 +23,6 @@ /obj/item/clothing/gloves/color/black/krav_maga, ) -/obj/item/storage/bag/garment/captain - name = "captain's garment bag" - desc = "A bag for storing extra clothes and shoes. This one belongs to the captain." - -/obj/item/storage/bag/garment/captain/populate_contents() - new /obj/item/clothing/head/caphat(src) - new /obj/item/clothing/head/caphat/parade(src) - new /obj/item/clothing/head/caphat/parade/white(src) - new /obj/item/clothing/head/beret/captain(src) - new /obj/item/clothing/head/beret/captain/white(src) - new /obj/item/clothing/head/crown/fancy(src) - new /obj/item/clothing/neck/cloak/captain(src) - new /obj/item/clothing/suit/armor/vest/capcarapace(src) - new /obj/item/clothing/suit/armor/vest/capcarapace/jacket(src) - new /obj/item/clothing/suit/armor/vest/capcarapace/jacket/tunic(src) - new /obj/item/clothing/suit/armor/vest/capcarapace/coat(src) - new /obj/item/clothing/suit/armor/vest/capcarapace/coat/white(src) - new /obj/item/clothing/neck/cloak/captain_mantle(src) - new /obj/item/clothing/under/rank/captain(src) - new /obj/item/clothing/under/rank/captain/skirt(src) - new /obj/item/clothing/under/rank/captain/white(src) - new /obj/item/clothing/under/rank/captain/skirt/white(src) - new /obj/item/clothing/under/rank/captain/parade(src) - new /obj/item/clothing/under/rank/captain/dress(src) - new /obj/item/clothing/gloves/color/captain(src) - new /obj/item/clothing/shoes/brown(src) - new /obj/item/clothing/shoes/laceup(src) - new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/glasses/hud/security/sunglasses(src) - new /obj/item/clothing/glasses/hud/health/sunglasses(src) - new /obj/item/clothing/head/helmet/space/plasmaman/captain(src) - new /obj/item/clothing/under/plasmaman/captain(src) - /obj/item/storage/bag/garment/head_of_personnel name = "head of personnel's garment bag" desc = "A bag for storing extra clothes and shoes. This one belongs to the head of personnel." diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm index 435c9d1dd41..145f42bcfdd 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security_lockers.dm @@ -10,7 +10,6 @@ new /obj/item/storage/backpack/satchel_cap(src) new /obj/item/book/manual/wiki/faxes(src) new /obj/item/storage/backpack/duffel/captain(src) - new /obj/item/storage/bag/garment/captain(src) new /obj/item/cartridge/captain(src) new /obj/item/radio/headset/heads/captain/alt(src) new /obj/item/storage/belt/sheath/saber(src) diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 39953e0f3be..ae27d9cf907 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -6,57 +6,60 @@ density = TRUE anchored = TRUE -/obj/structure/dresser/attack_hand(mob/user as mob) +/obj/structure/dresser/attack_hand(mob/user) + change_undergarments(user) + +/obj/structure/dresser/proc/change_undergarments(mob/user) if(!Adjacent(user))//no tele-grooming return - if(ishuman(user) && anchored) - var/mob/living/carbon/human/H = user + if(!(ishuman(user) && anchored)) + return + var/mob/living/carbon/human/H = user - var/choice = tgui_input_list(user, "Underwear, Undershirt, or Socks?", "Changing", list("Underwear","Undershirt","Socks")) + var/choice = tgui_input_list(user, "Underwear, Undershirt, or Socks?", "Changing", list("Underwear", "Undershirt", "Socks")) - if(!Adjacent(user)) - return - switch(choice) - if("Underwear") - var/list/valid_underwear = list() - for(var/underwear in GLOB.underwear_list) - var/datum/sprite_accessory/S = GLOB.underwear_list[underwear] - if(!(H.dna.species.name in S.species_allowed)) - continue - valid_underwear[underwear] = GLOB.underwear_list[underwear] - var/new_underwear = tgui_input_list(user, "Choose your underwear:", "Changing", valid_underwear) - if(new_underwear) - H.underwear = new_underwear + if(!Adjacent(user)) + return + switch(choice) + if("Underwear") + var/list/valid_underwear = list() + for(var/underwear in GLOB.underwear_list) + var/datum/sprite_accessory/S = GLOB.underwear_list[underwear] + if(!(H.dna.species.name in S.species_allowed)) + continue + valid_underwear[underwear] = GLOB.underwear_list[underwear] + var/new_underwear = tgui_input_list(user, "Choose your underwear:", "Changing", valid_underwear) + if(new_underwear) + H.underwear = new_underwear - if("Undershirt") - var/list/valid_undershirts = list() - for(var/undershirt in GLOB.undershirt_list) - var/datum/sprite_accessory/S = GLOB.undershirt_list[undershirt] - if(!(H.dna.species.name in S.species_allowed)) - continue - valid_undershirts[undershirt] = GLOB.undershirt_list[undershirt] - for(var/config in GLOB.configuration.custom_sprites.fluff_undershirts) - if(user.ckey in config["ckeys"]) - valid_undershirts[config["name"]] = GLOB.undershirt_full_list[config["name"]] - sortTim(valid_undershirts, GLOBAL_PROC_REF(cmp_text_asc)) - var/new_undershirt = tgui_input_list(user, "Choose your undershirt:", "Changing", valid_undershirts) - if(new_undershirt) - H.undershirt = new_undershirt + if("Undershirt") + var/list/valid_undershirts = list() + for(var/undershirt in GLOB.undershirt_list) + var/datum/sprite_accessory/S = GLOB.undershirt_list[undershirt] + if(!(H.dna.species.name in S.species_allowed)) + continue + valid_undershirts[undershirt] = GLOB.undershirt_list[undershirt] + for(var/config in GLOB.configuration.custom_sprites.fluff_undershirts) + if(user.ckey in config["ckeys"]) + valid_undershirts[config["name"]] = GLOB.undershirt_full_list[config["name"]] + sortTim(valid_undershirts, GLOBAL_PROC_REF(cmp_text_asc)) + var/new_undershirt = tgui_input_list(user, "Choose your undershirt:", "Changing", valid_undershirts) + if(new_undershirt) + H.undershirt = new_undershirt - if("Socks") - var/list/valid_sockstyles = list() - for(var/sockstyle in GLOB.socks_list) - var/datum/sprite_accessory/S = GLOB.socks_list[sockstyle] - if(!(H.dna.species.name in S.species_allowed)) - continue - valid_sockstyles[sockstyle] = GLOB.socks_list[sockstyle] - var/new_socks = tgui_input_list(user, "Choose your socks:", "Changing", valid_sockstyles) - if(new_socks) - H.socks = new_socks - - add_fingerprint(H) - H.update_body() + if("Socks") + var/list/valid_sockstyles = list() + for(var/sockstyle in GLOB.socks_list) + var/datum/sprite_accessory/S = GLOB.socks_list[sockstyle] + if(!(H.dna.species.name in S.species_allowed)) + continue + valid_sockstyles[sockstyle] = GLOB.socks_list[sockstyle] + var/new_socks = tgui_input_list(user, "Choose your socks:", "Changing", valid_sockstyles) + if(new_socks) + H.socks = new_socks + add_fingerprint(H) + H.update_body() /obj/structure/dresser/crowbar_act(mob/user, obj/item/I) . = TRUE @@ -77,3 +80,133 @@ mat_drop = 30 new /obj/item/stack/sheet/wood(drop_location(), mat_drop) ..() + +/obj/structure/dresser/wardrobe + name = "wardrobe" + desc = "A good place to store all your clothes." + icon_state = "wardrobe" + var/locked_overlay = "wardrobe_locked" + /// List of objects which this item can store (if set, it can't store anything else) + var/list/can_hold = list(/obj/item/clothing) + /// List of objects which this item can't store (can make exceptions to can_hold) + var/list/cant_hold = list( + /obj/item/storage, + /obj/item/clothing/suit/space, + /obj/item/clothing/mask/cigarette, + /obj/item/clothing/mask/facehugger, //Why would you do this + /obj/item/clothing/accessory/medal, + /obj/item/clothing/suit/armor/riot, + /obj/item/clothing/suit/armor/reactive, + /obj/item/clothing/suit/armor/laserproof, + /obj/item/clothing/suit/hooded/ablative, + /obj/item/clothing/gloves/color/black/krav_maga + ) + var/locked = FALSE + +/obj/structure/dresser/wardrobe/Initialize(mapload) + . = ..() + update_appearance(UPDATE_OVERLAYS) + +/obj/structure/dresser/wardrobe/update_overlays() + . = ..() + . += locked ? locked_overlay : null + +/obj/structure/dresser/wardrobe/examine(mob/user) + . = ..() + . += "It's currently [locked ? null : "un"]locked." + +/obj/structure/dresser/wardrobe/AltShiftClick(mob/user) + change_undergarments(user) + +/obj/structure/dresser/wardrobe/AltClick(mob/user) + toggle_lock(user) + +/obj/structure/dresser/wardrobe/attack_hand(mob/user) + if(user.a_intent == INTENT_HARM) + return CONTINUE_ATTACK + if(locked) + toggle_lock(user) + return + if(!length(contents)) + return ..() + if(!Adjacent(user)) + return ..() + var/obj/item/item_to_retrieve = tgui_input_list(user, "What would you like to take out?", src, contents) + if(!item_to_retrieve) + return + if(!Adjacent(user)) + return + item_to_retrieve.forceMove(loc) + to_chat(user, "You take [item_to_retrieve] out of [src].") + if(issilicon(user)) + return + user.put_in_hands(item_to_retrieve) + var/mob/living/carbon/human/H = user + add_fingerprint(H) + +/obj/structure/dresser/wardrobe/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(locked) + toggle_lock(user) + return ITEM_INTERACT_COMPLETE + if(!Adjacent(user)) + return ITEM_INTERACT_COMPLETE + if(!is_type_in_list(used, can_hold) || is_type_in_list(used, cant_hold)) + to_chat(user, "You can't put [used] in [src]. It doesn't fit.") + return ITEM_INTERACT_COMPLETE + if(!user.drop_item()) + to_chat(user, "[used] is stuck to you!") + return ITEM_INTERACT_COMPLETE + used.forceMove(src) + var/mob/living/carbon/human/H = user + add_fingerprint(H) + to_chat(user, "You put [used] in [src].") + return ITEM_INTERACT_COMPLETE + +/obj/structure/dresser/wardrobe/proc/toggle_lock(mob/user) + if(!allowed(user)) + to_chat(user, "Access Denied.") + return + locked = !locked + visible_message("[user] [locked ? null : "un"]lock[user.p_s()] [src].") + var/mob/living/carbon/human/H = user + add_fingerprint(H) + update_appearance(UPDATE_OVERLAYS) + +/obj/structure/dresser/wardrobe/captain + name = "Captain's Wardrobe" + desc = "All the clothes you need to lead a station." + icon_state = "wardrobe_captain" + locked = TRUE + req_access = list(ACCESS_CAPTAIN) + +/obj/structure/dresser/wardrobe/captain/Initialize(mapload) + . = ..() + new /obj/item/clothing/head/caphat(src) + new /obj/item/clothing/head/caphat/parade(src) + new /obj/item/clothing/head/caphat/parade/white(src) + new /obj/item/clothing/head/beret/captain(src) + new /obj/item/clothing/head/beret/captain/white(src) + new /obj/item/clothing/head/crown/fancy(src) + new /obj/item/clothing/neck/cloak/captain(src) + new /obj/item/clothing/suit/armor/vest/capcarapace(src) + new /obj/item/clothing/suit/armor/vest/capcarapace/jacket(src) + new /obj/item/clothing/suit/armor/vest/capcarapace/jacket/tunic(src) + new /obj/item/clothing/suit/armor/vest/capcarapace/coat(src) + new /obj/item/clothing/suit/armor/vest/capcarapace/coat/white(src) + new /obj/item/clothing/suit/hooded/wintercoat/captain(src) + new /obj/item/clothing/suit/hooded/wintercoat/captain/white(src) + new /obj/item/clothing/neck/cloak/captain_mantle(src) + new /obj/item/clothing/under/rank/captain(src) + new /obj/item/clothing/under/rank/captain/skirt(src) + new /obj/item/clothing/under/rank/captain/white(src) + new /obj/item/clothing/under/rank/captain/skirt/white(src) + new /obj/item/clothing/under/rank/captain/parade(src) + new /obj/item/clothing/under/rank/captain/dress(src) + new /obj/item/clothing/gloves/color/captain(src) + new /obj/item/clothing/shoes/brown(src) + new /obj/item/clothing/shoes/laceup(src) + new /obj/item/clothing/glasses/sunglasses(src) + new /obj/item/clothing/glasses/hud/security/sunglasses(src) + new /obj/item/clothing/glasses/hud/health/sunglasses(src) + new /obj/item/clothing/head/helmet/space/plasmaman/captain(src) + new /obj/item/clothing/under/plasmaman/captain(src) diff --git a/code/modules/clothing/head/job_hats.dm b/code/modules/clothing/head/job_hats.dm index f596541f58b..4558c2fe2b4 100644 --- a/code/modules/clothing/head/job_hats.dm +++ b/code/modules/clothing/head/job_hats.dm @@ -60,6 +60,7 @@ RemoveElement(/datum/element/clothing_adjustment/monitor_headgear, 0, 1) /obj/item/clothing/head/caphat/parade/white + name = "captain's white parade cap" icon_state = "captain_capwhite" //Head of Personnel diff --git a/code/modules/clothing/suits/misc_suits.dm b/code/modules/clothing/suits/misc_suits.dm index 483b929cf4d..30eeb010dbe 100644 --- a/code/modules/clothing/suits/misc_suits.dm +++ b/code/modules/clothing/suits/misc_suits.dm @@ -520,6 +520,7 @@ icon_state = "winterhood_captain" /obj/item/clothing/suit/hooded/wintercoat/captain/white + name = "captain's white winter coat" icon_state = "wintercoat_captainw" inhand_icon_state = "coatcaptainw" hoodtype = /obj/item/clothing/head/hooded/winterhood/captain/white diff --git a/code/modules/clothing/under/jobs/captain.dm b/code/modules/clothing/under/jobs/captain.dm index 20da7b483d0..2e7980b72e8 100644 --- a/code/modules/clothing/under/jobs/captain.dm +++ b/code/modules/clothing/under/jobs/captain.dm @@ -17,10 +17,12 @@ icon_state = "captain_skirt" /obj/item/clothing/under/rank/captain/white + name = "captain's white uniform" desc = "It's a white dress shirt and black slacks with some gold markings denoting the rank of \"Captain\"." icon_state = "captain_white" /obj/item/clothing/under/rank/captain/skirt/white + name = "captain's white skirt" desc = "It's a white dress shirt and black skirt with some gold markings denoting the rank of \"Captain\"." icon_state = "captain_skirt_white" diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index c4f6e14c011..78cc9f13215 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ