mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
[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>
This commit is contained in:
@@ -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 = "<B>Teleportation Scroll:</B><BR>"
|
||||
dat += "Number of uses: [src.uses]<BR>"
|
||||
dat += "<HR>"
|
||||
dat += "<B>Four uses, use them wisely:</B><BR>"
|
||||
dat += "<A href='byond://?src=[REF(src)];spell_teleport=1'>Teleport</A><BR>"
|
||||
dat += "Kind regards,<br>Wizards Federation<br><br>P.S. Don't forget to bring your gear, you'll need it to cast most spells.<HR>"
|
||||
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, "<span class='warning'>The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.</span>")
|
||||
return
|
||||
|
||||
if(do_teleport(user, pick(L), forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE))
|
||||
smoke.start()
|
||||
uses--
|
||||
if(!uses)
|
||||
to_chat(user, "<span class='warning'>[src] has run out of uses and crumbles to dust!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] has [uses] use\s remaining.</span>")
|
||||
else
|
||||
to_chat(user, "The spell matrix was disrupted by something near the destination.")
|
||||
to_chat(user, "<span class='warning'>The spell matrix was disrupted by something near the destination.</span>")
|
||||
|
||||
Reference in New Issue
Block a user