mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Works on New Blob
This commit is contained in:
@@ -164,6 +164,14 @@ proc/listclearnulls(list/list)
|
||||
L.Swap(i, rand(i,L.len))
|
||||
return L
|
||||
|
||||
//same, but returns nothing and acts on list in place
|
||||
/proc/shuffle_inplace(list/L)
|
||||
if(!L)
|
||||
return
|
||||
|
||||
for(var/i=1, i<L.len, ++i)
|
||||
L.Swap(i,rand(i,L.len))
|
||||
|
||||
//Return a list with no duplicate entries
|
||||
/proc/uniquelist(var/list/L)
|
||||
. = list()
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
//Checks if all high bits in req_mask are set in bitfield
|
||||
#define BIT_TEST_ALL(bitfield, req_mask) ((~(bitfield) & (req_mask)) == 0)
|
||||
|
||||
//supposedly the fastest way to do this according to https://gist.github.com/Giacom/be635398926bb463b42a
|
||||
#define RANGE_TURFS(RADIUS, CENTER) \
|
||||
block( \
|
||||
locate(max(CENTER.x-(RADIUS),1), max(CENTER.y-(RADIUS),1), CENTER.z), \
|
||||
locate(min(CENTER.x+(RADIUS),world.maxx), min(CENTER.y+(RADIUS),world.maxy), CENTER.z) \
|
||||
)
|
||||
|
||||
//Inverts the colour of an HTML string
|
||||
/proc/invertHTML(HTMLstring)
|
||||
|
||||
@@ -476,6 +483,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
var/list/sortmob = sortAtom(mob_list)
|
||||
for(var/mob/observer/eye/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/observer/blob/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/living/silicon/ai/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/living/silicon/pai/M in sortmob)
|
||||
@@ -1327,3 +1336,24 @@ var/mob/dview/dview_mob = new
|
||||
return "[round(number / 1e9, 0.1)] G[symbol]" // giga
|
||||
if(1e12 to 1e15-1)
|
||||
return "[round(number / 1e12, 0.1)] T[symbol]" // tera
|
||||
|
||||
|
||||
|
||||
//ultra range (no limitations on distance, faster than range for distances > 8); including areas drastically decreases performance
|
||||
/proc/urange(dist=0, atom/center=usr, orange=0, areas=0)
|
||||
if(!dist)
|
||||
if(!orange)
|
||||
return list(center)
|
||||
else
|
||||
return list()
|
||||
|
||||
var/list/turfs = RANGE_TURFS(dist, center)
|
||||
if(orange)
|
||||
turfs -= get_turf(center)
|
||||
. = list()
|
||||
for(var/V in turfs)
|
||||
var/turf/T = V
|
||||
. += T
|
||||
. += T.contents
|
||||
if(areas)
|
||||
. |= T.loc
|
||||
|
||||
Reference in New Issue
Block a user