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