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.")