/obj/item/clothing/head/wig
name = "toupée"
desc = "You can't tell the difference, Honest!"
icon_state= "wig"
/obj/item/clothing/head/bald_cap
name = "bald cap"
desc = "You can't tell the difference, Honest!"
icon_state= "baldcap"
item_state= "baldcap"
/obj/item/scissors
name = "Scissors"
desc = "Used to cut hair. Make sure you aim at the head, where the hair is."
icon = 'icons/obj/barber_shop.dmi'
icon_state = "scissors"
flags = FPRINT | TABLEPASS | CONDUCT
force = 10.0
w_class = 1.0
hit_type = DAMAGE_STAB
hitsound = 'sound/effects/bloody_stab.ogg'
throwforce = 5.0
throw_speed = 3
throw_range = 5
m_amt = 10000
g_amt = 5000
suicide(var/mob/user as mob)
user.visible_message("[user] slashes \his own throat with [src]!")
blood_slash(user, 25)
user.TakeDamage("head", 150, 0)
user.updatehealth()
spawn(100)
if (user)
user.suiciding = 0
return 1
/obj/item/razor_blade
name = "Razor Blade"
desc = "Used to cut facial hair"
icon = 'icons/obj/barber_shop.dmi'
icon_state = "razorblade"
flags = FPRINT | TABLEPASS | CONDUCT
force = 10.0
w_class = 1.0
hit_type = DAMAGE_CUT
hitsound = 'sound/weapons/slashcut.ogg'
throwforce = 5.0
throw_speed = 3
throw_range = 5
m_amt = 10000
g_amt = 5000
suicide(var/mob/user as mob)
user.visible_message("[user] slashes \his own throat with [src]!")
blood_slash(user, 25)
user.TakeDamage("head", 150, 0)
user.updatehealth()
spawn(100)
if (user)
user.suiciding = 0
return 1
/obj/item/dye_bottle
name = "Hair Dye Bottle"
desc = "Used to dye hair a different color. Seems to be made of tough, unshatterable plastic."
icon = 'icons/obj/barber_shop.dmi'
icon_state = "dye-e"
flags = FPRINT | TABLEPASS
//Default Colors
var/customization_first_color = "#FFFFFF"
var/empty = 1
/obj/item/reagent_containers/food/drinks/hairgrowth
name = "EZ-Hairgrowth"
desc = "The #1 hair growth product on the market! WARNING: Some side effects may occur."
icon = 'icons/obj/barber_shop.dmi'
icon_state = "tonic1"
New()
var/datum/reagents/R = new/datum/reagents(50)
reagents = R
R.my_atom = src
R.add_reagent("hairgrownium", 40)
on_reagent_change()
src.icon_state = "tonic[src.reagents.total_volume ? "1" : "0"]"
/obj/stool/barber_chair
name = "Barber Chair"
desc = "Chair where hair can be cut"
icon = 'icons/obj/barber_shop.dmi'
icon_state = "barberchair"
anchored = 1
/obj/barber_pole
name = "Barber Pole"
icon = 'icons/obj/barber_shop.dmi'
icon_state = "pole"
density = 1
anchored = 1
desc = "Barber poles historically were signage used to convey that the barber would perform services such as blood letting and other medical procedures, with the red representing blood, and the white representing the bandaging. In America, long after the time when blood-letting was offered, a third colour was added to bring it in line with the colours of their national flag. This one is in space."
///////////////////////////////////////////
///////////Barber Chair Code///////////////
///////////////////////////////////////////
/obj/stool/barber_chair/MouseDrop_T(mob/M as mob, mob/user as mob)
if (!ticker)
boutput(user, "You can't buckle anyone in before the game starts.")
return
if ((!( iscarbon(M) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat))
return
if (M == usr)
user.visible_message("[M] buckles in!", "You buckle yourself in.")
else
user.visible_message("[M] is buckled in by [user].", "You buckle in [M].")
M.anchored = 1
M.buckled = src
M.set_loc(src.loc)
src.add_fingerprint(user)
return
/obj/stool/barber_chair/attack_hand(mob/user as mob)
for(var/mob/M in src.loc)
if (M.buckled)
if (M != user)
user.visible_message("[M] is unbuckled by [user].", "You unbuckle [M].")
else
user.visible_message("[M] unbuckles.", "You unbuckle.")
M.anchored = 0
M.buckled = null
src.add_fingerprint(user)
return
/obj/stool/barber_chair/ex_act(severity)
for(var/mob/M in src.loc)
if(M.buckled == src)
M.buckled = null
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if (prob(50))
qdel(src)
return
if(3.0)
if (prob(5))
qdel(src)
return
return
/obj/stool/barber_chair/blob_act(var/power)
if(prob(power * 2.5))
for(var/mob/M in src.loc)
if(M.buckled == src)
M.buckled = null
qdel(src)
/*
/obj/stool/barber_chair/verb/rotate()
set src in oview(1)
set category = "Local"
src.dir = turn(src.dir, 90)
if (src.dir == NORTH)
src.layer = FLY_LAYER
else
src.layer = OBJ_LAYER
return
*/
///////////////////////////////////////////////////
//////Hair Dye Bottle Code ///////
///////////////////////////////////////////////////
/obj/item/dye_bottle/attack(mob/living/carbon/human/M as mob, mob/user as mob)
if(!istype(M,/mob/living/carbon/human)) return
if(user.zone_sel.selecting != "head" || user.a_intent != "help")
..()
return
if(src.empty)
boutput(user, "Bottle is empty!")
else //if(istype(M.buckled, /obj/stool/barber_chair))
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.c_flags & COVERSEYES) || (H.wear_mask && H.wear_mask.c_flags & COVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
boutput(user, "You're going to need to remove that mask/helmet first.")
return
/*
var/turf/T = M.loc
var/turf/TM = user.loc
boutput(user, "You begin dying [M]'s hair.")
boutput(M, "[user] begins dying your hair.")
sleep(30)
if(M.loc == T && TM.loc == user.loc && (user.equipped() == src || istype(user, /mob/living/silicon)))
return
*/
boutput(user, "You dye [M]'s hair.")
boutput(M, "[user] dyes your hair.")
M.bioHolder.mobAppearance.customization_first_color = src.customization_first_color
M.bioHolder.mobAppearance.customization_second_color = src.customization_first_color
M.set_face_icon_dirty()
M.set_body_icon_dirty()
M.update_clothing()
src.empty = 1
src.icon_state= "dye-e"
//else
// boutput(user, "They need to be in a barber chair!")
/////////////////////////////////////////////////////
//////Scissors Code /////
////////////////////////////////////////////////////
/obj/item/scissors/attack(mob/living/carbon/human/M as mob, mob/user as mob)
if (src.remove_bandage(M, user))
return
if(user.zone_sel.selecting != "head" || user.a_intent != "help")
..()
return
if (user == M)
boutput(user, "You can't cut your own hair!")
return
if(istype(M.buckled, /obj/stool/barber_chair))
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.c_flags & COVERSEYES) || (H.wear_mask && H.wear_mask.c_flags & COVERSEYES) || (H.glasses && H.glasses.c_flags & COVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
boutput(user, "You're going to need to remove that mask/helmet/glasses first.")
return
if(M.bioHolder.mobAppearance.customization_first == "None")
boutput(user, "There is nothing to cut!")
return
var/new_style = input(user, "Please select style", "Style") as null|anything in customization_styles
if (new_style)
if(M.bioHolder.mobAppearance.customization_first == "Balding" && new_style != "None")
boutput(user, "Not enough hair!")
return
if(!new_style)
return
var/turf/T = M.loc
var/turf/TM = user.loc
boutput(user, "You begin cutting [M]'s hair.")
boutput(M, "[user] begins cutting your hair.")
playsound(src.loc, "sound/items/Scissor.ogg", 100, 1)
sleep(70)
if(M.loc == T && TM.loc == user.loc && (user.equipped() == src || istype(user, /mob/living/silicon)))
return
if (new_style == "None")
var/obj/item/I = M.create_wig()
I.set_loc(user.loc)
M.bioHolder.mobAppearance.customization_first = new_style
boutput(M, "[user] cuts your hair.")
boutput(user, "you cut [M]'s hair.")
M.cust_one_state = customization_styles[new_style]
M.set_clothing_icon_dirty() // why the fuck is hair updated in clothing
//////////////////////////////////////////////////////////
////Razor Blade /////
/////////////////////////////////////////////////////////
/obj/item/razor_blade/attack(mob/living/carbon/human/M as mob, mob/user as mob)
if(scalpel_surgery(M,user)) return
if(user.zone_sel.selecting != "head" || user.a_intent != "help")
..()
return
if( istype(M, /mob/living/silicon))
boutput(user, "Shave a robot? Shave a robot!?? SHAVE A ROBOT?!?!??")
return
if(M.cust_two_state == "wiz")
if (user == M)
boutput(user, "No!!! This is the worst idea you've ever had!")
return
src.visible_message("[user] quickly shaves off [M]'s beard!")
M.bioHolder.AddEffect("arcane_shame", timeleft = 120)
M.bioHolder.mobAppearance.customization_second = "None"
M.cust_two_state = "None"
M.set_face_icon_dirty()
M.emote("cry")
return
if(istype(M.buckled, /obj/stool/barber_chair))
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.c_flags & COVERSEYES) || (H.wear_mask && H.wear_mask.c_flags & COVERSEYES) || (H.glasses && H.glasses.c_flags & COVERSEYES)))
// you can't stab someone in the eyes wearing a mask!
boutput(user, "You're going to need to remove that mask/helmet/glasses first.")
return
if(M.bioHolder.mobAppearance.customization_second == "None")
boutput(user, "There is nothing to shave!")
return
var/new_style = input(user, "Please select facial style", "Facial Style") as null|anything in customization_styles
if (new_style)
var/list/mustaches =list("Watson", "Chaplin", "Selleck", "Van Dyke", "Hogan")
var/list/beards = list("Neckbeard", "Elvis", "Abe", "Chinstrap", "Hipster", "Wizard")
var/list/full = list("Goatee", "Full Beard", "Long Beard")
if((new_style in full) && (!(M.bioHolder.mobAppearance.customization_second in full)))
boutput(user, "[M] doesn't have enough facial hair!")
return
if((new_style in beards) && (M.bioHolder.mobAppearance.customization_second in mustaches))
boutput(user, "[M] doesn't have a beard!")
return
if((new_style in mustaches) && (M.bioHolder.mobAppearance.customization_second in beards))
boutput(user, "[M] doesn't have a mustache!")
return
var/turf/T = M.loc
var/turf/TM = user.loc
boutput(user, "You begin shaving [M].")
boutput(M, "[user] begins shaving you.")
//playsound(src.loc, "Scissor.ogg", 100, 1)
sleep(70)
if(M.loc == T && TM.loc == user.loc && (user.equipped() == src || istype(user, /mob/living/silicon)))
return
M.bioHolder.mobAppearance.customization_second = new_style
boutput(M, "[user] shaves your face")
boutput(user, "You shave [M]'s face.")
M.cust_two_state = customization_styles[new_style]
M.set_face_icon_dirty()
//////////////////////////////////////////////////////////////////
/////Dye Bottle Dispenser /////
/////////////////////////////////////////////////////////////////
/obj/machinery/hair_dye_dispenser
name = "Hair Dye Mixer 3000"
desc = "Mixes hair dye for whatever color you want"
icon = 'icons/obj/barber_shop.dmi'
icon_state = "dyedispenser"
density = 1
anchored = 1.0
mats = 15
var/obj/item/dye_bottle/bottle = null
New()
..()
UnsubscribeProcess()
ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
qdel(src)
return
if(2.0)
if (prob(50))
//SN src = null
qdel(src)
return
else
return
blob_act(var/power)
if (prob(power * 1.25))
qdel(src)
meteorhit()
qdel(src)
return
process()
return
attack_ai(mob/user as mob)
return src.attack_hand(user)
attack_hand(mob/user as mob)
if(stat & BROKEN)
return
user.machine = src
var/dat = "Dye Bottle Dispenser Unit
"
if(src.bottle)
dat += {"Dye Bottle Loaded: (Eject)
Dye Color:
"}
if(!src.bottle.empty)
dat += "Empty Dye Bottle
"
else
dat += {"Fill Dye Bottle"}
else
dat += "No Dye Bottle Loaded
"
user << browse(dat, "window=dye_dispenser")
onclose(user, "dye_dispenser")
return
attackby(obj/item/W, mob/user as mob)
if(istype(W, /obj/item/dye_bottle))
if(src.bottle)
boutput(user, "The dispenser already has a dye bottle in it.")
else
boutput(user, "You insert the dye bottle into the dispenser.")
if(W)
user.drop_item(W)
W.set_loc(src)
src.bottle = W
return
..()
return
Topic(href, href_list)
if(stat & BROKEN)
return
if(usr.stat || usr.restrained())
return
if (istype(usr, /mob/living/silicon/ai))
boutput(usr, "You are unable to dispense anything, since the controls are physical levers which don't go through any other kind of input.")
return
if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))))
usr.machine = src
if (href_list["eject"])
if(src.bottle)
src.bottle.set_loc(src.loc)
src.bottle = null
if(href_list["fillb"])
if(src.bottle)
var/new_dye = input(usr, "Please select hair color.", "Dye Color") as color
if(new_dye)
bottle.customization_first_color = new_dye
bottle.empty = 0
bottle.icon_state = "dye-f"
src.updateDialog()
if(href_list["emptyb"])
if(src.bottle)
bottle.empty = 1
bottle.icon_state = "dye-e"
src.updateDialog()
src.add_fingerprint(usr)
for(var/mob/M in viewers(1, src))
if ((M.client && M.machine == src))
src.attack_hand(M)
else
usr << browse(null, "window=dye_dispenser")
return
return