From e136ff38c9fd41fb8b5fef3082dc662b834dcaa6 Mon Sep 17 00:00:00 2001 From: Dahlular Date: Thu, 7 Apr 2022 03:10:03 -0600 Subject: [PATCH] finishes up the barber --- hyperstation/code/modules/salon/barber.dm | 183 ++++++++++++++++++++++ hyperstation/icons/obj/barber.dmi | Bin 4796 -> 7231 bytes 2 files changed, 183 insertions(+) diff --git a/hyperstation/code/modules/salon/barber.dm b/hyperstation/code/modules/salon/barber.dm index a9325fcc3..a2f399fc4 100644 --- a/hyperstation/code/modules/salon/barber.dm +++ b/hyperstation/code/modules/salon/barber.dm @@ -5,6 +5,70 @@ icon = 'icons/obj/chairs.dmi' icon_state = "barber_chair" +/obj/structure/closet/secure_closet/barber + name = "Barber's locker" + icon_state = "cabinet" + icon = 'icons/obj/closet.dmi' + req_access = list(ACCESS_BARBER) + +/obj/structure/closet/secure_closet/barber/PopulateContents() + new /obj/item/clothing/mask/surgical(src) // These three are here, so the barber can pick and choose what he's painting. + new /obj/item/clothing/under/rank/medical/blue(src) + new /obj/item/clothing/suit/apron/surgical(src) + new /obj/item/clothing/accessory/waistcoat(src) + //new /obj/item/clothing/under/rank/civilian/lawyer/purpsuit(src) + new /obj/item/clothing/suit/toggle/lawyer/purple(src) + new /obj/item/razor(src) + //new /obj/item/straight_razor(src) + new /obj/item/hairbrush/comb(src) + new /obj/item/scissors(src) + new /obj/item/fur_dyer(src) + new /obj/item/dyespray(src) + new /obj/item/storage/box/lipsticks(src) + new /obj/item/reagent_containers/spray/quantum_hair_dye(src) + new /obj/item/reagent_containers/spray/barbers_aid(src) + new /obj/item/reagent_containers/spray/cleaner(src) + new /obj/item/reagent_containers/rag(src) + new /obj/item/storage/firstaid/regular(src) + +/obj/machinery/vending/barbervend + name = "Fab-O-Vend" + desc = "It would seem it vends dyes, and other stuff to make you pretty." + icon = 'hyperstation/icons/obj/barber.dmi' + icon_state = "barbervend" + product_slogans = "Spread the colour, like butter, onto toast... Onto their hair.; Sometimes, I dream about dyes...; Paint 'em up and call me Mr. Painter.; Look brother, I'm a vendomat, I solve practical problems." + product_ads = "Cut 'em all!; To sheds!; Hair be gone!; Prettify!; Beautify!" + vend_reply = "Come again!; Buy another!; Dont you love your new look?" + req_access = list(ACCESS_BARBER) + refill_canister = /obj/item/vending_refill/barbervend + products = list( + /obj/item/reagent_containers/spray/quantum_hair_dye = 3, + // /obj/item/reagent_containers/spray/baldium = 3, + /obj/item/reagent_containers/spray/barbers_aid = 3, + /obj/item/dyespray = 5, + /obj/item/hairbrush = 3, + /obj/item/hairbrush/comb = 3, + /obj/item/fur_dyer = 1, + ) + premium = list( + /obj/item/scissors = 3, + /obj/item/reagent_containers/spray/super_barbers_aid = 3, + /obj/item/storage/box/lipsticks = 3, + /obj/item/lipstick/quantum = 1, + /obj/item/razor = 1, + // /obj/item/storage/box/perfume = 1, + ) + refill_canister = /obj/item/vending_refill/barbervend + +/obj/item/vending_refill/barbervend + machine_name = "barber vend resupply" + icon_state = "refill_snack" //generic item refill because there isnt one sprited yet. + +/obj/effect/landmark/start/barber + name = "Barber" + icon_state = "Barber" + //icon = 'modular_skyrat/master_files/icons/mob/landmarks.dmi' + //Brush /obj/item/hairbrush name = "hairbrush" @@ -356,3 +420,122 @@ icon_state = "barber" buildable_sign = FALSE // Don't want them removed, they look too jank. +/obj/item/scissors + name = "barber's scissors" + desc = "Some say a barbers best tool is his electric razor, that is not the case. These are used to cut hair in a professional way!" + icon = 'hyperstation/icons/obj/barber.dmi' + icon_state = "scissors" + w_class = WEIGHT_CLASS_TINY + sharpness = TRUE + // How long does it take to change someone's hairstyle? + var/haircut_duration = 1 MINUTES + // How long does it take to change someone's facial hair style? + var/facial_haircut_duration = 20 SECONDS + +/obj/item/scissors/attack(mob/living/attacked_mob, mob/living/user, params) + if(!ishuman(attacked_mob)) + return + + var/mob/living/carbon/human/target_human = attacked_mob + + var/location = user.zone_selected + if(!(location in list(BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD))) + to_chat(user, "You stop, look down at what you're currently holding and ponder to yourself, \"This is probably to be used on their hair or their facial hair.\"") + return + + if(target_human.hair_style == "Bald" && target_human.facial_hair_style == "Shaved") + to_chat(user, "What hair? They have none!") + return + + if(user.zone_selected != BODY_ZONE_HEAD) + return ..() + + var/selected_part = tgalert(user, "Please select which part of [target_human] you would like to sculpt!", "It's sculpting time!", list("Hair", "Facial Hair", "Cancel")) + + if(!selected_part || selected_part == "Cancel") + return + + if(selected_part == "Hair") + if(!target_human.hair_style == "Bald" && target_human.head) + to_chat(user, "There is no hair to cut!") + return + + var/hair_id = input(user, "Please select what hairstyle you'd like to sculpt!", "Select masterpiece") as null|anything in GLOB.hair_styles_list //dear god help me please + if(!hair_id) + return + + if(hair_id == "Bald") + to_chat(target_human, "[user] seems to be cutting all your hair off!") + + to_chat(user, "You begin to masterfully sculpt [target_human]'s hair!") + + playsound(target_human, 'hyperstation/sound/salon/haircut.ogg', 100) + + if(do_after(user, haircut_duration, target_human)) + target_human.hair_style = hair_id + target_human.update_hair() + visible_message("[user] successfully cuts [target_human]'s hair!","You successfully cut [target_human]'s hair!") + new /obj/effect/decal/cleanable/hair(get_turf(src)) + else + if(!target_human.facial_hair_style == "Shaved" && target_human.wear_mask) + to_chat(user, "There is no hair to cut!") + return + + var/facial_hair_id = input(user, "Please select what facial hairstyle you'd like to sculpt!", "Select masterpiece") as null|anything in GLOB.facial_hair_styles_list + if(!facial_hair_id) + return + + if(facial_hair_id == "Shaved") + to_chat(target_human, "[user] seems to be cutting all your facial hair off!") + + to_chat(user, "You begin to masterfully sculpt [target_human]'s facial hair!") + + playsound(target_human, 'hyperstation/sound/salon/haircut.ogg', 100) + + if(do_after(user, facial_haircut_duration, target_human)) + target_human.facial_hair_style = facial_hair_id + target_human.update_hair() + visible_message("[user] successfully cuts [target_human]'s facial hair!","You successfully cut [target_human]'s facial hair!") + new /obj/effect/decal/cleanable/hair(get_turf(src)) + + +//reagents +/obj/item/reagent_containers/spray/quantum_hair_dye + name = "quantum hair dye" + desc = "Changes hair colour RANDOMLY! Don't forget to read the label!" + icon = 'hyperstation/icons/obj/barber.dmi' + icon_state = "hairspraywhite" + amount_per_transfer_from_this = 1 + possible_transfer_amounts = list(5,10) + list_reagents = list(/datum/reagent/hair_dye = 30) + volume = 50 +/* +/obj/item/reagent_containers/spray/baldium + name = "baldium spray" + desc = "Causes baldness, exessive use may cause customer disatisfaction." + icon = 'hyperstation/icons/obj/barber.dmi' + icon_state = "hairremoval" + amount_per_transfer_from_this = 1 + possible_transfer_amounts = list(5,10) + list_reagents = list(/datum/reagent/baldium = 30) + volume = 50 +*/ +/obj/item/reagent_containers/spray/barbers_aid + name = "barber's aid" + desc = "Causes rapid hair and facial hair growth!" + icon = 'hyperstation/icons/obj/barber.dmi' + icon_state = "hairaccelerator" + amount_per_transfer_from_this = 1 + possible_transfer_amounts = list(5,10) + list_reagents = list(/datum/reagent/barbers_aid = 50) + volume = 50 + +/obj/item/reagent_containers/spray/super_barbers_aid + name = "super barber's aid" + desc = "Causes SUPER rapid hair and facial hair growth!" + icon = 'hyperstation/icons/obj/barber.dmi' + icon_state = "hairaccelerator" + amount_per_transfer_from_this = 1 + possible_transfer_amounts = list(5,10) + list_reagents = list(/datum/reagent/concentrated_barbers_aid = 30) + volume = 50 diff --git a/hyperstation/icons/obj/barber.dmi b/hyperstation/icons/obj/barber.dmi index 7edbc40bc3f8194aa5d94dfc31a7ec7b7f3c3e51..6ad1cf46c7b0abd4f150a678563c9aa1c6f193bd 100644 GIT binary patch literal 7231 zcmaJ`cT`i~vOXb{AfW`15;{l|5u`}(RX_m&DN+Tbcfo)VA|gtWBBDrQ>)y5AdVic`XP>=iCbQ4XH{YCay$2fP*WlLx03g4osrnHAz3}&f z5aU1Lg3gNo0D2N&X!16z-;R$%M>d}#fs?$BPw%<&T1Fp{d5smiyZ(^1|@9K6OgxKZmnY3GeSrV@8 z8Y2BzzAgqO>@usJ{vqx8Tcnzw_8@G#dLmSbzq2BW+eQ!e4KW=YPnedpmapjO@Xqg+ zZRg_;JcF8!b>AMvTQn-6Zn!|gzQ$7E4wXS37hbJHY$c@Sk7;tOXi|=R6YBOZGQsQl zu`RvL6JXtmEwX&IG0j(fHalcIk?HT-r8|=w_azfkTvlOc`YU(pEDEMCO8!(^5t5}7 ztS`0O=w*hyw7(U8S;R&&*I}69 zrP0=*A7Eub+(6x6GsPX`xR_nbK8pw(h*LHmh0iFy>E2}`{ZRCJy2{#N-JzReU2Zxp zdXZkkqGH#HySfJN^Td0qN`{D(-PB-1L*KcMc`!8{oSdNiqiPtRbQ`=#LEXUAx6))> zP~f`1->iw;SyJ=OV3Q*$$9FFb+oiY-%Op)deeSOQ2+Y*xov)BRR}voKJ>5&2!YuDMuFao z`sc>tuahYU`Hw$ZPd^-Zb z-7Xw&6$cFodp^q=AfC3R0l=3prlW0qSeRA@KbW9}!GM~YI7wEXCUk7T946**u4G=s zcXHbEzQ4O)c+{sY<*9eX@y819+%}IPV|BbgiwbVH@1Fmx52PUKapL*G!1M;h&kvxw z3U4M3>kxcRjy*~k9yft7xG|Z_GfVm0 z`@Mdy@lAIza`1twkOHxn@U|(vn5D3QoZA`(jqw&>AhB72BBw)3&(uf_3mA{g25-KpW&FY4u+ieo z)kPlpCB9cj_hRs2L#Q%#=Sapa6z1U>oK{SZVP#7&GU|yWbN0Sa6*NG@u)nfE#k&}R zx_-Q`UTv#5t8>G(vjx*-3nY)l=`FryQ@F0`vGD}iA6@q#+U+sds?lpIUlUKfGJ|xd zX(;tdf8}*9jMT6EV3pT==Pt#tPenP;zBtg5a)v(GdvsUu<&X>2_H6rvc?Ck0`HbJ~`K%C=eCdgXFxW2F zZVJ&5%KpC3f{+!Wu30;#*kE>t>0KDbpZ7#mGhJQ7wjYWDN`w*dpsJBL!Q%7RQ+y1{ z3XaYh4bpP(yU%DWku))Bhe3Qq`w#atA}aHu87sgptFEax8T11&rE>$Cho z<#WdhSbLR1oYB?Nw}MH8ZLf5e37fG#N#6%CqvA5=vAgv7uCy|G9g zGhI}6cO>g!MQ_ruO$yy;2-0rF%Z(xR@E-t4~$W{&-$dd-yzT`Sh)3HxA;9 z%0D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 literal 4796 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 IEN2${KjgCqc>n+a