Files
CHOMPStation2/code/game/smoothwall.dm

72 lines
1.9 KiB
Plaintext

//Separate dm because it relates to two types of atoms + ease of removal in case it's needed.
//Also assemblies.dm for falsewall checking for this when used.
/atom/proc/relativewall() //atom because it should be useable both for walls and false walls
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
for(var/turf/simulated/wall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
junction |= get_dir(src,W)
for(var/obj/falsewall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
junction |= get_dir(src,W)
if(istype(src,/turf/simulated/wall/r_wall))
src.icon_state = "rwall[junction]"
else if(istype(src,/turf/simulated/wall) || istype(src,/obj/falsewall))
src.icon_state = "wall[junction]"
/* When we have animations for different directions of falsewalls, then it'd be needed. Not now.
if(istype(src,/obj/falsewall)) //saving the junctions for the falsewall because it changes icon_state often instead of once
var/obj/falsewall/F = src
F.junctions = junction
*/
return
/turf/simulated/wall/New()
for(var/turf/simulated/wall/W in range(src,1))
W.relativewall()
for(var/obj/falsewall/W in range(src,1))
W.relativewall()
..()
/obj/falsewall/New()
for(var/turf/simulated/wall/W in range(src,1))
W.relativewall()
for(var/obj/falsewall/W in range(src,1))
W.relativewall()
..()
/turf/simulated/wall/Del()
var/temploc = src.loc
spawn(10)
for(var/turf/simulated/wall/W in range(temploc,1))
W.relativewall()
for(var/obj/falsewall/W in range(temploc,1))
W.relativewall()
..()
/turf/falsewall/Del()
var/temploc = src.loc
spawn(10)
for(var/turf/simulated/wall/W in range(temploc,1))
W.relativewall()
for(var/obj/falsewall/W in range(temploc,1))
W.relativewall()
..()