forked from Sandstorm-Station/Sandstorm-Station-13
-
-
Notifications
You must be signed in to change notification settings - Fork 283
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bluespace pipe dispenser and sprite previews, isn't it nice?
- Loading branch information
Showing
17 changed files
with
295 additions
and
11 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
/obj/item/pipe/bluespace | ||
pipe_type = /obj/machinery/atmospherics/pipe/bluespace | ||
var/bluespace_network_name = "default" | ||
icon_state = "bluespace" | ||
desc = "Transmits gas across large distances of space. Developed using bluespace technology. Use a multitool on it to set its network." | ||
|
||
/obj/item/pipe/bluespace/attackby(obj/item/W, mob/user, params) | ||
if(istype(W, /obj/item/multitool)) | ||
var/new_name = input(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name) as text|null | ||
if(!isnull(new_name)) | ||
bluespace_network_name = new_name | ||
else | ||
return | ||
|
||
/obj/item/pipe/bluespace/make_from_existing(obj/machinery/atmospherics/pipe/bluespace/make_from) | ||
bluespace_network_name = make_from.bluespace_network_name | ||
return ..() | ||
|
||
/obj/item/pipe/bluespace/build_pipe(obj/machinery/atmospherics/pipe/bluespace/A) | ||
A.bluespace_network_name = bluespace_network_name | ||
return ..() | ||
|
||
/obj/item/pipe/bluespace/directional | ||
RPD_type = PIPE_UNARY |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
/* | ||
CONTAINS: | ||
BSRPD | ||
*/ | ||
|
||
#define ATMOS_CATEGORY 0 | ||
#define DISPOSALS_CATEGORY 1 | ||
#define TRANSIT_CATEGORY 2 | ||
|
||
#define BUILD_MODE (1<<0) | ||
#define WRENCH_MODE (1<<1) | ||
#define DESTROY_MODE (1<<2) | ||
#define PAINT_MODE (1<<3) | ||
|
||
|
||
GLOBAL_LIST_INIT(bsatmos_pipe_recipes, list( | ||
"Pipes" = list( | ||
new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/simple), | ||
new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/manifold), | ||
new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/manifold4w), | ||
new /datum/pipe_info/pipe("Layer Manifold", /obj/machinery/atmospherics/pipe/layer_manifold), | ||
new /datum/pipe_info/pipe("Bluespace Pipe", /obj/machinery/atmospherics/pipe/bluespace), | ||
), | ||
"Devices" = list( | ||
new /datum/pipe_info/pipe("Connector", /obj/machinery/atmospherics/components/unary/portables_connector), | ||
new /datum/pipe_info/pipe("Gas Pump", /obj/machinery/atmospherics/components/binary/pump), | ||
new /datum/pipe_info/pipe("Volume Pump", /obj/machinery/atmospherics/components/binary/volume_pump), | ||
new /datum/pipe_info/pipe("Gas Filter", /obj/machinery/atmospherics/components/trinary/filter), | ||
new /datum/pipe_info/pipe("Gas Mixer", /obj/machinery/atmospherics/components/trinary/mixer), | ||
new /datum/pipe_info/pipe("Passive Gate", /obj/machinery/atmospherics/components/binary/passive_gate), | ||
new /datum/pipe_info/pipe("Injector", /obj/machinery/atmospherics/components/unary/outlet_injector), | ||
new /datum/pipe_info/pipe("Scrubber", /obj/machinery/atmospherics/components/unary/vent_scrubber), | ||
new /datum/pipe_info/pipe("Unary Vent", /obj/machinery/atmospherics/components/unary/vent_pump), | ||
new /datum/pipe_info/pipe("Passive Vent", /obj/machinery/atmospherics/components/unary/passive_vent), | ||
new /datum/pipe_info/pipe("Manual Valve", /obj/machinery/atmospherics/components/binary/valve), | ||
new /datum/pipe_info/pipe("Digital Valve", /obj/machinery/atmospherics/components/binary/valve/digital), | ||
new /datum/pipe_info/pipe("Relief Valve (Binary)", /obj/machinery/atmospherics/components/binary/relief_valve), | ||
new /datum/pipe_info/pipe("Relief Valve (Unary)", /obj/machinery/atmospherics/components/unary/relief_valve), | ||
new /datum/pipe_info/meter("Meter"), | ||
), | ||
"Heat Exchange" = list( | ||
new /datum/pipe_info/pipe("Pipe", /obj/machinery/atmospherics/pipe/heat_exchanging/simple), | ||
new /datum/pipe_info/pipe("Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold), | ||
new /datum/pipe_info/pipe("4-Way Manifold", /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w), | ||
new /datum/pipe_info/pipe("Junction", /obj/machinery/atmospherics/pipe/heat_exchanging/junction), | ||
new /datum/pipe_info/pipe("Heat Exchanger", /obj/machinery/atmospherics/components/unary/heat_exchanger), | ||
) | ||
)) | ||
|
||
// SKYRAT CHANGE: Made BSRPD into a subtype of RPD, additionally made it work at range. | ||
/obj/item/pipe_dispenser/bluespace | ||
name = "Bluespace Rapid Piping Device (BSRPD)" | ||
desc = "A device used to rapidly pipe things at a distance." | ||
icon = 'sandcode/icons/obj/tools.dmi' | ||
icon_state = "bsrpd" | ||
lefthand_file = 'sandcode/icons/mob/inhands/equipment/tools_lefthand.dmi' | ||
righthand_file = 'sandcode/icons/mob/inhands/equipment/tools_righthand.dmi' | ||
custom_materials = list(/datum/material/iron=75000, /datum/material/glass=37500, /datum/material/bluespace=1000) | ||
has_bluespace_pipe = TRUE | ||
|
||
/obj/item/pipe_dispenser/bluespace/afterattack(atom/target, mob/user, proximity_flag, click_parameters) | ||
if(proximity_flag) | ||
return // this will be handled in pre_attack in RPD.dm | ||
user.Beam(target, icon_state = "rped_upgrade", time = 5) | ||
playsound(src, 'sound/items/pshoom.ogg', 30, TRUE) | ||
dispense(target, user) | ||
|
||
// End skyrat edit | ||
#undef ATMOS_CATEGORY | ||
#undef DISPOSALS_CATEGORY | ||
#undef TRANSIT_CATEGORY | ||
|
||
#undef BUILD_MODE | ||
#undef DESTROY_MODE | ||
#undef PAINT_MODE | ||
#undef WRENCH_MODE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/obj/item/borg/upgrade/bsrpd | ||
name = "engineering cyborg bluespace RPD" | ||
desc = "A bluespace RPD replacement for the engineering module's standard RPD." | ||
icon_state = "cyborg_upgrade3" | ||
require_module = 1 | ||
module_type = list(/obj/item/robot_module/engineering) | ||
|
||
/obj/item/borg/upgrade/bsrpd/action(mob/living/silicon/robot/R, user = usr) | ||
. = ..() | ||
if(.) | ||
var/obj/item/pipe_dispenser/PD = locate() in R | ||
var/obj/item/pipe_dispenser/bluespace/BD = locate() in R // Skyrat edit | ||
if(!PD) | ||
PD = locate() in R.module | ||
if(!BD) | ||
BD = locate() in R.module //There's gotta be a smarter way to do this. | ||
if(BD) | ||
to_chat(user, "<span class='warning'>This unit is already equipped with a BSRPD module.</span>") | ||
return FALSE | ||
|
||
BD = new(R.module) | ||
qdel(PD) | ||
R.module.basic_modules += BD | ||
R.module.add_module(BD, FALSE, TRUE) | ||
|
||
/obj/item/borg/upgrade/bsrpd/deactivate(mob/living/silicon/robot/R, user = usr) | ||
. = ..() | ||
if (.) | ||
for(var/obj/item/pipe_dispenser/bluespace/BD in R.module) // Skyrat edit | ||
R.module.remove_module(BD, TRUE) | ||
|
||
var/obj/item/pipe_dispenser/PD = new (R.module) | ||
R.module.basic_modules += PD | ||
R.module.add_module(PD, FALSE, TRUE) |
103 changes: 103 additions & 0 deletions
103
sandcode/code/modules/atmospherics/machinery/pipes/bluespace.dm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
GLOBAL_LIST_EMPTY(bluespace_pipe_networks) | ||
/obj/machinery/atmospherics/pipe/bluespace | ||
name = "bluespace pipe" | ||
desc = "Transmits gas across large distances of space. Developed using bluespace technology. Use a multitool on it to set its network." | ||
icon = 'sandcode/icons/obj/atmospherics/pipes/bluespace.dmi' | ||
icon_state = "blue_map-2" | ||
pipe_state = "bluespace" | ||
dir = SOUTH | ||
initialize_directions = SOUTH | ||
device_type = UNARY | ||
can_buckle = FALSE | ||
construction_type = /obj/item/pipe/bluespace/directional | ||
var/bluespace_network_name | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/New() | ||
icon_state = "map" | ||
if(bluespace_network_name) // in case someone maps one in for some reason | ||
if(!GLOB.bluespace_pipe_networks[bluespace_network_name]) | ||
GLOB.bluespace_pipe_networks[bluespace_network_name] = list() | ||
GLOB.bluespace_pipe_networks[bluespace_network_name] |= src | ||
..() | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/on_construction() | ||
. = ..() | ||
if(bluespace_network_name) | ||
if(!GLOB.bluespace_pipe_networks[bluespace_network_name]) | ||
GLOB.bluespace_pipe_networks[bluespace_network_name] = list() | ||
GLOB.bluespace_pipe_networks[bluespace_network_name] |= src | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/Destroy() | ||
if(GLOB.bluespace_pipe_networks[bluespace_network_name]) | ||
GLOB.bluespace_pipe_networks[bluespace_network_name] -= src | ||
for(var/p in GLOB.bluespace_pipe_networks[bluespace_network_name]) | ||
var/obj/machinery/atmospherics/pipe/bluespace/P = p | ||
QDEL_NULL(P.parent) | ||
P.build_network() | ||
return ..() | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/examine(user) | ||
. = ..() | ||
to_chat(user, "<span class='notice'>This one is connected to the \"[html_encode(bluespace_network_name)]\" network</span>") | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/SetInitDirections() | ||
initialize_directions = dir | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/pipeline_expansion() | ||
return ..() + GLOB.bluespace_pipe_networks[bluespace_network_name] - src | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/hide() | ||
update_icon() | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/update_icon(showpipe) | ||
underlays.Cut() | ||
|
||
var/turf/T = loc | ||
if(level == 2 || !T.intact) | ||
icon_state = "blue_map-2" | ||
showpipe = TRUE | ||
plane = GAME_PLANE | ||
else | ||
showpipe = FALSE | ||
plane = FLOOR_PLANE | ||
|
||
if(!showpipe) | ||
return //no need to update the pipes if they aren't showing | ||
/* This shit aint in here | ||
var/connected = 0 //Direction bitset | ||
for(var/i in 1 to device_type) //adds intact pieces | ||
if(nodes[i]) | ||
connected |= icon_addintact(nodes[i]) | ||
icon_addbroken(connected) //adds broken pieces//adds broken pieces | ||
*/ | ||
if(piping_layer == 1) | ||
icon_state = "blue_map-1" | ||
else if(piping_layer == 2) | ||
icon_state = "blue_map-2" | ||
else if(piping_layer == 3) | ||
icon_state = "blue_map-3" | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/paint() | ||
return FALSE | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/attackby(obj/item/W, mob/user, params) | ||
if(istype(W, /obj/item/multitool)) | ||
var/new_name = input(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name) as text|null | ||
if(!isnull(new_name)) | ||
bluespace_network_name = new_name | ||
else | ||
return | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/layer1 | ||
piping_layer = 1 | ||
icon_state = "blue_map-1" | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/layer2 | ||
piping_layer = 2 | ||
icon_state = "blue_map-2" | ||
|
||
/obj/machinery/atmospherics/pipe/bluespace/layer3 | ||
piping_layer = 3 | ||
icon_state = "blue_map-3" |
8 changes: 8 additions & 0 deletions
8
sandcode/code/modules/research/designs/mechfabricator_designs.dm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
/datum/design/borg_upgrade_bsrpd | ||
name = "Cyborg Upgrade (Bluespace RPD)" | ||
id = "borg_upgrade_bsrpd" | ||
build_type = MECHFAB | ||
build_path = /obj/item/borg/upgrade/bsrpd | ||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 1000, /datum/material/bluespace = 500) | ||
construction_time = 100 | ||
category = list("Cyborg Upgrade Modules") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
/datum/design/bsrpd | ||
name = "Bluespace Rapid Pipe Dispenser" | ||
desc = "A tool that can construct and deconstruct pipes on the fly." | ||
id = "bsrpd" | ||
build_type = PROTOLATHE | ||
materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500, /datum/material/bluespace = 1000) | ||
build_path = /obj/item/pipe_dispenser/bluespace // Skyrat edit | ||
category = list("Tool Designs") | ||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.