mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-06 07:22:42 +00:00
#Reverted default religion to Space Christianity. SS13 is not 40k and the Imperium is not mentioned anywhere in the [tgstation] backstory as far as I know. It's fine if that's what you want to worship but it does not make a lot of sense for it to be the default option.
#A few specific religions will now spawn unique books (they all use the Bible sprite). Feel free to expand on this. #AIs and cyborgs will now get the code phrases if they are a traitor. Rev heads will no-longer get them. Finally, rev heads will properly equip their items if admin-made. #Added field generator code improvements by Aygar. #Added a general turf proc to kill mobs/creatures in a tile, kill_creatures(). Might be useful in the future if more creatures are added. #Added a general teleport proc, get_teleport_loc(). Supports only 4 directions of movement. #More code improvements to ninjas. Admins will now only spawn player ghosts as ninjas. No more admin ninjas. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1577 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -381,6 +381,97 @@
|
||||
|
||||
return direction_f
|
||||
|
||||
//Returns location. Returns null if no location was found.
|
||||
/proc/get_teleport_loc(var/turf/location as turf,var/mob/target as mob,var/distance = 1, var/density = 0, var/errorx = 0, var/errory = 0, var/eoffsetx = 0, var/eoffsety = 0)
|
||||
//Location where the teleport begins, target that will teleport, distance to go, density checking 0/1(yes/no).
|
||||
//Random error in tile placement x, error in tile placement y, and block offset.
|
||||
//Block offset tells the proc how to place the box. Behind teleport location, relative to starting location, forward, etc.
|
||||
//Negative values for offset are accepted, think of it in relation to North, -x is west, -y is south. Error defaults to positive.
|
||||
//Turf and target are seperate in case you want to teleport some distance from a turf the target is not standing on or something.
|
||||
|
||||
var/dirx = 0//Generic location finding variable.
|
||||
var/diry = 0
|
||||
|
||||
var/xoffset = 0//Generic counter for offset location.
|
||||
var/yoffset = 0
|
||||
|
||||
var/b1xerror = 0//Generic placing for point A in box. The lower left.
|
||||
var/b1yerror = 0
|
||||
var/b2xerror = 0//Generic placing for point B in box. The upper right.
|
||||
var/b2yerror = 0
|
||||
|
||||
errorx = abs(errorx)//Error should never be negative.
|
||||
errory = abs(errory)
|
||||
//var/errorxy = round((errorx+errory)/2)//Used for diagonal boxes.
|
||||
|
||||
switch(target.dir)//This can be done through equations but switch is the simpler method. And works fast to boot.
|
||||
//Directs on what values need modifying.
|
||||
if(1)//North
|
||||
diry+=distance
|
||||
yoffset+=eoffsety
|
||||
xoffset+=eoffsetx
|
||||
b1xerror-=errorx
|
||||
b1yerror-=errory
|
||||
b2xerror+=errorx
|
||||
b2yerror+=errory
|
||||
if(2)//South
|
||||
diry-=distance
|
||||
yoffset-=eoffsety
|
||||
xoffset+=eoffsetx
|
||||
b1xerror-=errorx
|
||||
b1yerror-=errory
|
||||
b2xerror+=errorx
|
||||
b2yerror+=errory
|
||||
if(4)//East
|
||||
dirx+=distance
|
||||
yoffset+=eoffsetx//Flipped.
|
||||
xoffset+=eoffsety
|
||||
b1xerror-=errory//Flipped.
|
||||
b1yerror-=errorx
|
||||
b2xerror+=errory
|
||||
b2yerror+=errorx
|
||||
if(8)//West
|
||||
dirx-=distance
|
||||
yoffset-=eoffsetx//Flipped.
|
||||
xoffset+=eoffsety
|
||||
b1xerror-=errory//Flipped.
|
||||
b1yerror-=errorx
|
||||
b2xerror+=errory
|
||||
b2yerror+=errorx
|
||||
|
||||
var/turf/destination=locate(location.x+dirx,location.y+diry,location.z)
|
||||
|
||||
if(destination)//If there is a destination.
|
||||
if(errorx||errory)//If errorx or y were specified.
|
||||
var/destination_list[] = list()//To add turfs to list.
|
||||
//destination_list = new()
|
||||
/*This will draw a block around the target turf, given what the error is.
|
||||
Specifying the values above will basically draw a different sort of block.
|
||||
If the values are the same, it will be a square. If they are different, it will be a rectengle.
|
||||
In either case, it will center based on offset. Offset is position from center.
|
||||
Offset always calculates in relation to direction faced. In other words, depending on the direction of the teleport,
|
||||
the offset should remain positioned in relation to destination.*/
|
||||
|
||||
var/turf/center = locate((destination.x+xoffset),(destination.y+yoffset),location.z)//So now, find the new center.
|
||||
|
||||
//Now to find a box from center location and make that our destination.
|
||||
for(var/turf/T in block(locate(center.x+b1xerror,center.y+b1yerror,location.z), locate(center.x+b2xerror,center.y+b2yerror,location.z) ))
|
||||
if(density&&T.density) continue//If density was specified.
|
||||
if(T.x>world.maxx || T.x<1) continue//Don't want them to teleport off the map.
|
||||
if(T.y>world.maxy || T.y<1) continue
|
||||
destination_list += T
|
||||
if(destination_list.len)
|
||||
destination = pick(destination_list)
|
||||
else return
|
||||
|
||||
else//Same deal here.
|
||||
if(density&&destination.density) return
|
||||
if(destination.x>world.maxx || destination.x<1) return
|
||||
if(destination.y>world.maxy || destination.y<1) return
|
||||
else return
|
||||
|
||||
return destination
|
||||
|
||||
/proc/angle2text(var/degree)
|
||||
return dir2text(angle2dir(degree))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user