splits teleportation fixes out of depot PR #8515

This commit is contained in:
Kyep
2018-08-02 09:32:04 -07:00
parent b0e62be32d
commit b6fdcff5e2
2 changed files with 19 additions and 7 deletions
@@ -108,9 +108,11 @@ Frequency:
/obj/item/hand_tele/attack_self(mob/user as mob)
var/turf/current_location = get_turf(user)//What turf is the user on?
if(!current_location||!is_teleport_allowed(current_location.z))//If turf was not found or they're somewhere teleproof
var/area/current_area = get_area(user)
if(!current_location || !is_teleport_allowed(current_location.z) || current_area.tele_proof)//If turf was not found or they're somewhere teleproof
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
return
var/list/L = list( )
for(var/obj/machinery/computer/teleporter/com in world)
if(com.target)
@@ -118,13 +120,16 @@ Frequency:
L["[com.id] (Active)"] = com.target
else
L["[com.id] (Inactive)"] = com.target
var/list/turfs = list( )
var/list/turfs = list()
var/area/A
for(var/turf/T in orange(10))
if(T.x>world.maxx-8 || T.x<8) continue //putting them at the edge is dumb
if(T.y>world.maxy-8 || T.y<8) continue
if(T.x>world.maxx-8 || T.x<8)
continue //putting them at the edge is dumb
if(T.y>world.maxy-8 || T.y<8)
continue
A = get_area(T)
if(A.tele_proof == 1) continue // Telescience-proofed areas require a beacon.
if(A.tele_proof == 1)
continue // Telescience-proofed areas require a beacon.
turfs += T
if(turfs.len)
L["None (Dangerous)"] = pick(turfs)
+9 -2
View File
@@ -307,14 +307,21 @@
/datum/plant_gene/trait/teleport/on_squash(obj/item/reagent_containers/food/snacks/grown/G, atom/target)
if(isliving(target))
var/teleport_radius = max(round(G.seed.potency / 10), 1)
var/turf/T = get_turf(target)
var/area/A = get_area(T)
if(!T || !is_teleport_allowed(T.z) || A.tele_proof)
return
var/teleport_radius = max(round(G.seed.potency / 10), 1)
new /obj/effect/decal/cleanable/molten_object(T) //Leave a pile of goo behind for dramatic effect...
do_teleport(target, T, teleport_radius)
/datum/plant_gene/trait/teleport/on_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/C)
var/teleport_radius = max(round(G.seed.potency / 10), 1)
var/turf/T = get_turf(C)
var/area/A = get_area(T)
if(!T || !is_teleport_allowed(T.z) || A.tele_proof)
qdel(G)
return
var/teleport_radius = max(round(G.seed.potency / 10), 1)
to_chat(C, "<span class='warning'>You slip through spacetime!</span>")
do_teleport(C, T, teleport_radius)
if(prob(50))