diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm
index f8a81859c2b..69b7a82f8b4 100644
--- a/code/modules/jobs/job_types/mime.dm
+++ b/code/modules/jobs/job_types/mime.dm
@@ -56,34 +56,41 @@
/obj/item/book/mimery
name = "Guide to Dank Mimery"
- desc = "A primer on basic pantomime."
- icon_state ="bookmime"
+ desc = "Teaches one of three classic pantomime routines, allowing a practiced mime to conjure invisible objects into corporeal existence. One use only."
+ icon_state = "bookmime"
-/obj/item/book/mimery/attack_self(mob/user,)
- user.set_machine(src)
- var/dat = "Guide to Dank Mimery
"
- dat += "Teaches one of three classic pantomime routines, allowing a practiced mime to conjure invisible objects into corporeal existence.
"
- dat += "Once you have mastered your routine, this book will have no more to say to you.
"
- dat += "
"
- dat += "Invisible Wall
"
- dat += "Invisible Chair
"
- dat += "Invisible Box
"
- user << browse(dat, "window=book")
-
-/obj/item/book/mimery/Topic(href, href_list)
- ..()
- if (usr.stat || usr.restrained() || src.loc != usr)
- return
- if (!ishuman(usr))
- return
- var/mob/living/carbon/human/H = usr
- if(H.is_holding(src) && H.mind)
- H.set_machine(src)
- if (href_list["invisible_wall"])
- H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
- if (href_list["invisible_chair"])
- H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_chair(null))
- if (href_list["invisible_box"])
- H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_box(null))
- to_chat(usr, "The book disappears into thin air.")
+/obj/item/book/mimery/attack_self(mob/user)
+ var/list/spell_icons = list(
+ "Invisible Wall" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_wall"),
+ "Invisible Chair" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_chair"),
+ "Invisible Box" = image(icon = 'icons/mob/actions/actions_mime.dmi', icon_state = "invisible_box")
+ )
+ var/picked_spell = show_radial_menu(user, src, spell_icons, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE)
+ switch(picked_spell)
+ if("Invisible Wall")
+ user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
+ if("Invisible Chair")
+ user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_chair(null))
+ if("Invisible Box")
+ user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_box(null))
+ else
+ return
+ to_chat(user, "The book disappears into thin air.")
qdel(src)
+
+/**
+ * Checks if we are allowed to interact with a radial menu
+ *
+ * Arguments:
+ * * user The human mob interacting with the menu
+ */
+/obj/item/book/mimery/proc/check_menu(mob/living/carbon/human/user)
+ if(!istype(user))
+ return FALSE
+ if(!user.is_holding(src))
+ return FALSE
+ if(user.incapacitated())
+ return FALSE
+ if(!user.mind)
+ return FALSE
+ return TRUE