mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
RCD Rework.
RCDs now work on a system of schematics, with an RPD style UI. RPD, RCD, RSF and tile painters all implemented into this new system. (reverted from commitccb9ceb811) (reverted from commit1d9a328ba6)
This commit is contained in:
@@ -98,7 +98,7 @@
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/cap/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pipe_dispenser) || istype(W, /obj/item/device/pipe_painter))
|
||||
if(istype(W, /obj/item/device/rcd/rpd) || istype(W, /obj/item/device/pipe_painter))
|
||||
return // Coloring pipes.
|
||||
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/red))
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/tank/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pipe_dispenser) || istype(W, /obj/item/device/pipe_painter))
|
||||
if(istype(W, /obj/item/device/rcd/rpd) || istype(W, /obj/item/device/pipe_painter))
|
||||
return // Coloring pipes.
|
||||
if (istype(W, /obj/item/device/analyzer) && get_dist(user, src) <= 1)
|
||||
user.visible_message("<span class='attack'>[user] has used [W] on \icon[icon] [src]</span>", "<span class='attack'>You use \the [W] on \icon[icon] [src]</span>")
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
burst_type = /obj/machinery/atmospherics/unary/vent/burstpipe/heat_exchanging
|
||||
|
||||
available_colors = null //Overrides the available colors list from the parent.
|
||||
|
||||
/obj/machinery/atmospherics/pipe/simple/heat_exchanging/getNodeType(var/node_id)
|
||||
return PIPE_TYPE_HE
|
||||
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
var/baseicon=""
|
||||
|
||||
available_colors = list(
|
||||
"grey"=PIPE_COLOR_GREY,
|
||||
"red"=PIPE_COLOR_RED,
|
||||
"blue"=PIPE_COLOR_BLUE,
|
||||
"cyan"=PIPE_COLOR_CYAN,
|
||||
"green"=PIPE_COLOR_GREEN,
|
||||
"yellow"=PIPE_COLOR_YELLOW,
|
||||
"purple"=PIPE_COLOR_PURPLE
|
||||
"grey" = PIPE_COLOR_GREY,
|
||||
"red" = PIPE_COLOR_RED,
|
||||
"blue" = PIPE_COLOR_BLUE,
|
||||
"cyan" = PIPE_COLOR_CYAN,
|
||||
"green" = PIPE_COLOR_GREEN,
|
||||
"yellow" = PIPE_COLOR_YELLOW,
|
||||
"purple" = PIPE_COLOR_PURPLE
|
||||
)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/singularity_pull(/obj/machinery/singularity/S, size)
|
||||
@@ -407,7 +407,7 @@
|
||||
level = 1
|
||||
alpha=128
|
||||
/obj/machinery/atmospherics/pipe/simple/insulated
|
||||
name = "Insulated pipe"
|
||||
name = "\improper Insulated pipe"
|
||||
//icon = 'icons/obj/atmospherics/red_pipe.dmi'
|
||||
icon = 'icons/obj/atmospherics/insulated.dmi'
|
||||
minimum_temperature_difference = 10000
|
||||
@@ -418,8 +418,12 @@
|
||||
alert_pressure = 900000
|
||||
|
||||
available_colors = list(
|
||||
"red"=IPIPE_COLOR_RED,
|
||||
"blue"=IPIPE_COLOR_BLUE
|
||||
"red" = IPIPE_COLOR_RED,
|
||||
"blue" = IPIPE_COLOR_BLUE,
|
||||
"cyan" = PIPE_COLOR_CYAN,
|
||||
"green" = PIPE_COLOR_GREEN,
|
||||
"yellow" = PIPE_COLOR_YELLOW,
|
||||
"purple" = PIPE_COLOR_PURPLE
|
||||
)
|
||||
_color = "red"
|
||||
/obj/machinery/atmospherics/pipe/simple/insulated/visible
|
||||
@@ -595,35 +599,35 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers
|
||||
name = "Scrubbers pipe"
|
||||
name = "\improper Scrubbers pipe"
|
||||
_color = "red"
|
||||
color=PIPE_COLOR_RED
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply
|
||||
name = "Air supply pipe"
|
||||
name = "\improper Air supply pipe"
|
||||
_color = "blue"
|
||||
color=PIPE_COLOR_BLUE
|
||||
/obj/machinery/atmospherics/pipe/manifold/supplymain
|
||||
name = "Main air supply pipe"
|
||||
name = "\improper Main air supply pipe"
|
||||
_color = "purple"
|
||||
color=PIPE_COLOR_PURPLE
|
||||
/obj/machinery/atmospherics/pipe/manifold/general
|
||||
name = "Gas pipe"
|
||||
name = "\improper Gas pipe"
|
||||
_color = "gray"
|
||||
color=PIPE_COLOR_GREY
|
||||
/obj/machinery/atmospherics/pipe/manifold/yellow
|
||||
name = "Air supply pipe"
|
||||
name = "\improper Air supply pipe"
|
||||
_color = "yellow"
|
||||
color=PIPE_COLOR_YELLOW
|
||||
/obj/machinery/atmospherics/pipe/manifold/cyan
|
||||
name = "Air supply pipe"
|
||||
name = "\improper Air supply pipe"
|
||||
_color = "cyan"
|
||||
color=PIPE_COLOR_CYAN
|
||||
/obj/machinery/atmospherics/pipe/manifold/filtering
|
||||
name = "Air filtering pipe"
|
||||
name = "\improper Air filtering pipe"
|
||||
_color = "green"
|
||||
color=PIPE_COLOR_GREEN
|
||||
/obj/machinery/atmospherics/pipe/manifold/insulated
|
||||
name = "Insulated pipe"
|
||||
name = "\improper Insulated pipe"
|
||||
//icon = 'icons/obj/atmospherics/red_pipe.dmi'
|
||||
icon = 'icons/obj/atmospherics/insulated.dmi'
|
||||
icon_state = "manifold"
|
||||
@@ -631,10 +635,16 @@
|
||||
_color = "red"
|
||||
color=IPIPE_COLOR_RED
|
||||
level = 2
|
||||
|
||||
available_colors = list(
|
||||
"red"=IPIPE_COLOR_RED,
|
||||
"blue"=IPIPE_COLOR_BLUE
|
||||
"red" = IPIPE_COLOR_RED,
|
||||
"blue" = IPIPE_COLOR_BLUE,
|
||||
"cyan" = PIPE_COLOR_CYAN,
|
||||
"green" = PIPE_COLOR_GREEN,
|
||||
"yellow" = PIPE_COLOR_YELLOW,
|
||||
"purple" = PIPE_COLOR_PURPLE
|
||||
)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible
|
||||
level = 2
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden
|
||||
@@ -841,40 +851,46 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers
|
||||
name = "Scrubbers pipe"
|
||||
name = "\improper Scrubbers pipe"
|
||||
_color = "red"
|
||||
color=PIPE_COLOR_RED
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supply
|
||||
name = "Air supply pipe"
|
||||
name = "\improper Air supply pipe"
|
||||
_color = "blue"
|
||||
color=PIPE_COLOR_BLUE
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/supplymain
|
||||
name = "Main air supply pipe"
|
||||
name = "\improper Main air supply pipe"
|
||||
_color = "purple"
|
||||
color=PIPE_COLOR_PURPLE
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/general
|
||||
name = "Air supply pipe"
|
||||
name = "\improper Air supply pipe"
|
||||
_color = "gray"
|
||||
color=PIPE_COLOR_GREY
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/yellow
|
||||
name = "Air supply pipe"
|
||||
name = "\improper Air supply pipe"
|
||||
_color = "yellow"
|
||||
color=PIPE_COLOR_YELLOW
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/filtering
|
||||
name = "Air filtering pipe"
|
||||
name = "\improper Air filtering pipe"
|
||||
_color = "green"
|
||||
color=PIPE_COLOR_GREEN
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/insulated
|
||||
icon = 'icons/obj/atmospherics/insulated.dmi'
|
||||
name = "Insulated pipe"
|
||||
name = "\improper Insulated pipe"
|
||||
_color = "red"
|
||||
alert_pressure = 900*ONE_ATMOSPHERE
|
||||
color=IPIPE_COLOR_RED
|
||||
level = 2
|
||||
|
||||
available_colors = list(
|
||||
"red"=IPIPE_COLOR_RED,
|
||||
"blue"=IPIPE_COLOR_BLUE
|
||||
"red" = IPIPE_COLOR_RED,
|
||||
"blue" = IPIPE_COLOR_BLUE,
|
||||
"cyan" = PIPE_COLOR_CYAN,
|
||||
"green" = PIPE_COLOR_GREEN,
|
||||
"yellow" = PIPE_COLOR_YELLOW,
|
||||
"purple" = PIPE_COLOR_PURPLE
|
||||
)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible
|
||||
level = 2
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden
|
||||
@@ -919,7 +935,7 @@
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/pipe_dispenser) || istype(W, /obj/item/device/pipe_painter))
|
||||
if(istype(W, /obj/item/device/rcd/rpd) || istype(W, /obj/item/device/pipe_painter))
|
||||
return // Coloring pipes.
|
||||
|
||||
if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/red))
|
||||
|
||||
@@ -86,7 +86,7 @@ rcd light flash thingy on matter drain
|
||||
for(var/datum/AI_Module/large/disable_rcd/rcdmod in current_modules)
|
||||
if(rcdmod.uses > 0)
|
||||
rcdmod.uses --
|
||||
for(var/obj/item/weapon/rcd/rcd in world)
|
||||
for(var/obj/item/device/rcd/matter/engineering/rcd in world)
|
||||
rcd.disabled = 1
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/tool/rcd/rcd in world)
|
||||
rcd.disabled = 1
|
||||
|
||||
@@ -72,12 +72,12 @@
|
||||
|
||||
/datum/theft_objective/traitor/rcd
|
||||
name = "an RCD"
|
||||
typepath = /obj/item/weapon/rcd
|
||||
typepath = /obj/item/device/rcd/matter/engineering
|
||||
protected_jobs = list("Chief Engineer")
|
||||
|
||||
/datum/theft_objective/traitor/rpd
|
||||
name = "an RPD"
|
||||
typepath = /obj/item/weapon/pipe_dispenser
|
||||
typepath = /obj/item/device/rcd/rpd
|
||||
protected_jobs = list("Chief Engineer", "Atmospherics Technician")
|
||||
|
||||
/datum/theft_objective/traitor/jetpack
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
new /obj/item/clothing/head/welding(), \
|
||||
new /obj/item/device/taperecorder(), \
|
||||
new /obj/item/weapon/chisel(), \
|
||||
new /obj/item/weapon/tile_painter(), \
|
||||
new /obj/item/device/rcd/tile_painter(), \
|
||||
),
|
||||
"Misc_Other"=list(
|
||||
new /obj/item/weapon/rcd_ammo(), \
|
||||
@@ -107,9 +107,9 @@
|
||||
"Hidden_Items" = list(
|
||||
new /obj/item/weapon/flamethrower/full(), \
|
||||
new /obj/item/ammo_storage/box/flare(), \
|
||||
new /obj/item/weapon/rcd(), \
|
||||
new /obj/item/weapon/pipe_dispenser(),\
|
||||
new /obj/item/weapon/rsf(), \
|
||||
new /obj/item/device/rcd/matter/engineering(), \
|
||||
new /obj/item/device/rcd/rpd(),\
|
||||
new /obj/item/device/rcd/matter/rsf(), \
|
||||
new /obj/item/device/radio/electropack(), \
|
||||
new /obj/item/weapon/weldingtool/largetank/empty(), \
|
||||
new /obj/item/weapon/handcuffs(), \
|
||||
|
||||
@@ -1,289 +0,0 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/*
|
||||
CONTAINS:
|
||||
RCD
|
||||
*/
|
||||
/obj/item/weapon/rcd
|
||||
name = "rapid-construction-device (RCD)"
|
||||
desc = "A device used to rapidly build walls/floor."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "rcd"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
force = 10.0
|
||||
throwforce = 10.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
starting_materials = list(MAT_IRON = 50000)
|
||||
w_type = RECYK_ELECTRONIC
|
||||
melt_temperature = MELTPOINT_STEEL // Lots of metal
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
var/datum/effect/effect/system/spark_spread/spark_system
|
||||
var/matter = 0
|
||||
var/max_matter = 30
|
||||
var/working = 0
|
||||
var/mode = 1
|
||||
var/canRwall = 0
|
||||
var/disabled = 0
|
||||
var/airlock_type = /obj/machinery/door/airlock
|
||||
var/floor_cost = 1
|
||||
var/wall_cost = 3
|
||||
var/airlock_cost = 3
|
||||
var/decon_cost = 5
|
||||
|
||||
/obj/item/weapon/rcd/verb/change_airlock_setting()
|
||||
set name = "Change Airlock Setting"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/rcd/verb/change_airlock_setting() called tick#: [world.time]")
|
||||
|
||||
var airlockcat = input(usr, "Select the type of the airlock.") in list("Solid", "Glass")
|
||||
switch(airlockcat)
|
||||
if("Solid")
|
||||
var airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security")
|
||||
switch(airlockpaint)
|
||||
if("Default")
|
||||
airlock_type = /obj/machinery/door/airlock
|
||||
if("Engineering")
|
||||
airlock_type = /obj/machinery/door/airlock/engineering
|
||||
if("Atmospherics")
|
||||
airlock_type = /obj/machinery/door/airlock/atmos
|
||||
if("Security")
|
||||
airlock_type = /obj/machinery/door/airlock/security
|
||||
if("Command")
|
||||
airlock_type = /obj/machinery/door/airlock/command
|
||||
if("Medical")
|
||||
airlock_type = /obj/machinery/door/airlock/medical
|
||||
if("Research")
|
||||
airlock_type = /obj/machinery/door/airlock/research
|
||||
if("Mining")
|
||||
airlock_type = /obj/machinery/door/airlock/mining
|
||||
if("Maintenance")
|
||||
airlock_type = /obj/machinery/door/airlock/maintenance
|
||||
if("External")
|
||||
airlock_type = /obj/machinery/door/airlock/external
|
||||
if("High Security")
|
||||
airlock_type = /obj/machinery/door/airlock/highsecurity
|
||||
|
||||
if("Glass")
|
||||
var airlockpaint = input(usr, "Select the paintjob of the airlock.") in list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining")
|
||||
switch(airlockpaint)
|
||||
if("Default")
|
||||
airlock_type = /obj/machinery/door/airlock/glass
|
||||
if("Engineering")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_engineering
|
||||
if("Atmospherics")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_atmos
|
||||
if("Security")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_security
|
||||
if("Command")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_command
|
||||
if("Medical")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_medical
|
||||
if("Research")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_research
|
||||
if("Mining")
|
||||
airlock_type = /obj/machinery/door/airlock/glass_mining
|
||||
else
|
||||
airlock_type = /obj/machinery/door/airlock
|
||||
|
||||
/obj/item/weapon/rcd/suicide_act(mob/user)
|
||||
viewers(user) << "<span class='danger'>[user] is using the deconstruct function on the [src.name] on \himself! It looks like \he's trying to commit suicide!</span>"
|
||||
return (user.death(1))
|
||||
|
||||
/obj/item/weapon/rcd/New()
|
||||
..()
|
||||
src.spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/rcd/examine(mob/user)
|
||||
..()
|
||||
if(istype(src, /obj/item/weapon/rcd/borg))
|
||||
user << "It's been set to draw power from a power cell."
|
||||
else
|
||||
user << "It currently holds [matter]/[max_matter] matter-units."
|
||||
|
||||
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if((matter + 10) > max_matter)
|
||||
user << "<span class='notice'>The RCD can't hold any more matter-units.</span>"
|
||||
return
|
||||
qdel(W)
|
||||
matter += 10
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 20, 1)
|
||||
user << "<span class='notice'>The RCD now holds [matter]/[max_matter] matter-units.</span>"
|
||||
return
|
||||
if(isscrewdriver(W))
|
||||
user << "<span class='notice'>You unscrew the access panel and release the cartridge chamber.</span>"
|
||||
while(matter>=10)
|
||||
new /obj/item/weapon/rcd_ammo(user.loc)
|
||||
matter -= 10
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/rcd/attack_self(mob/user)
|
||||
//Change the mode
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
switch(mode)
|
||||
if(1)
|
||||
mode = 2
|
||||
user << "<span class='notice'>Changed mode to 'Airlock'</span>"
|
||||
if(prob(20))
|
||||
src.spark_system.start()
|
||||
return
|
||||
if(2)
|
||||
mode = 3
|
||||
user << "<span class='notice'>Changed mode to 'Deconstruct'</span>"
|
||||
if(prob(20))
|
||||
src.spark_system.start()
|
||||
return
|
||||
if(3)
|
||||
mode = 1
|
||||
user << "<span class='notice'>Changed mode to 'Floor & Walls'</span>"
|
||||
if(prob(20))
|
||||
src.spark_system.start()
|
||||
return
|
||||
|
||||
/obj/item/weapon/rcd/proc/activate()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/rcd/proc/activate() called tick#: [world.time]")
|
||||
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
|
||||
/obj/item/weapon/rcd/afterattack(atom/A, mob/user)
|
||||
if(disabled && !isrobot(user))
|
||||
return 0
|
||||
if(get_dist(user,A)>1)
|
||||
return 0
|
||||
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
|
||||
return 0
|
||||
if(!(istype(A, /turf) || istype(A, /obj/machinery/door/airlock)))
|
||||
return 0
|
||||
|
||||
switch(mode)
|
||||
if(1)
|
||||
if(istype(A, /turf/space))
|
||||
if(useResource(floor_cost, user))
|
||||
user << "Building Floor..."
|
||||
activate()
|
||||
A:ChangeTurf(/turf/simulated/floor/plating/airless)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
if(checkResource(wall_cost, user))
|
||||
user << "Building Wall ..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 20))
|
||||
if(!useResource(wall_cost, user)) return 0
|
||||
activate()
|
||||
A:ChangeTurf(/turf/simulated/wall)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if(2)
|
||||
if(checkResource(airlock_cost, user))
|
||||
user << "Building Airlock..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 50))
|
||||
if(!useResource(airlock_cost, user)) return 0
|
||||
if(locate(/obj/machinery/door/airlock) in A) return 0
|
||||
activate()
|
||||
var/obj/machinery/door/airlock/T = new airlock_type( A )
|
||||
T.autoclose = 1
|
||||
return 1
|
||||
return 0
|
||||
return 0
|
||||
|
||||
if(3)
|
||||
if(istype(A, /turf/simulated/wall))
|
||||
if(istype(A, /turf/simulated/wall/r_wall) && !canRwall)
|
||||
return 0
|
||||
if(checkResource(decon_cost, user))
|
||||
user << "Deconstructing Wall..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 40))
|
||||
if(!useResource(decon_cost, user)) return 0
|
||||
activate()
|
||||
A:ChangeTurf(/turf/simulated/floor/plating)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if(istype(A, /turf/simulated/floor))
|
||||
if(checkResource(decon_cost, user))
|
||||
user << "Deconstructing Floor..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 50))
|
||||
if(!useResource(decon_cost, user)) return 0
|
||||
activate()
|
||||
A:ChangeTurf(get_base_turf(A.z))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if(istype(A, /obj/machinery/door/airlock))
|
||||
if(checkResource((decon_cost * 2), user))
|
||||
user << "Deconstructing Airlock..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 50))
|
||||
if(!useResource((decon_cost * 2), user)) return 0
|
||||
activate()
|
||||
del(A)
|
||||
return 1
|
||||
return 0
|
||||
return 0
|
||||
else
|
||||
user << "ERROR: RCD in MODE: [mode] attempted use by [user]. Send this text #coderbus or an admin."
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/rcd/proc/useResource(var/amount, var/mob/user)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/rcd/proc/useResource() called tick#: [world.time]")
|
||||
if(matter < amount)
|
||||
return 0
|
||||
matter -= amount
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/rcd/proc/checkResource(var/amount, var/mob/user)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/rcd/proc/checkResource() called tick#: [world.time]")
|
||||
return matter >= amount
|
||||
/obj/item/weapon/rcd/borg/useResource(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
return user:cell:use(amount * 30)
|
||||
|
||||
/obj/item/weapon/rcd/borg/checkResource(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
return user:cell:charge >= (amount * 30)
|
||||
|
||||
/obj/item/weapon/rcd/borg/New()
|
||||
..()
|
||||
canRwall = 1
|
||||
|
||||
/obj/item/weapon/rcd_ammo
|
||||
name = "compressed matter cartridge"
|
||||
desc = "Highly compressed matter in a cartridge form, used in various fabricators."
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "rcd"
|
||||
item_state = "rcdammo"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
origin_tech = "materials=2"
|
||||
w_class = 2.0
|
||||
starting_materials = list(MAT_IRON = 30000, MAT_GLASS = 15000)
|
||||
w_type = RECYK_ELECTRONIC
|
||||
|
||||
/obj/item/weapon/rcd_ammo/attackby(var/obj/O, mob/user)
|
||||
if(istype(O, /obj/item/device/material_synth) && !istype(O, /obj/item/device/material_synth/robot))
|
||||
return O.attackby(src, user)
|
||||
else if(istype(O, /obj/item/weapon/rcd) && !istype(O, /obj/item/weapon/rcd/borg))
|
||||
return O.attackby(src, user)
|
||||
else if(istype(O, /obj/item/weapon/rsf) && !istype(O, /obj/item/weapon/rsf/cyborg))
|
||||
return O.attackby(src, user)
|
||||
@@ -1,616 +0,0 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
|
||||
|
||||
/*
|
||||
CONTAINS:
|
||||
RPD
|
||||
*/
|
||||
#define PIPE_BINARY 0
|
||||
#define PIPE_BENT 1
|
||||
#define PIPE_TRINARY 2
|
||||
#define PIPE_TRIN_M 3
|
||||
#define PIPE_UNARY 4
|
||||
|
||||
/datum/pipe_info
|
||||
var/id=-1
|
||||
var/dir=SOUTH
|
||||
var/dirtype=PIPE_BINARY
|
||||
var/icon = 'icons/obj/pipe-item.dmi'
|
||||
var/icon_state=""
|
||||
var/selected=0
|
||||
|
||||
/datum/pipe_info/New(var/pid,var/direction,var/dt)
|
||||
src.id=pid
|
||||
src.icon_state=pipeID2State[pid+1]
|
||||
src.dir=direction
|
||||
src.dirtype=dt
|
||||
|
||||
/datum/pipe_info/proc/Render(var/dispenser,var/label)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/pipe_info/proc/Render() called tick#: [world.time]")
|
||||
return "<li><a href='?src=\ref[dispenser];makepipe=[id];dir=[dir];type=[dirtype]'>[label]</a></li>"
|
||||
|
||||
/datum/pipe_info/meter
|
||||
icon = 'icons/obj/pipes.dmi'
|
||||
icon_state = "meterX"
|
||||
|
||||
/datum/pipe_info/meter/New()
|
||||
return
|
||||
|
||||
/datum/pipe_info/meter/Render(var/dispenser,var/label)
|
||||
return "<li><a href='?src=\ref[dispenser];makemeter=1;type=[PIPE_UNARY]'>[label]</a></li>" //hardcoding is no
|
||||
|
||||
/datum/pipe_info/gsensor
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "gsensor1"
|
||||
|
||||
/datum/pipe_info/gsensor/New()
|
||||
return
|
||||
|
||||
/datum/pipe_info/gsensor/Render(var/dispenser,var/label)
|
||||
return "<li><a href='?src=\ref[dispenser];makegsensor=1;type=[PIPE_UNARY]'>[label]</a></li>" //hardcoding is no
|
||||
|
||||
var/global/list/disposalpipeID2State=list(
|
||||
"pipe-s",
|
||||
"pipe-c",
|
||||
"pipe-j1",
|
||||
"pipe-y",
|
||||
"pipe-t",
|
||||
"disposal",
|
||||
"outlet",
|
||||
"intake",
|
||||
"pipe-j1s",
|
||||
"pipe-j1s",
|
||||
)
|
||||
|
||||
/datum/pipe_info/disposal
|
||||
icon = 'icons/obj/pipes/disposal.dmi'
|
||||
icon_state = "meterX"
|
||||
|
||||
/datum/pipe_info/disposal/New(var/pid,var/dt)
|
||||
src.id=pid
|
||||
src.icon_state=disposalpipeID2State[pid+1]
|
||||
src.dir=2
|
||||
src.dirtype=dt
|
||||
if(pid<6 || pid>8)
|
||||
icon_state = "con[icon_state]"
|
||||
|
||||
/datum/pipe_info/disposal/Render(var/dispenser,var/label)
|
||||
return "<li><a href='?src=\ref[dispenser];dmake=[id];type=[PIPE_UNARY]'>[label]</a></li>" //avoid hardcoding.
|
||||
|
||||
//find these defines in code\ATMOSPHERICS\\\pipe\consruction.dm
|
||||
var/global/list/RPD_recipes=list(
|
||||
"Regular Pipes" = list(
|
||||
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE_STRAIGHT, 1, PIPE_BINARY),
|
||||
"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE_BENT, 5, PIPE_BENT),
|
||||
"Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY),
|
||||
"Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY),
|
||||
"Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY),
|
||||
"Pipe Cap" = new /datum/pipe_info(PIPE_CAP, 1, PIPE_UNARY),
|
||||
"4-Way Manifold" = new /datum/pipe_info(PIPE_MANIFOLD4W, 1, PIPE_BINARY),
|
||||
"Manual T-Valve" = new /datum/pipe_info(PIPE_MTVALVE, 2, PIPE_TRIN_M),
|
||||
"Digital T-Valve" = new /datum/pipe_info(PIPE_DTVALVE, 2, PIPE_TRIN_M),
|
||||
"Layer Manifold" = new /datum/pipe_info(PIPE_LAYER_MANIFOLD, 2, PIPE_UNARY),
|
||||
),
|
||||
"Devices"=list(
|
||||
"Connector" = new /datum/pipe_info(PIPE_CONNECTOR, 1, PIPE_UNARY),
|
||||
"Unary Vent" = new /datum/pipe_info(PIPE_UVENT, 1, PIPE_UNARY),
|
||||
"Passive Vent" = new /datum/pipe_info(PIPE_PASV_VENT, 1, PIPE_UNARY),
|
||||
"Gas Pump" = new /datum/pipe_info(PIPE_PUMP, 1, PIPE_UNARY),
|
||||
"Passive Gate" = new /datum/pipe_info(PIPE_PASSIVE_GATE, 1, PIPE_UNARY),
|
||||
"Volume Pump" = new /datum/pipe_info(PIPE_VOLUME_PUMP, 1, PIPE_UNARY),
|
||||
"Scrubber" = new /datum/pipe_info(PIPE_SCRUBBER, 1, PIPE_UNARY),
|
||||
"Meter" = new /datum/pipe_info/meter(),
|
||||
"Gas Sensor" = new /datum/pipe_info/gsensor(),
|
||||
"Gas Filter" = new /datum/pipe_info(PIPE_GAS_FILTER, 1, PIPE_TRIN_M),
|
||||
"Gas Mixer" = new /datum/pipe_info(PIPE_GAS_MIXER, 1, PIPE_TRIN_M),
|
||||
"Thermal Plate" = new /datum/pipe_info(PIPE_THERMAL_PLATE, 1, PIPE_UNARY),
|
||||
"Injector" = new /datum/pipe_info(PIPE_INJECTOR, 1, PIPE_UNARY),
|
||||
"Dual-Port Vent" = new /datum/pipe_info(PIPE_DP_VENT, 1, PIPE_UNARY),
|
||||
),
|
||||
"Heat Exchange" = list(
|
||||
"Pipe" = new /datum/pipe_info(PIPE_HE_STRAIGHT, 1, PIPE_BINARY),
|
||||
"Bent Pipe" = new /datum/pipe_info(PIPE_HE_BENT, 5, PIPE_BENT),
|
||||
"Junction" = new /datum/pipe_info(PIPE_JUNCTION, 1, PIPE_UNARY),
|
||||
"Heat Exchanger" = new /datum/pipe_info(PIPE_HEAT_EXCHANGE, 1, PIPE_UNARY),
|
||||
),
|
||||
"Insulated Pipes" = list(
|
||||
"Pipe" = new /datum/pipe_info(PIPE_INSULATED_STRAIGHT,1, PIPE_BINARY),
|
||||
"Bent Pipe" = new /datum/pipe_info(PIPE_INSULATED_BENT, 5, PIPE_BENT),
|
||||
"Manifold" = new /datum/pipe_info(PIPE_INSUL_MANIFOLD, 1, PIPE_TRINARY),
|
||||
"4-Way Manifold" = new /datum/pipe_info(PIPE_INSUL_MANIFOLD4W, 1, PIPE_BINARY),
|
||||
),
|
||||
"Disposal Pipes" = list(
|
||||
"Pipe" = new /datum/pipe_info/disposal(DISP_PIPE_STRAIGHT, PIPE_UNARY),
|
||||
"Bent Pipe" = new /datum/pipe_info/disposal(DISP_PIPE_BENT, PIPE_BENT),
|
||||
"Junction" = new /datum/pipe_info/disposal(DISP_JUNCTION, PIPE_TRINARY),
|
||||
"Y-Junction" = new /datum/pipe_info/disposal(DISP_YJUNCTION, PIPE_TRINARY),
|
||||
"Trunk" = new /datum/pipe_info/disposal(DISP_END_TRUNK, PIPE_UNARY),
|
||||
"Bin" = new /datum/pipe_info/disposal(DISP_END_BIN, PIPE_BINARY),
|
||||
"Outlet" = new /datum/pipe_info/disposal(DISP_END_OUTLET, PIPE_UNARY),
|
||||
"Chute" = new /datum/pipe_info/disposal(DISP_END_CHUTE, PIPE_UNARY),
|
||||
"Sorting Junction" = new /datum/pipe_info/disposal(DISP_SORT_JUNCTION, PIPE_TRINARY),
|
||||
"Wrapped Sorting Junction" = new /datum/pipe_info/disposal(DISP_SORT_WRAP_JUNCTION, PIPE_TRINARY),
|
||||
)
|
||||
)
|
||||
/obj/item/weapon/pipe_dispenser
|
||||
name = "Rapid Piping Device (RPD)"
|
||||
desc = "A device used to rapidly pipe things."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "rpd"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
force = 10.0
|
||||
throwforce = 10.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
starting_materials = list(MAT_IRON = 75000, MAT_GLASS = 37500)
|
||||
w_type = RECYK_ELECTRONIC
|
||||
melt_temperature = MELTPOINT_STEEL
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
var/datum/effect/effect/system/spark_spread/spark_system
|
||||
var/working = 0
|
||||
var/p_type = 0
|
||||
var/p_conntype = 0
|
||||
var/p_dir = 1
|
||||
var/p_class = 0
|
||||
var/p_disposal = 0
|
||||
var/list/paint_colors = list(
|
||||
"grey" = "#cccccc",
|
||||
"red" = "#800000",
|
||||
"blue" = "#000080",
|
||||
"cyan" = "#1C94C4",
|
||||
"green" = "#00CC00",
|
||||
"yellow" = "#FFCC00",
|
||||
"purple" = "purple"
|
||||
)
|
||||
var/paint_color="grey"
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/New()
|
||||
. = ..()
|
||||
spark_system = new /datum/effect/effect/system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/attack_self(mob/user as mob)
|
||||
show_menu(user)
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/proc/render_dir_img(var/_dir,var/pic,var/title)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/pipe_dispenser/proc/render_dir_img() called tick#: [world.time]")
|
||||
var/selected=""
|
||||
if(_dir == p_dir)
|
||||
selected=" class=\"selected\""
|
||||
return "<a href=\"?src=\ref[src];setdir=[_dir]\" title=\"[title]\"[selected]><img src=\"[pic]\" /></a>"
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/proc/show_menu(mob/user as mob)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/pipe_dispenser/proc/show_menu() called tick#: [world.time]")
|
||||
if(!user || !src) return 0
|
||||
var/dat = {"<h2>Type</h2>
|
||||
<b>Utilities:</b>
|
||||
<ul>
|
||||
<li><a href='?src=\ref[src];eatpipes=1;type=-1'>Eat Pipes</a></li>
|
||||
<li><a href='?src=\ref[src];paintpipes=1;type=-1'>Paint Pipes</a></li>
|
||||
</ul>"}
|
||||
var/icon/preview=null
|
||||
for(var/category in RPD_recipes)
|
||||
dat += "<b>[category]:</b><ul>"
|
||||
var/list/cat=RPD_recipes[category]
|
||||
for(var/label in cat)
|
||||
var/datum/pipe_info/I = cat[label]
|
||||
var/found=0
|
||||
if(I.id == p_type)
|
||||
if(p_class==0 && I.type==/datum/pipe_info)
|
||||
found=1
|
||||
else if(p_class==2 && I.type==/datum/pipe_info/disposal)
|
||||
found=1
|
||||
if(found)
|
||||
preview=new /icon(I.icon,I.icon_state)
|
||||
dat += I.Render(src,label)
|
||||
dat += "</ul>"
|
||||
|
||||
var/color_css=""
|
||||
var/color_picker=""
|
||||
for(var/color_name in paint_colors)
|
||||
var/color=paint_colors[color_name]
|
||||
color_css += {"
|
||||
a.color.[color_name] {
|
||||
color: [color];
|
||||
}
|
||||
a.color.[color_name]:hover {
|
||||
border:1px solid [color];
|
||||
}
|
||||
a.color.[color_name].selected {
|
||||
background-color: [color];
|
||||
}
|
||||
"}
|
||||
var/selected=""
|
||||
if(color_name==paint_color)
|
||||
selected = " selected"
|
||||
color_picker += {"<a class="color [color_name][selected]" href="?src=\ref[src];set_color=[color_name]">•</a>"}
|
||||
|
||||
var/dirsel="<h2>Direction</h2>"
|
||||
switch(p_conntype)
|
||||
if(-1)
|
||||
if(p_class==-2)
|
||||
dirsel = "<h2>Direction</h2>[color_picker]"
|
||||
|
||||
if(PIPE_BINARY) // Straight, N-S, W-E
|
||||
if(preview)
|
||||
user << browse_rsc(new /icon(preview, dir=NORTH), "vertical.png")
|
||||
user << browse_rsc(new /icon(preview, dir=EAST), "horizontal.png")
|
||||
|
||||
dirsel += "<p>"
|
||||
dirsel += render_dir_img(1,"vertical.png","Vertical")
|
||||
dirsel += render_dir_img(4,"horizontal.png","Horizontal")
|
||||
dirsel += "</p>"
|
||||
else
|
||||
dirsel+={"
|
||||
<p>
|
||||
<a href="?src=\ref[src];setdir=1" title="vertical">↕</a>
|
||||
<a href="?src=\ref[src];setdir=4" title="horizontal">↔</a>
|
||||
</p>
|
||||
"}
|
||||
if(PIPE_BENT) // Bent, N-W, N-E etc
|
||||
if(preview)
|
||||
user << browse_rsc(new /icon(preview, dir=NORTHWEST), "nw.png")
|
||||
user << browse_rsc(new /icon(preview, dir=NORTHEAST), "ne.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTHWEST), "sw.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTHEAST), "se.png")
|
||||
|
||||
dirsel += "<p>"
|
||||
dirsel += render_dir_img(9,"nw.png","West to North")
|
||||
dirsel += render_dir_img(5,"ne.png","North to East")
|
||||
dirsel += "<br />"
|
||||
dirsel += render_dir_img(10,"sw.png","South to West")
|
||||
dirsel += render_dir_img(6,"se.png","East to South")
|
||||
dirsel += "</p>"
|
||||
else
|
||||
dirsel+={"
|
||||
<p>
|
||||
<a href="?src=\ref[src];setdir=9" title="West to North">╝</a>
|
||||
<a href="?src=\ref[src];setdir=5" title="North to East">╚</a>
|
||||
<br />
|
||||
<a href="?src=\ref[src];setdir=10" title="South to West">╗</a>
|
||||
<a href="?src=\ref[src];setdir=6" title="East to South">╔</a>
|
||||
</p>
|
||||
"}
|
||||
if(PIPE_TRINARY) // Manifold
|
||||
if(preview)
|
||||
user << browse_rsc(new /icon(preview, dir=NORTH), "s.png")
|
||||
user << browse_rsc(new /icon(preview, dir=EAST), "w.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTH), "n.png")
|
||||
user << browse_rsc(new /icon(preview, dir=WEST), "e.png")
|
||||
|
||||
dirsel += "<p>"
|
||||
dirsel += render_dir_img(1,"s.png","West South East")
|
||||
dirsel += render_dir_img(4,"w.png","North West South")
|
||||
dirsel += "<br />"
|
||||
dirsel += render_dir_img(2,"n.png","East North West")
|
||||
dirsel += render_dir_img(8,"e.png","South East North")
|
||||
dirsel += "</p>"
|
||||
else
|
||||
dirsel+={"
|
||||
<p>
|
||||
<a href="?src=\ref[src];setdir=1" title="West, South, East">╦</a>
|
||||
<a href="?src=\ref[src];setdir=4" title="North, West, South">╣</a>
|
||||
<br />
|
||||
<a href="?src=\ref[src];setdir=2" title="East, North, West">╩</a>
|
||||
<a href="?src=\ref[src];setdir=8" title="South, East, North">╠</a>
|
||||
</p>
|
||||
"}
|
||||
if(PIPE_TRIN_M) // Mirrored ones
|
||||
if(preview)
|
||||
user << browse_rsc(new /icon(preview, dir=NORTH), "s.png")
|
||||
user << browse_rsc(new /icon(preview, dir=EAST), "w.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTH), "n.png")
|
||||
user << browse_rsc(new /icon(preview, dir=WEST), "e.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTHEAST), "sm.png") //each mirror icon is 45 anticlockwise from it's real direction
|
||||
user << browse_rsc(new /icon(preview, dir=NORTHEAST), "wm.png")
|
||||
user << browse_rsc(new /icon(preview, dir=NORTHWEST), "nm.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTHWEST), "em.png")
|
||||
|
||||
dirsel += "<p>"
|
||||
dirsel += render_dir_img(1,"s.png","West South East")
|
||||
dirsel += render_dir_img(4,"w.png","North West South")
|
||||
dirsel += "<br />"
|
||||
dirsel += render_dir_img(2,"n.png","East North West")
|
||||
dirsel += render_dir_img(8,"e.png","South East North")
|
||||
dirsel += "<br />"
|
||||
dirsel += render_dir_img(6,"sm.png","West South East")
|
||||
dirsel += render_dir_img(5,"wm.png","North West South")
|
||||
dirsel += "<br />"
|
||||
dirsel += render_dir_img(9,"nm.png","East North West")
|
||||
dirsel += render_dir_img(10,"em.png","South East North")
|
||||
dirsel += "</p>"
|
||||
else
|
||||
dirsel+={"
|
||||
<p>
|
||||
<a href="?src=\ref[src];setdir=1" title="West, South, East">╦</a>
|
||||
<a href="?src=\ref[src];setdir=4" title="North, West, South">╣</a>
|
||||
<br />
|
||||
<a href="?src=\ref[src];setdir=2" title="East, North, West">╩</a>
|
||||
<a href="?src=\ref[src];setdir=8" title="South, East, North">╠</a>
|
||||
<br />
|
||||
<a href="?src=\ref[src];setdir=6" title="West, South, East">╦</a>
|
||||
<a href="?src=\ref[src];setdir=5" title="North, West, South">╣</a>
|
||||
<br />
|
||||
<a href="?src=\ref[src];setdir=9" title="East, North, West">╩</a>
|
||||
<a href="?src=\ref[src];setdir=10" title="South, East, North">╠</a>
|
||||
</p>
|
||||
"}
|
||||
if(PIPE_UNARY) // Unary
|
||||
if(preview)
|
||||
user << browse_rsc(new /icon(preview, dir=NORTH), "n.png")
|
||||
user << browse_rsc(new /icon(preview, dir=EAST), "e.png")
|
||||
user << browse_rsc(new /icon(preview, dir=SOUTH), "s.png")
|
||||
user << browse_rsc(new /icon(preview, dir=WEST), "w.png")
|
||||
|
||||
dirsel += "<p>"
|
||||
dirsel += render_dir_img(NORTH,"n.png","North")
|
||||
dirsel += render_dir_img(EAST, "e.png","East")
|
||||
dirsel += render_dir_img(SOUTH,"s.png","South")
|
||||
dirsel += render_dir_img(WEST, "w.png","West")
|
||||
dirsel += "</p>"
|
||||
else
|
||||
dirsel+={"
|
||||
<p>
|
||||
<a href="?src=\ref[src];setdir=[NORTH]" title="North">↑</a>
|
||||
<a href="?src=\ref[src];setdir=[EAST]" title="East">→</a>
|
||||
<a href="?src=\ref[src];setdir=[SOUTH]" title="South">↓</a>
|
||||
<a href="?src=\ref[src];setdir=[WEST]" title="West">←</a>
|
||||
</p>
|
||||
"}
|
||||
|
||||
dat = {"
|
||||
<html>
|
||||
<head>
|
||||
<title>[name]</title>
|
||||
<style type="text/css">
|
||||
html {
|
||||
font-family:sans-serif;
|
||||
font-size:small;
|
||||
}
|
||||
a{
|
||||
color:#0066cc;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a img {
|
||||
border:1px solid #0066cc;
|
||||
background:#dfdfdf;
|
||||
}
|
||||
|
||||
a.color {
|
||||
padding: 5px 10px;
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
border:1px solid white;
|
||||
}
|
||||
|
||||
a.selected img,
|
||||
a:hover {
|
||||
background: #0066cc;
|
||||
color: #ffffff;
|
||||
}
|
||||
[color_css]
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
[dirsel][dat]
|
||||
</body>
|
||||
</html>
|
||||
"}
|
||||
user << browse(dat, "window=pipedispenser")
|
||||
onclose(user, "pipedispenser")
|
||||
return
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/Topic(href, href_list)
|
||||
if(usr.stat || usr.restrained())
|
||||
usr << browse(null, "window=pipedispenser")
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(!src.Adjacent(usr))
|
||||
usr.unset_machine(usr)
|
||||
return
|
||||
if(href_list["setdir"])
|
||||
p_dir= text2num(href_list["setdir"])
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["eatpipes"])
|
||||
p_class = -1
|
||||
p_conntype=-1
|
||||
p_dir=1
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["paintpipes"])
|
||||
p_class = -2
|
||||
p_conntype=-1
|
||||
p_dir=1
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["set_color"])
|
||||
paint_color=href_list["set_color"]
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["makepipe"])
|
||||
p_type = text2num(href_list["makepipe"])
|
||||
p_dir = text2num(href_list["dir"])
|
||||
p_conntype = text2num(href_list["type"])
|
||||
p_class = 0
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["makemeter"])
|
||||
p_class = 1
|
||||
p_conntype=-1
|
||||
p_dir=1
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["makegsensor"])
|
||||
p_class = 3
|
||||
p_conntype=-1
|
||||
p_dir=1
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
if(href_list["dmake"])
|
||||
p_type = text2num(href_list["dmake"])
|
||||
p_conntype = text2num(href_list["type"])
|
||||
p_dir = 1
|
||||
p_class = 2
|
||||
src.spark_system.start()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
show_menu(usr)
|
||||
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/afterattack(atom/A, mob/user)
|
||||
if(!in_range(A,user))
|
||||
return
|
||||
if(loc != user)
|
||||
return
|
||||
if(!isrobot(user) && !ishuman(user))
|
||||
return 0
|
||||
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
|
||||
return 0
|
||||
if(istype(A, /obj/structure/lattice) || istype(A,/obj/structure/catwalk))
|
||||
A = get_turf(A)
|
||||
|
||||
switch(p_class)
|
||||
if(-2) // Paint pipes
|
||||
if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/unary/tank) || istype(A,/obj/machinery/atmospherics/unary/vent) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated))
|
||||
// Avoid spewing errors about invalid mode -2 when clicking on stuff that aren't pipes.
|
||||
user << "\The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
|
||||
return 0
|
||||
var/obj/machinery/atmospherics/pipe/P = A
|
||||
if(!(paint_color in P.available_colors))
|
||||
user << "<span class='warning'>This [P] can't be painted [paint_color]. Available colors: [english_list(P.available_colors)]</span>"
|
||||
return 0
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
P._color = paint_color
|
||||
user.visible_message("<span class='notice'>[user] paints \the [P] [paint_color].</span>","<span class='notice'>You paint \the [P] [paint_color].</span>")
|
||||
P.update_icon()
|
||||
return 1
|
||||
if(-1) // Eating pipes
|
||||
// Must click on an actual pipe or meter.
|
||||
if(istype(A,/obj/item/pipe) || istype(A,/obj/item/pipe_meter) || istype(A,/obj/structure/disposalconstruct) || istype(A,/obj/item/pipe_gsensor))
|
||||
user << "Destroying Pipe..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 5))
|
||||
if(A)
|
||||
activate()
|
||||
if(istype(A, /obj/item/pipe))
|
||||
returnToPool(A)
|
||||
else
|
||||
qdel(A)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
// Avoid spewing errors about invalid mode -1 when clicking on stuff that aren't pipes.
|
||||
user << "The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
|
||||
return 0
|
||||
if(0)
|
||||
var/pipelayer_to_lay = PIPING_LAYER_DEFAULT
|
||||
if(istype(A, /obj/machinery/atmospherics))
|
||||
var/obj/machinery/atmospherics/AM = A
|
||||
pipelayer_to_lay = AM.piping_layer
|
||||
A = get_turf(user)
|
||||
if(!(istype(A, /turf)))
|
||||
user << "The [src]'s error light flickers."
|
||||
return 0
|
||||
user << "Building Pipes ..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 20))
|
||||
activate()
|
||||
var/obj/item/pipe/P = getFromPool(/obj/item/pipe, A)
|
||||
P.New(A,pipe_type=p_type,dir=p_dir) //new (A, pipe_type=p_type, dir=p_dir)
|
||||
P.setPipingLayer(pipelayer_to_lay)
|
||||
P.update()
|
||||
P.add_fingerprint(usr)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if(1)
|
||||
if(!(istype(A, /turf)))
|
||||
user << "The [src]'s error light flickers."
|
||||
return 0
|
||||
user << "Building Meter..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 20))
|
||||
activate()
|
||||
new /obj/item/pipe_meter(A)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
if(2)
|
||||
if(!(istype(A, /turf)))
|
||||
user << "The [src]'s error light flickers."
|
||||
return 0
|
||||
user << "Building Pipes..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 20))
|
||||
activate()
|
||||
var/obj/structure/disposalconstruct/C = new (A)
|
||||
// This may still produce runtimes, but I checked and /obj/structure/disposalconstruct
|
||||
// DOES have a dir property, inherited from /obj/structure. - N3X
|
||||
C.dir=p_dir
|
||||
switch(p_type)
|
||||
if(0)
|
||||
C.ptype = 0
|
||||
if(1)
|
||||
C.ptype = 1
|
||||
if(2)
|
||||
C.ptype = 2
|
||||
if(3)
|
||||
C.ptype = 4
|
||||
if(4)
|
||||
C.ptype = 5
|
||||
if(5)
|
||||
C.ptype = 6
|
||||
C.density = 1
|
||||
if(6)
|
||||
C.ptype = 7
|
||||
C.density = 1
|
||||
if(7)
|
||||
C.ptype = 8
|
||||
C.density = 1
|
||||
if(8)
|
||||
C.ptype = 9
|
||||
if(9)
|
||||
C.ptype = 11
|
||||
C.add_fingerprint(usr)
|
||||
C.update()
|
||||
return 1
|
||||
return 0
|
||||
if(3)
|
||||
if(!(istype(A, /turf)))
|
||||
user << "The [src]'s error light flickers."
|
||||
return 0
|
||||
user << "Building Sensor..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 20))
|
||||
activate()
|
||||
new /obj/item/pipe_gsensor(A)
|
||||
return 1
|
||||
return 0
|
||||
else
|
||||
..()
|
||||
return 0
|
||||
|
||||
|
||||
/obj/item/weapon/pipe_dispenser/proc/activate()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/pipe_dispenser/proc/activate() called tick#: [world.time]")
|
||||
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
/*
|
||||
CONTAINS:
|
||||
RSF
|
||||
|
||||
*/
|
||||
/obj/item/weapon/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "rsf"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
starting_materials = list(MAT_IRON = 40000)
|
||||
var/matter = 0
|
||||
var/max_matter = 40
|
||||
var/matter_respawn = 0
|
||||
var/mode = 1
|
||||
var/list/modes
|
||||
w_class = 3.0
|
||||
|
||||
/obj/item/weapon/rsf/New()
|
||||
..()
|
||||
modes = list(
|
||||
"glass",
|
||||
"paper",
|
||||
"flask",
|
||||
"dice",
|
||||
"deck of cards",
|
||||
"candle",
|
||||
"cardboard sheet",
|
||||
)
|
||||
return
|
||||
|
||||
/obj/item/weapon/rsf/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if (matter >= max_matter)
|
||||
user << "The RSF can't hold any more matter."
|
||||
return
|
||||
if ((matter+20) >= max_matter)
|
||||
qdel(W)
|
||||
matter = max_matter
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 20, 1)
|
||||
user << "<span class='notice'>The RSF now holds [matter]/[max_matter] fabrication-units.</span>"
|
||||
return
|
||||
qdel(W)
|
||||
matter += 20
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 20, 1)
|
||||
user << "<span class='notice'>The RSF now holds [matter]/[max_matter] fabrication-units.</span>"
|
||||
return
|
||||
|
||||
/obj/item/weapon/rsf/attack_self(mob/user as mob)
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
|
||||
mode++
|
||||
if(mode>modes.len) mode = 1
|
||||
user << "Now dispensing [modes[mode]]!"
|
||||
|
||||
/obj/item/weapon/rsf/examine(mob/user)
|
||||
..()
|
||||
if(istype(src, /obj/item/weapon/rsf/cyborg))
|
||||
user << "It's been set to draw power from a power cell."
|
||||
else
|
||||
user << "It currently holds [matter]/[max_matter] fabrication-units."
|
||||
|
||||
/obj/item/weapon/rsf/proc/pay(var/mob/user, var/amount) //spend matter or energy
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/rsf/proc/pay() called tick#: [world.time]")
|
||||
if(isrobot(user)) //if the user is a robot, take power from its cell
|
||||
var/mob/living/silicon/robot/R = user
|
||||
if(R.cell)
|
||||
return R.cell.use(amount * 50)
|
||||
return 0
|
||||
|
||||
if(amount <= matter)
|
||||
matter -= amount
|
||||
user << "The RSF now holds [matter]/[max_matter] fabrication-units."
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob)
|
||||
if(!A.Adjacent(user))
|
||||
return
|
||||
if (!(istype(A, /obj/structure/table) || istype(A, /turf/simulated/floor))) //Must click on a table or floor to spawn stuff
|
||||
return
|
||||
|
||||
switch(modes[mode])
|
||||
if("dosh")
|
||||
if(pay(user,4))
|
||||
user << "Dispensing Dosh..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/spacecash/c10(get_turf(A))
|
||||
return
|
||||
if("glass")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing Glass..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(get_turf(A))
|
||||
if("flask")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing Flask..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/flask/barflask(get_turf(A))
|
||||
if("paper")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing Paper..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/paper(get_turf(A))
|
||||
if("candle")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing a Candle..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/candle(get_turf(A))
|
||||
if("dice")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing Dice Pack..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/weapon/storage/pill_bottle/dice(get_turf(A))
|
||||
if("deck of cards")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing a Deck of Cards..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/toy/cards(get_turf(A))
|
||||
if("cardboard sheet")
|
||||
if(pay(user,1))
|
||||
user << "Dispensing a Cardboard Sheet..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new /obj/item/stack/sheet/cardboard(get_turf(A))
|
||||
|
||||
/obj/item/weapon/rsf/cyborg/New()
|
||||
..()
|
||||
modes |= "dosh" //cyborg rsfs get money
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
|
||||
/obj/item/weapon/rsf/cyborg/process()
|
||||
return //Borg RSF doesn't need matter
|
||||
@@ -1,490 +0,0 @@
|
||||
#define PAINT_FLOOR 1
|
||||
#define PAINT_PLATING 2
|
||||
#define PAINT_REINFORCED 3
|
||||
#define PAINT_ALL 0
|
||||
|
||||
#define DIR_ONE 1 //for those tiles with only one direction
|
||||
#define DIR_ORTHO 2 //orthogonal (south, west, north, east)
|
||||
#define DIR_ALL 3 //all the directions
|
||||
|
||||
|
||||
/datum/paint_info
|
||||
var/dir = SOUTH
|
||||
var/icon/icon = 'icons/turf/floors.dmi'
|
||||
var/icon_state = "floor"
|
||||
var/ftype as num //the floor type required for this paint job
|
||||
var/adirs //available dirs for this floor type
|
||||
|
||||
/datum/paint_info/New(var/padir, var/picon)
|
||||
src.adirs = padir
|
||||
src.dir = SOUTH
|
||||
src.icon_state = picon
|
||||
src.ftype = PAINT_FLOOR
|
||||
|
||||
/datum/paint_info/New(var/padir, var/picon, var/ptype)
|
||||
if(ptype == null) ptype = PAINT_FLOOR //DM really can't resolve this?
|
||||
src.dir = SOUTH
|
||||
src.icon_state = picon
|
||||
src.ftype = ptype
|
||||
src.adirs = padir
|
||||
|
||||
/datum/paint_info/proc/validate(var/turf/simulated/floor/test)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/paint_info/proc/validate() called tick#: [world.time]")
|
||||
//This is used to give the user a hint that he's a massive retard for using a floor painter on the carpet
|
||||
switch(ftype)
|
||||
if(PAINT_FLOOR) //why is it named plasteel anyway?
|
||||
if(!(istype(test.floor_tile,/obj/item/stack/tile/plasteel)))
|
||||
return 0 //if it's carpet, wood or some other stuff, we aren't going to paint that
|
||||
if(istype(test, /turf/simulated/floor/engine))
|
||||
return 0 //reinforced floor has plasteel in floor_tile too
|
||||
//but that isn't a regular floor
|
||||
if(PAINT_PLATING)
|
||||
if(!istype(test,/turf/simulated/floor/plating))
|
||||
return 0
|
||||
if(PAINT_REINFORCED)
|
||||
if(!istype(test,/turf/simulated/floor/engine))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/paint_info/proc/apply(var/turf/simulated/floor/T, var/pname, var/pdesc)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/paint_info/proc/apply() called tick#: [world.time]")
|
||||
//warning("[type]: Running /datum/paint_info/proc/apply.")
|
||||
T.icon_state = icon_state
|
||||
T.icon_regular_floor = icon_state //required to 'save' the new floor type so if someone crowbars it and puts it back it won't revert to the original state
|
||||
T.dir = dir
|
||||
T.desc = pdesc //so if you paint over a plaque with a floor the tile loses its description
|
||||
if(pname != "")
|
||||
T.name = pname
|
||||
T.ClearDecals()
|
||||
|
||||
/datum/paint_info/decal
|
||||
icon = 'icons/effects/warning_stripes.dmi'
|
||||
ftype = PAINT_ALL
|
||||
|
||||
/datum/paint_info/decal/apply(var/turf/simulated/floor/T, var/pname, var/pdesc)
|
||||
T.AddDecal(image(icon, icon_state = icon_state, dir = dir))
|
||||
|
||||
|
||||
//The list of all available floor design groups
|
||||
|
||||
var/global/list/paint_variants = list(
|
||||
"Decals" = list(
|
||||
// Stripes
|
||||
new /datum/paint_info/decal(DIR_ALL, "warning"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "all"),
|
||||
|
||||
// Loading areas (TODO: colorable)
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "warning_corner"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "unloading"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "bot"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "loading_area"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "no"),
|
||||
|
||||
// Atmos lettering
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "oxygen"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "nitrogen"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "carbon_dioxide"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "nitrous_oxide"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "air"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "plasma"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "zoo"),
|
||||
|
||||
// Numbers
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "1"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "2"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "3"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "4"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "5"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "6"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "7"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "8"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "9"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "0"),
|
||||
),
|
||||
"Gray" = list(new /datum/paint_info(DIR_ONE,"floor"),
|
||||
new /datum/paint_info(DIR_ALL,"black"),
|
||||
new /datum/paint_info(DIR_ORTHO,"blackcorner")),
|
||||
|
||||
"Neutral" = list(new /datum/paint_info(DIR_ALL,"neutral"),
|
||||
new /datum/paint_info(DIR_ORTHO,"neutralcorner"),
|
||||
new /datum/paint_info(DIR_ONE,"neutralfull")),
|
||||
|
||||
"White" = list(new /datum/paint_info(DIR_ONE,"white"),
|
||||
new /datum/paint_info(DIR_ALL,"whitehall"),
|
||||
new /datum/paint_info(DIR_ORTHO,"whitecorner")),
|
||||
|
||||
"Red" = list(new /datum/paint_info(DIR_ONE,"redfull"),
|
||||
new /datum/paint_info(DIR_ALL,"red"),
|
||||
new /datum/paint_info(DIR_ORTHO,"redcorner")),
|
||||
|
||||
"Green" = list(new /datum/paint_info(DIR_ONE,"greenfull"),
|
||||
new /datum/paint_info(DIR_ALL,"green"),
|
||||
new /datum/paint_info(DIR_ORTHO,"greencorner")),
|
||||
|
||||
"Blue" = list(new /datum/paint_info(DIR_ONE,"bluefull"),
|
||||
new /datum/paint_info(DIR_ALL,"blue"),
|
||||
new /datum/paint_info(DIR_ORTHO,"bluecorner")),
|
||||
|
||||
"Yellow" = list(new /datum/paint_info(DIR_ONE,"yellowfull"),
|
||||
new /datum/paint_info(DIR_ALL,"yellow"),
|
||||
new /datum/paint_info(DIR_ORTHO,"yellowcorner")),
|
||||
|
||||
"Purple" = list(new /datum/paint_info(DIR_ONE,"purplefull"),
|
||||
new /datum/paint_info(DIR_ALL,"purple"),
|
||||
new /datum/paint_info(DIR_ORTHO,"purplecorner")),
|
||||
|
||||
"Orange" = list(new /datum/paint_info(DIR_ONE,"orangefull"),
|
||||
new /datum/paint_info(DIR_ALL,"orange"),
|
||||
new /datum/paint_info(DIR_ORTHO,"orangecorner")),
|
||||
|
||||
"Brown" = list(new /datum/paint_info(DIR_ONE,"dark brown full"),
|
||||
new /datum/paint_info(DIR_ALL,"brown"),
|
||||
new /datum/paint_info(DIR_ORTHO,"browncorner")),
|
||||
|
||||
"Red and yellow" = list(new /datum/paint_info(DIR_ONE,"redyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL,"redyellow")),
|
||||
|
||||
"Red and blue" = list(new /datum/paint_info(DIR_ONE,"redbluefull"),
|
||||
new /datum/paint_info(DIR_ALL,"redblue")),
|
||||
|
||||
"Red and green" = list(new /datum/paint_info(DIR_ONE,"redgreenfull"),
|
||||
new /datum/paint_info(DIR_ALL,"redgreen")),
|
||||
|
||||
"Green and yellow" = list(new /datum/paint_info(DIR_ONE,"greenyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL,"greenyellow")),
|
||||
|
||||
"Green and blue" = list(new /datum/paint_info(DIR_ONE,"greenbluefull"),
|
||||
new /datum/paint_info(DIR_ALL,"greenblue")),
|
||||
|
||||
"Blue and yellow" = list(new /datum/paint_info(DIR_ONE,"blueyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL,"blueyellow")),
|
||||
|
||||
"White red" = list(new /datum/paint_info(DIR_ONE,"whiteredfull"),
|
||||
new /datum/paint_info(DIR_ALL,"whitered"),
|
||||
new /datum/paint_info(DIR_ORTHO,"whiteredcorner")),
|
||||
|
||||
"White green" = list(new /datum/paint_info(DIR_ONE,"whitegreenfull"),
|
||||
new /datum/paint_info(DIR_ALL,"whitegreen"),
|
||||
new /datum/paint_info(DIR_ORTHO,"whitegreencorner")),
|
||||
|
||||
"White blue" = list(new /datum/paint_info(DIR_ONE,"whitebluefull"),
|
||||
new /datum/paint_info(DIR_ALL,"whiteblue"),
|
||||
new /datum/paint_info(DIR_ORTHO,"whitebluecorner"),
|
||||
new /datum/paint_info(DIR_ONE,"cmo")),
|
||||
|
||||
"White yellow" = list(new /datum/paint_info(DIR_ONE,"whiteyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL,"whiteyellow"),
|
||||
new /datum/paint_info(DIR_ORTHO,"whiteyellowcorner")),
|
||||
|
||||
"White purple" = list(new /datum/paint_info(DIR_ONE,"whitepurplefull"),
|
||||
new /datum/paint_info(DIR_ALL,"whitepurple"),
|
||||
new /datum/paint_info(DIR_ORTHO,"whitepurplecorner")),
|
||||
|
||||
"Arrival" = list(new /datum/paint_info(DIR_ALL,"arrival")),
|
||||
|
||||
"Escape" = list(new /datum/paint_info(DIR_ALL,"escape")),
|
||||
|
||||
"Dark" = list(new /datum/paint_info(DIR_ONE,"dark"),
|
||||
new /datum/paint_info(DIR_ALL,"dark floor stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark floor corner")),
|
||||
|
||||
"Dark red" = list(new /datum/paint_info(DIR_ONE,"dark red full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark red stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark red corner")),
|
||||
|
||||
"Dark blue" = list(new /datum/paint_info(DIR_ONE,"dark blue full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark blue stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark blue corner")),
|
||||
|
||||
"Dark green" = list(new /datum/paint_info(DIR_ONE,"dark green full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark green stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark green corner")),
|
||||
|
||||
"Dark purple" = list(new /datum/paint_info(DIR_ONE,"dark purple full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark purple stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark purple corner")),
|
||||
|
||||
"Dark yellow" = list(new /datum/paint_info(DIR_ONE,"dark yellow full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark yellow stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark yellow corner")),
|
||||
|
||||
"Dark orange" = list(new /datum/paint_info(DIR_ONE,"dark orange full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark orange stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark orange corner")),
|
||||
|
||||
"Dark orange" = list(new /datum/paint_info(DIR_ONE,"dark orange full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark orange stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark orange corner")),
|
||||
|
||||
"Dark vault" = list(new /datum/paint_info(DIR_ONE,"dark vault full"),
|
||||
new /datum/paint_info(DIR_ALL,"dark vault stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark vault corner"),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark-markings")),
|
||||
|
||||
"Markings" = list(new /datum/paint_info(DIR_ONE,"delivery"),
|
||||
new /datum/paint_info(DIR_ONE,"bot"),
|
||||
new /datum/paint_info(DIR_ONE,"whitedelivery"),
|
||||
new /datum/paint_info(DIR_ONE,"whitebot"),
|
||||
new /datum/paint_info(DIR_ONE,"enginedelivery", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ONE,"enginebot", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ONE,"plaque")),
|
||||
|
||||
"Loading area" = list(new /datum/paint_info(DIR_ORTHO,"loadingarea"),
|
||||
new /datum/paint_info(DIR_ORTHO,"engineloadingarea", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ORTHO,"dark loading")),
|
||||
|
||||
"Warning" = list(new /datum/paint_info(DIR_ALL,"warning"),
|
||||
new /datum/paint_info(DIR_ORTHO,"warningcorner")),
|
||||
|
||||
"White warning" = list(new /datum/paint_info(DIR_ALL,"warnwhite"),
|
||||
new /datum/paint_info(DIR_ORTHO,"warnwhitecorner")),
|
||||
|
||||
"Reinforced warning" = list(new /datum/paint_info(DIR_ALL,"enginewarn", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ORTHO,"enginewarncorner", PAINT_REINFORCED)),
|
||||
|
||||
"Plating warning" = list(new /datum/paint_info(DIR_ALL,"warnplate", PAINT_PLATING),
|
||||
new /datum/paint_info(DIR_ORTHO,"warnplatecorner", PAINT_PLATING)),
|
||||
|
||||
"Chapel" = list(new /datum/paint_info(DIR_ALL,"chapel")),
|
||||
|
||||
"SS13 logo" = list(new /datum/paint_info(DIR_ONE,"L1"),
|
||||
new /datum/paint_info(DIR_ONE,"L3"),
|
||||
new /datum/paint_info(DIR_ONE,"L5"),
|
||||
new /datum/paint_info(DIR_ONE,"L7"),
|
||||
new /datum/paint_info(DIR_ONE,"L9"),
|
||||
new /datum/paint_info(DIR_ONE,"L11"),
|
||||
new /datum/paint_info(DIR_ONE,"L13"),
|
||||
new /datum/paint_info(DIR_ONE,"L15"),
|
||||
new /datum/paint_info(DIR_ONE,"L2"),
|
||||
new /datum/paint_info(DIR_ONE,"L4"),
|
||||
new /datum/paint_info(DIR_ONE,"L6"),
|
||||
new /datum/paint_info(DIR_ONE,"L8"),
|
||||
new /datum/paint_info(DIR_ONE,"L10"),
|
||||
new /datum/paint_info(DIR_ONE,"L12"),
|
||||
new /datum/paint_info(DIR_ONE,"L14"),
|
||||
new /datum/paint_info(DIR_ONE,"L16")),
|
||||
|
||||
"Derelict logo" = list(new /datum/paint_info(DIR_ONE,"derelict9"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict10"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict11"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict12"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict13"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict14"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict15"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict16"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict1"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict2"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict3"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict4"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict5"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict6"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict7"),
|
||||
new /datum/paint_info(DIR_ONE,"derelict8")),
|
||||
|
||||
"Other" = list(new /datum/paint_info(DIR_ONE,"dark"),
|
||||
new /datum/paint_info(DIR_ONE,"bar"),
|
||||
new /datum/paint_info(DIR_ONE,"cafeteria"),
|
||||
new /datum/paint_info(DIR_ONE,"checker"),
|
||||
new /datum/paint_info(DIR_ONE,"barber"),
|
||||
new /datum/paint_info(DIR_ONE,"grimy"),
|
||||
new /datum/paint_info(DIR_ONE,"hydrofloor"),
|
||||
new /datum/paint_info(DIR_ONE,"showroomfloor"),
|
||||
new /datum/paint_info(DIR_ONE,"freezerfloor"),
|
||||
new /datum/paint_info(DIR_ONE,"bcircuit"),
|
||||
new /datum/paint_info(DIR_ONE,"gcircuit"),
|
||||
new /datum/paint_info(DIR_ONE,"solarpanel"))
|
||||
)
|
||||
|
||||
/obj/item/weapon/tile_painter
|
||||
name = "tile painter"
|
||||
desc = "A device used to paint floors in various colors and fashions."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "rpd" //placeholder art, someone please sprite it
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
force = 10.0
|
||||
throwforce = 10.0
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 3.0
|
||||
starting_materials = list(MAT_IRON = 15000, MAT_GLASS = 7500)
|
||||
w_type = RECYK_ELECTRONIC
|
||||
melt_temperature = MELTPOINT_STEEL
|
||||
origin_tech = "engineering=2;materials=1"
|
||||
var/working = 0
|
||||
var/datum/paint_info/selected
|
||||
var/category = ""
|
||||
|
||||
/obj/item/weapon/tile_painter/New()
|
||||
selected = new /datum/paint_info(SOUTH,"floor")
|
||||
..()
|
||||
|
||||
/obj/item/weapon/tile_painter/Destroy() //do I even have to do that
|
||||
selected = null
|
||||
..() // FUCKING DUMB
|
||||
|
||||
/obj/item/weapon/tile_painter/attack_self(mob/user as mob)
|
||||
show_menu(user)
|
||||
|
||||
/obj/item/weapon/tile_painter/proc/render_tile(var/icon/basestate, var/mob/user, var/datum/paint_info/I, var/cdir=SOUTH)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/tile_painter/proc/render_tile() called tick#: [world.time]")
|
||||
// Send user the image
|
||||
user << browse_rsc(new /icon(basestate, dir=cdir), "[I.icon_state][cdir].png")
|
||||
// Determine if we're actually selecting this
|
||||
var/is_selected = selected.icon==I.icon && selected.icon_state == I.icon_state && selected.dir==cdir
|
||||
var/class=""
|
||||
if(is_selected)
|
||||
class=" class=\"selected\""
|
||||
|
||||
// Make HTML.
|
||||
return "<a href=\"?src=\ref[src];set_dir=[cdir];set_state=[I.icon_state];set_type=\ref[I]\"[class]><img src='[I.icon_state][cdir].png'></a>"
|
||||
|
||||
/obj/item/weapon/tile_painter/proc/populate_selection(mob/user as mob, var/datum/paint_info/I)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/tile_painter/proc/populate_selection() called tick#: [world.time]")
|
||||
var/data = ""
|
||||
var/icon/basestate = new /icon(I.icon, I.icon_state)
|
||||
switch(I.adirs)
|
||||
if(DIR_ONE)
|
||||
data += render_tile(basestate,user,I)
|
||||
if(DIR_ORTHO)
|
||||
for(var/d in cardinal) // cardinal is N,S,E,W (see global.dm)
|
||||
data += render_tile(basestate,user,I,d)
|
||||
if(DIR_ALL)
|
||||
for(var/d in alldirs) // All 2D directions
|
||||
data += render_tile(basestate,user,I,d)
|
||||
|
||||
return data
|
||||
|
||||
/obj/item/weapon/tile_painter/proc/show_menu(mob/user as mob)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/tile_painter/proc/show_menu() called tick#: [world.time]")
|
||||
if(!user || !src) return 0
|
||||
|
||||
var/data = {"<h2>Tile Painter</h2>
|
||||
<style type="text/css">
|
||||
html {
|
||||
font-family:sans-serif;
|
||||
font-size:small;
|
||||
}
|
||||
a{
|
||||
color:#0066cc;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a img {
|
||||
border:1px solid #0066cc;
|
||||
background: #99B2CC;
|
||||
}
|
||||
|
||||
a.color {
|
||||
padding: 5px 10px;
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
border:1px solid white;
|
||||
}
|
||||
|
||||
a.selected img,
|
||||
a:hover {
|
||||
background: #0066cc;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>"}
|
||||
|
||||
if(category == "")
|
||||
|
||||
data += "<p>List of available tile groups:</p>"
|
||||
data += "<p>"
|
||||
|
||||
for(var/iterator in paint_variants)
|
||||
data += "<a href=\"?src=\ref[src];select=[iterator]\">[iterator] (view)</a><br>"
|
||||
|
||||
data += "</p>"
|
||||
|
||||
else
|
||||
|
||||
var/list/tiles = paint_variants[category]
|
||||
data += "<p><b>[category]</b></p>"
|
||||
data += "<p>"
|
||||
for(var/i = 1; i <= tiles.len; i++)
|
||||
if((category == "SS13 logo" || category == "Derelict logo") && i == 9)
|
||||
data += "<br>"
|
||||
var/datum/paint_info/I = tiles[i]
|
||||
data += populate_selection(user, I)
|
||||
|
||||
data += "<br><br><a href=\"?src=\ref[src];select=null\">Back</a>"
|
||||
data += "</p>"
|
||||
|
||||
var/menu = {"
|
||||
<html>
|
||||
<head>
|
||||
<title>Tile Painter</title>
|
||||
</head>
|
||||
<body>
|
||||
[data]
|
||||
</body>
|
||||
</html>
|
||||
"}
|
||||
user << browse(menu, "window=tilepainter")
|
||||
onclose(user, "tilepainter")
|
||||
return
|
||||
|
||||
/obj/item/weapon/tile_painter/Topic(href, href_list)
|
||||
if(usr.stat || usr.restrained())
|
||||
usr << browse(null, "window=tilepainter")
|
||||
return
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
if(href_list["select"])
|
||||
if(href_list["select"] == "null") category = ""
|
||||
else category = href_list["select"]
|
||||
show_menu(usr)
|
||||
|
||||
//if we got this, that means we got set_state as well
|
||||
if(href_list["set_dir"])
|
||||
selected = locate(href_list["set_type"])
|
||||
selected.dir = text2num(href_list["set_dir"])
|
||||
|
||||
/obj/item/weapon/tile_painter/afterattack(atom/A, mob/user)
|
||||
if(!in_range(A,user))
|
||||
return
|
||||
if(loc != user)
|
||||
return
|
||||
if(!isrobot(user) && !ishuman(user))
|
||||
return 0
|
||||
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
|
||||
return 0
|
||||
if(!(istype(A, /turf/simulated/floor)))
|
||||
return 0
|
||||
|
||||
var/turf/simulated/floor/test = get_turf(A) //it should be the simulated floor type
|
||||
//world.log << "[src]: selected=[selected.type]"
|
||||
if(!selected.validate(test))
|
||||
user << "<span class='warning'>An error indicator on [src] flicks on for a moment. Perhaps you're using it on the wrong floor type?</span>"
|
||||
return 0
|
||||
|
||||
var/pdesc = ""
|
||||
var/pname = ""
|
||||
switch(selected.ftype)
|
||||
if(PAINT_FLOOR) pname = "floor" //restoring the name of our new tile, usually if you place a floor tile on a plating it's still called "plating" for now
|
||||
if(PAINT_REINFORCED) pname = "reinforced floor" //also getting rid of the plaque if it's there
|
||||
if(PAINT_PLATING) pname = "plating"
|
||||
|
||||
if(selected.icon_state == "plaque") //some juice
|
||||
pdesc = input(user,"What do you want to be described on this plaque?", "Plaque description")
|
||||
pname = "Commemorative Plaque"
|
||||
|
||||
user << "Painting floor..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user,A, 20))
|
||||
activate()
|
||||
var/turf/simulated/floor/T = get_turf(A)
|
||||
selected.apply(T,pname,pdesc)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/tile_painter/proc/activate()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/weapon/tile_painter/proc/activate() called tick#: [world.time]")
|
||||
playsound(get_turf(src), 'sound/effects/extinguish.ogg', 50, 1) //pssshtt
|
||||
@@ -151,7 +151,7 @@
|
||||
new /obj/item/weapon/wrench/socket(src)
|
||||
new /obj/item/weapon/gun/projectile/flare(src) //yay for emergency lighting
|
||||
new /obj/item/ammo_storage/box/flare(src)
|
||||
new /obj/item/weapon/pipe_dispenser(src)
|
||||
new /obj/item/device/rcd/rpd(src)
|
||||
new /obj/item/device/analyzer(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -342,7 +342,7 @@
|
||||
new /obj/item/weapon/rcd_ammo(src)
|
||||
new /obj/item/weapon/rcd_ammo(src)
|
||||
new /obj/item/weapon/rcd_ammo(src)
|
||||
new /obj/item/weapon/rcd(src)
|
||||
new /obj/item/device/rcd/matter/engineering(src)
|
||||
|
||||
/obj/structure/closet/crate/radiation/New()
|
||||
..()
|
||||
|
||||
@@ -205,9 +205,9 @@ var/list/blobstart = list()
|
||||
var/list/ninjastart = list()
|
||||
// list/traitors = list() //traitor list
|
||||
var/list/cardinal = list( NORTH, SOUTH, EAST, WEST )
|
||||
var/list/diagonal = list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
|
||||
var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)
|
||||
|
||||
|
||||
var/global/universal_cult_chat = 0 //if set to 1, even human cultists can use cultchat
|
||||
|
||||
var/datum/station_state/start_state = null
|
||||
|
||||
231
code/modules/RCD/RCD.dm
Normal file
231
code/modules/RCD/RCD.dm
Normal file
@@ -0,0 +1,231 @@
|
||||
//Main class for the modular RCD system.
|
||||
/obj/item/device/rcd
|
||||
name = "\improper Rapid-Construction-Device (RCD)"
|
||||
desc = "Used to rapidly construct things, or deconstruct them, for that matter."
|
||||
|
||||
icon = 'icons/obj/RCD.dmi'
|
||||
icon_state = "rcd"
|
||||
|
||||
flags = FPRINT
|
||||
siemens_coefficient = 1
|
||||
w_class = 3
|
||||
siemens_coefficient = 1
|
||||
force = 10
|
||||
throwforce = 10
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
starting_materials = list(MAT_IRON = 50000)
|
||||
w_type = RECYK_ELECTRONIC
|
||||
melt_temperature = MELTPOINT_STEEL // Lots of metal
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
|
||||
var/datum/rcd_schematic/selected
|
||||
var/list/schematics = list(/datum/rcd_schematic/test) //list of schematics, in definitions of RCD subtypes, no organization is needed, in New() these get organized.
|
||||
var/sparky = 1 //Make sparks. LOTS OF SPARKS.
|
||||
|
||||
var/busy = 0
|
||||
|
||||
var/datum/html_interface/rcd/interface
|
||||
var/datum/effect/effect/system/spark_spread/spark_system
|
||||
|
||||
/obj/item/device/rcd/New()
|
||||
. = ..()
|
||||
|
||||
interface = new(src, sanitize(name)) //interface gets created BEFORE the schematics get created, so they can modify the HEAD content (RPD pipe colour picker).
|
||||
|
||||
init_schematics()
|
||||
|
||||
rebuild_ui()
|
||||
|
||||
spark_system = new
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
//create and organize the schematics
|
||||
/obj/item/device/rcd/proc/init_schematics()
|
||||
var/list/old_schematics = schematics
|
||||
schematics = list()
|
||||
|
||||
for(var/path in old_schematics)
|
||||
var/datum/rcd_schematic/C = new path(src)
|
||||
if(!schematics[C.category])
|
||||
schematics[C.category] = list()
|
||||
|
||||
schematics[C.category] += C
|
||||
|
||||
/obj/item/device/rcd/Destroy()
|
||||
for(var/cat in schematics)
|
||||
for(var/datum/rcd_schematic/C in schematics[cat])
|
||||
C.master = null
|
||||
|
||||
schematics = null
|
||||
|
||||
del(interface)
|
||||
del(spark_system)
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/item/device/rcd/attack_self(var/mob/user)
|
||||
interface.show(user)
|
||||
|
||||
/obj/item/device/rcd/proc/rebuild_ui()
|
||||
var/dat = ""
|
||||
|
||||
dat += {"
|
||||
<b>Selected:</b> <span id="selectedname"></span>
|
||||
<h2>Options</h2>
|
||||
<div id="schematic_options">
|
||||
</div>
|
||||
<h2>Available schematics</h2>
|
||||
"}
|
||||
for(var/cat in schematics)
|
||||
dat += "<b>[cat]:</b><ul style='list-style-type:disc'>"
|
||||
var/list/L = schematics[cat]
|
||||
for(var/i = 1 to L.len) //So we have the indexes.
|
||||
var/datum/rcd_schematic/C = L[i]
|
||||
dat += "<li><a href='?src=\ref[interface];cat=[cat];index=[i]'>[C.name]</a></li>"
|
||||
|
||||
dat += "</ul>"
|
||||
|
||||
interface.updateLayout(dat)
|
||||
|
||||
if(selected)
|
||||
interface.updateContent("schematic_options", selected.get_HTML())
|
||||
interface.updateContent("selectedname", selected.name)
|
||||
|
||||
/obj/item/device/rcd/Topic(var/href, var/list/href_list)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(href_list["cat"] && href_list["index"] && !busy) //Change selected schematic.
|
||||
var/list/L = schematics[href_list["cat"]]
|
||||
if(!L)
|
||||
return 1
|
||||
|
||||
var/datum/rcd_schematic/C = L[Clamp(text2num(href_list["index"]), 1, L.len)]
|
||||
if(!istype(C))
|
||||
return 1
|
||||
|
||||
if(!(selected ? selected.deselect(usr, C) : 1 && C.select(usr, selected)))
|
||||
return 1
|
||||
|
||||
spark()
|
||||
|
||||
selected = C
|
||||
update_options_menu()
|
||||
interface.updateContent("selectedname", selected.name)
|
||||
|
||||
return 1
|
||||
|
||||
else if(selected) //The href didn't get handled by us so we pass it down to the selected schematic.
|
||||
return selected.Topic(href, href_list)
|
||||
|
||||
/obj/item/device/rcd/afterattack(var/atom/A, var/mob/user)
|
||||
if(!selected)
|
||||
return 1
|
||||
|
||||
if(selected.flags ^ (RCD_SELF_SANE | RCD_RANGE) && !(user.Adjacent(A) && A.Adjacent(user))) //If RCD_SELF_SANE and RCD_RANGE are disabled we use adjacency.
|
||||
return 1
|
||||
|
||||
if(selected.flags & RCD_RANGE && selected.flags ^ RCD_SELF_SANE && get_dist(A, user) > 1) //RCD_RANGE is used AND we're NOT SELF_SANE, use range(1)
|
||||
return 1
|
||||
|
||||
if(selected.flags & RCD_GET_TURF) //Get the turf because RCD_GET_TURF is on.
|
||||
A = get_turf(A)
|
||||
|
||||
if(selected.flags ^ RCD_SELF_SANE && get_energy() < selected.energy_cost) //Handle energy amounts, but only if not SELF_SANE.
|
||||
return 1
|
||||
|
||||
busy = 1 //Busy to prevent switching schematic while it's in use.
|
||||
var/t = selected.attack(A, user)
|
||||
if(!t) //No errors
|
||||
if(selected.flags ^ RCD_SELF_COST) //Handle energy costs unless the schematic does it itself.
|
||||
use_energy(selected.energy_cost, user)
|
||||
else
|
||||
if(istext(t))
|
||||
user << "<span class='warning'>\the [src]'s error light flickers: [t]</span>"
|
||||
else
|
||||
user << "<span class='warning'>\the [src]'s error light flickers.</span>"
|
||||
|
||||
busy = 0
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/device/rcd/proc/spark()
|
||||
if(sparky)
|
||||
spark_system.start()
|
||||
|
||||
/obj/item/device/rcd/proc/get_energy()
|
||||
return INFINITY
|
||||
|
||||
/obj/item/device/rcd/proc/use_energy(var/amount, var/mob/user)
|
||||
return
|
||||
|
||||
/obj/item/device/rcd/proc/update_options_menu()
|
||||
if(selected)
|
||||
interface.updateContent("schematic_options", selected.get_HTML())
|
||||
else
|
||||
interface.updateContent("schematic_options", " ")
|
||||
|
||||
/obj/item/device/rcd/borg
|
||||
var/cell_power_per_energy = 30
|
||||
|
||||
/obj/item/device/rcd/borg/use_energy(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return
|
||||
|
||||
var/mob/living/silicon/robot/R = user
|
||||
|
||||
if(!R.cell)
|
||||
return
|
||||
|
||||
R.cell.use(amount * cell_power_per_energy)
|
||||
|
||||
/obj/item/device/rcd/borg/get_energy(var/amount, var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return 0
|
||||
|
||||
var/mob/living/silicon/robot/R = user
|
||||
|
||||
if(!R.cell)
|
||||
return
|
||||
|
||||
return R.cell.charge * cell_power_per_energy
|
||||
|
||||
//Matter based RCDs.
|
||||
/obj/item/device/rcd/matter
|
||||
var/matter = 0
|
||||
var/max_matter = 30
|
||||
|
||||
/obj/item/device/rcd/matter/examine(var/mob/user)
|
||||
..()
|
||||
user << "It currently holds [matter]/[max_matter] matter-units."
|
||||
|
||||
/obj/item/device/rcd/matter/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
..()
|
||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||
if((matter + 10) > max_matter)
|
||||
user << "<span class='notice'>\the [src] can't hold any more matter-units.</span>"
|
||||
return 1
|
||||
|
||||
qdel(W)
|
||||
matter += 10
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 20, 1)
|
||||
user << "<span class='notice'>\the [src] now holds [matter]/[max_matter] matter-units.</span>"
|
||||
return 1
|
||||
|
||||
if(isscrewdriver(W))
|
||||
user << "<span class='notice'>You unscrew the access panel and release the cartridge chamber.</span>"
|
||||
while(matter >= 10)
|
||||
new /obj/item/weapon/rcd_ammo(user.loc)
|
||||
matter -= 10
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/device/rcd/matter/use_energy(var/amount, var/mob/user)
|
||||
matter -= amount
|
||||
user << "<span class='notice'>\the [src] currently holds [matter]/[max_matter] matter-units."
|
||||
|
||||
/obj/item/device/rcd/matter/get_energy()
|
||||
return matter
|
||||
64
code/modules/RCD/RPD.dm
Normal file
64
code/modules/RCD/RPD.dm
Normal file
@@ -0,0 +1,64 @@
|
||||
/obj/item/device/rcd/rpd
|
||||
name = "Rapid Piping Device (RPD)"
|
||||
desc = "A device used to rapidly pipe things."
|
||||
icon_state = "rpd"
|
||||
|
||||
starting_materials = list(MAT_IRON = 75000, MAT_GLASS = 37500)
|
||||
|
||||
schematics = list(
|
||||
|
||||
/* Utilities */
|
||||
/datum/rcd_schematic/decon_pipes,
|
||||
/datum/rcd_schematic/paint_pipes,
|
||||
|
||||
/* Regular pipes */
|
||||
/datum/rcd_schematic/pipe,
|
||||
/datum/rcd_schematic/pipe/bent,
|
||||
/datum/rcd_schematic/pipe/manifold,
|
||||
/datum/rcd_schematic/pipe/valve,
|
||||
/datum/rcd_schematic/pipe/dvalve,
|
||||
/datum/rcd_schematic/pipe/cap,
|
||||
/datum/rcd_schematic/pipe/manifold_4w,
|
||||
/datum/rcd_schematic/pipe/mtvalve,
|
||||
/datum/rcd_schematic/pipe/dtvalve,
|
||||
|
||||
/* Devices */
|
||||
/datum/rcd_schematic/pipe/connector,
|
||||
/datum/rcd_schematic/pipe/unary_vent,
|
||||
/datum/rcd_schematic/pipe/passive_vent,
|
||||
/datum/rcd_schematic/pipe/pump,
|
||||
/datum/rcd_schematic/pipe/passive_gate,
|
||||
/datum/rcd_schematic/pipe/volume_pump,
|
||||
/datum/rcd_schematic/pipe/scrubber,
|
||||
/datum/rcd_schematic/pmeter,
|
||||
/datum/rcd_schematic/gsensor,
|
||||
/datum/rcd_schematic/pipe/filter,
|
||||
/datum/rcd_schematic/pipe/mixer,
|
||||
/datum/rcd_schematic/pipe/thermal_plate,
|
||||
/datum/rcd_schematic/pipe/injector,
|
||||
/datum/rcd_schematic/pipe/dp_vent,
|
||||
|
||||
/* H/E Pipes */
|
||||
/datum/rcd_schematic/pipe/he,
|
||||
/datum/rcd_schematic/pipe/he_bent,
|
||||
/datum/rcd_schematic/pipe/juntion,
|
||||
/datum/rcd_schematic/pipe/heat_exchanger,
|
||||
|
||||
/* Insulated Pipes */
|
||||
/datum/rcd_schematic/pipe/insulated,
|
||||
/datum/rcd_schematic/pipe/insulated_bent,
|
||||
/datum/rcd_schematic/pipe/insulated_manifold,
|
||||
/datum/rcd_schematic/pipe/insulated_4w_manifold,
|
||||
|
||||
/* Disposal Pipes */
|
||||
/datum/rcd_schematic/pipe/disposal,
|
||||
/datum/rcd_schematic/pipe/disposal/bent,
|
||||
/datum/rcd_schematic/pipe/disposal/junction,
|
||||
/datum/rcd_schematic/pipe/disposal/y_junction,
|
||||
/datum/rcd_schematic/pipe/disposal/trunk,
|
||||
/datum/rcd_schematic/pipe/disposal/bin,
|
||||
/datum/rcd_schematic/pipe/disposal/outlet,
|
||||
/datum/rcd_schematic/pipe/disposal/chute,
|
||||
/datum/rcd_schematic/pipe/disposal/sort,
|
||||
/datum/rcd_schematic/pipe/disposal/sort_wrap
|
||||
)
|
||||
39
code/modules/RCD/RSF.dm
Normal file
39
code/modules/RCD/RSF.dm
Normal file
@@ -0,0 +1,39 @@
|
||||
//Yes, subtype of engineering. (compressed matter handling.)
|
||||
/obj/item/device/rcd/matter/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
|
||||
icon_state = "rsf"
|
||||
|
||||
starting_materials = list(MAT_IRON = 40000)
|
||||
|
||||
max_matter = 40
|
||||
|
||||
schematics = list(
|
||||
/datum/rcd_schematic/rsf/glass,
|
||||
/datum/rcd_schematic/rsf/flask,
|
||||
/datum/rcd_schematic/rsf/paper,
|
||||
/datum/rcd_schematic/rsf/candle,
|
||||
/datum/rcd_schematic/rsf/dice,
|
||||
/datum/rcd_schematic/rsf/cards,
|
||||
/datum/rcd_schematic/rsf/cardboard
|
||||
)
|
||||
|
||||
/obj/item/device/rcd/borg/rsf
|
||||
name = "\improper Rapid-Service-Fabricator"
|
||||
desc = "A device used to rapidly deploy service items."
|
||||
|
||||
icon_state = "rsf"
|
||||
|
||||
cell_power_per_energy = 50
|
||||
|
||||
schematics = list(
|
||||
/datum/rcd_schematic/rsf/dosh,
|
||||
/datum/rcd_schematic/rsf/glass,
|
||||
/datum/rcd_schematic/rsf/flask,
|
||||
/datum/rcd_schematic/rsf/paper,
|
||||
/datum/rcd_schematic/rsf/candle,
|
||||
/datum/rcd_schematic/rsf/dice,
|
||||
/datum/rcd_schematic/rsf/cards,
|
||||
/datum/rcd_schematic/rsf/cardboard
|
||||
)
|
||||
45
code/modules/RCD/engie.dm
Normal file
45
code/modules/RCD/engie.dm
Normal file
@@ -0,0 +1,45 @@
|
||||
/obj/item/device/rcd/matter/engineering
|
||||
schematics = list(
|
||||
/datum/rcd_schematic/decon,
|
||||
/datum/rcd_schematic/con_floors,
|
||||
/datum/rcd_schematic/con_walls,
|
||||
/datum/rcd_schematic/con_airlock
|
||||
)
|
||||
|
||||
var/disabled = 0
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/afterattack(var/atom/A, var/mob/user)
|
||||
if(disabled)
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/suicide_act(var/mob/user)
|
||||
visible_message("<span class='danger'>[user] is using the deconstruct function on \the [src] on \himself! It looks like \he's trying to commit suicide!</span>")
|
||||
return (user.death(1))
|
||||
|
||||
/obj/item/device/rcd/borg/engineering
|
||||
schematics = list(
|
||||
/datum/rcd_schematic/decon,
|
||||
/datum/rcd_schematic/con_floors,
|
||||
/datum/rcd_schematic/con_walls,
|
||||
/datum/rcd_schematic/con_airlock/no_access
|
||||
)
|
||||
|
||||
/obj/item/weapon/rcd_ammo
|
||||
name = "compressed matter cartridge"
|
||||
desc = "Highly compressed matter in a cartridge form, used in various fabricators."
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "rcd"
|
||||
item_state = "rcdammo"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 0.0
|
||||
origin_tech = "materials=2"
|
||||
w_class = 2.0
|
||||
starting_materials = list(MAT_IRON = 30000, MAT_GLASS = 15000)
|
||||
w_type = RECYK_ELECTRONIC
|
||||
|
||||
/obj/item/weapon/rcd_ammo/attackby(var/obj/O, mob/user)
|
||||
if(is_type_in_list(O, list(/obj/item/device/rcd/matter/engineering, /obj/item/device/rcd/matter/rsf)) || (istype(O, /obj/item/device/material_synth) && !istype(O, /obj/item/device/material_synth/robot)))
|
||||
return O.attackby(src, user)
|
||||
83
code/modules/RCD/schematic.dm
Normal file
83
code/modules/RCD/schematic.dm
Normal file
@@ -0,0 +1,83 @@
|
||||
/datum/rcd_schematic
|
||||
var/name = "whomp" //Obvious.
|
||||
var/category = "" //More obvious. Yes you need a category.
|
||||
var/energy_cost = 0 //Energy cost of this schematic.
|
||||
var/flags = 0 //Bitflags.
|
||||
|
||||
var/obj/item/device/rcd/master //Okay all of the vars here are obvious...
|
||||
|
||||
/datum/rcd_schematic/New(var/obj/item/device/rcd/n_master)
|
||||
master = n_master
|
||||
. = ..()
|
||||
|
||||
|
||||
/*
|
||||
Called when the RCD this thing belongs to attacks an atom.
|
||||
params:
|
||||
- var/atom/A: The atom being attacked.
|
||||
- var/mob/user: The mob using the RCD.
|
||||
|
||||
return value:
|
||||
- !0: Non-descriptive error.
|
||||
- string: Error with reason.
|
||||
- 0: No errors.
|
||||
*/
|
||||
|
||||
/datum/rcd_schematic/proc/attack(var/atom/A, var/mob/user)
|
||||
return 0
|
||||
|
||||
|
||||
/*
|
||||
Called when the RCD's schematic changes away from this one.
|
||||
params:
|
||||
- var/mob/user: The user, duh...
|
||||
- var/datum/rcd_schematic/old_schematic: The new schematic.
|
||||
|
||||
return value:
|
||||
- !0: Switch allowed.
|
||||
- 0: Switch not allowed
|
||||
*/
|
||||
|
||||
/datum/rcd_schematic/proc/deselect(var/mob/user, var/datum/rcd_schematic/new_schematic)
|
||||
return 1
|
||||
|
||||
|
||||
/*
|
||||
Called when the RCD's schematic changes to this one
|
||||
Note: this is called AFTER deselect().
|
||||
params:
|
||||
- var/mob/user: The user, duh...
|
||||
- var/datum/rcd_schematic/old_schematic: The schematic before this one.
|
||||
|
||||
return value:
|
||||
- !0: Switch allowed.
|
||||
- 0: Switch not allowed
|
||||
*/
|
||||
|
||||
/datum/rcd_schematic/proc/select(var/mob/user, var/datum/rcd_schematic/old_schematic)
|
||||
return 1
|
||||
|
||||
|
||||
/*
|
||||
Called to get the HTML for things like the direction menu on an RPD.
|
||||
Note:
|
||||
- Do not do hrefs to the src, any hrefs should direct at the HTML interface, Topic() calls are passed down if not used by the RCD itself.
|
||||
- Always return something here ("" is not enough), else there will be a Jscript error for clients.
|
||||
|
||||
params:
|
||||
- I don't need to explain this.
|
||||
*/
|
||||
|
||||
/datum/rcd_schematic/proc/get_HTML()
|
||||
return " "
|
||||
|
||||
/*
|
||||
Called when a client logs in and the required resources need to be sent to the cache.
|
||||
Use client << browse_rsc() to sent the files.
|
||||
|
||||
params:
|
||||
- var/client/client: client to send to.
|
||||
*/
|
||||
|
||||
/datum/rcd_schematic/proc/send_icons(var/client/client)
|
||||
return
|
||||
394
code/modules/RCD/schematics/engi.dm
Normal file
394
code/modules/RCD/schematics/engi.dm
Normal file
@@ -0,0 +1,394 @@
|
||||
/datum/rcd_schematic/decon
|
||||
name = "Deconstruct"
|
||||
category = "Construction"
|
||||
energy_cost = 5
|
||||
|
||||
var/can_r_wall = 0
|
||||
|
||||
/datum/rcd_schematic/decon/attack(var/atom/A, var/mob/user)
|
||||
if(istype(A, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/T = A
|
||||
if(istype(T, /turf/simulated/wall/r_wall) && !can_r_wall)
|
||||
return "it cannot deconstruct reinforced walls!"
|
||||
|
||||
user << "Deconstructing \the [T]..."
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
|
||||
if(do_after(user, T, 40))
|
||||
if(master.get_energy() < energy_cost)
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
T.ChangeTurf(/turf/simulated/floor/plating)
|
||||
return 0
|
||||
|
||||
else if(istype(A, /turf/simulated/floor))
|
||||
var/turf/simulated/floor/T = A
|
||||
user << "Deconstructing \the [T]..."
|
||||
if(do_after(user, T, 50))
|
||||
if(master.get_energy() < energy_cost)
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
T.ChangeTurf(get_base_turf(T.z))
|
||||
return 0
|
||||
|
||||
else if(istype(A, /obj/machinery/door/airlock))
|
||||
var/obj/machinery/door/airlock/D = A
|
||||
user << "Deconstructing \the [D]..."
|
||||
if(do_after(user, D, 50))
|
||||
if(master.get_energy() < energy_cost)
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
qdel(D)
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/datum/rcd_schematic/con_floors
|
||||
name = "Build floors"
|
||||
category = "Construction"
|
||||
energy_cost = 1
|
||||
|
||||
/datum/rcd_schematic/con_floors/attack(var/atom/A, var/mob/user)
|
||||
if(!(istype(A, /turf/space) && !istype(A, /turf/space/transit)))
|
||||
return "it can only create floors on space!"
|
||||
|
||||
var/turf/space/S = A
|
||||
|
||||
user << "Building floor..."
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
S.ChangeTurf(/turf/simulated/floor/plating/airless)
|
||||
return 0
|
||||
|
||||
/datum/rcd_schematic/con_walls
|
||||
name = "Build walls"
|
||||
category = "Construction"
|
||||
energy_cost = 3
|
||||
|
||||
/datum/rcd_schematic/con_walls/attack(var/atom/A, var/mob/user)
|
||||
if(!istype(A, /turf/simulated/floor))
|
||||
return 1
|
||||
|
||||
var/turf/simulated/floor/T = A
|
||||
user << "Building wall"
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
|
||||
if(do_after(user, A, 20))
|
||||
if(master.get_energy() < energy_cost)
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
T.ChangeTurf(/turf/simulated/wall)
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/datum/rcd_schematic/con_airlock
|
||||
name = "Build airlock"
|
||||
category = "Construction"
|
||||
energy_cost = 3
|
||||
|
||||
var/allow_access = 1
|
||||
var/selected_name = "Airlock"
|
||||
var/list/selected_access = list() //Selected access levels.
|
||||
var/one_access = 0
|
||||
|
||||
var/list/schematics = list()
|
||||
var/datum/airlock_schematic/selected
|
||||
|
||||
/datum/rcd_schematic/con_airlock/no_access
|
||||
allow_access = 0
|
||||
|
||||
/datum/rcd_schematic/con_airlock/New()
|
||||
. = ..()
|
||||
|
||||
for(var/path in typesof(/datum/airlock_schematic))
|
||||
schematics += new path
|
||||
|
||||
selected = schematics[1]
|
||||
|
||||
/datum/rcd_schematic/con_airlock/deselect()
|
||||
. = ..()
|
||||
selected = schematics[1] //Reset the selection.
|
||||
|
||||
/datum/rcd_schematic/con_airlock/send_icons(var/client/client)
|
||||
for(var/datum/airlock_schematic/C in schematics)
|
||||
C.send_icon(client)
|
||||
|
||||
/datum/rcd_schematic/con_airlock/get_HTML()
|
||||
. = "<p>"
|
||||
for(var/i = 1 to schematics.len)
|
||||
var/datum/airlock_schematic/C = schematics[i]
|
||||
var/selected_text = ""
|
||||
if(selected == C)
|
||||
selected_text = " class='selected'"
|
||||
|
||||
. += "<a href='?src=\ref[master.interface];set_selected=[i]' title='[sanitize(C.name)]'[selected_text]><img src='[C.img]'/></a>"
|
||||
|
||||
if(!(i % 5))
|
||||
. += "<br/>"
|
||||
|
||||
. += {"
|
||||
<!-- Name form -->
|
||||
<form action="?src=\ref[master.interface]" method="get">
|
||||
<input type="hidden" name="src" value="\ref[master.interface]"/> <!-- Here so the SRC href gets passed down -->
|
||||
<input type="text" name="new_name" value="[selected_name]"/>
|
||||
<input type="submit" name="act" value="Save Name"/>
|
||||
</form><br/>
|
||||
"}
|
||||
|
||||
if(allow_access)
|
||||
. += {"
|
||||
<!-- Access list visibility toggler -->
|
||||
<script>
|
||||
$("#accessListShowButton").click(
|
||||
function toggleAccessList()
|
||||
{
|
||||
if($("#accessList").is(":hidden"))
|
||||
{
|
||||
$("#accessList").slideDown("fast");
|
||||
$("#accessListShowButton").html("Hide access controls");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#accessList").slideUp("fast");
|
||||
$("#accessListShowButton").html("Show access controls");
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
|
||||
<a id="accessListShowButton">Show access controls</a><br/>
|
||||
|
||||
<!-- Access levels form. -->
|
||||
<form action="?src=\ref[master.interface]" method="get" id="accessList" style="display: none;">
|
||||
<input type="hidden" name="src" value="\ref[master.interface]"/> <!-- Here so the SRC href gets passed down -->
|
||||
<input type="submit" value="Save Access Settings"/><br/><br/>
|
||||
|
||||
<!-- One access radio buttons -->
|
||||
Access requirement is set to: <br/>
|
||||
"}
|
||||
if(one_access) //So we check the correct button by default
|
||||
. += {"
|
||||
<input type="radio" name="oneAccess" value="0"/>ALL
|
||||
<br/>
|
||||
<input type="radio" name="oneAccess" value="1" checked/>ONE
|
||||
"}
|
||||
|
||||
else
|
||||
. += {"
|
||||
<input type="radio" name="oneAccess" value="0" checked/>ALL
|
||||
<br/>
|
||||
<input type="radio" name="oneAccess" value="1"/>ONE
|
||||
"}
|
||||
|
||||
. += {"<br/>
|
||||
Access levels: <br/>
|
||||
"}
|
||||
|
||||
//Access level selection comes here.
|
||||
for(var/access in get_all_accesses())
|
||||
var/access_name = get_access_desc(access)
|
||||
if(!access_name) //I noticed in testing there's a broken access level that shows up, this should filter it out.
|
||||
continue
|
||||
|
||||
var/checked = ""
|
||||
|
||||
if(access in selected_access)
|
||||
checked = " checked"
|
||||
. += {"
|
||||
<input type="checkbox" name="[access]"[checked]/> [access_name] <br/>
|
||||
"}
|
||||
|
||||
. += "</form>"
|
||||
|
||||
. += "</p>"
|
||||
|
||||
/datum/rcd_schematic/con_airlock/Topic(var/href, var/href_list)
|
||||
if(href_list["set_selected"])
|
||||
var/idx = Clamp(text2num(href_list["set_selected"]), 1, schematics.len)
|
||||
var/datum/airlock_schematic/C = schematics[idx]
|
||||
|
||||
selected = C
|
||||
selected_name = C.name //Reset the name.
|
||||
|
||||
master.update_options_menu()
|
||||
return 1
|
||||
|
||||
if(href_list["new_name"])
|
||||
selected_name = copytext(sanitize(href_list["new_name"]), 1, MAX_NAME_LEN)
|
||||
|
||||
master.update_options_menu()
|
||||
return 1
|
||||
|
||||
if(href_list["oneAccess"] && allow_access)
|
||||
one_access = text2num(href_list["oneAccess"])
|
||||
|
||||
//Along with oneAccess, the hrefs for access levels get called, as such we process them here before we return 1
|
||||
selected_access.Cut()
|
||||
var/list/access_levels = get_all_accesses()
|
||||
|
||||
for(var/href_key in href_list - list("oneAccess", "src")) //This should loop through all the access levels that are on.
|
||||
var/access = text2num(href_key)
|
||||
if(!(access in access_levels)) //Only check valid access levels.
|
||||
continue
|
||||
|
||||
selected_access |= access
|
||||
|
||||
master.update_options_menu()
|
||||
return 1
|
||||
|
||||
/datum/rcd_schematic/con_airlock/attack(var/atom/A, var/mob/user)
|
||||
if(!istype(A, /turf))
|
||||
return 1
|
||||
|
||||
if(locate(/obj/machinery/door/airlock) in A)
|
||||
return "there is already an airlock on this spot!"
|
||||
|
||||
user << "Building airlock..."
|
||||
|
||||
if(!do_after(user, A, 50))
|
||||
return 1
|
||||
|
||||
if(master.get_energy() < energy_cost)
|
||||
return 1
|
||||
|
||||
if(locate(/obj/machinery/door/airlock) in A)
|
||||
return "there is already an airlock on this spot!"
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
var/obj/machinery/door/airlock/D = new selected.airlock_type(A)
|
||||
if(capitalize(selected_name) == selected_name) //The name inputted is capitalized, so we add \improper.
|
||||
D.name = "\improper [selected_name]"
|
||||
else
|
||||
D.name = selected_name
|
||||
|
||||
if(allow_access)
|
||||
if(one_access)
|
||||
D.req_one_access = selected_access.Copy()
|
||||
else
|
||||
D.req_access = selected_access.Copy()
|
||||
|
||||
D.autoclose = 1
|
||||
|
||||
//Schematics for schematics, I know, but it's OOP!
|
||||
/datum/airlock_schematic
|
||||
var/name = "airlock" //Name of the airlock for the tooltip.
|
||||
var/airlock_type = /obj/machinery/door/airlock //Type of the airlock.
|
||||
var/img = "rcd_airlock.png" //Icon to send to the client AND to use for the preview.
|
||||
var/icon = 'icons/obj/doors/Doorint.dmi' //Icon file to pull the icon from to send to the client.
|
||||
|
||||
/datum/airlock_schematic/proc/send_icon(var/client/client)
|
||||
client << browse_rsc(new /icon(icon, "door_closed"), img)
|
||||
|
||||
//ALL THE AIRLOCK TYPES.
|
||||
/datum/airlock_schematic/engie
|
||||
name = "\improper Engineering Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/engineering
|
||||
img = "rcd_airlock_eng.png"
|
||||
icon = 'icons/obj/doors/Dooreng.dmi'
|
||||
|
||||
/datum/airlock_schematic/atmos
|
||||
name = "\improper Atmospherics Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/atmos
|
||||
img = "rcd_airlock_atmos.png"
|
||||
icon = 'icons/obj/doors/Dooratmo.dmi'
|
||||
|
||||
/datum/airlock_schematic/sec
|
||||
name = "\improper Security Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/security
|
||||
img = "rcd_airlock_sec.png"
|
||||
icon = 'icons/obj/doors/Doorsec.dmi'
|
||||
|
||||
/datum/airlock_schematic/command
|
||||
name = "\improper Command Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/command
|
||||
img = "rcd_airlock_command.png"
|
||||
icon = 'icons/obj/doors/Doorcom.dmi'
|
||||
|
||||
/datum/airlock_schematic/med
|
||||
name = "\improper Medical Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/medical
|
||||
img = "rcd_airlock_med.png"
|
||||
icon = 'icons/obj/doors/Doormed.dmi'
|
||||
|
||||
/datum/airlock_schematic/sci
|
||||
name = "\improper Research Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/research
|
||||
img = "rcd_airlock_sci.png"
|
||||
icon = 'icons/obj/doors/doorresearch.dmi'
|
||||
|
||||
/datum/airlock_schematic/mining
|
||||
name = "\improper Mining Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/mining
|
||||
img = "rcd_airlock_mining.png"
|
||||
icon = 'icons/obj/doors/Doormining.dmi'
|
||||
|
||||
/datum/airlock_schematic/maint
|
||||
name = "\improper Maintenance Access"
|
||||
airlock_type = /obj/machinery/door/airlock/maintenance
|
||||
img = "rcd_airlock_maint.png"
|
||||
icon = 'icons/obj/doors/Doormaint.dmi'
|
||||
|
||||
/datum/airlock_schematic/ext
|
||||
name = "\improper External Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/external
|
||||
img = "rcd_airlock_ext.png"
|
||||
icon = 'icons/obj/doors/Doorext.dmi'
|
||||
|
||||
/datum/airlock_schematic/high_sec
|
||||
name = "\improper High-Tech Security Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/highsecurity
|
||||
img = "rcd_airlock_high-sec.png"
|
||||
icon = 'icons/obj/doors/hightechsecurity.dmi'
|
||||
|
||||
|
||||
/datum/airlock_schematic/glass
|
||||
name = "\improper Glass Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass
|
||||
img = "rcd_airlock_glass.png"
|
||||
icon = 'icons/obj/doors/Doorglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_eng
|
||||
name = "\improper Glass Engineering Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_engineering
|
||||
img = "rcd_airlock_glass_eng.png"
|
||||
icon = 'icons/obj/doors/Doorengglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_atmos
|
||||
name = "\improper Glass Atmospherics Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_atmos
|
||||
img = "rcd_airlock_glass_atmos.png"
|
||||
icon = 'icons/obj/doors/Dooratmoglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_sec
|
||||
name = "\improper Glass Security Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_security
|
||||
img = "rcd_airlock_glass_sec.png"
|
||||
icon = 'icons/obj/doors/Doorsecglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_command
|
||||
name = "\improper Glass Command Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_command
|
||||
img = "rcd_airlock_glass_com.png"
|
||||
icon = 'icons/obj/doors/Doorcomglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_med
|
||||
name = "\improper Glass Medical Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_medical
|
||||
img = "rcd_airlock_glass_med.png"
|
||||
icon = 'icons/obj/doors/doormedglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_sci
|
||||
name = "\improper Glass Research Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_research
|
||||
img = "rcd_airlock_glass_sci.png"
|
||||
icon = 'icons/obj/doors/doorresearchglass.dmi'
|
||||
|
||||
/datum/airlock_schematic/glass_mining
|
||||
name = "\improper Glass Mining Airlock"
|
||||
airlock_type = /obj/machinery/door/airlock/glass_mining
|
||||
img = "rcd_airlock_glass_mining.png"
|
||||
icon = 'icons/obj/doors/Doorminingglass.dmi'
|
||||
572
code/modules/RCD/schematics/pipe.dm
Normal file
572
code/modules/RCD/schematics/pipe.dm
Normal file
@@ -0,0 +1,572 @@
|
||||
#define PIPE_BINARY 0
|
||||
#define PIPE_BENT 1
|
||||
#define PIPE_TRINARY 2
|
||||
#define PIPE_TRIN_M 3
|
||||
#define PIPE_UNARY 4
|
||||
|
||||
//UTILITIES.
|
||||
|
||||
/datum/rcd_schematic/decon_pipes
|
||||
name = "Eat pipes"
|
||||
category = "Utilities"
|
||||
flags = RCD_RANGE
|
||||
|
||||
/datum/rcd_schematic/decon_pipes/attack(var/atom/A, var/mob/user)
|
||||
if(!istype(A, /atom/movable))
|
||||
return 1
|
||||
|
||||
var/atom/movable/AM = A
|
||||
|
||||
if(!is_type_in_list(AM, list(/obj/item/pipe, /obj/item/pipe_meter, /obj/item/pipe_gsensor, /obj/structure/disposalconstruct)))
|
||||
return 1
|
||||
|
||||
user << "Destroying Pipe..."
|
||||
playsound(get_turf(master), 'sound/machines/click.ogg', 50, 1)
|
||||
if(!do_after(user, AM, 5))
|
||||
return 1
|
||||
|
||||
if(!AM)
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
if(istype(AM, /obj/item/pipe))
|
||||
returnToPool(A)
|
||||
else
|
||||
qdel(AM)
|
||||
|
||||
/datum/rcd_schematic/paint_pipes
|
||||
name = "Paint pipes"
|
||||
category = "Utilities"
|
||||
flags = RCD_RANGE
|
||||
|
||||
var/list/available_colors = list(
|
||||
"grey" = "#CCCCCC",
|
||||
"red" = "#800000",
|
||||
"blue" = "#000080",
|
||||
"cyan" = "#1C94C4",
|
||||
"green" = "#00CC00",
|
||||
"yellow" = "#FFCC00",
|
||||
"purple" = "purple"
|
||||
)
|
||||
|
||||
var/selected_color = "grey"
|
||||
|
||||
/datum/rcd_schematic/paint_pipes/New(var/obj/item/device/rcd/n_master)
|
||||
. = ..()
|
||||
|
||||
if(!master || !master.interface)
|
||||
return
|
||||
|
||||
//Add the colour CSS defines to the master's interface's HEAD.
|
||||
var/color_css
|
||||
|
||||
for(var/color_name in available_colors)
|
||||
var/color = available_colors[color_name]
|
||||
color_css += {"
|
||||
a.color.[color_name] {
|
||||
color: [color];
|
||||
}
|
||||
a.color.[color_name]:hover {
|
||||
border:1px solid [color];
|
||||
}
|
||||
a.color.[color_name].selected {
|
||||
background-color: [color];
|
||||
}
|
||||
"}
|
||||
|
||||
master.interface.head += "<style type='text/css'>[color_css]</style>"
|
||||
|
||||
/datum/rcd_schematic/paint_pipes/deselect(var/mob/user, var/datum/rcd_schematic/new_schematic)
|
||||
. = ..()
|
||||
|
||||
selected_color = available_colors[1]
|
||||
|
||||
/datum/rcd_schematic/paint_pipes/get_HTML()
|
||||
for(var/color_name in available_colors)
|
||||
var/selected = ""
|
||||
if(color_name == selected_color)
|
||||
selected = " selected"
|
||||
|
||||
. += "<a class='color [color_name][selected]' href='?src=\ref[master.interface];set_color=[color_name]'>•</a>"
|
||||
|
||||
/datum/rcd_schematic/paint_pipes/attack(var/atom/A, var/mob/user)
|
||||
if(!istype(A, /obj/machinery/atmospherics))
|
||||
return 1
|
||||
|
||||
var/obj/machinery/atmospherics/O = A
|
||||
|
||||
if(!O.available_colors || !O.available_colors.len)
|
||||
return "you cannot paint this!"
|
||||
|
||||
if(!(selected_color in O.available_colors))
|
||||
return "the color '[selected_color]' is not available for \a [O]"
|
||||
|
||||
playsound(get_turf(master), 'sound/machines/click.ogg', 50, 1)
|
||||
O._color = selected_color
|
||||
|
||||
user.visible_message("<span class='notice'>[user] paints \the [O] [selected_color].</span>","<span class='notice'>You paint \the [O] [selected_color].</span>")
|
||||
O.update_icon()
|
||||
|
||||
/datum/rcd_schematic/paint_pipes/Topic(var/href, var/list/href_list)
|
||||
if(href_list["set_color"])
|
||||
if(href_list["set_color"] in available_colors)
|
||||
selected_color = href_list["set_color"]
|
||||
|
||||
master.update_options_menu()
|
||||
|
||||
return 1
|
||||
|
||||
//METERS AND SENSORS.
|
||||
|
||||
/datum/rcd_schematic/gsensor
|
||||
name = "Gas sensor"
|
||||
category = "Devices"
|
||||
flags = RCD_RANGE | RCD_GET_TURF
|
||||
|
||||
/datum/rcd_schematic/gsensor/attack(var/atom/A, var/mob/user)
|
||||
if(!isturf(A))
|
||||
return
|
||||
|
||||
user << "Building gas sensor..."
|
||||
playsound(get_turf(master), 'sound/machines/click.ogg', 50, 1)
|
||||
if(!do_after(user, A, 20))
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
new /obj/item/pipe_gsensor(A)
|
||||
|
||||
/datum/rcd_schematic/pmeter
|
||||
name = "Pipe meter"
|
||||
category = "Devices"
|
||||
flags = RCD_RANGE | RCD_GET_TURF
|
||||
|
||||
/datum/rcd_schematic/pmeter/attack(var/atom/A, var/mob/user)
|
||||
if(!isturf(A))
|
||||
return
|
||||
|
||||
user << "Building pipe meter..."
|
||||
playsound(get_turf(master), 'sound/machines/click.ogg', 50, 1)
|
||||
if(!do_after(user, A, 20))
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
new /obj/item/pipe_meter(A)
|
||||
|
||||
//ACTUAL PIPES.
|
||||
|
||||
/datum/rcd_schematic/pipe
|
||||
name = "Pipe"
|
||||
category = "Regular pipes"
|
||||
flags = RCD_RANGE | RCD_GET_TURF
|
||||
|
||||
var/pipe_id = PIPE_SIMPLE_STRAIGHT
|
||||
var/pipe_type = PIPE_BINARY
|
||||
var/selected_dir = NORTH
|
||||
|
||||
/datum/rcd_schematic/pipe/send_icons(var/client/client)
|
||||
var/list/dir_list //We get the dirs to loop through and send images to the client for.
|
||||
switch(pipe_type)
|
||||
if(PIPE_UNARY, PIPE_TRINARY)
|
||||
dir_list = cardinal
|
||||
|
||||
if(PIPE_BINARY)
|
||||
dir_list = list(NORTH, EAST)
|
||||
|
||||
if(PIPE_BENT)
|
||||
dir_list = diagonal
|
||||
|
||||
if(PIPE_TRIN_M)
|
||||
dir_list = alldirs
|
||||
|
||||
else
|
||||
dir_list = list()
|
||||
|
||||
for(var/dir in dir_list)
|
||||
send_icon(client, dir)
|
||||
|
||||
/datum/rcd_schematic/pipe/proc/send_icon(var/client/client, var/dir)
|
||||
client << browse_rsc(new/icon('icons/obj/pipe-item.dmi', pipeID2State[pipe_id + 1], dir), "RPD_[pipe_id]_[dir].png")
|
||||
|
||||
/datum/rcd_schematic/pipe/get_HTML()
|
||||
. += "<p>"
|
||||
|
||||
switch(pipe_type)
|
||||
if(PIPE_BINARY)
|
||||
. += render_dir_image(NORTH, "Vertical")
|
||||
. += render_dir_image(EAST, "Horizontal")
|
||||
|
||||
if(PIPE_UNARY)
|
||||
. += render_dir_image(NORTH, "North")
|
||||
. += render_dir_image(EAST, "East")
|
||||
. += render_dir_image(SOUTH, "South")
|
||||
. += render_dir_image(WEST, "West")
|
||||
|
||||
if(PIPE_BENT)
|
||||
. += render_dir_image(9, "West to North")
|
||||
. += render_dir_image(5, "North to East")
|
||||
. += "<br/>"
|
||||
. += render_dir_image(10, "South to West")
|
||||
. += render_dir_image(6, "East to South")
|
||||
|
||||
if(PIPE_TRINARY)
|
||||
. += render_dir_image(NORTH, "West South East")
|
||||
. += render_dir_image(EAST, "North West South")
|
||||
. += "<br/>"
|
||||
. += render_dir_image(SOUTH, "East North West")
|
||||
. += render_dir_image(WEST, "South East North")
|
||||
|
||||
if(PIPE_TRIN_M)
|
||||
. += render_dir_image(NORTH, "West South East")
|
||||
. += render_dir_image(EAST, "North West South")
|
||||
. += "<br/>"
|
||||
. += render_dir_image(SOUTH, "East North West")
|
||||
. += render_dir_image(WEST, "South East North")
|
||||
. += "<br/>"
|
||||
. += render_dir_image(6, "West South East")
|
||||
. += render_dir_image(5, "North West South")
|
||||
. += "<br/>"
|
||||
. += render_dir_image(9, "East North West")
|
||||
. += render_dir_image(10, "South East North")
|
||||
|
||||
. += "</p>"
|
||||
|
||||
/datum/rcd_schematic/pipe/proc/render_dir_image(var/dir, var/title)
|
||||
var/selected = ""
|
||||
if(selected_dir == dir)
|
||||
selected = " class='selected'"
|
||||
|
||||
return "<a href='?src=\ref[master.interface];set_dir=[dir]'[selected] title='[title]'><img src='RPD_[pipe_id]_[dir].png'/></a>"
|
||||
|
||||
/datum/rcd_schematic/pipe/Topic(var/href, var/href_list)
|
||||
if(href_list["set_dir"])
|
||||
var/dir = text2num(href_list["set_dir"])
|
||||
if(!(dir in alldirs) || selected_dir == dir)
|
||||
return 1
|
||||
|
||||
selected_dir = dir
|
||||
master.update_options_menu()
|
||||
|
||||
return 1
|
||||
|
||||
/datum/rcd_schematic/pipe/attack(var/atom/A, var/mob/user)
|
||||
user << "Building Pipes ..."
|
||||
playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1)
|
||||
if(!do_after(user, A, 20))
|
||||
return 1
|
||||
|
||||
playsound(get_turf(user), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
var/obj/item/pipe/P = getFromPool(/obj/item/pipe, A, pipe_id, selected_dir)
|
||||
P.update()
|
||||
P.add_fingerprint(user)
|
||||
|
||||
//Disposal piping.
|
||||
/datum/rcd_schematic/pipe/disposal
|
||||
category = "Disposal Pipes"
|
||||
|
||||
pipe_id = DISP_PIPE_STRAIGHT
|
||||
var/actual_id = 0 //This is needed because disposals construction code is a shit.
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/send_icon(var/client/client, var/dir)
|
||||
client << browse_rsc(new/icon('icons/obj/pipes/disposal.dmi', disposalpipeID2State[pipe_id + 1], dir), "RPD_D_[pipe_id]_[dir].png")
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/render_dir_image(var/dir, var/title)
|
||||
var/selected = ""
|
||||
if(selected_dir == dir)
|
||||
selected = " class='selected'"
|
||||
|
||||
return "<a href='?src=\ref[master.interface];set_dir=[dir]'[selected] title='[title]'><img src='RPD_D_[pipe_id]_[dir].png'/></a>"
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/attack(var/atom/A, var/mob/user)
|
||||
user << "Building Pipes ..."
|
||||
playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1)
|
||||
if(!do_after(user, A, 20))
|
||||
return 1
|
||||
|
||||
playsound(get_turf(user), 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
var/obj/structure/disposalconstruct/C = new/obj/structure/disposalconstruct(A)
|
||||
C.dir = selected_dir
|
||||
C.ptype = actual_id
|
||||
C.update()
|
||||
|
||||
C.add_fingerprint(user)
|
||||
|
||||
var/global/list/disposalpipeID2State=list(
|
||||
"pipe-s",
|
||||
"pipe-c",
|
||||
"pipe-j1",
|
||||
"pipe-y",
|
||||
"pipe-t",
|
||||
"disposal",
|
||||
"outlet",
|
||||
"intake",
|
||||
"pipe-j1s",
|
||||
"pipe-j1s",
|
||||
)
|
||||
|
||||
//PIPE DEFINES START HERE.
|
||||
|
||||
//REGULAR PIPES.
|
||||
//Straight is the base class, so not included.
|
||||
|
||||
/datum/rcd_schematic/pipe/bent
|
||||
name = "Bent Pipe"
|
||||
|
||||
pipe_id = PIPE_SIMPLE_BENT
|
||||
pipe_type = PIPE_BENT
|
||||
|
||||
/datum/rcd_schematic/pipe/manifold
|
||||
name = "Manifold"
|
||||
|
||||
pipe_id = PIPE_MANIFOLD
|
||||
pipe_type = PIPE_TRINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/valve
|
||||
name = "Manual Valve"
|
||||
|
||||
pipe_id = PIPE_MVALVE
|
||||
pipe_type = PIPE_BINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/dvalve
|
||||
name = "Digital Valve"
|
||||
|
||||
pipe_id = PIPE_DVALVE
|
||||
pipe_type = PIPE_BINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/cap
|
||||
name = "Pipe Cap"
|
||||
|
||||
pipe_id = PIPE_CAP
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/manifold_4w
|
||||
name = "4-Way Manifold"
|
||||
|
||||
pipe_id = PIPE_MANIFOLD4W
|
||||
pipe_type = PIPE_BINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/mtvalve
|
||||
name = "Manual T-Valve"
|
||||
|
||||
pipe_id = PIPE_MTVALVE
|
||||
pipe_type = PIPE_TRIN_M
|
||||
|
||||
/datum/rcd_schematic/pipe/dtvalve
|
||||
name = "Digital T-Valve"
|
||||
|
||||
pipe_id = PIPE_DTVALVE
|
||||
pipe_type = PIPE_TRIN_M
|
||||
|
||||
//DEVICES.
|
||||
|
||||
/datum/rcd_schematic/pipe/connector
|
||||
name = "Connecter"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_CONNECTOR
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/unary_vent
|
||||
name = "Unary Vent"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_UVENT
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/passive_vent
|
||||
name = "Passive Vent"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_PASV_VENT
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/pump
|
||||
name = "Gas Pump"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_PUMP
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/passive_gate
|
||||
name = "Passive gate"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_PASSIVE_GATE
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/volume_pump
|
||||
name = "Volume Pump"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_VOLUME_PUMP
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/scrubber
|
||||
name = "Scrubber"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_SCRUBBER
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/filter
|
||||
name = "Gas Filter"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_GAS_FILTER
|
||||
pipe_type = PIPE_TRIN_M
|
||||
|
||||
/datum/rcd_schematic/pipe/mixer
|
||||
name = "Gas Mixer"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_GAS_MIXER
|
||||
pipe_type = PIPE_TRIN_M
|
||||
|
||||
/datum/rcd_schematic/pipe/thermal_plate
|
||||
name = "Thermal Plate"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_THERMAL_PLATE
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/injector
|
||||
name = "Injector"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_INJECTOR
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/dp_vent
|
||||
name = "Dual-Port Vent"
|
||||
category = "Devices"
|
||||
|
||||
pipe_id = PIPE_DP_VENT
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
//H/E Pipes.
|
||||
|
||||
/datum/rcd_schematic/pipe/he
|
||||
name = "Pipe"
|
||||
category = "Heat Exchange"
|
||||
|
||||
pipe_id = PIPE_HE_STRAIGHT
|
||||
pipe_type = PIPE_BINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/he_bent
|
||||
name = "Bent Pipe"
|
||||
category = "Heat Exchange"
|
||||
|
||||
pipe_id = PIPE_HE_BENT
|
||||
pipe_type = PIPE_BENT
|
||||
|
||||
/datum/rcd_schematic/pipe/juntion
|
||||
name = "Junction"
|
||||
category = "Heat Exchange"
|
||||
|
||||
pipe_id = PIPE_JUNCTION
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/heat_exchanger
|
||||
name = "Heat Exchanger"
|
||||
category = "Heat Exchange"
|
||||
|
||||
pipe_id = PIPE_HEAT_EXCHANGE
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
//INSULATED PIPES.
|
||||
|
||||
/datum/rcd_schematic/pipe/insulated
|
||||
name = "Pipe"
|
||||
category = "Insulated Pipes"
|
||||
|
||||
pipe_id = PIPE_INSULATED_STRAIGHT
|
||||
pipe_type = PIPE_BINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/insulated_bent
|
||||
name = "Bent Pipe"
|
||||
category = "Insulated Pipes"
|
||||
|
||||
pipe_id = PIPE_INSULATED_BENT
|
||||
pipe_type = PIPE_BENT
|
||||
|
||||
/datum/rcd_schematic/pipe/insulated_manifold
|
||||
name = "Manifold"
|
||||
category = "Insulated Pipes"
|
||||
|
||||
pipe_id = PIPE_INSUL_MANIFOLD
|
||||
pipe_type = PIPE_TRINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/insulated_4w_manifold
|
||||
name = "4-Way Manifold"
|
||||
category = "Insulated Pipes"
|
||||
|
||||
pipe_id = PIPE_INSUL_MANIFOLD4W
|
||||
pipe_type = PIPE_BINARY
|
||||
|
||||
//DISPOSAL PIPES
|
||||
//Again basic straight is handled in the parent.
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/bent
|
||||
name = "Bent Pipe"
|
||||
|
||||
pipe_id = DISP_PIPE_BENT
|
||||
actual_id = 1
|
||||
pipe_type = PIPE_UNARY //Yes this makes no sense but BLAME FUCKING DISPOSALS CODE.
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/junction
|
||||
name = "Junction"
|
||||
|
||||
pipe_id = DISP_JUNCTION
|
||||
actual_id = 2
|
||||
pipe_type = PIPE_TRINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/y_junction
|
||||
name = "Y-Junction"
|
||||
|
||||
pipe_id = DISP_YJUNCTION
|
||||
actual_id = 4
|
||||
pipe_type = PIPE_TRINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/trunk
|
||||
name = "Trunk"
|
||||
|
||||
pipe_id = DISP_END_TRUNK
|
||||
actual_id = 5
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/bin
|
||||
name = "Bin"
|
||||
|
||||
pipe_id = DISP_END_BIN
|
||||
actual_id = 6
|
||||
pipe_type = -1 //Will disable the icon.
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/outlet
|
||||
name = "Outlet"
|
||||
|
||||
pipe_id = DISP_END_OUTLET
|
||||
actual_id = 7
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/chute
|
||||
name = "Chute"
|
||||
|
||||
pipe_id = DISP_END_CHUTE
|
||||
actual_id = 8
|
||||
pipe_type = PIPE_UNARY
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/sort
|
||||
name = "Sorting Junction"
|
||||
|
||||
pipe_id = DISP_SORT_JUNCTION
|
||||
actual_id = 9
|
||||
pipe_type = PIPE_TRINARY
|
||||
|
||||
/datum/rcd_schematic/pipe/disposal/sort_wrap
|
||||
name = "Wrapped Sorting Junction"
|
||||
|
||||
pipe_id = DISP_SORT_WRAP_JUNCTION
|
||||
actual_id = 11
|
||||
pipe_type = PIPE_TRINARY
|
||||
46
code/modules/RCD/schematics/service.dm
Normal file
46
code/modules/RCD/schematics/service.dm
Normal file
@@ -0,0 +1,46 @@
|
||||
//RSF schematics.
|
||||
/datum/rcd_schematic/rsf
|
||||
energy_cost = 1
|
||||
var/spawn_type
|
||||
category = "Service"
|
||||
|
||||
/datum/rcd_schematic/rsf/attack(var/atom/A, var/mob/user)
|
||||
if(!is_type_in_list(A, list(/obj/structure/table, /turf/simulated/floor)))
|
||||
return 1
|
||||
|
||||
user << "Dispensing [lowertext(name)]"
|
||||
playsound(get_turf(src), 'sound/machines/click.ogg', 10, 1)
|
||||
new spawn_type(get_turf(A))
|
||||
|
||||
/datum/rcd_schematic/rsf/dosh
|
||||
name = "Dosh"
|
||||
spawn_type = /obj/item/weapon/spacecash/c10
|
||||
energy_cost = 4
|
||||
|
||||
/datum/rcd_schematic/rsf/glass
|
||||
name = "Glass"
|
||||
spawn_type = /obj/item/weapon/reagent_containers/food/drinks/drinkingglass
|
||||
|
||||
/datum/rcd_schematic/rsf/flask
|
||||
name = "Flask"
|
||||
spawn_type = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
|
||||
|
||||
/datum/rcd_schematic/rsf/paper
|
||||
name = "Paper"
|
||||
spawn_type = /obj/item/weapon/paper
|
||||
|
||||
/datum/rcd_schematic/rsf/candle
|
||||
name = "Candle"
|
||||
spawn_type = /obj/item/candle
|
||||
|
||||
/datum/rcd_schematic/rsf/dice
|
||||
name = "Dice"
|
||||
spawn_type = /obj/item/weapon/storage/pill_bottle/dice
|
||||
|
||||
/datum/rcd_schematic/rsf/cards
|
||||
name = "Deck of cards"
|
||||
spawn_type = /obj/item/toy/cards
|
||||
|
||||
/datum/rcd_schematic/rsf/cardboard
|
||||
name = "Cardboard Sheet..."
|
||||
spawn_type = /obj/item/stack/sheet/cardboard
|
||||
6
code/modules/RCD/schematics/test.dm
Normal file
6
code/modules/RCD/schematics/test.dm
Normal file
@@ -0,0 +1,6 @@
|
||||
/datum/rcd_schematic/test
|
||||
category = "test"
|
||||
|
||||
/datum/rcd_schematic/test/attack(var/atom/A, var/mob/user)
|
||||
user << "WHOMP"
|
||||
A.color = "#FFFF00"
|
||||
609
code/modules/RCD/schematics/tile.dm
Normal file
609
code/modules/RCD/schematics/tile.dm
Normal file
@@ -0,0 +1,609 @@
|
||||
#define PAINT_ALL 0
|
||||
#define PAINT_FLOOR 1
|
||||
#define PAINT_PLATING 2
|
||||
#define PAINT_REINFORCED 3
|
||||
|
||||
#define DIR_ONE 1 //For those tiles with only one direction.
|
||||
#define DIR_ORTHO 2 //Orthogonal (south, west, north, east).
|
||||
#define DIR_ALL 3 //All the directions.
|
||||
|
||||
#define PAINT_ASK_DESC = 1
|
||||
s
|
||||
/datum/rcd_schematic/tile
|
||||
name = "Decals"
|
||||
category = "Painting"
|
||||
|
||||
flags = RCD_GET_TURF
|
||||
|
||||
var/datum/paint_info/selected
|
||||
var/selected_dir = 2
|
||||
|
||||
/datum/rcd_schematic/tile/send_icons(var/client/client)
|
||||
var/list/our_list = get_our_list()
|
||||
if(!our_list)
|
||||
return
|
||||
|
||||
for(var/datum/paint_info/P in our_list)
|
||||
for(var/ndir in get_dir_list_by_dir_type(P.adirs))
|
||||
client << browse_rsc(new/icon(P.icon, P.icon_state, ndir), "[P.file_name][P.icon_state]_[ndir].png")
|
||||
|
||||
/datum/rcd_schematic/tile/proc/get_dir_list_by_dir_type(var/adir)
|
||||
switch(adir)
|
||||
if(DIR_ONE)
|
||||
return list(SOUTH)
|
||||
|
||||
if(DIR_ORTHO)
|
||||
return cardinal
|
||||
|
||||
if(DIR_ALL)
|
||||
return alldirs
|
||||
|
||||
/datum/rcd_schematic/tile/get_HTML()
|
||||
. += "<p>"
|
||||
|
||||
var/list/our_list = get_our_list()
|
||||
for(var/datum/paint_info/P in our_list)
|
||||
for(var/dir in get_dir_list_by_dir_type(P.adirs))
|
||||
var/selected = ""
|
||||
if(selected == P && dir == selected_dir)
|
||||
selected = " class='selected'"
|
||||
|
||||
. += "<a href='?src=\ref[master.interface];select_paint=[our_list.Find(P)];set_dir=[dir]'[selected]><img src='[P.file_name][P.icon_state]_[dir].png'/></a>"
|
||||
|
||||
. += "</p>"
|
||||
|
||||
/datum/rcd_schematic/tile/Topic(var/href, var/href_list)
|
||||
if(href_list["select_paint"])
|
||||
var/list/our_list = get_our_list()
|
||||
var/idx = Clamp(round(text2num(href_list["select_paint"])), 1, our_list.len)
|
||||
|
||||
selected = our_list[idx]
|
||||
if(!(selected_dir in get_dir_list_by_dir_type(selected.adirs)))
|
||||
selected_dir = 2
|
||||
|
||||
master.update_options_menu()
|
||||
. = 1
|
||||
|
||||
if(href_list["set_dir"])
|
||||
var/dir = text2num(href_list["set_dir"])
|
||||
if(!(dir in get_dir_list_by_dir_type(selected.adirs)))
|
||||
return 1
|
||||
|
||||
selected_dir = dir
|
||||
|
||||
/datum/rcd_schematic/tile/attack(var/atom/A, var/mob/user)
|
||||
if(!selected)
|
||||
return 1
|
||||
|
||||
if(!selected.validate(A))
|
||||
return "maybe you're using it on the wrong floor type?"
|
||||
|
||||
var/nname = ""
|
||||
|
||||
switch(selected.ftype)
|
||||
if(PAINT_FLOOR) nname = "floor" //restoring the name of our new tile, usually if you place a floor tile on a plating it's still called "plating" for now
|
||||
if(PAINT_REINFORCED) nname = "reinforced floor" //also getting rid of the plaque if it's there
|
||||
if(PAINT_PLATING) nname = "plating"
|
||||
|
||||
user << "Painting floor..."
|
||||
playsound(get_turf(master), 'sound/machines/click.ogg', 50, 1)
|
||||
if(!do_after(user, A, 20))
|
||||
return 1
|
||||
|
||||
playsound(get_turf(master), 'sound/effects/extinguish.ogg', 25, 1)
|
||||
|
||||
selected.apply(A, nname, dir = selected_dir)
|
||||
|
||||
//Gets the list of paint info datums.
|
||||
/datum/rcd_schematic/tile/proc/get_our_list()
|
||||
return paint_variants[name]
|
||||
|
||||
/datum/paint_info
|
||||
var/icon/icon = 'icons/turf/floors.dmi'
|
||||
var/icon_state = "floor"
|
||||
var/ftype = PAINT_FLOOR //The floor type required for this paint job.
|
||||
var/adirs = DIR_ONE //Available dirs for this floor type.
|
||||
var/file_name = "tile_painter_" //The file data gets added after this, used to seperate the decals and floor types.
|
||||
var/flags = 0
|
||||
|
||||
/datum/paint_info/New(var/padir, var/picon, var/ptype, var/nflags = 0)
|
||||
if(ptype)
|
||||
ftype = ptype
|
||||
|
||||
if(padir)
|
||||
adirs = padir
|
||||
|
||||
if(picon)
|
||||
icon_state = picon
|
||||
|
||||
flags = nflags
|
||||
|
||||
//This is used to give the user a hint that he's a massive retard for using a floor painter on the carpet
|
||||
/datum/paint_info/proc/validate(var/turf/simulated/floor/test)
|
||||
switch(ftype)
|
||||
if(PAINT_FLOOR) //why is it named plasteel anyway?
|
||||
if(!(istype(test.floor_tile,/obj/item/stack/tile/plasteel)))
|
||||
return 0 //if it's carpet, wood or some other stuff, we aren't going to paint that
|
||||
if(istype(test, /turf/simulated/floor/engine))
|
||||
return 0 //reinforced floor has plasteel in floor_tile too
|
||||
//but that isn't a regular floor
|
||||
if(PAINT_PLATING)
|
||||
if(!istype(test,/turf/simulated/floor/plating))
|
||||
return 0
|
||||
|
||||
if(PAINT_REINFORCED)
|
||||
if(!istype(test,/turf/simulated/floor/engine))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/datum/paint_info/proc/apply(var/turf/simulated/floor/T, var/pname, var/pdesc, var/dir)
|
||||
T.icon_state = icon_state
|
||||
T.icon_regular_floor = icon_state //required to 'save' the new floor type so if someone crowbars it and puts it back it won't revert to the original state
|
||||
T.dir = dir
|
||||
T.desc = pdesc //so if you paint over a plaque with a floor the tile loses its description
|
||||
if(pname)
|
||||
T.name = pname
|
||||
|
||||
T.ClearDecals()
|
||||
|
||||
/datum/paint_info/decal
|
||||
icon = 'icons/effects/warning_stripes.dmi'
|
||||
ftype = PAINT_ALL
|
||||
file_name = "tile_painter_d_"
|
||||
|
||||
/datum/paint_info/decal/apply(var/turf/simulated/floor/T, var/pname, var/pdesc, var/dir)
|
||||
T.AddDecal(image(icon, icon_state = icon_state, dir = dir))
|
||||
|
||||
//The list of all available floor design groups.
|
||||
|
||||
/datum/rcd_schematic/tile/gray
|
||||
name = "Gray"
|
||||
|
||||
/datum/rcd_schematic/tile/neutral
|
||||
name = "Neutral"
|
||||
|
||||
/datum/rcd_schematic/tile/white
|
||||
name = "White"
|
||||
|
||||
/datum/rcd_schematic/tile/red
|
||||
name = "Red"
|
||||
|
||||
/datum/rcd_schematic/tile/green
|
||||
name = "Green"
|
||||
|
||||
/datum/rcd_schematic/tile/blue
|
||||
name = "Blue"
|
||||
|
||||
/datum/rcd_schematic/tile/yellow
|
||||
name = "Yellow"
|
||||
|
||||
/datum/rcd_schematic/tile/purple
|
||||
name = "Purple"
|
||||
|
||||
/datum/rcd_schematic/tile/orange
|
||||
name = "Orange"
|
||||
|
||||
/datum/rcd_schematic/tile/brown
|
||||
name = "Brown"
|
||||
|
||||
/datum/rcd_schematic/tile/red_yellow
|
||||
name = "Red and yellow"
|
||||
|
||||
/datum/rcd_schematic/tile/red_blue
|
||||
name = "Red and blue"
|
||||
|
||||
/datum/rcd_schematic/tile/red_green
|
||||
name = "Red and green"
|
||||
|
||||
/datum/rcd_schematic/tile/green_yellow
|
||||
name = "Green and yellow"
|
||||
|
||||
/datum/rcd_schematic/tile/green_blue
|
||||
name = "Green and blue"
|
||||
|
||||
/datum/rcd_schematic/tile/blue_yellow
|
||||
name = "Blue and yellow"
|
||||
|
||||
/datum/rcd_schematic/tile/white_red
|
||||
name = "White red"
|
||||
|
||||
/datum/rcd_schematic/tile/white_green
|
||||
name = "White green"
|
||||
|
||||
/datum/rcd_schematic/tile/white_blue
|
||||
name = "White blue"
|
||||
|
||||
/datum/rcd_schematic/tile/white_yellow
|
||||
name = "White yellow"
|
||||
|
||||
/datum/rcd_schematic/tile/white_purple
|
||||
name = "White purple"
|
||||
|
||||
/datum/rcd_schematic/tile/arrival
|
||||
name = "Arrival"
|
||||
|
||||
/datum/rcd_schematic/tile/escape
|
||||
name = "Escape"
|
||||
|
||||
/datum/rcd_schematic/tile/dark
|
||||
name = "Dark"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_red
|
||||
name = "Dark red"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_blue
|
||||
name = "Dark blue"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_green
|
||||
name = "Dark green"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_purple
|
||||
name = "Dark purple"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_yellow
|
||||
name = "Dark yellow"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_orange
|
||||
name = "Dark orange"
|
||||
|
||||
/datum/rcd_schematic/tile/dark_vault
|
||||
name = "Dark vault"
|
||||
|
||||
/datum/rcd_schematic/tile/markings
|
||||
name = "Markings"
|
||||
|
||||
/datum/rcd_schematic/tile/loading
|
||||
name = "Loading area"
|
||||
|
||||
/datum/rcd_schematic/tile/warning
|
||||
name = "Warning"
|
||||
|
||||
/datum/rcd_schematic/tile/warning_white
|
||||
name = "White warning"
|
||||
|
||||
/datum/rcd_schematic/tile/warning_reinforced
|
||||
name = "Reinforced warning"
|
||||
|
||||
/datum/rcd_schematic/tile/warning_plating
|
||||
name = "Plating warning"
|
||||
|
||||
/datum/rcd_schematic/tile/chapel
|
||||
name = "Chapel"
|
||||
|
||||
/datum/rcd_schematic/tile/ss13_logo
|
||||
name = "SS13 logo"
|
||||
|
||||
/datum/rcd_schematic/tile/derelict_logo
|
||||
name = "Derelict logo"
|
||||
|
||||
/datum/rcd_schematic/tile/other
|
||||
name = "Other"
|
||||
|
||||
//Ririchiyo's potatobox grid.
|
||||
/datum/rcd_schematic/tile/all
|
||||
name = "All"
|
||||
|
||||
//We override this so we DON'T send files twice, sending is handled in the specific ones.
|
||||
/datum/rcd_schematic/tile/all/send_icons(var/client/client)
|
||||
return
|
||||
|
||||
//We get EVERY paint info datum.
|
||||
/datum/rcd_schematic/tile/all/get_our_list()
|
||||
. = list()
|
||||
for(var/key in paint_variants)
|
||||
for(var/datum/paint_info/P in paint_variants[key])
|
||||
. += P
|
||||
|
||||
|
||||
var/global/list/paint_variants = list(
|
||||
"Decals" = list(
|
||||
// Stripes
|
||||
new /datum/paint_info/decal(DIR_ALL, "warning"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "all"),
|
||||
|
||||
// Loading areas (TODO: colourable)
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "warning_corner"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "unloading"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "bot"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "loading_area"),
|
||||
new /datum/paint_info/decal(DIR_ONE, "no"),
|
||||
|
||||
// Atmos lettering
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "oxygen"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "nitrogen"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "carbon_dioxide"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "nitrous_oxide"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "air"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "plasma"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "zoo"),
|
||||
|
||||
// Numbers
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "1"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "2"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "3"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "4"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "5"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "6"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "7"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "8"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "9"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "0"),
|
||||
|
||||
// Path markers
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "1"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "1"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "1"),
|
||||
new /datum/paint_info/decal(DIR_ORTHO, "1"),
|
||||
),
|
||||
"Gray" = list(
|
||||
new /datum/paint_info(DIR_ONE, "floor"),
|
||||
new /datum/paint_info(DIR_ALL, "black"),
|
||||
new /datum/paint_info(DIR_ORTHO, "blackcorner")
|
||||
),
|
||||
|
||||
"Neutral" = list(
|
||||
new /datum/paint_info(DIR_ALL, "neutral"),
|
||||
new /datum/paint_info(DIR_ORTHO, "neutralcorner"),
|
||||
new /datum/paint_info(DIR_ONE, "neutralfull")
|
||||
),
|
||||
|
||||
"White" = list(
|
||||
new /datum/paint_info(DIR_ONE, "white"),
|
||||
new /datum/paint_info(DIR_ALL, "whitehall"),
|
||||
new /datum/paint_info(DIR_ORTHO, "whitecorner")
|
||||
),
|
||||
|
||||
"Red" = list(
|
||||
new /datum/paint_info(DIR_ONE, "redfull"),
|
||||
new /datum/paint_info(DIR_ALL, "red"),
|
||||
new /datum/paint_info(DIR_ORTHO, "redcorner")
|
||||
),
|
||||
|
||||
"Green" = list(
|
||||
new /datum/paint_info(DIR_ONE, "greenfull"),
|
||||
new /datum/paint_info(DIR_ALL, "green"),
|
||||
new /datum/paint_info(DIR_ORTHO, "greencorner")
|
||||
),
|
||||
|
||||
"Blue" = list(
|
||||
new /datum/paint_info(DIR_ONE, "bluefull"),
|
||||
new /datum/paint_info(DIR_ALL, "blue"),
|
||||
new /datum/paint_info(DIR_ORTHO, "bluecorner")
|
||||
),
|
||||
|
||||
"Yellow" = list(
|
||||
new /datum/paint_info(DIR_ONE, "yellowfull"),
|
||||
new /datum/paint_info(DIR_ALL, "yellow"),
|
||||
new /datum/paint_info(DIR_ORTHO, "yellowcorner")
|
||||
),
|
||||
|
||||
"Purple" = list(
|
||||
new /datum/paint_info(DIR_ONE, "purplefull"),
|
||||
new /datum/paint_info(DIR_ALL, "purple"),
|
||||
new /datum/paint_info(DIR_ORTHO, "purplecorner")
|
||||
),
|
||||
|
||||
"Orange" = list(
|
||||
new /datum/paint_info(DIR_ONE, "orangefull"),
|
||||
new /datum/paint_info(DIR_ALL, "orange"),
|
||||
new /datum/paint_info(DIR_ORTHO, "orangecorner")
|
||||
),
|
||||
|
||||
"Brown" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark brown full"),
|
||||
new /datum/paint_info(DIR_ALL, "brown"),
|
||||
new /datum/paint_info(DIR_ORTHO, "browncorner")
|
||||
),
|
||||
|
||||
"Red and yellow" = list(
|
||||
new /datum/paint_info(DIR_ONE, "redyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL, "redyellow")
|
||||
),
|
||||
|
||||
"Red and blue" = list(
|
||||
new /datum/paint_info(DIR_ONE, "redbluefull"),
|
||||
new /datum/paint_info(DIR_ALL, "redblue")
|
||||
),
|
||||
|
||||
"Red and green" = list(
|
||||
new /datum/paint_info(DIR_ONE, "redgreenfull"),
|
||||
new /datum/paint_info(DIR_ALL, "redgreen")
|
||||
),
|
||||
|
||||
"Green and yellow" = list(
|
||||
new /datum/paint_info(DIR_ONE, "greenyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL, "greenyellow")
|
||||
),
|
||||
|
||||
"Green and blue" = list(
|
||||
new /datum/paint_info(DIR_ONE, "greenbluefull"),
|
||||
new /datum/paint_info(DIR_ALL, "greenblue")
|
||||
),
|
||||
|
||||
"Blue and yellow" = list(
|
||||
new /datum/paint_info(DIR_ONE, "blueyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL, "blueyellow")
|
||||
),
|
||||
|
||||
"White red" = list(
|
||||
new /datum/paint_info(DIR_ONE, "whiteredfull"),
|
||||
new /datum/paint_info(DIR_ALL, "whitered"),
|
||||
new /datum/paint_info(DIR_ORTHO, "whiteredcorner")
|
||||
),
|
||||
|
||||
"White green" = list(
|
||||
new /datum/paint_info(DIR_ONE, "whitegreenfull"),
|
||||
new /datum/paint_info(DIR_ALL, "whitegreen"),
|
||||
new /datum/paint_info(DIR_ORTHO, "whitegreencorner")
|
||||
),
|
||||
|
||||
"White blue" = list(
|
||||
new /datum/paint_info(DIR_ONE, "whitebluefull"),
|
||||
new /datum/paint_info(DIR_ALL, "whiteblue"),
|
||||
new /datum/paint_info(DIR_ORTHO, "whitebluecorner"),
|
||||
new /datum/paint_info(DIR_ONE, "cmo")
|
||||
),
|
||||
|
||||
"White yellow" = list(
|
||||
new /datum/paint_info(DIR_ONE, "whiteyellowfull"),
|
||||
new /datum/paint_info(DIR_ALL, "whiteyellow"),
|
||||
new /datum/paint_info(DIR_ORTHO, "whiteyellowcorner")
|
||||
),
|
||||
|
||||
"White purple" = list(
|
||||
new /datum/paint_info(DIR_ONE, "whitepurplefull"),
|
||||
new /datum/paint_info(DIR_ALL, "whitepurple"),
|
||||
new /datum/paint_info(DIR_ORTHO, "whitepurplecorner")
|
||||
),
|
||||
|
||||
"Arrival" = list(
|
||||
new /datum/paint_info(DIR_ALL, "arrival")
|
||||
),
|
||||
|
||||
"Escape" = list(
|
||||
new /datum/paint_info(DIR_ALL, "escape")
|
||||
),
|
||||
|
||||
"Dark" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark"),
|
||||
new /datum/paint_info(DIR_ALL, "dark floor stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark floor corner")
|
||||
),
|
||||
|
||||
"Dark red" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark red full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark red stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark red corner")
|
||||
),
|
||||
|
||||
"Dark blue" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark blue full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark blue stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark blue corner")
|
||||
),
|
||||
|
||||
"Dark green" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark green full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark green stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark green corner")
|
||||
),
|
||||
|
||||
"Dark purple" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark purple full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark purple stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark purple corner")
|
||||
),
|
||||
|
||||
"Dark yellow" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark yellow full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark yellow stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark yellow corner")
|
||||
),
|
||||
|
||||
"Dark orange" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark orange full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark orange stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark orange corner")
|
||||
),
|
||||
|
||||
"Dark vault" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark vault full"),
|
||||
new /datum/paint_info(DIR_ALL, "dark vault stripe"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark vault corner"),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark-markings")
|
||||
),
|
||||
|
||||
"Markings" = list(
|
||||
new /datum/paint_info(DIR_ONE, "delivery"),
|
||||
new /datum/paint_info(DIR_ONE, "bot"),
|
||||
new /datum/paint_info(DIR_ONE, "whitedelivery"),
|
||||
new /datum/paint_info(DIR_ONE, "whitebot"),
|
||||
new /datum/paint_info(DIR_ONE, "enginedelivery", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ONE, "enginebot", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ONE, "plaque")
|
||||
),
|
||||
|
||||
"Loading area" = list(
|
||||
new /datum/paint_info(DIR_ORTHO, "loadingarea"),
|
||||
new /datum/paint_info(DIR_ORTHO, "engineloadingarea", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ORTHO, "dark loading")
|
||||
),
|
||||
|
||||
"Warning" = list(
|
||||
new /datum/paint_info(DIR_ALL, "warning"),
|
||||
new /datum/paint_info(DIR_ORTHO, "warningcorner")
|
||||
),
|
||||
|
||||
"White warning" = list(
|
||||
new /datum/paint_info(DIR_ALL, "warnwhite"),
|
||||
new /datum/paint_info(DIR_ORTHO, "warnwhitecorner")
|
||||
),
|
||||
|
||||
"Reinforced warning" = list(
|
||||
new /datum/paint_info(DIR_ALL, "enginewarn", PAINT_REINFORCED),
|
||||
new /datum/paint_info(DIR_ORTHO, "enginewarncorner", PAINT_REINFORCED)
|
||||
),
|
||||
|
||||
"Plating warning" = list(
|
||||
new /datum/paint_info(DIR_ALL, "warnplate", PAINT_PLATING),
|
||||
new /datum/paint_info(DIR_ORTHO, "warnplatecorner", PAINT_PLATING)
|
||||
),
|
||||
|
||||
"Chapel" = list(
|
||||
new /datum/paint_info(DIR_ALL, "chapel")
|
||||
),
|
||||
|
||||
"SS13 logo" = list(
|
||||
new /datum/paint_info(DIR_ONE, "L1"),
|
||||
new /datum/paint_info(DIR_ONE, "L3"),
|
||||
new /datum/paint_info(DIR_ONE, "L5"),
|
||||
new /datum/paint_info(DIR_ONE, "L7"),
|
||||
new /datum/paint_info(DIR_ONE, "L9"),
|
||||
new /datum/paint_info(DIR_ONE, "L11"),
|
||||
new /datum/paint_info(DIR_ONE, "L13"),
|
||||
new /datum/paint_info(DIR_ONE, "L15"),
|
||||
new /datum/paint_info(DIR_ONE, "L2"),
|
||||
new /datum/paint_info(DIR_ONE, "L4"),
|
||||
new /datum/paint_info(DIR_ONE, "L6"),
|
||||
new /datum/paint_info(DIR_ONE, "L8"),
|
||||
new /datum/paint_info(DIR_ONE, "L10"),
|
||||
new /datum/paint_info(DIR_ONE, "L12"),
|
||||
new /datum/paint_info(DIR_ONE, "L14"),
|
||||
new /datum/paint_info(DIR_ONE, "L16")
|
||||
),
|
||||
|
||||
"Derelict logo" = list(
|
||||
new /datum/paint_info(DIR_ONE, "derelict9"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict10"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict11"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict12"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict13"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict14"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict15"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict16"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict1"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict2"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict3"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict4"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict5"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict6"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict7"),
|
||||
new /datum/paint_info(DIR_ONE, "derelict8")
|
||||
),
|
||||
|
||||
"Other" = list(
|
||||
new /datum/paint_info(DIR_ONE, "dark"),
|
||||
new /datum/paint_info(DIR_ONE, "bar"),
|
||||
new /datum/paint_info(DIR_ONE, "cafeteria"),
|
||||
new /datum/paint_info(DIR_ONE, "checker"),
|
||||
new /datum/paint_info(DIR_ONE, "barber"),
|
||||
new /datum/paint_info(DIR_ONE, "grimy"),
|
||||
new /datum/paint_info(DIR_ONE, "hydrofloor"),
|
||||
new /datum/paint_info(DIR_ONE, "showroomfloor"),
|
||||
new /datum/paint_info(DIR_ONE, "freezerfloor"),
|
||||
new /datum/paint_info(DIR_ONE, "bcircuit"),
|
||||
new /datum/paint_info(DIR_ONE, "gcircuit"),
|
||||
new /datum/paint_info(DIR_ONE, "solarpanel")
|
||||
)
|
||||
)
|
||||
15
code/modules/RCD/tile painter.dm
Normal file
15
code/modules/RCD/tile painter.dm
Normal file
@@ -0,0 +1,15 @@
|
||||
/obj/item/device/rcd/tile_painter
|
||||
name = "tile painter"
|
||||
desc = "A device used to paint floors in various colours and fashions."
|
||||
|
||||
icon_state = "rpd" //placeholder art, someone please sprite it
|
||||
|
||||
starting_materials = list(MAT_IRON = 75000, MAT_GLASS = 37500)
|
||||
|
||||
origin_tech = "engineering=2;materials=1"
|
||||
|
||||
sparky = 0
|
||||
|
||||
/obj/item/device/rcd/tile_painter/New()
|
||||
schematics = typesof(/datum/rcd_schematic/tile) //For some stupid reason typesof() isn't constant.
|
||||
. = ..()
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/unathi
|
||||
armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/device/rcd)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
species_restricted = list("Unathi")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60)
|
||||
flags = FPRINT | PLASMAGUARD
|
||||
pressure_resistance = 200 * ONE_ATMOSPHERE
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \
|
||||
allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/device/rcd, /obj/item/weapon/crowbar, \
|
||||
/obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \
|
||||
/obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \
|
||||
/obj/item/weapon/gun/energy/taser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
slowdown = 1
|
||||
species_restricted = list("exclude","Vox")
|
||||
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 80)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd, /obj/item/weapon/wrench/socket)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/device/rcd, /obj/item/weapon/wrench/socket)
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
pressure_resistance = 200 * ONE_ATMOSPHERE
|
||||
@@ -294,7 +294,7 @@
|
||||
item_state = "atmos_gold_hardsuit"
|
||||
slowdown = 2
|
||||
armor = list(melee = 30, bullet = 5, laser = 40,energy = 5, bomb = 35, bio = 100, rad = 60)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/backpack/satchel_norm,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd, /obj/item/weapon/extinguisher, /obj/item/weapon/)
|
||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/backpack/satchel_norm,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/device/rcd, /obj/item/weapon/extinguisher, /obj/item/weapon/)
|
||||
|
||||
//ADMINBUS RIGS. SOVIET + NAZI
|
||||
/obj/item/clothing/head/helmet/space/rig/nazi
|
||||
@@ -436,4 +436,4 @@
|
||||
icon_state = "rig0-t51b"
|
||||
item_state = "rig0-t51b"
|
||||
armor = list(melee = 35, bullet = 35, laser = 40, energy = 40, bomb = 80, bio = 100, rad = 100)
|
||||
_color="t51b"
|
||||
_color="t51b"
|
||||
|
||||
@@ -393,7 +393,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
|
||||
/obj/item/device/radio/headset/syndicate, /obj/item/weapon/plastique,\
|
||||
/obj/item/device/powersink, /obj/item/weapon/storage/box/syndie_kit,\
|
||||
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/laser/captain,\
|
||||
/obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\
|
||||
/obj/item/weapon/hand_tele, /obj/item/device/rcd, /obj/item/weapon/tank/jetpack,\
|
||||
/obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\
|
||||
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/weapon/disk/nuclear,\
|
||||
/obj/item/clothing/suit/space/nasavoid, /obj/item/weapon/tank)
|
||||
|
||||
28
code/modules/html_interface/RCD/RCD.css
Normal file
28
code/modules/html_interface/RCD/RCD.css
Normal file
@@ -0,0 +1,28 @@
|
||||
/*Made by N3X15*/
|
||||
|
||||
html {
|
||||
font-family:sans-serif;
|
||||
font-size:small;
|
||||
}
|
||||
a{
|
||||
color:#0066cc;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
a img {
|
||||
border:1px solid #0066cc;
|
||||
background:#dfdfdf;
|
||||
}
|
||||
|
||||
a.color {
|
||||
padding: 5px 10px;
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
border:1px solid white;
|
||||
}
|
||||
|
||||
a.selected img,
|
||||
a:hover {
|
||||
background: #0066cc;
|
||||
color: #ffffff;
|
||||
}
|
||||
21
code/modules/html_interface/RCD/RCD.dm
Normal file
21
code/modules/html_interface/RCD/RCD.dm
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
RCD UI style.
|
||||
N3X15 wrote the stylesheet (originally RPD stylesheet)
|
||||
Made into a htmli datum by PJB3005
|
||||
*/
|
||||
|
||||
/datum/html_interface/rcd
|
||||
default_html_file = 'html_interface_no_bootstrap.html'
|
||||
|
||||
/datum/html_interface/rcd/New()
|
||||
. = ..()
|
||||
head += "<link rel='stylesheet' type='text/css' href='RCD.css'>"
|
||||
|
||||
/datum/html_interface/rcd/sendResources(var/client/client)
|
||||
. = ..()
|
||||
client << browse_rsc('RCD.css')
|
||||
|
||||
//Send the icons.
|
||||
for(var/path in typesof(/datum/rcd_schematic) - /datum/rcd_schematic)
|
||||
var/datum/rcd_schematic/C = new path()
|
||||
C.send_icons(client)
|
||||
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta charset="UTF-8" />
|
||||
<title></title>
|
||||
<link rel="stylesheet" type="text/css" href="html_interface.css"/>
|
||||
<script type="text/javascript">var hSrc = "[hsrc]";</script>
|
||||
<script type="text/javascript" src="jquery.min.js"></script>
|
||||
<script type="text/javascript" src="html_interface.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -105,6 +105,9 @@ mob/verb/test()
|
||||
// The initial height of the browser control, used when the window is first shown to a client.
|
||||
var/height
|
||||
|
||||
// File which the HTML is copied from onto the browser window on the client.
|
||||
var/default_html_file = 'html_interface.html'
|
||||
|
||||
/datum/html_interface/New(atom/ref, title, width = 700, height = 480, head = "")
|
||||
html_interfaces.Add(src)
|
||||
|
||||
@@ -232,7 +235,7 @@ mob/verb/test()
|
||||
else
|
||||
src.createWindow(hclient)
|
||||
hclient.is_loaded = FALSE
|
||||
hclient.client << output(replacetextEx(replacetextEx(file2text('html_interface.html'), "\[hsrc\]", "\ref[src]"), "</head>", "[head]</head>"), "browser_\ref[src].browser")
|
||||
hclient.client << output(replacetextEx(replacetextEx(file2text(default_html_file), "\[hsrc\]", "\ref[src]"), "</head>", "[head]</head>"), "browser_\ref[src].browser")
|
||||
winshow(hclient.client, "browser_\ref[src]", TRUE)
|
||||
if(oldwindow && winexists(hclient.client, "browser_\ref[oldwindow]"))
|
||||
winshow(hclient.client, "browser_\ref[oldwindow]", FALSE)
|
||||
|
||||
@@ -666,10 +666,10 @@
|
||||
/obj/item/weapon/grenade/chem_grenade/antiweed,
|
||||
/obj/item/weapon/hatchet,
|
||||
/obj/item/weapon/pickaxe/jackhammer,
|
||||
/obj/item/weapon/pipe_dispenser,
|
||||
/obj/item/weapon/rcd,
|
||||
/obj/item/device/rcd/rpd,
|
||||
/obj/item/device/rcd,
|
||||
/obj/item/weapon/rcd_ammo,
|
||||
/obj/item/weapon/rsf,
|
||||
/obj/item/device/rcd/matter/rsf,
|
||||
/obj/item/weapon/weldingtool/hugetank,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/gun_part/silencer,
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
src.modules += new /obj/item/device/analyzer(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher(src) // Aurx sed so
|
||||
src.modules += new /obj/item/weapon/extinguisher/foam(src)
|
||||
src.modules += new /obj/item/weapon/pipe_dispenser(src)
|
||||
src.modules += new /obj/item/weapon/tile_painter(src)
|
||||
src.modules += new /obj/item/device/rcd/rpd(src)
|
||||
src.modules += new /obj/item/device/rcd/tile_painter(src)
|
||||
src.modules += new /obj/item/blueprints/mommiprints(src)
|
||||
src.modules += new /obj/item/device/material_synth/robot/mommi(src)
|
||||
sensor_augs = list("Mesons", "Disable")
|
||||
|
||||
@@ -189,8 +189,8 @@
|
||||
/obj/item/weapon/robot_module/engineering/New()
|
||||
..()
|
||||
src.emag = new /obj/item/borg/stun(src)
|
||||
src.modules += new /obj/item/weapon/rcd/borg(src)
|
||||
src.modules += new /obj/item/weapon/pipe_dispenser(src) //What could possibly go wrong?
|
||||
src.modules += new /obj/item/device/rcd/borg/engineering(src)
|
||||
src.modules += new /obj/item/device/rcd/rpd(src) //What could possibly go wrong?
|
||||
src.modules += new /obj/item/weapon/extinguisher(src)
|
||||
src.modules += new /obj/item/weapon/extinguisher/foam(src)
|
||||
src.modules += new /obj/item/weapon/weldingtool/largetank(src)
|
||||
@@ -203,7 +203,7 @@
|
||||
src.modules += new /obj/item/device/analyzer(src)
|
||||
src.modules += new /obj/item/taperoll/atmos(src)
|
||||
src.modules += new /obj/item/taperoll/engineering(src)
|
||||
src.modules += new /obj/item/weapon/tile_painter(src)
|
||||
src.modules += new /obj/item/device/rcd/tile_painter(src)
|
||||
src.modules += new /obj/item/device/material_synth/robot(src)
|
||||
sensor_augs = list("Mesons", "Disable")
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src)
|
||||
src.modules += new /obj/item/weapon/pen/robopen(src)
|
||||
|
||||
src.modules += new /obj/item/weapon/rsf/cyborg(src)
|
||||
src.modules += new /obj/item/device/rcd/borg/rsf(src)
|
||||
|
||||
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
|
||||
|
||||
|
||||
@@ -1226,6 +1226,12 @@ var/proccalls = 1
|
||||
#define COREFIRERESIST 1
|
||||
#define HIGHRESCAMS 2
|
||||
|
||||
//RCD schematic bitflags.
|
||||
#define RCD_SELF_SANE 1 //Check proximity ourselves.
|
||||
#define RCD_GET_TURF 2 //If used on objs/mobs, get the turf instead.
|
||||
#define RCD_RANGE 4 //Use range() instead of adjacency. (old RPD behaviour.) (overriden by RCD_SELF_SANE)
|
||||
#define RCD_SELF_COST 8 //Handle energy usage ourselves. (energy availability still checked).
|
||||
|
||||
//Mob sizes
|
||||
#define SIZE_TINY 1 //Mice, lizards, borers, kittens - mostly things that can fit into a man's palm
|
||||
#define SIZE_SMALL 2 //Monkeys, dionae, cats, dogs
|
||||
|
||||
BIN
icons/obj/RCD.dmi
Normal file
BIN
icons/obj/RCD.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 928 B |
Binary file not shown.
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 86 KiB |
@@ -902,7 +902,7 @@
|
||||
"arr" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/fpmaint3)
|
||||
"ars" = (/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 7},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/device/multitool,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"art" = (/obj/structure/table,/obj/item/stack/sheet/glass/glass{amount = 50},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"aru" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/cyan/visible,/obj/item/weapon/pipe_dispenser,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"aru" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/cyan/visible,/obj/item/device/rcd/rpd,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"arv" = (/obj/machinery/atmospherics/pipe/simple/supply/visible,/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"arw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/engineering/atmos)
|
||||
"arx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/space_heater,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/obj/effect/decal/warning_stripes{icon_state = "bot"},/turf/simulated/floor,/area/engineering/atmos)
|
||||
@@ -2713,7 +2713,7 @@
|
||||
"bai" = (/obj/structure/table,/obj/item/weapon/storage/wallet/random{pixel_y = 9},/obj/item/weapon/storage/wallet/random{pixel_y = 6},/obj/item/weapon/storage/wallet/random{pixel_y = 3},/obj/item/weapon/storage/wallet/random,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
|
||||
"baj" = (/obj/structure/table,/obj/item/weapon/storage/fancy/crayons{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/fancy/crayons,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
|
||||
"bak" = (/obj/structure/table,/obj/item/device/camera,/obj/item/weapon/storage/box/labels,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
|
||||
"bal" = (/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/table/reinforced,/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/cartridge/atmos,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"bal" = (/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/table/reinforced,/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/cartridge/atmos,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/device/rcd/matter/engineering,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"bam" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"ban" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"bao" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
@@ -3020,7 +3020,7 @@
|
||||
"bgd" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"bge" = (/obj/structure/table/reinforced,/obj/machinery/pos{name = "Bar point of sale"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"bgf" = (/obj/machinery/door/window{dir = 1; name = "Bar Door"; req_access_txt = "0"; req_one_access_txt = "25;28"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"bgg" = (/obj/structure/table/reinforced,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/machinery/light/small{dir = 4},/obj/item/weapon/rsf,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"bgg" = (/obj/structure/table/reinforced,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/machinery/light/small{dir = 4},/obj/item/device/rcd/matter/rsf,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"bgh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/cooking/still,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||
"bgi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||
"bgj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
|
||||
|
||||
@@ -1491,7 +1491,7 @@
|
||||
"aCI" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/crew_quarters/sleep)
|
||||
"aCJ" = (/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{dir = 2; icon_state = "floor"},/area/engineering/engine)
|
||||
"aCK" = (/turf/simulated/floor{dir = 2; icon_state = "floor"},/area/engineering/engine)
|
||||
"aCL" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/table,/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/pipe_dispenser,/turf/simulated/floor{dir = 2; icon_state = "floor"},/area/engineering/engine)
|
||||
"aCL" = (/obj/item/stack/sheet/plasteel{amount = 10},/obj/structure/table,/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/rcd/rpd,/turf/simulated/floor{dir = 2; icon_state = "floor"},/area/engineering/engine)
|
||||
"aCM" = (/obj/structure/table,/obj/item/stack/rods{amount = 50},/obj/item/weapon/wrench,/obj/item/weapon/storage/box/lights/mixed,/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/machinery/alarm{pixel_y = 23},/obj/item/weapon/storage/toolbox/electrical{pixel_y = 5},/turf/simulated/floor{dir = 2; icon_state = "floor"},/area/engineering/engine)
|
||||
"aCN" = (/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/engineering/engine)
|
||||
"aCO" = (/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/engineering/engine)
|
||||
@@ -2767,7 +2767,7 @@
|
||||
"bbk" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/clothing/gloves/yellow,/obj/item/device/t_scanner,/obj/item/device/multitool,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/item/device/multitool,/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
|
||||
"bbl" = (/obj/structure/table,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flash,/obj/item/device/flash,/obj/effect/decal/warning_stripes{icon_state = "bot"},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
|
||||
"bbm" = (/obj/structure/table,/obj/effect/decal/warning_stripes{icon_state = "bot"},/obj/machinery/light/small{dir = 1},/obj/machinery/cell_charger{pixel_y = 0},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
|
||||
"bbn" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/table/reinforced,/obj/item/weapon/pipe_dispenser,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
"bbn" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -29},/obj/structure/table/reinforced,/obj/item/device/rcd/rpd,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
"bbo" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
"bbp" = (/obj/item/weapon/storage/secure/safe{pixel_x = 6; pixel_y = 30},/obj/machinery/camera{c_tag = "Engineering - CE's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
"bbq" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
@@ -2848,7 +2848,7 @@
|
||||
"bcN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
|
||||
"bcO" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
|
||||
"bcP" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/effect/decal/warning_stripes{icon_state = "bot"},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
|
||||
"bcQ" = (/obj/machinery/light{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
"bcQ" = (/obj/machinery/light{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/device/rcd/matter/engineering,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/engineering/ce)
|
||||
"bcR" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/simulated/floor{dir = 2; icon_state = "neutralcorner"},/area/engineering/ce)
|
||||
"bcS" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/pill/kelotane{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "neutral"},/area/engineering/ce)
|
||||
"bcT" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/cigarette/cigar,/turf/simulated/floor{icon_state = "neutral"},/area/engineering/ce)
|
||||
@@ -3741,7 +3741,7 @@
|
||||
"btW" = (/obj/structure/table,/obj/item/weapon/storage/box/labels,/obj/item/weapon/hand_labeler,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/storage/art)
|
||||
"btX" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/obj/item/device/radio/headset/headset_service,/obj/item/device/eftpos{eftpos_name = "HoP EFTPOS scanner"},/obj/structure/sign/securearea{desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; pixel_x = 0; pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"btY" = (/obj/machinery/reagentgrinder,/obj/structure/table/woodentable,/obj/machinery/requests_console{department = "Bar"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"btZ" = (/obj/structure/table/woodentable,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/gun/projectile/russian,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/machinery/alarm{pixel_y = 23},/obj/item/weapon/rsf,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"btZ" = (/obj/structure/table/woodentable,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/weapon/gun/projectile/russian,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/machinery/alarm{pixel_y = 23},/obj/item/device/rcd/matter/rsf,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bua" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bub" = (/obj/machinery/door/window{base_state = "left"; dir = 2; icon_state = "left"; name = "Bar Delivery"; req_access_txt = "25"},/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes{icon_state = "unloading"},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"buc" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Bar"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plating,/area/crew_quarters/bar)
|
||||
@@ -4358,7 +4358,7 @@
|
||||
"bFP" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark vault stripe"; dir = 4},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
|
||||
"bFQ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
|
||||
"bFR" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/central)
|
||||
"bFS" = (/obj/machinery/light{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/rsf,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bFS" = (/obj/machinery/light{dir = 8},/obj/structure/table/reinforced,/obj/item/device/rcd/matter/rsf,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bFT" = (/obj/structure/table/reinforced,/obj/item/clothing/head/that{throwforce = 1; throwing = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bFU" = (/obj/structure/table/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"bFV" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/matchbox{pixel_y = 5},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
@@ -5055,7 +5055,7 @@
|
||||
"bTk" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/engineering/atmos)
|
||||
"bTl" = (/obj/machinery/atmospherics/unary/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 9; icon_state = "caution"},/area/engineering/atmos)
|
||||
"bTm" = (/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/engineering/atmos)
|
||||
"bTn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 6},/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/device/t_scanner{pixel_y = 4},/obj/item/device/t_scanner{pixel_y = 4},/obj/item/device/t_scanner{pixel_y = 4},/obj/item/weapon/pipe_dispenser,/obj/item/weapon/pipe_dispenser,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/engineering/atmos)
|
||||
"bTn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 6},/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/device/t_scanner{pixel_y = 4},/obj/item/device/t_scanner{pixel_y = 4},/obj/item/device/t_scanner{pixel_y = 4},/obj/item/device/rcd/rpd,/obj/item/device/rcd/rpd,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/engineering/atmos)
|
||||
"bTo" = (/obj/machinery/camera{c_tag = "Atmospherics - NW"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/engineering/atmos)
|
||||
"bTp" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 7},/obj/item/clothing/head/welding{pixel_x = 5; pixel_y = 3},/turf/simulated/floor{dir = 1; icon_state = "caution"},/area/engineering/atmos)
|
||||
"bTq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 9},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/engineering/atmos)
|
||||
@@ -8922,7 +8922,7 @@
|
||||
"dpD" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom)
|
||||
"dpE" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/turf/unsimulated/floor{icon_state = "dark vault full"; dir = 4},/area/centcom/control)
|
||||
"dpF" = (/obj/structure/table/reinforced,/obj/item/device/flash,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/turf/unsimulated/floor{icon_state = "dark orange stripe"; dir = 1},/area/centcom/control)
|
||||
"dpG" = (/obj/structure/table/reinforced,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/rcd,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/unsimulated/floor{icon_state = "dark orange stripe"; dir = 1},/area/centcom/control)
|
||||
"dpG" = (/obj/structure/table/reinforced,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/rcd/matter/engineering,/obj/item/device/rcd/matter/engineering,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/unsimulated/floor{icon_state = "dark orange stripe"; dir = 1},/area/centcom/control)
|
||||
"dpH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/storage/box/syringes,/obj/item/device/flash,/obj/item/device/flash,/turf/unsimulated/floor{icon_state = "dark neutral stripe"; dir = 1},/area/centcom/control)
|
||||
"dpI" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/flash,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flash,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/turf/unsimulated/floor{icon_state = "dark neutral stripe"; dir = 1},/area/centcom/control)
|
||||
"dpJ" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
|
||||
|
||||
@@ -1080,7 +1080,7 @@
|
||||
"auN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "dark vault stripe"},/area/engineering/engineering_auxiliary)
|
||||
"auO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark vault full"},/area/engineering/engineering_auxiliary)
|
||||
"auP" = (/obj/machinery/atmospherics/pipe/simple/filtering/visible{dir = 4},/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"auQ" = (/obj/structure/table,/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/weapon/pipe_dispenser,/obj/item/weapon/pipe_dispenser,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"auQ" = (/obj/structure/table,/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/device/rcd/rpd,/obj/item/device/rcd/rpd,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"auR" = (/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible,/obj/structure/closet/secure_closet/engineering_atmos,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"auS" = (/obj/machinery/suit_storage_unit/atmos,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"auT" = (/obj/machinery/atmospherics/pipe/simple/filtering/visible{dir = 4},/obj/structure/lattice,/turf/space,/area)
|
||||
@@ -1350,7 +1350,7 @@
|
||||
"azX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "blue"},/area/wreck/engineering{icon_state = "bridge"; name = "\improper Bridge Engineering"})
|
||||
"azY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/wreck/engineering{icon_state = "bridge"; name = "\improper Bridge Engineering"})
|
||||
"azZ" = (/obj/machinery/disposal,/obj/machinery/alarm{dir = 8; pixel_x = 22},/obj/structure/disposalpipe/trunk{desc = "An underfloor disposal pipe. This one has an acid proof coating."; dir = 8; name = "Acid-Proof disposal pipe"; unacidable = 1},/turf/simulated/floor,/area/wreck/engineering{icon_state = "bridge"; name = "\improper Bridge Engineering"})
|
||||
"aAa" = (/obj/structure/table/reinforced,/obj/item/weapon/pipe_dispenser,/obj/item/weapon/lighter/zippo,/obj/machinery/newscaster{dir = 1; pixel_y = -30},/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/stamp/ce,/obj/item/device/radio/intercom{pixel_x = 25; pixel_y = 0},/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"aAa" = (/obj/structure/table/reinforced,/obj/item/device/rcd/rpd,/obj/item/weapon/lighter/zippo,/obj/machinery/newscaster{dir = 1; pixel_y = -30},/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/stamp/ce,/obj/item/device/radio/intercom{pixel_x = 25; pixel_y = 0},/obj/item/device/rcd/matter/engineering,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"aAb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hydroponics)
|
||||
"aAc" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1},/turf/simulated/floor,/area/hydroponics)
|
||||
"aAd" = (/turf/simulated/floor,/area/hydroponics)
|
||||
@@ -1492,7 +1492,7 @@
|
||||
"aCJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aCK" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aCL" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aCM" = (/obj/structure/table/reinforced,/obj/item/clothing/head/cakehat,/obj/item/weapon/rsf,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aCM" = (/obj/structure/table/reinforced,/obj/item/clothing/head/cakehat,/obj/item/device/rcd/matter/rsf,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aCN" = (/obj/structure/table/reinforced,/obj/machinery/pos{name = "Bar point of sale"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aCO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1212; icon_state = "in"; id_tag = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/obj/machinery/air_sensor{frequency = 1212; id_tag = "n2_sensor"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engine/starboard_gyro_bay{icon_state = "atmos"; name = "\improper Atmospherics Medical"})
|
||||
"aCP" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/obj/item/weapon/storage/secure/safe{pixel_x = 28},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
|
||||
@@ -1893,7 +1893,7 @@
|
||||
"aKu" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet)
|
||||
"aKv" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
|
||||
"aKw" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/bar)
|
||||
"aKx" = (/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/table/woodentable,/obj/item/clothing/suit/storage/bandolier,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/machinery/reagentgrinder,/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rsf,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aKx" = (/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/table/woodentable,/obj/item/clothing/suit/storage/bandolier,/obj/item/weapon/gun/projectile/shotgun/doublebarrel,/obj/machinery/reagentgrinder,/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/device/rcd/matter/rsf,/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aKy" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aKz" = (/obj/structure/closet/secure_closet/bar{req_access_txt = "25"},/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/bar)
|
||||
"aKA" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
@@ -2400,7 +2400,7 @@
|
||||
"aUh" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aUi" = (/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aUj" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aUk" = (/obj/structure/table/reinforced,/obj/item/device/radio/headset/headset_service,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/packageWrap,/obj/item/weapon/screwdriver,/obj/item/weapon/tile_painter,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aUk" = (/obj/structure/table/reinforced,/obj/item/device/radio/headset/headset_service,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/packageWrap,/obj/item/weapon/screwdriver,/obj/item/device/rcd/tile_painter,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
|
||||
"aUl" = (/obj/machinery/alarm{dir = 4; pixel_x = -22},/obj/structure/bed/chair/vehicle/clowncart,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
|
||||
"aUm" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/crew_quarters/theatre)
|
||||
"aUn" = (/turf/simulated/floor/wood,/area/crew_quarters/theatre)
|
||||
@@ -6200,7 +6200,7 @@
|
||||
"cpl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/structure/sign/securearea,/turf/simulated/wall,/area/engineering/atmos_control)
|
||||
"cpm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/stack/sheet/glass/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"cpn" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/weapon/wrench,/obj/item/device/pipe_painter,/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor,/area/engineering/atmos)
|
||||
"cpo" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{dir = 4},/obj/item/weapon/pipe_dispenser,/obj/item/weapon/pipe_dispenser,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"cpo" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{dir = 4},/obj/item/device/rcd/rpd,/obj/item/device/rcd/rpd,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"cpp" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"cpq" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible,/turf/simulated/floor,/area/engineering/atmos)
|
||||
"cpr" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/filtering/visible,/turf/simulated/floor{icon_state = "escape"; dir = 4},/area/engineering/atmos)
|
||||
@@ -6744,7 +6744,7 @@
|
||||
"czJ" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/floor,/area/engineering/engine)
|
||||
"czK" = (/obj/structure/table,/obj/item/weapon/circuitboard/airlock,/obj/item/weapon/circuitboard/airlock,/obj/item/weapon/circuitboard/power_control,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/engineering/engine)
|
||||
"czL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/full/reinforced,/turf/simulated/floor/plating,/area/engineering/ce)
|
||||
"czM" = (/obj/machinery/keycard_auth{pixel_y = 32},/obj/structure/table/reinforced,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd{pixel_x = 4; pixel_y = 3; pixel_z = 0},/obj/item/weapon/pipe_dispenser,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"czM" = (/obj/machinery/keycard_auth{pixel_y = 32},/obj/structure/table/reinforced,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/device/rcd/matter/engineering{pixel_x = 4; pixel_y = 3; pixel_z = 0},/obj/item/device/rcd/rpd,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"czN" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer RC"; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"czO" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
"czP" = (/obj/machinery/door_control{id_tag = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 10; pixel_y = 32; req_access_txt = "24"},/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id_tag = "Engineering"; name = "Engineering Lockdown"; pixel_x = -10; pixel_y = 32; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id_tag = "Secure Storage"; name = "Engineering Secure Storage"; pixel_y = 32; req_access_txt = "11"},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engineering/ce)
|
||||
@@ -8491,7 +8491,7 @@
|
||||
"dho" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom)
|
||||
"dhp" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/turf/unsimulated/floor{icon_state = "dark vault full"; dir = 4},/area/centcom/control)
|
||||
"dhq" = (/obj/structure/table/reinforced,/obj/item/device/flash,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/clothing/glasses/meson,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/turf/unsimulated/floor{icon_state = "dark orange stripe"; dir = 1},/area/centcom/control)
|
||||
"dhr" = (/obj/structure/table/reinforced,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/rcd,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/unsimulated/floor{icon_state = "dark orange stripe"; dir = 1},/area/centcom/control)
|
||||
"dhr" = (/obj/structure/table/reinforced,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/rcd/matter/engineering,/obj/item/device/rcd/matter/engineering,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/turf/unsimulated/floor{icon_state = "dark orange stripe"; dir = 1},/area/centcom/control)
|
||||
"dhs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/reagent_containers/hypospray,/obj/item/weapon/storage/box/syringes,/obj/item/device/flash,/obj/item/device/flash,/turf/unsimulated/floor{icon_state = "dark neutral stripe"; dir = 1},/area/centcom/control)
|
||||
"dht" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/regular,/obj/item/device/flash,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/clothing/glasses/hud/health,/obj/item/device/flash,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/pill_bottle/antitox,/obj/item/weapon/storage/pill_bottle/kelotane,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular,/turf/unsimulated/floor{icon_state = "dark neutral stripe"; dir = 1},/area/centcom/control)
|
||||
"dhu" = (/obj/structure/table/reinforced,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
|
||||
@@ -11786,7 +11786,7 @@
|
||||
"esL" = (/obj/machinery/computer/shuttle_control/salvage,/turf/simulated/floor/carpet,/area/shuttle/salvage/start)
|
||||
"esM" = (/obj/structure/docking_port/destination/salvage/start{dir = 8},/turf/space,/area)
|
||||
"esN" = (/obj/structure/shuttle/engine/propulsion{dir = 8},/obj/structure/docking_port/shuttle{dir = 4},/turf/space,/area/shuttle/salvage/start)
|
||||
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
@@ -679,10 +679,7 @@
|
||||
#include "code\game\objects\items\weapons\paint.dm"
|
||||
#include "code\game\objects\items\weapons\paiwire.dm"
|
||||
#include "code\game\objects\items\weapons\power_cells.dm"
|
||||
#include "code\game\objects\items\weapons\RCD.dm"
|
||||
#include "code\game\objects\items\weapons\RCL.dm"
|
||||
#include "code\game\objects\items\weapons\RPD.dm"
|
||||
#include "code\game\objects\items\weapons\RSF.dm"
|
||||
#include "code\game\objects\items\weapons\scrolls.dm"
|
||||
#include "code\game\objects\items\weapons\shard.dm"
|
||||
#include "code\game\objects\items\weapons\shields.dm"
|
||||
@@ -693,7 +690,6 @@
|
||||
#include "code\game\objects\items\weapons\swords_axes_etc.dm"
|
||||
#include "code\game\objects\items\weapons\table_rack_parts.dm"
|
||||
#include "code\game\objects\items\weapons\teleportation.dm"
|
||||
#include "code\game\objects\items\weapons\tile_painter.dm"
|
||||
#include "code\game\objects\items\weapons\tools.dm"
|
||||
#include "code\game\objects\items\weapons\twohanded.dm"
|
||||
#include "code\game\objects\items\weapons\weaponry.dm"
|
||||
@@ -1067,6 +1063,7 @@
|
||||
#include "code\modules\html_interface\map\adv_sec\adv_camera.dm"
|
||||
#include "code\modules\html_interface\map\crew\crew.dm"
|
||||
#include "code\modules\html_interface\nanotrasen\nanotrasen.dm"
|
||||
#include "code\modules\html_interface\RCD\RCD.dm"
|
||||
#include "code\modules\html_interface\voting\voting.dm"
|
||||
#include "code\modules\hydroponics\grown_inedible.dm"
|
||||
#include "code\modules\hydroponics\hydro_tools.dm"
|
||||
@@ -1492,6 +1489,17 @@
|
||||
#include "code\modules\projectiles\projectile\force.dm"
|
||||
#include "code\modules\projectiles\projectile\rocket.dm"
|
||||
#include "code\modules\projectiles\projectile\special.dm"
|
||||
#include "code\modules\RCD\engie.dm"
|
||||
#include "code\modules\RCD\RCD.dm"
|
||||
#include "code\modules\RCD\RPD.dm"
|
||||
#include "code\modules\RCD\RSF.dm"
|
||||
#include "code\modules\RCD\schematic.dm"
|
||||
#include "code\modules\RCD\tile painter.dm"
|
||||
#include "code\modules\RCD\schematics\engi.dm"
|
||||
#include "code\modules\RCD\schematics\pipe.dm"
|
||||
#include "code\modules\RCD\schematics\service.dm"
|
||||
#include "code\modules\RCD\schematics\test.dm"
|
||||
#include "code\modules\RCD\schematics\tile.dm"
|
||||
#include "code\modules\reagents\Chemistry-Colours.dm"
|
||||
#include "code\modules\reagents\Chemistry-Holder.dm"
|
||||
#include "code\modules\reagents\Chemistry-Machinery.dm"
|
||||
|
||||
Reference in New Issue
Block a user