mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-25 08:34:23 +00:00
*TABLEPASS was already totally obsolete. FPRINT was used, but it was on virtually everything anyway. Removes those flags from every instance where they were used. Also assigned and removed other flags where it made sense. If it is desired, I can revive the flag as NOFPRINT, which would retain the original functionality, though inverted. That way it would be be used only where it was intentional (holodeck items could use this for example).
97 lines
2.5 KiB
Plaintext
97 lines
2.5 KiB
Plaintext
/obj/item/weapon/teleportation_scroll
|
|
name = "scroll of teleportation"
|
|
desc = "A scroll for moving around."
|
|
icon = 'icons/obj/wizard.dmi'
|
|
icon_state = "scroll"
|
|
var/uses = 4.0
|
|
w_class = 2.0
|
|
item_state = "paper"
|
|
throw_speed = 4
|
|
throw_range = 20
|
|
origin_tech = "bluespace=4"
|
|
|
|
/obj/item/weapon/teleportation_scroll/apprentice
|
|
name = "lesser scroll of teleportation"
|
|
uses = 1
|
|
origin_tech = "bluespace 2"
|
|
|
|
|
|
|
|
/obj/item/weapon/teleportation_scroll/attack_self(mob/user as mob)
|
|
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/weapon/teleportation_scroll/Topic(href, href_list)
|
|
..()
|
|
if (usr.stat || usr.restrained() || src.loc != usr)
|
|
return
|
|
var/mob/living/carbon/human/H = usr
|
|
if (!( istype(H, /mob/living/carbon/human)))
|
|
return 1
|
|
if ((usr == src.loc || (in_range(src, usr) && istype(src.loc, /turf))))
|
|
usr.set_machine(src)
|
|
if (href_list["spell_teleport"])
|
|
if (src.uses >= 1)
|
|
teleportscroll(H)
|
|
if(H)
|
|
attack_self(H)
|
|
return
|
|
|
|
/obj/item/weapon/teleportation_scroll/proc/teleportscroll(var/mob/user)
|
|
|
|
var/A
|
|
|
|
A = input(user, "Area to jump to", "BOOYEA", A) in teleportlocs
|
|
var/area/thearea = teleportlocs[A]
|
|
|
|
if (!user || user.stat || user.restrained())
|
|
return
|
|
if(!((user == loc || (in_range(src, user) && istype(src.loc, /turf)))))
|
|
return
|
|
|
|
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new /datum/effect/effect/system/harmless_smoke_spread()
|
|
smoke.set_up(5, 0, user.loc)
|
|
smoke.attach(user)
|
|
smoke.start()
|
|
var/list/L = list()
|
|
for(var/turf/T in get_area_turfs(thearea.type))
|
|
if(!T.density)
|
|
var/clear = 1
|
|
for(var/obj/O in T)
|
|
if(O.density)
|
|
clear = 0
|
|
break
|
|
if(clear)
|
|
L+=T
|
|
|
|
if(!L.len)
|
|
user <<"The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry."
|
|
return
|
|
|
|
if(user && user.buckled)
|
|
user.buckled.unbuckle()
|
|
|
|
var/list/tempL = L
|
|
var/attempt = null
|
|
var/success = 0
|
|
while(tempL.len)
|
|
attempt = pick(tempL)
|
|
success = user.Move(attempt)
|
|
if(!success)
|
|
tempL.Remove(attempt)
|
|
else
|
|
break
|
|
|
|
if(!success)
|
|
user.loc = pick(L)
|
|
|
|
smoke.start()
|
|
src.uses -= 1 |