diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index de541d782..95047e983 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -4634,10 +4634,6 @@
/area/abductor_ship)
"ejO" = (
/obj/structure/table,
-/obj/item/razor{
- pixel_x = 2;
- pixel_y = 5
- },
/turf/open/floor/plasteel/white,
/area/centcom/ferry)
"ejW" = (
@@ -13075,9 +13071,6 @@
/obj/item/storage/pill_bottle/mutarad{
pixel_x = -7
},
-/obj/item/razor{
- pixel_y = 12
- },
/obj/machinery/light/small{
dir = 4;
pixel_x = 10;
@@ -16868,7 +16861,6 @@
"pFm" = (
/obj/structure/table/glass,
/obj/item/surgical_drapes,
-/obj/item/razor,
/turf/open/floor/holofloor{
icon_state = "white"
},
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 254827d7b..19aec6973 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -126,7 +126,7 @@
H.update_body()
else
..()
-
+/* SKYRAT EDIT REMOVAL
/obj/item/razor
name = "electric razor"
desc = "The latest and greatest power razor born from the science of shaving."
@@ -216,4 +216,5 @@
else
..()
else
- ..()
\ No newline at end of file
+ ..()
+*/
diff --git a/code/game/objects/items/dyekit.dm b/code/game/objects/items/dyekit.dm
index 99bc80eb5..3087f7599 100644
--- a/code/game/objects/items/dyekit.dm
+++ b/code/game/objects/items/dyekit.dm
@@ -4,6 +4,8 @@
icon = 'icons/obj/dyespray.dmi'
icon_state = "dyespray"
+ var/uses = 10 //SKYRAT EDIT ADDITION
+
/obj/item/dyespray/attack_self(mob/user)
dye(user)
@@ -21,6 +23,10 @@
/obj/item/dyespray/proc/dye(mob/target)
if(!ishuman(target))
return
+
+ if(!uses) //SKYRAT EDIT ADDITION
+ return //SKYRAT EDIT ADDITION
+
var/mob/living/carbon/human/human_target = target
var/new_hair_color = input(usr, "Choose a base hair color:", "Character Preference","#"+human_target.hair_color) as color|null
@@ -42,4 +48,13 @@
if(!do_after(usr, 30, target = human_target))
return
playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5)
- human_target.update_hair()
\ No newline at end of file
+ human_target.update_hair()
+
+ //SKYRAT EDIT ADDITION
+ uses--
+
+/obj/item/dyespray/examine(mob/user)
+ . = ..()
+ . += "It has [uses] uses left."
+
+ //SKYRAT EDIT END
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index 5a0f6f095..629f19771 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -417,7 +417,7 @@
new /obj/item/cautery(src)
new /obj/item/surgical_drapes(src)
new /obj/item/clothing/mask/surgical(src)
- new /obj/item/razor(src)
+ //new /obj/item/razor(src)
new /obj/item/reagent_containers/medspray/sterilizine(src)
/obj/item/storage/backpack/duffelbag/sec
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 009c1ca59..b9b5b4b71 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -14,6 +14,7 @@
if(icon_state == "mirror_broke" && !broken)
obj_break(null, mapload)
+/* SKYRAT EDIT REMOVAL
/obj/structure/mirror/attack_hand(mob/user)
. = ..()
if(.)
@@ -44,7 +45,7 @@
H.hair_style = new_style
H.update_hair()
-
+*/
/obj/structure/mirror/examine_status(mob/user)
if(broken)
return // no message spam
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 1148d6692..585a882bb 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -459,7 +459,7 @@
/obj/item/paint/anycolor,
/obj/item/cookiesynth,
/obj/item/pneumatic_cannon/pie/selfcharge/cyborg,
- /obj/item/razor, //killbait material
+ ///obj/item/razor, //killbait material
/obj/item/lipstick/purple,
/obj/item/soap/nanotrasen,
/obj/item/reagent_containers/spray/waterflower/cyborg,
@@ -493,7 +493,7 @@
/obj/item/toy/crayon/spraycan/borg,
/obj/item/extinguisher/mini,
/obj/item/hand_labeler/borg,
- /obj/item/razor,
+ ///obj/item/razor,
/obj/item/crowbar/cyborg,
/obj/item/instrument/violin,
/obj/item/soap/nanotrasen,
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index f2f218368..11907e54a 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -132,7 +132,7 @@
if(inventory_back)
armorval += inventory_back.armor.getRating(type)
return armorval*0.5
-
+/*
/mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params)
if (istype(O, /obj/item/razor))
if (shaved)
@@ -155,7 +155,7 @@
return
..()
update_corgi_fluff()
-
+*/
/mob/living/simple_animal/pet/dog/corgi/Topic(href, href_list)
if(!(iscarbon(usr) || iscyborg(usr)) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
usr << browse(null, "window=mob[REF(src)]")
diff --git a/hyperstation/code/modules/barber.dm b/hyperstation/code/modules/barber.dm
new file mode 100644
index 000000000..ebbcacee3
--- /dev/null
+++ b/hyperstation/code/modules/barber.dm
@@ -0,0 +1,58 @@
+/obj/structure/chair/barber_chair
+ name = "barbers chair"
+ desc = "You sit in this, and your hair shall be cut."
+ icon = 'hyperstation/icons/obj/chairs.dmi'
+ icon_state = "barber_chair"
+
+//Brush
+/obj/item/hairbrush
+ name = "hairbrush"
+ desc = "A small, circular brush with an ergonomic grip for efficient brush application."
+ icon = 'hyperstation/icons/obj/barber.dmi'
+ icon_state = "brush"
+ //Put lefthand and righthand files here
+ w_class = WEIGHT_CLASS_TINY
+ var/brush_speed = 3 SECONDS
+
+/obj/item/hairbrush/comb
+ name = "comb"
+ desc = "A rather simple tool, used to straighten out hair and knots in it."
+ icon_state = "blackcomb"
+
+/obj/item/hairbrush/attack(mob/target, mob/user)
+ if(target.stat == DEAD)
+ to_chat(usr, "There isn't much point in brushing someone who can't appreciate it!")
+ return
+ brush(target, user)
+ return COMPONENT_CANCEL_ATTACK_CHAIN
+
+//Brushes someone
+/obj/item/hairbrush/proc/brush(mob/living/target, mob/user)
+ if(ishuman(target))
+ var/mob/living/carbon/human/human_target = target
+ var/obj/item/bodypart/head = human_target.get_bodypart(BODY_ZONE_HEAD)
+
+ //Don't brush if you can't reach their head or cancel the action
+ if(!head) //No head? No bitches?
+ to_chat(usr, "[human_target] has no head!")
+ return
+ if(human_target.is_mouth_covered(head_only = 1))
+ to_chat(usr, "You can't brush [human_target]'s hair while [human_target.p_their()] head is covered!")
+ return
+ if(!do_after(user, brush_speed, human_target))
+ return
+
+ // Do 1 brute to their head if they're bald. Should've been more careful.
+ if(human_target.hair_style == "Bald" || human_target.hair_style == "Skinhead" && is_species(human_target, /datum/species/human)) //It can be assumed most anthros have hair on them!
+ human_target.visible_message("[usr] scrapes the bristles uncomfortably over [human_target]'s scalp.","You scrape the bristles uncomfortably over [human_target]'s scalp.")
+ playsound(target, 'hyperstation/sound/misc/bonk.ogg', 100, 1) //Until I fix it
+ return
+
+ //Brush their hair
+ if(human_target == user)
+ human_target.visible_message("[usr] brushes [usr.p_their()] hair!","You brush your hair.")
+ //SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "brushed", /datum/mood/brushed/self)
+ else
+ user.visible_message("[usr] brushes [human_target]'s hair!","You brush [human_target]'s hair.")
+ //SEND_SIGNAL(human_target, COMISG_ADD_MOOD_EVENT, "brushed", /datum/mood_event/brushed, user)
+
diff --git a/hyperstation/icons/obj/barber.dmi b/hyperstation/icons/obj/barber.dmi
new file mode 100644
index 000000000..7edbc40bc
Binary files /dev/null and b/hyperstation/icons/obj/barber.dmi differ
diff --git a/hyperstation/icons/obj/chairs.dmi b/hyperstation/icons/obj/chairs.dmi
new file mode 100644
index 000000000..b1460e140
Binary files /dev/null and b/hyperstation/icons/obj/chairs.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 3086ca0b9..46c106753 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3098,8 +3098,10 @@
#include "hyperstation\code\datums\traits\neutral.dm"
#include "hyperstation\code\datums\weather\lithium_aurora.dm"
#include "hyperstation\code\datums\weather\oxygen_rain.dm"
+#include "hyperstation\code\game\area\Space_Station_13_areas.dm"
#include "hyperstation\code\game\machinery\lore_terminal.dm"
#include "hyperstation\code\game\objects\railings.dm"
+#include "hyperstation\code\game\objects\effects\landmarks.dm"
#include "hyperstation\code\game\objects\items\coconutcannon.dm"
#include "hyperstation\code\game\objects\items\cosmetics.dm"
#include "hyperstation\code\game\objects\items\storage\big_bag.dm"
@@ -3118,6 +3120,7 @@
#include "hyperstation\code\mobs\hugbot.dm"
#include "hyperstation\code\mobs\mimic.dm"
#include "hyperstation\code\mobs\werewolf.dm"
+#include "hyperstation\code\modules\barber.dm"
#include "hyperstation\code\modules\pen.dm"
#include "hyperstation\code\modules\traits.dm"
#include "hyperstation\code\modules\admin\verbs\hyperverbs.dm"
@@ -3158,7 +3161,10 @@
#include "hyperstation\code\modules\events\crystalloid_entities.dm"
#include "hyperstation\code\modules\food_and_drinks\recipes\drinks_recipes.dm"
#include "hyperstation\code\modules\integrated_electronics\input.dm"
+#include "hyperstation\code\modules\jobs\job_types\civilian.dm"
+#include "hyperstation\code\modules\jobs\job_types\job_alt_titles.dm"
#include "hyperstation\code\modules\jobs\job_types\roleplay.dm"
+#include "hyperstation\code\modules\jobs\job_types\security.dm"
#include "hyperstation\code\modules\mining\shelters.dm"
#include "hyperstation\code\modules\mining\equipment\survival_pod.dm"
#include "hyperstation\code\modules\mob\mob_helpers.dm"
@@ -3185,6 +3191,7 @@
#include "hyperstation\code\modules\vending\teavendomatic.dm"
#include "hyperstation\code\obj\ashtray.dm"
#include "hyperstation\code\obj\bluespace sewing kit.dm"
+#include "hyperstation\code\obj\clothes.dm"
#include "hyperstation\code\obj\condom.dm"
#include "hyperstation\code\obj\decal.dm"
#include "hyperstation\code\obj\economy.dm"