mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
147 lines
3.1 KiB
Plaintext
147 lines
3.1 KiB
Plaintext
obj/machinery/water/binary
|
|
dir = SOUTH
|
|
initialize_directions = SOUTH|NORTH
|
|
|
|
var/datum/reagents/r1
|
|
var/datum/reagents/r2
|
|
|
|
var/obj/machinery/water/node1
|
|
var/obj/machinery/water/node2
|
|
|
|
var/datum/water/pipe_network/network1
|
|
var/datum/water/pipe_network/network2
|
|
|
|
var/max_volume = 400
|
|
var/max_pressure = 3 * ONE_ATMOSPHERE
|
|
|
|
New()
|
|
..()
|
|
switch(dir)
|
|
if(NORTH)
|
|
initialize_directions = NORTH|SOUTH
|
|
if(SOUTH)
|
|
initialize_directions = NORTH|SOUTH
|
|
if(EAST)
|
|
initialize_directions = EAST|WEST
|
|
if(WEST)
|
|
initialize_directions = EAST|WEST
|
|
r1 = new(max_volume)
|
|
r1.my_atom = src
|
|
r2 = new(max_volume)
|
|
r2.my_atom = src
|
|
|
|
// Housekeeping and pipe network stuff below
|
|
network_expand(datum/water/pipe_network/new_network, obj/machinery/water/pipe/reference)
|
|
if(reference == node1)
|
|
network1 = new_network
|
|
|
|
else if(reference == node2)
|
|
network2 = new_network
|
|
|
|
if(new_network.normal_members.Find(src))
|
|
return 0
|
|
|
|
new_network.normal_members += src
|
|
|
|
return null
|
|
|
|
Del()
|
|
loc = null
|
|
|
|
if(node1)
|
|
node1.disconnect(src)
|
|
del(network1)
|
|
if(node2)
|
|
node2.disconnect(src)
|
|
del(network2)
|
|
|
|
node1 = null
|
|
node2 = null
|
|
|
|
..()
|
|
|
|
initialize()
|
|
if(node1 && node2) return
|
|
|
|
var/node2_connect = dir
|
|
var/node1_connect = turn(dir, 180)
|
|
|
|
for(var/obj/machinery/water/target in get_step(src,node1_connect))
|
|
if(target.initialize_directions & get_dir(target,src))
|
|
node1 = target
|
|
break
|
|
|
|
for(var/obj/machinery/water/target in get_step(src,node2_connect))
|
|
if(target.initialize_directions & get_dir(target,src))
|
|
node2 = target
|
|
break
|
|
|
|
update_icon()
|
|
|
|
build_network()
|
|
if(!network1 && node1)
|
|
network1 = new /datum/water/pipe_network()
|
|
network1.normal_members += src
|
|
network1.build_network(node1, src)
|
|
|
|
if(!network2 && node2)
|
|
network2 = new /datum/water/pipe_network()
|
|
network2.normal_members += src
|
|
network2.build_network(node2, src)
|
|
|
|
|
|
return_network(obj/machinery/water/reference)
|
|
build_network()
|
|
|
|
if(reference==node1)
|
|
return network1
|
|
|
|
if(reference==node2)
|
|
return network2
|
|
|
|
return null
|
|
|
|
reassign_network(datum/water/pipe_network/old_network, datum/water/pipe_network/new_network)
|
|
if(network1 == old_network)
|
|
network1 = new_network
|
|
if(network2 == old_network)
|
|
network2 = new_network
|
|
|
|
return 1
|
|
|
|
return_network_reagents(datum/water/pipe_network/reference)
|
|
var/list/results = list()
|
|
|
|
if(network1 == reference)
|
|
results += r1
|
|
if(network2 == reference)
|
|
results += r2
|
|
|
|
return results
|
|
|
|
disconnect(obj/machinery/water/reference)
|
|
if(reference==node1)
|
|
del(network1)
|
|
node1 = null
|
|
|
|
else if(reference==node2)
|
|
del(network2)
|
|
node2 = null
|
|
|
|
return null
|
|
|
|
proc/return_pressure1()
|
|
return r1.total_volume / r1.maximum_volume * max_pressure
|
|
|
|
proc/return_pressure2()
|
|
return r2.total_volume / r2.maximum_volume * max_pressure
|
|
|
|
proc/mingle_dc1_with_turf()
|
|
mingle_outflow_with_turf(get_turf(src), r1.total_volume,
|
|
turn(dir, 180),
|
|
reagents = r1, pressure = return_pressure1())
|
|
|
|
proc/mingle_dc2_with_turf()
|
|
mingle_outflow_with_turf(get_turf(src), r2.total_volume,
|
|
dir,
|
|
reagents = r2, pressure = return_pressure2()) |