Files
vgstation13/code/modules/RCD/schematics/rcd_window_spawner.dm
Exxion 43f841e115 Movecode update for 514 except it works this time (#31154)
* This stuff

* Mostly works?

* Vaguely kind of almost working

* whatever

* Updates for newer code

* REAL updates for new code

* Actually works, apparently

* Details

* Oops
Mistake while resolving conflicts

* Steals Damian's solution

* change_dir()

* Missed a couple

* I swear this didn't show up in my search for some reason

* Update code/game/atoms_movable.dm

Co-authored-by: DamianX <DamianX@users.noreply.github.com>

* Update code/game/atoms_movable.dm

Co-authored-by: DamianX <DamianX@users.noreply.github.com>

* Can no longer sometimes crawl through walls
Kind of?

* Cleanup and fixes

* Workaround

* Fixes

Co-authored-by: DamianX <DamianX@users.noreply.github.com>
2021-11-03 08:09:35 -05:00

116 lines
2.8 KiB
Plaintext

/obj/effect/spawner/window
name = "window spawner"
var/full = FALSE
var/list/dirs = list(NORTH,WEST,SOUTH,EAST)
/obj/effect/spawner/window/New()
..()
spawn_window()
/obj/effect/spawner/window/proc/spawn_window()
var/turf/T = get_turf(src)
if(T && !istype(T,/turf/simulated/wall) && !istype(T,/turf/unsimulated/wall))
if(!locate(/obj/structure/grille) in loc)
new /obj/structure/grille(T)
for(var/direction in dirs)
var/windowhere = FALSE
for(var/obj/structure/window/reinforced/R in loc)
if(R.dir == direction)
windowhere = TRUE
if(windowhere)
continue
var/obj/structure/window/reinforced/new_window = new /obj/structure/window/reinforced(loc)
new_window.change_dir(direction)
new_window.update_nearby_tiles()
if(full && !locate(/obj/structure/window/full/reinforced) in loc)
var/obj/structure/window/reinforced/new_fullwindow = new /obj/structure/window/full/reinforced(loc)
new_fullwindow.update_nearby_tiles()
qdel(src)
/obj/effect/spawner/window/northend
dirs = list(NORTH)
/obj/effect/spawner/window/westend
dirs = list(WEST)
/obj/effect/spawner/window/southend
dirs = list(SOUTH)
/obj/effect/spawner/window/eastend
dirs = list(EAST)
/obj/effect/spawner/window/horizontal
dirs = list(NORTH,SOUTH)
/obj/effect/spawner/window/vertical
dirs = list(WEST,EAST)
/obj/effect/spawner/window/nwcorner
dirs = list(NORTH,WEST)
/obj/effect/spawner/window/swcorner
dirs = list(SOUTH,WEST)
/obj/effect/spawner/window/secorner
dirs = list(SOUTH,EAST)
/obj/effect/spawner/window/necorner
dirs = list(NORTH,EAST)
/obj/effect/spawner/window/northcap
dirs = list(NORTH,EAST,WEST)
/obj/effect/spawner/window/westcap
dirs = list(WEST,NORTH,SOUTH)
/obj/effect/spawner/window/southcap
dirs = list(SOUTH,EAST,WEST)
/obj/effect/spawner/window/eastcap
dirs = list(EAST,NORTH,SOUTH)
/obj/effect/spawner/window/full
full = TRUE
/obj/effect/spawner/window/full/northend
dirs = list(NORTH)
/obj/effect/spawner/window/full/westend
dirs = list(WEST)
/obj/effect/spawner/window/full/southend
dirs = list(SOUTH)
/obj/effect/spawner/window/full/eastend
dirs = list(EAST)
/obj/effect/spawner/window/full/horizontal
dirs = list(NORTH,SOUTH)
/obj/effect/spawner/window/full/vertical
dirs = list(WEST,EAST)
/obj/effect/spawner/window/full/nwcorner
dirs = list(NORTH,WEST)
/obj/effect/spawner/window/full/swcorner
dirs = list(SOUTH,WEST)
/obj/effect/spawner/window/full/secorner
dirs = list(SOUTH,EAST)
/obj/effect/spawner/window/full/necorner
dirs = list(NORTH,EAST)
/obj/effect/spawner/window/full/northcap
dirs = list(NORTH,EAST,WEST)
/obj/effect/spawner/window/full/westcap
dirs = list(WEST,NORTH,SOUTH)
/obj/effect/spawner/window/full/southcap
dirs = list(SOUTH,EAST,WEST)
/obj/effect/spawner/window/full/eastcap
dirs = list(EAST,NORTH,SOUTH)