diff --git a/code/game/objects/items/scrolls.dm b/code/game/objects/items/scrolls.dm index 83d0ec2f210..cb1a9cfe8e7 100644 --- a/code/game/objects/items/scrolls.dm +++ b/code/game/objects/items/scrolls.dm @@ -4,49 +4,42 @@ icon = 'icons/obj/wizard.dmi' icon_state = "scroll" worn_icon_state = "scroll" - var/uses = 4 w_class = WEIGHT_CLASS_SMALL inhand_icon_state = "paper" throw_speed = 3 throw_range = 7 resistance_flags = FLAMMABLE + /// Number of uses remaining + var/uses = 4 /obj/item/teleportation_scroll/apprentice name = "lesser scroll of teleportation" uses = 1 - +/obj/item/teleportation_scroll/examine(mob/user) + . = ..() + if(uses > 0) + . += "It has [uses] use\s remaining." /obj/item/teleportation_scroll/attack_self(mob/user) - user.set_machine(src) - var/dat = "Teleportation Scroll:
" - dat += "Number of uses: [src.uses]
" - dat += "
" - dat += "Four uses, use them wisely:
" - dat += "Teleport
" - dat += "Kind regards,
Wizards Federation

P.S. Don't forget to bring your gear, you'll need it to cast most spells.
" - user << browse(dat, "window=scroll") - onclose(user, "scroll") - return - -/obj/item/teleportation_scroll/Topic(href, href_list) - ..() - if (usr.stat != CONSCIOUS || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || src.loc != usr) + if(!uses) return - if (!ishuman(usr)) - return 1 - var/mob/living/carbon/human/H = usr - if(H.is_holding(src)) - H.set_machine(src) - if (href_list["spell_teleport"]) - if(uses) - teleportscroll(H) - if(H) - attack_self(H) - return + if(!ishuman(user)) + return + var/mob/living/carbon/human/human_user = user + if(human_user.incapacitated()) + return + if(!human_user.is_holding(src)) + return + teleportscroll(human_user) +/** + * Shows a list of a possible teleport destinations to a user and then teleports him to to his chosen destination + * + * Arguments: + * * user The mob that is being teleported + */ /obj/item/teleportation_scroll/proc/teleportscroll(mob/user) - var/A A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs @@ -64,11 +57,16 @@ L += T if(!L.len) - to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") + to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") return if(do_teleport(user, pick(L), forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE)) smoke.start() uses-- + if(!uses) + to_chat(user, "[src] has run out of uses and crumbles to dust!") + qdel(src) + else + to_chat(user, "[src] has [uses] use\s remaining.") else - to_chat(user, "The spell matrix was disrupted by something near the destination.") + to_chat(user, "The spell matrix was disrupted by something near the destination.")