mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-02 13:33:29 +00:00
Cleaned up part of the door code and moved some defines to their proper files. Firelocks can now be welded open and now shows the welded overlay properly. Borgs can now properly mess with door wiring. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2895 316c924e-a436-60f5-8080-3fe189b3f50e
149 lines
3.3 KiB
Plaintext
149 lines
3.3 KiB
Plaintext
/proc/dopage(src,target)
|
|
var/href_list
|
|
var/href
|
|
href_list = params2list("src=\ref[src]&[target]=1")
|
|
href = "src=\ref[src];[target]=1"
|
|
src:temphtml = null
|
|
src:Topic(href, href_list)
|
|
return null
|
|
|
|
/proc/get_area(O)
|
|
var/atom/location = O
|
|
var/i
|
|
for(i=1, i<=20, i++)
|
|
if(isarea(location))
|
|
return location
|
|
else if (istype(location))
|
|
location = location.loc
|
|
else
|
|
return null
|
|
return 0
|
|
|
|
/proc/get_area_name(N) //get area by it's name
|
|
for(var/area/A in world)
|
|
if(A.name == N)
|
|
return A
|
|
return 0
|
|
|
|
/proc/in_range(source, user)
|
|
if(get_dist(source, user) <= 1)
|
|
return 1
|
|
return 0 //not in range and not telekinetic
|
|
|
|
/proc/circlerange(center=usr,radius=3)
|
|
|
|
var/turf/centerturf = get_turf(center)
|
|
var/list/turfs = new/list()
|
|
var/rsq = radius * (radius+0.5)
|
|
|
|
for(var/atom/T in range(radius, centerturf))
|
|
var/dx = T.x - centerturf.x
|
|
var/dy = T.y - centerturf.y
|
|
if(dx*dx + dy*dy <= rsq)
|
|
turfs += T
|
|
|
|
//turfs += centerturf
|
|
return turfs
|
|
|
|
/proc/circleview(center=usr,radius=3)
|
|
|
|
var/turf/centerturf = get_turf(center)
|
|
var/list/turfs = new/list()
|
|
var/rsq = radius * (radius+0.5)
|
|
|
|
for(var/atom/T in view(radius, centerturf))
|
|
var/dx = T.x - centerturf.x
|
|
var/dy = T.y - centerturf.y
|
|
if(dx*dx + dy*dy <= rsq)
|
|
turfs += T
|
|
|
|
//turfs += centerturf
|
|
return turfs
|
|
|
|
/proc/get_dist_euclidian(atom/Loc1 as turf|mob|obj,atom/Loc2 as turf|mob|obj)
|
|
var/dx = Loc1.x - Loc2.x
|
|
var/dy = Loc1.y - Loc2.y
|
|
|
|
var/dist = sqrt(dx**2 + dy**2)
|
|
|
|
return dist
|
|
|
|
/proc/circlerangeturfs(center=usr,radius=3)
|
|
|
|
var/turf/centerturf = get_turf(center)
|
|
var/list/turfs = new/list()
|
|
var/rsq = radius * (radius+0.5)
|
|
|
|
for(var/turf/T in range(radius, centerturf))
|
|
var/dx = T.x - centerturf.x
|
|
var/dy = T.y - centerturf.y
|
|
if(dx*dx + dy*dy <= rsq)
|
|
turfs += T
|
|
return turfs
|
|
|
|
/proc/circleviewturfs(center=usr,radius=3)
|
|
|
|
var/turf/centerturf = get_turf(center)
|
|
var/list/turfs = new/list()
|
|
var/rsq = radius * (radius+0.5)
|
|
|
|
for(var/turf/T in view(radius, centerturf))
|
|
var/dx = T.x - centerturf.x
|
|
var/dy = T.y - centerturf.y
|
|
if(dx*dx + dy*dy <= rsq)
|
|
turfs += T
|
|
return turfs
|
|
|
|
|
|
/proc/get_mobs_in_view(var/R, var/atom/source)
|
|
// Returns a list of mobs in range of R from source. Used in radio and say code.
|
|
|
|
var/turf/T = get_turf(source)
|
|
var/list/hear = hearers(R, T)
|
|
var/list/V = view(R, T)
|
|
|
|
// Search for closets:
|
|
for(var/obj/structure/closet/C in V)
|
|
for(var/mob/M in C.contents)
|
|
if(M.client)
|
|
hear += M
|
|
|
|
// Cryos:
|
|
for(var/obj/machinery/atmospherics/unary/cryo_cell/C in V)
|
|
if(C.occupant)
|
|
if(C.occupant.client)
|
|
hear += C.occupant
|
|
|
|
// Intelicards
|
|
for(var/obj/item/device/aicard/C in V)
|
|
for(var/mob/living/silicon/ai/M in C)
|
|
if(M.client)
|
|
hear += M
|
|
|
|
// Brains/MMIs/pAIs
|
|
for(var/mob/living/carbon/brain/C in world)
|
|
if(get_turf(C) in V)
|
|
hear += C
|
|
for(var/mob/living/silicon/pai/C in world)
|
|
if(get_turf(C) in V)
|
|
hear += C
|
|
|
|
// Personal AIs
|
|
for(var/obj/item/device/paicard/C in V)
|
|
if(C.pai)
|
|
if(C.pai.client)
|
|
hear += C.pai
|
|
|
|
// Exosuits
|
|
for(var/obj/mecha/C in V)
|
|
if(C.occupant)
|
|
if(C.occupant.client)
|
|
hear += C.occupant
|
|
|
|
// Disposal Machines
|
|
for(var/obj/machinery/disposal/C in V)
|
|
for(var/mob/M in C.contents)
|
|
if(M.client)
|
|
hear += M
|
|
|
|
return hear |