mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
[MIRROR] Smart Pipes : Mapping Revolution [Golden Edge Awards 2020 Edition] (#764)
* Smart Pipes : Mapping Revolution [Golden Edge Awards 2020 Edition] (#53530) Adds a mapping helper for piping, it works on all layers, works on all colors, and it autoconnects to other pipe devices. making it extremely useful. Making mapping less of a massive fucking clusterfuck of burnout is always good. Mappers can now use Smart Pipes, pipes that autoconnect to other pipes, like redstone! MAPPERS ONLY! * Smart Pipes : Mapping Revolution [Golden Edge Awards 2020 Edition] Co-authored-by: EdgeLordExe <42111655+EdgeLordExe@users.noreply.github.com>
This commit is contained in:
@@ -381,6 +381,77 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
|
||||
log_mapping("[src] at [x],[y] could not find an airlock on current turf, cannot place paper note.")
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mapping_helpers/simple_pipes
|
||||
name = "Simple Pipes"
|
||||
late = TRUE
|
||||
icon_state = "pipe-3"
|
||||
var/piping_layer = 3
|
||||
var/pipe_color = ""
|
||||
var/connection_num = 0
|
||||
var/hide = FALSE
|
||||
|
||||
/obj/effect/mapping_helpers/simple_pipes/LateInitialize()
|
||||
var/list/connections = list( dir2text(NORTH) = FALSE, dir2text(SOUTH) = FALSE , dir2text(EAST) = FALSE , dir2text(WEST) = FALSE)
|
||||
var/list/valid_connectors = typecacheof(/obj/machinery/atmospherics)
|
||||
for(var/direction in connections)
|
||||
var/turf/T = get_step(src, text2dir(direction))
|
||||
for(var/machine_type_owo in T.contents)
|
||||
if(istype(machine_type_owo,type))
|
||||
var/obj/effect/mapping_helpers/simple_pipes/found = machine_type_owo
|
||||
if(found.piping_layer != piping_layer)
|
||||
continue
|
||||
connections[direction] = TRUE
|
||||
connection_num++
|
||||
break
|
||||
if(!is_type_in_typecache(machine_type_owo,valid_connectors))
|
||||
continue
|
||||
var/obj/machinery/atmospherics/machine = machine_type_owo
|
||||
|
||||
if(machine.piping_layer != piping_layer)
|
||||
continue
|
||||
|
||||
if(angle2dir(dir2angle(text2dir(direction))+180) & machine.initialize_directions)
|
||||
connections[direction] = TRUE
|
||||
connection_num++
|
||||
break
|
||||
|
||||
switch(connection_num)
|
||||
if(1)
|
||||
for(var/direction in connections)
|
||||
if(connections[direction] != TRUE)
|
||||
continue
|
||||
spawn_pipe(direction,/obj/machinery/atmospherics/pipe/simple)
|
||||
if(2)
|
||||
for(var/direction in connections)
|
||||
if(connections[direction] != TRUE)
|
||||
continue
|
||||
//Detects straight pipes connected from east to west , north to south etc.
|
||||
if(connections[dir2text(angle2dir(dir2angle(text2dir(direction))+180))] == TRUE)
|
||||
spawn_pipe(direction,/obj/machinery/atmospherics/pipe/simple)
|
||||
break
|
||||
|
||||
for(var/direction2 in connections - direction)
|
||||
if(connections[direction2] != TRUE)
|
||||
continue
|
||||
spawn_pipe(dir2text(text2dir(direction)+text2dir(direction2)),/obj/machinery/atmospherics/pipe/simple)
|
||||
if(3)
|
||||
for(var/direction in connections)
|
||||
if(connections[direction] == FALSE)
|
||||
spawn_pipe(direction,/obj/machinery/atmospherics/pipe/manifold)
|
||||
if(4)
|
||||
spawn_pipe(dir2text(NORTH),/obj/machinery/atmospherics/pipe/manifold4w)
|
||||
|
||||
qdel(src)
|
||||
|
||||
//spawn pipe
|
||||
/obj/effect/mapping_helpers/simple_pipes/proc/spawn_pipe(direction,type )
|
||||
var/obj/machinery/atmospherics/pipe/pipe = new type(get_turf(src),TRUE,text2dir(direction))
|
||||
pipe.hide = hide
|
||||
pipe.piping_layer = piping_layer
|
||||
pipe.update_layer()
|
||||
pipe.paint(pipe_color)
|
||||
|
||||
|
||||
//This helper applies traits to things on the map directly.
|
||||
/obj/effect/mapping_helpers/trait_injector
|
||||
name = "Trait Injector"
|
||||
@@ -419,3 +490,4 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
|
||||
if(!matches_found)
|
||||
stack_trace("Trait mapper found no targets at ([x], [y], [z]). First Match Only: [first_match_only ? "true" : "false"] target type: [target_type] | target name: [target_name] | trait name: [trait_name]")
|
||||
qdel(src)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user