#define PAINT_MODE -2
#define EATING_MODE -1
#define ATMOS_MODE 0
#define DISPOSALS_MODE 1
#define TRANSIT_MODE 2
/obj/item/weapon/pipe_dispenser
name = "Rapid Piping Device (RPD)"
desc = "A device used to rapidly pipe things."
icon = 'icons/obj/tools.dmi'
icon_state = "rpd"
flags = NOBLUDGEON
force = 10
throwforce = 10
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_NORMAL
matter = list(DEFAULT_WALL_MATERIAL = 50000, "glass" = 25000)
var/datum/effect/effect/system/spark_spread/spark_system
var/working = 0
var/mode = ATMOS_MODE
var/p_dir = NORTH
var/p_flipped = FALSE
var/paint_color="grey"
var/screen = ATMOS_MODE //Starts on the atmos tab.
var/piping_layer = PIPING_LAYER_DEFAULT
var/wrench_mode = FALSE
var/obj/item/weapon/tool/wrench/tool
var/datum/pipe_recipe/recipe
var/static/datum/pipe_recipe/first_atmos
var/static/datum/pipe_recipe/first_disposal
/obj/item/weapon/pipe_dispenser/New()
. = ..()
src.spark_system = new /datum/effect/effect/system/spark_spread
spark_system.set_up(5, 0, src)
spark_system.attach(src)
if(!first_atmos)
first_atmos = atmos_pipe_recipes[atmos_pipe_recipes[1]][1]
if(!first_disposal)
first_disposal = disposal_pipe_recipes[disposal_pipe_recipes[1]][1]
recipe = first_atmos
tool = new /obj/item/weapon/tool/wrench/cyborg(src) // RPDs have wrenches inside of them, so that they can wrench down spawned pipes without being used as superior wrenches themselves.
/obj/item/weapon/pipe_dispenser/Destroy()
qdel(spark_system)
spark_system = null
return ..()
/obj/item/weapon/pipe_dispenser/suicide_act(mob/user)
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
user.visible_message("[user] points the end of the RPD down [TU.his] throat and presses a button! It looks like [TU.hes] trying to commit suicide...")
playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1)
playsound(get_turf(user), 'sound/items/deconstruct.ogg', 50, 1)
return(BRUTELOSS)
/obj/item/weapon/pipe_dispenser/attack_self(mob/user)
src.interact(user)
/obj/item/weapon/pipe_dispenser/interact(mob/user)
var/list/lines = list()
if(mode >= ATMOS_MODE)
lines += "
Direction:
"
var/icon/preview = null
var/icon/previewm = null
if(recipe.icon && recipe.icon_state)
preview = new /icon(recipe.icon, recipe.icon_state)
if (recipe.icon_state_m)
previewm = new /icon(recipe.icon, recipe.icon_state_m)
switch(recipe.dirtype)
if(PIPE_STRAIGHT) // Straight, N-S, W-E
lines += render_dir_img(preview,user,NORTH,"Vertical","↕")
lines += render_dir_img(preview,user,EAST,"Horizontal","↔")
if(PIPE_BENDABLE) // Bent, N-W, N-E etc
lines += render_dir_img(preview,user,NORTH,"Vertical","↕")
lines += render_dir_img(preview,user,EAST,"Horizontal","↔")
lines += "
"
lines += render_dir_img(preview,user,NORTHWEST,"West to North","╝")
lines += render_dir_img(preview,user,NORTHEAST,"North to East","╚")
lines += "
"
lines += render_dir_img(preview,user,SOUTHWEST,"South to West","╗")
lines += render_dir_img(preview,user,SOUTHEAST,"East to South","╔")
if(PIPE_TRINARY) // Manifold
lines += render_dir_img(preview,user,NORTH,"West South East","╦")
lines += render_dir_img(preview,user,EAST,"North West South","╣")
lines += "
"
lines += render_dir_img(preview,user,SOUTH,"East North West","╩")
lines += render_dir_img(preview,user,WEST,"South East North","╠")
if(PIPE_TRIN_M) // Mirrored ones
//each mirror icon is 45 anticlockwise from it's real direction
lines += render_dir_img(preview,user,NORTH,"West South East","╦")
lines += render_dir_img(preview,user,EAST,"North West South","╣")
lines += "
"
lines += render_dir_img(preview,user,SOUTH,"East North West","╩")
lines += render_dir_img(preview,user,WEST,"South East North","╠")
lines += "
"
lines += render_dir_img(previewm,user,SOUTH,"West South East","╦", 1)
lines += render_dir_img(previewm,user,EAST,"North West South","╣", 1)
lines += "
"
lines += render_dir_img(previewm,user,NORTH,"East North West","╩", 1)
lines += render_dir_img(previewm,user,WEST,"South East North","╠", 1)
if(PIPE_DIRECTIONAL) // Stuff with four directions - includes pumps etc.
lines += render_dir_img(preview,user,NORTH,"North","↑")
lines += render_dir_img(preview,user,EAST,"East","→")
lines += render_dir_img(preview,user,SOUTH,"South","↓")
lines += render_dir_img(preview,user,WEST,"West","←")
if(PIPE_ONEDIR) // Single icon_state (eg 4-way manifolds)
lines += render_dir_img(preview,user,SOUTH,"Pipe","↕")
lines += "
"
if(mode == ATMOS_MODE || mode == PAINT_MODE)
lines += "