mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-21 19:19:12 +01:00
generalized the z-level atmospipes
This commit is contained in:
+37
-175
@@ -1,7 +1,7 @@
|
||||
/////////////////////////
|
||||
// the elusive up pipe //
|
||||
/////////////////////////
|
||||
obj/machinery/atmospherics/pipe/up
|
||||
////////////////////////////
|
||||
// parent class for pipes //
|
||||
////////////////////////////
|
||||
obj/machinery/atmospherics/pipe/zpipe
|
||||
icon = 'code/TriDimension/multiz_pipe.dmi'
|
||||
icon_state = "up"
|
||||
|
||||
@@ -26,7 +26,7 @@ obj/machinery/atmospherics/pipe/up
|
||||
|
||||
level = 1
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/New()
|
||||
obj/machinery/atmospherics/pipe/zpipe/New()
|
||||
..()
|
||||
switch(dir)
|
||||
if(SOUTH)
|
||||
@@ -48,7 +48,7 @@ obj/machinery/atmospherics/pipe/up/New()
|
||||
initialize()
|
||||
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/hide(var/i)
|
||||
obj/machinery/atmospherics/pipe/zpipe/hide(var/i)
|
||||
if(level == 1 && istype(loc, /turf/simulated))
|
||||
invisibility = i ? 101 : 0
|
||||
update_icon()
|
||||
@@ -59,7 +59,7 @@ obj/machinery/atmospherics/pipe/up/process()
|
||||
else
|
||||
. = PROCESS_KILL
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/check_pressure(pressure)
|
||||
obj/machinery/atmospherics/pipe/zpipe/check_pressure(pressure)
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
var/pressure_difference = pressure - environment.return_pressure()
|
||||
@@ -74,7 +74,7 @@ obj/machinery/atmospherics/pipe/up/check_pressure(pressure)
|
||||
|
||||
else return 1
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/proc/burst()
|
||||
obj/machinery/atmospherics/pipe/zpipe/proc/burst()
|
||||
src.visible_message("\red \bold [src] bursts!");
|
||||
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
|
||||
var/datum/effect/effect/system/smoke_spread/smoke = new
|
||||
@@ -82,42 +82,48 @@ obj/machinery/atmospherics/pipe/up/proc/burst()
|
||||
smoke.start()
|
||||
del(src)
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/proc/normalize_dir()
|
||||
obj/machinery/atmospherics/pipe/zpipe/proc/normalize_dir()
|
||||
if(dir==3)
|
||||
dir = 1
|
||||
else if(dir==12)
|
||||
dir = 4
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/Del()
|
||||
obj/machinery/atmospherics/pipe/zpipe/Del()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
..()
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/pipeline_expansion()
|
||||
obj/machinery/atmospherics/pipe/zpipe/pipeline_expansion()
|
||||
return list(node1, node2)
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/update_icon()
|
||||
/* if(node1&&node2)
|
||||
var/C = ""
|
||||
icon_state = "intact[C][invisibility ? "-f" : "" ]"
|
||||
obj/machinery/atmospherics/pipe/zpipe/update_icon()
|
||||
return
|
||||
|
||||
//var/node1_direction = get_dir(src, node1)
|
||||
//var/node2_direction = get_dir(src, node2)
|
||||
obj/machinery/atmospherics/pipe/zpipe/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node1 = null
|
||||
|
||||
//dir = node1_direction|node2_direction
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node2 = null
|
||||
|
||||
else
|
||||
if(!node1&&!node2)
|
||||
world << "up-pipe deleted by update_icon()"
|
||||
del(src) //TODO: silent deleting looks weird
|
||||
var/have_node1 = node1?1:0
|
||||
var/have_node2 = node2?1:0
|
||||
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"*/
|
||||
return null
|
||||
/////////////////////////
|
||||
// the elusive up pipe //
|
||||
/////////////////////////
|
||||
obj/machinery/atmospherics/pipe/zpipe/up
|
||||
icon = 'code/TriDimension/multiz_pipe.dmi'
|
||||
icon_state = "up"
|
||||
|
||||
name = "upwards pipe"
|
||||
desc = "A pipe segment to connect upwards."
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/initialize()
|
||||
obj/machinery/atmospherics/pipe/zpipe/up/initialize()
|
||||
normalize_dir()
|
||||
var/node1_dir
|
||||
|
||||
@@ -137,153 +143,26 @@ obj/machinery/atmospherics/pipe/up/initialize()
|
||||
var/turf/above = locate(src.x, src.y, controler.up_target)
|
||||
if(above)
|
||||
for(var/obj/machinery/atmospherics/target in above)
|
||||
if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/down))
|
||||
if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/zpipe/down))
|
||||
node2 = target
|
||||
break
|
||||
|
||||
|
||||
var/turf/T = src.loc // hide if turf is not intact
|
||||
hide(T.intact)
|
||||
update_icon()
|
||||
//update_icon()
|
||||
|
||||
obj/machinery/atmospherics/pipe/up/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node1 = null
|
||||
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node2 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
|
||||
|
||||
///////////////////////
|
||||
// and the down pipe //
|
||||
///////////////////////
|
||||
|
||||
obj/machinery/atmospherics/pipe/down
|
||||
obj/machinery/atmospherics/pipe/zpipe/down
|
||||
icon = 'code/TriDimension/multiz_pipe.dmi'
|
||||
icon_state = "down"
|
||||
|
||||
name = "downwards pipe"
|
||||
desc = "A pipe segment to connect downwards."
|
||||
|
||||
volume = 70
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH
|
||||
|
||||
var/obj/machinery/atmospherics/node1 //connection on the same Z
|
||||
var/obj/machinery/atmospherics/node2 //connection on the other Z
|
||||
|
||||
var/minimum_temperature_difference = 300
|
||||
var/thermal_conductivity = 0 //WALL_HEAT_TRANSFER_COEFFICIENT No
|
||||
|
||||
var/maximum_pressure = 70*ONE_ATMOSPHERE
|
||||
var/fatigue_pressure = 55*ONE_ATMOSPHERE
|
||||
alert_pressure = 55*ONE_ATMOSPHERE
|
||||
|
||||
|
||||
level = 1
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/New()
|
||||
..()
|
||||
switch(dir)
|
||||
if(SOUTH)
|
||||
initialize_directions = SOUTH
|
||||
if(NORTH)
|
||||
initialize_directions = NORTH
|
||||
if(WEST)
|
||||
initialize_directions = WEST
|
||||
if(EAST)
|
||||
initialize_directions = EAST
|
||||
if(NORTHEAST)
|
||||
initialize_directions = NORTH
|
||||
if(NORTHWEST)
|
||||
initialize_directions = WEST
|
||||
if(SOUTHEAST)
|
||||
initialize_directions = EAST
|
||||
if(SOUTHWEST)
|
||||
initialize_directions = SOUTH
|
||||
initialize()
|
||||
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/hide(var/i)
|
||||
if(level == 1 && istype(loc, /turf/simulated))
|
||||
invisibility = i ? 101 : 0
|
||||
update_icon()
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/process()
|
||||
if(!parent) //This should cut back on the overhead calling build_network thousands of times per cycle
|
||||
..()
|
||||
else
|
||||
. = PROCESS_KILL
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/check_pressure(pressure)
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
var/pressure_difference = pressure - environment.return_pressure()
|
||||
|
||||
if(pressure_difference > maximum_pressure)
|
||||
burst()
|
||||
|
||||
else if(pressure_difference > fatigue_pressure)
|
||||
//TODO: leak to turf, doing pfshhhhh
|
||||
if(prob(5))
|
||||
burst()
|
||||
|
||||
else return 1
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/proc/burst()
|
||||
src.visible_message("\red \bold [src] bursts!");
|
||||
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
|
||||
var/datum/effect/effect/system/smoke_spread/smoke = new
|
||||
smoke.set_up(1,0, src.loc, 0)
|
||||
smoke.start()
|
||||
del(src)
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/proc/normalize_dir()
|
||||
if(dir==3)
|
||||
dir = 1
|
||||
else if(dir==12)
|
||||
dir = 4
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/Del()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
..()
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/pipeline_expansion()
|
||||
return list(node1, node2)
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/update_icon()
|
||||
/*
|
||||
if(node1&&node2)
|
||||
var/C = ""
|
||||
icon_state = "intact[C][invisibility ? "-f" : "" ]"
|
||||
|
||||
//var/node1_direction = get_dir(src, node1)
|
||||
//var/node2_direction = get_dir(src, node2)
|
||||
|
||||
//dir = node1_direction|node2_direction
|
||||
|
||||
else
|
||||
if(!node1&&!node2)
|
||||
del(src) //TODO: silent deleting looks weird
|
||||
var/have_node1 = node1?1:0
|
||||
var/have_node2 = node2?1:0
|
||||
icon_state = "exposed[have_node1][have_node2][invisibility ? "-f" : "" ]"*/
|
||||
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/initialize()
|
||||
obj/machinery/atmospherics/pipe/zpipe/down/initialize()
|
||||
normalize_dir()
|
||||
var/node1_dir
|
||||
|
||||
@@ -303,27 +182,10 @@ obj/machinery/atmospherics/pipe/down/initialize()
|
||||
var/turf/below = locate(src.x, src.y, controler.down_target)
|
||||
if(below)
|
||||
for(var/obj/machinery/atmospherics/target in below)
|
||||
if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/up))
|
||||
if(target.initialize_directions && istype(target, /obj/machinery/atmospherics/pipe/zpipe/up))
|
||||
node2 = target
|
||||
break
|
||||
|
||||
|
||||
var/turf/T = src.loc // hide if turf is not intact
|
||||
hide(T.intact)
|
||||
update_icon()
|
||||
//update_icon()
|
||||
|
||||
obj/machinery/atmospherics/pipe/down/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node1 = null
|
||||
|
||||
if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node2 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
hide(T.intact)
|
||||
@@ -28,7 +28,7 @@
|
||||
if(A.density)
|
||||
blocked = 1
|
||||
break
|
||||
if(istype(A, /obj/machinery/atmospherics/pipe/up) && istype(AM,/obj/item/pipe))
|
||||
if(istype(A, /obj/machinery/atmospherics/pipe/zpipe/up) && istype(AM,/obj/item/pipe))
|
||||
blocked = 1
|
||||
break
|
||||
if(istype(A, /obj/structure/disposalpipe/up) && istype(AM,/obj/item/pipe))
|
||||
|
||||
@@ -89,9 +89,9 @@ Buildable meters
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/cap))
|
||||
src.pipe_type = PIPE_CAP
|
||||
///// Z-Level stuff
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/up))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/zpipe/up))
|
||||
src.pipe_type = PIPE_UP
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/down))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/zpipe/down))
|
||||
src.pipe_type = PIPE_DOWN
|
||||
///// Z-Level stuff
|
||||
else
|
||||
@@ -617,7 +617,7 @@ Buildable meters
|
||||
C.node.build_network()
|
||||
///// Z-Level stuff
|
||||
if(PIPE_UP) //volume pump
|
||||
var/obj/machinery/atmospherics/pipe/up/P = new(src.loc)
|
||||
var/obj/machinery/atmospherics/pipe/zpipe/up/P = new(src.loc)
|
||||
P.dir = dir
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
@@ -633,7 +633,7 @@ Buildable meters
|
||||
P.node2.initialize()
|
||||
P.node2.build_network()
|
||||
if(PIPE_DOWN) //volume pump
|
||||
var/obj/machinery/atmospherics/pipe/down/P = new(src.loc)
|
||||
var/obj/machinery/atmospherics/pipe/zpipe/down/P = new(src.loc)
|
||||
P.dir = dir
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
|
||||
Reference in New Issue
Block a user