From 7aec36565e0f4f4d45aac2cd88eaee6bfe05e115 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Fri, 1 Jan 2021 14:32:33 +0100 Subject: [PATCH] [MIRROR] Scroll of teleportation tweaks (#2409) * Scroll tweaks (#55609) This PR makes a few changes regarding scrolls of teleportation. Scrolls of teleportation no longer use outdated HTML based interface and will take you straight into a list of a possible destinations upon use. That interface had a very little point of existing in the first place, the only possibly useful information was number of remaining uses, which is solved by a point below. Scrolls of teleportation now show a number of remaining uses upon examination and also give proper feedback messages upon teleportation. Scrolls of teleportation now crumble to dust when out of uses. They are a consumable item and cannot be recharged, which made them utterly useless when out of uses, creating only clutter. * Scroll of teleportation tweaks Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com> --- code/game/objects/items/scrolls.dm | 58 +++++++++++++++--------------- 1 file changed, 28 insertions(+), 30 deletions(-) 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.")