generalized the z-level atmospipes

This commit is contained in:
LordBraindead
2014-01-19 12:00:22 +01:00
parent 908003d420
commit d5eb58d8d6
3 changed files with 42 additions and 180 deletions
+37 -175
View File
@@ -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)
+1 -1
View File
@@ -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))
+4 -4
View File
@@ -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)