diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm
index f311d56d1ba..a5a2438771e 100644
--- a/code/game/objects/items/weapons/cosmetics.dm
+++ b/code/game/objects/items/weapons/cosmetics.dm
@@ -136,6 +136,9 @@
if(C.h_style == "Bald" || C.h_style == "Balding Hair" || C.h_style == "Skinhead")
to_chat(user, "There is not enough hair left to shave...")
return
+ if(M.get_species() == "Skrell")
+ to_chat(user, "Your razor isn't going to cut through tentacles.")
+ return
if(H == user) //shaving yourself
user.visible_message("[user] starts to shave their head with \the [src].", \
"You start to shave your head with \the [src].")
@@ -160,4 +163,4 @@
else
..()
else
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index e5fb0646169..adeb8fadcd3 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -254,7 +254,7 @@
if(W.w_class > max_w_class)
if(!stop_messages)
- to_chat(usr, "[W] is too big for this [src].")
+ to_chat(usr, "[W] is too big for [src].")
return 0
var/sum_w_class = W.w_class
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index a82a6223b36..887798bd1c3 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -444,6 +444,17 @@
dat += "
| Head: | [(head && !(head.flags&ABSTRACT)) ? head : "Empty"] |
"
+ var/obj/item/organ/internal/headpocket/C = get_int_organ(/obj/item/organ/internal/headpocket)
+ if(C)
+ if(slot_wear_mask in obscured)
+ dat += "| ↳Headpocket: | Obscured |
"
+ else
+ var/list/items = C.get_contents()
+ if(items.len)
+ dat += "| ↳Headpocket: | Dislodge Items |
"
+ else
+ dat += "| ↳Headpocket: | Empty |
"
+
if(slot_wear_mask in obscured)
dat += "| Mask: | Obscured |
"
else
@@ -739,6 +750,16 @@
var/obj/item/clothing/under/U = w_uniform
U.set_sensors(usr)
+ if(href_list["dislodge_headpocket"])
+ usr.visible_message("[usr] is trying to remove something from [src]'s head!",
+ "You start to dislodge whatever's inside [src]'s headpocket!")
+ if(do_mob(usr, src, POCKET_STRIP_DELAY))
+ usr.visible_message("[usr] has dislodged something from [src]'s head!",
+ "You have dislodged everything from [src]'s headpocket!")
+ var/obj/item/organ/internal/headpocket/C = get_int_organ(/obj/item/organ/internal/headpocket)
+ C.empty_contents()
+ add_logs(usr, src, "stripped", addition="of headpocket items", print_attack_log=isLivingSSD(src))
+
if(href_list["strip_accessory"])
if(istype(w_uniform, /obj/item/clothing/under))
var/obj/item/clothing/under/U = w_uniform
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index ff7d2fa22d6..4348b8b048b 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -230,7 +230,8 @@
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
- "eyes" = /obj/item/organ/internal/eyes //Default darksight of 2.
+ "eyes" = /obj/item/organ/internal/eyes, //Default darksight of 2.
+ "headpocket" = /obj/item/organ/internal/headpocket
)
suicide_messages = list(
diff --git a/code/modules/surgery/organs/subtypes/skrell.dm b/code/modules/surgery/organs/subtypes/skrell.dm
index c069b852886..b8debe746e7 100644
--- a/code/modules/surgery/organs/subtypes/skrell.dm
+++ b/code/modules/surgery/organs/subtypes/skrell.dm
@@ -1,3 +1,63 @@
/obj/item/organ/internal/liver/skrell
alcohol_intensity = 4
species = "Skrell"
+
+/obj/item/organ/internal/headpocket
+ name = "headpocket"
+ desc = "Allows Skrell to hide tiny objects within their head tentacles."
+ icon_state = "skrell_headpocket"
+ origin_tech = "biotech=2"
+ w_class = WEIGHT_CLASS_TINY
+ parent_organ = "head"
+ slot = "headpocket"
+ species = "Skrell"
+ actions_types = list(/datum/action/item_action/organ_action/toggle)
+ var/obj/item/weapon/storage/internal/pocket
+
+/obj/item/organ/internal/headpocket/New()
+ ..()
+ pocket = new /obj/item/weapon/storage/internal(src)
+ pocket.storage_slots = 1
+ // Allow adjacency calculation to work properly
+ loc = owner
+ // Fit only pocket sized items
+ pocket.max_w_class = 2
+ pocket.max_combined_w_class = 2
+
+/obj/item/organ/internal/headpocket/on_life()
+ ..()
+ var/obj/item/organ/external/head/head = owner.get_organ("head")
+ if(pocket.contents.len && (owner.stunned || !findtextEx(head.h_style, "Tentacles")))
+ owner.visible_message("Something falls from [owner]'s head!",
+ "Something falls from your head!")
+ empty_contents()
+
+/obj/item/organ/internal/headpocket/ui_action_click()
+ if(!loc)
+ loc = owner
+ pocket.MouseDrop(owner)
+
+/obj/item/organ/internal/headpocket/on_owner_death()
+ empty_contents()
+
+/obj/item/organ/internal/headpocket/remove()
+ empty_contents()
+ . = ..()
+
+/obj/item/organ/internal/headpocket/proc/empty_contents()
+ pocket.empty_object_contents(0, get_turf(owner))
+
+/obj/item/organ/internal/headpocket/proc/get_contents()
+ return pocket.contents
+
+/obj/item/organ/internal/headpocket/emp_act(severity)
+ pocket.emp_act(severity)
+ ..()
+
+/obj/item/organ/internal/headpocket/hear_talk(mob/living/M as mob, msg)
+ pocket.hear_talk(M, msg)
+ ..()
+
+/obj/item/organ/internal/headpocket/hear_message(mob/living/M as mob, msg)
+ pocket.hear_message(M, msg)
+ ..()
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index 64f049fbdd9..ac42a7d538c 100644
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ