diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index a469bf5258..2173910c26 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -90,7 +90,16 @@
/obj/item/clothing/head/wizard,
/obj/item/clothing/head/nursehat,
/obj/item/clothing/head/sombrero,
- /obj/item/clothing/head/helmet/chaplain/witchunter_hat)
+ /obj/item/clothing/head/helmet/chaplain/witchunter_hat,
+ /obj/item/clothing/head/soft/, //All baseball caps
+ /obj/item/clothing/head/that, //top hat
+ /obj/item/clothing/head/collectable/tophat, //Not sure where this one is found, but it looks the same so might as well include
+ /obj/item/clothing/mask/bandana/, //All bandanas (which only work in hat mode)
+ /obj/item/clothing/head/fedora,
+ /obj/item/clothing/head/beanie/, //All beanies
+ /obj/item/clothing/ears/headphones,
+ /obj/item/clothing/head/helmet/skull,
+ /obj/item/clothing/head/crown/fancy)
can_buckle = TRUE
buckle_lying = FALSE
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 0356c934ff..0a56ea2425 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -1,5 +1,8 @@
/mob/living/silicon/robot/attackby(obj/item/I, mob/living/user)
if(hat_offset != INFINITY && user.a_intent == INTENT_HELP && is_type_in_typecache(I, equippable_hats))
+ if(!(I.slot_flags & ITEM_SLOT_HEAD))
+ to_chat(user, "You can't quite fit [I] onto [src]'s head.")
+ return
to_chat(user, "You begin to place [I] on [src]'s head...")
to_chat(src, "[user] is placing [I] on your head...")
if(do_after(user, 30, target = src))