mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
113 lines
3.0 KiB
Plaintext
113 lines
3.0 KiB
Plaintext
/turf/proc/CanZPass(atom/A, direction)
|
|
if(z == A.z) //moving FROM this turf
|
|
return direction == UP //can't go below
|
|
else
|
|
if(direction == UP) //on a turf below, trying to enter
|
|
return 0
|
|
if(direction == DOWN) //on a turf above, trying to enter
|
|
return !density
|
|
|
|
/turf/simulated/open/CanZPass(atom, direction)
|
|
return 1
|
|
|
|
/turf/space/CanZPass(atom, direction)
|
|
return 1
|
|
|
|
/turf/simulated/open
|
|
name = "open space"
|
|
icon = 'icons/turf/space.dmi'
|
|
icon_state = ""
|
|
layer = 0
|
|
density = 0
|
|
pathweight = 100000 //Seriously, don't try and path over this one numbnuts
|
|
|
|
var/turf/below
|
|
|
|
/turf/simulated/open/post_change()
|
|
..()
|
|
update()
|
|
|
|
/turf/simulated/open/initialize()
|
|
..()
|
|
ASSERT(HasBelow(z))
|
|
update()
|
|
|
|
/turf/simulated/open/Entered(var/atom/movable/mover)
|
|
..()
|
|
mover.fall()
|
|
|
|
/turf/simulated/open/proc/update()
|
|
below = GetBelow(src)
|
|
turf_changed_event.register(below, src, /turf/simulated/open/update_icon)
|
|
var/turf/simulated/T = get_step(src,NORTH)
|
|
if(T)
|
|
turf_changed_event.register(T, src, /turf/simulated/open/update_icon)
|
|
levelupdate()
|
|
for(var/atom/movable/A in src)
|
|
A.fall()
|
|
update_icon()
|
|
|
|
// override to make sure nothing is hidden
|
|
/turf/simulated/open/levelupdate()
|
|
for(var/obj/O in src)
|
|
O.hide(0)
|
|
|
|
/turf/simulated/open/update_icon()
|
|
if(below)
|
|
underlays = list(image(icon = below.icon, icon_state = below.icon_state))
|
|
underlays += below.overlays.Copy()
|
|
|
|
var/list/noverlays = list()
|
|
if(!istype(below,/turf/space))
|
|
noverlays += image(icon =icon, icon_state = "empty", layer = 2.2)
|
|
|
|
var/turf/simulated/T = get_step(src,NORTH)
|
|
if(istype(T) && !istype(T,/turf/simulated/open))
|
|
noverlays += image(icon ='icons/turf/cliff.dmi', icon_state = "metal", layer = 2.2)
|
|
|
|
var/obj/structure/stairs/S = locate() in below
|
|
if(S && S.loc == below)
|
|
var/image/I = image(icon = S.icon, icon_state = "below", dir = S.dir, layer = 2.2)
|
|
I.pixel_x = S.pixel_x
|
|
I.pixel_y = S.pixel_y
|
|
noverlays += I
|
|
|
|
overlays = noverlays
|
|
|
|
// Straight copy from space.
|
|
/turf/simulated/open/attackby(obj/item/C as obj, mob/user as mob)
|
|
if (istype(C, /obj/item/stack/rods))
|
|
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
|
if(L)
|
|
return
|
|
var/obj/item/stack/rods/R = C
|
|
if (R.use(1))
|
|
user << "<span class='notice'>Constructing support lattice ...</span>"
|
|
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
|
ReplaceWithLattice()
|
|
return
|
|
|
|
if (istype(C, /obj/item/stack/tile/floor))
|
|
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
|
|
if(L)
|
|
var/obj/item/stack/tile/floor/S = C
|
|
if (S.get_amount() < 1)
|
|
return
|
|
qdel(L)
|
|
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
|
|
S.use(1)
|
|
ChangeTurf(/turf/simulated/floor/airless)
|
|
return
|
|
else
|
|
user << "<span class='warning'>The plating is going to need some support.</span>"
|
|
|
|
//To lay cable.
|
|
if(istype(C, /obj/item/stack/cable_coil))
|
|
var/obj/item/stack/cable_coil/coil = C
|
|
coil.turf_place(src, user)
|
|
return
|
|
return
|
|
|
|
//Most things use is_plating to test if there is a cover tile on top (like regular floors)
|
|
/turf/simulated/open/is_plating()
|
|
return 1 |