The Epic Construction Update (#5976)

How to build machine blueprints!

Use steel sheets like normal, then rotate the frame how you like it using the directional arrow. From here use a Multitool to finalize it and then wire it up like you would before.
This commit is contained in:
Lady Fowl
2019-09-10 22:07:46 +03:00
committed by Erki
parent abd926b14a
commit d6ff38ef96
164 changed files with 2571 additions and 1055 deletions
+1 -1
View File
@@ -26,7 +26,7 @@
/obj/item/device/multitool/hacktool/attackby(var/obj/item/W, var/mob/user)
if(W.isscrewdriver())
in_hack_mode = !in_hack_mode
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(src.loc, W.usesound, 50, 1)
else
..()
@@ -160,7 +160,7 @@
user.visible_message(span("notice", "[user] starts welding the metal shell of [src]."), span("notice", "You start [hacked ? "repairing" : "welding open"] the metal covering of [src]."))
playsound(loc, 'sound/items/Welder.ogg', 50, 1)
add_overlay("overlay_welding")
if (do_after(user, 25))
if (do_after(user, 25/I.toolspeed))
to_chat(user, span("notice", "You are able to [hacked ? "repair" : "weld through"] the metal shell of [src]."))
if (hacked) locked = 1
else locked = 0
@@ -193,7 +193,7 @@
if (2)
if (I.isscrewdriver())
to_chat(user, span("notice", "You unscrew and remove the wiring cover from \the [src]."))
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(loc, I.usesound, 50, 1)
setconstructionstate(3)
return
@@ -219,7 +219,7 @@
if (I.isscrewdriver())
to_chat(user, span("notice", "You replace and screw tight the wiring cover from \the [src]."))
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(loc, I.usesound, 50, 1)
setconstructionstate(2)
return
+42
View File
@@ -0,0 +1,42 @@
/obj/item/device/animaltagger
name = "animal tagger"
desc = "Used for tagging animals to be identified by a ear tag."
icon_state = "tagger0"
force = 5.0
w_class = 2.0
throwforce = 5.0
throw_range = 15
throw_speed = 3
var/animaltag = null
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 1)
/obj/item/device/animaltagger/Destroy()
return ..()
/obj/item/device/animaltagger/attack()
return
/obj/item/device/animaltagger/afterattack(atom/A as mob|obj, mob/user as mob)
if(isanimal(A))
A.name = animaltag
to_chat(user,"<span class='notice'>You tag the animal as [animaltag].</span>")
else
to_chat(user, "<span class='notice'>You can't tag non animals.</span>")
return
/obj/item/device/animaltagger/attack_self(mob/user as mob)
var/inputtag = sanitizeSafe(input(user,"Label text?","Set label",""), MAX_NAME_LEN)
if(!inputtag || !length(inputtag))
to_chat(user, "<span class='notice'>Invalid tag line.</span>")
return
animaltag = inputtag
@@ -129,6 +129,11 @@
build_path = /obj/machinery/computer/operating
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
/obj/item/weapon/circuitboard/advoperating
name = T_BOARD("life support table console")
build_path = /obj/machinery/computer/operating/advanced
origin_tech = list(TECH_DATA = 4, TECH_BIO = 4)
/obj/item/weapon/circuitboard/curefab
name = T_BOARD("cure fabricator")
build_path = /obj/machinery/computer/curer
@@ -10,15 +10,92 @@
board_type = "other"
/obj/item/weapon/circuitboard/sleeper
name = T_BOARD("sleeper")
name = T_BOARD("Sleeper")
desc = "The circuitboard for a sleeper."
build_path = "/obj/machinery/sleeper"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "other" // change this to machine if you want it to be buildable
board_type = "machine"
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/scanning_module = 2,
/obj/item/weapon/stock_parts/console_screen = 1,
/obj/item/weapon/reagent_containers/glass/beaker/large = 1)
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1)
/obj/item/weapon/circuitboard/cryotube
name = T_BOARD("Cryo Cell")
desc = "The circuitboard for a cryo tube."
build_path = "/obj/machinery/atmospherics/unary/cryo_cell"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 3)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1)
/obj/item/weapon/circuitboard/bodyscanner
name = T_BOARD("Body Scanner Machine")
desc = "The circuitboard for a body scanner machine."
build_path = "/obj/machinery/bodyscanner"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/device/healthanalyzer" = 1)
/obj/item/weapon/circuitboard/bodyscannerconsole
name = T_BOARD("Body Scanner Console")
desc = "The circuitboard for a body scanner console."
build_path = "/obj/machinery/body_scanconsole"
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/requestconsole
name = T_BOARD("Request Console")
desc = "The circuitboard for a body scanner console."
build_path = "/obj/machinery/requests_console"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/optable
name = T_BOARD("Operation Table")
desc = "The circuitboard for a operation table."
build_path = "/obj/machinery/optable"
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1)
/obj/item/weapon/circuitboard/optableadv
name = T_BOARD("Advanced Operation Table")
desc = "The circuitboard for a advanced operating table."
build_path = "/obj/machinery/optable/lifesupport"
origin_tech = list(TECH_BIO = 4, TECH_ENGINEERING = 5)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/device/healthanalyzer" = 1,
"/obj/item/weapon/stock_parts/scanning_module/adv" = 1,
"/obj/item/clothing/mask/breath/medical" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 2)
/obj/item/weapon/circuitboard/smartfridge
name = T_BOARD("Smart Fridge")
desc = "The circuitboard for a smart fridge."
build_path = "/obj/machinery/smartfridge"
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 3)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3)
/obj/item/weapon/circuitboard/refiner
name = T_BOARD("ore processor")
@@ -39,4 +116,34 @@
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 3,
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/matter_bin = 2)
/obj/item/weapon/stock_parts/matter_bin = 2)
/obj/item/weapon/circuitboard/holopad
name = T_BOARD("Holopad")
desc = "The circuitboard for a holopad."
build_path = "/obj/machinery/hologram/holopad"
origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1)
/obj/item/weapon/circuitboard/crystelpodconsole
name = T_BOARD("Crystel Therapy Pod Console")
desc = "The circuitboard for a crystel therapy pod console."
build_path = "/obj/machinery/chakraconsole"
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1)
/obj/item/weapon/circuitboard/crystelpod
name = T_BOARD("Crystel Therapy Pod")
desc = "The circuitboard for a crystel therapy pod."
build_path = "/obj/machinery/chakrapod"
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 2)
@@ -57,7 +57,7 @@
return
path = 1
to_chat(user, "<span class='notice'>You add [W] to the metal casing.</span>")
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
playsound(src.loc, W.usesound, 25, -3)
user.remove_from_mob(det)
det.forceMove(src)
detonator = det
@@ -79,7 +79,7 @@
else
to_chat(user, "<span class='notice'>You lock the empty assembly.</span>")
name = "fake grenade"
playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3)
playsound(src.loc, W.usesound, 25, -3)
icon_state = initial(icon_state) +"_locked"
stage = 2
else if(stage == 2)
@@ -89,7 +89,7 @@
return
else
to_chat(user, "<span class='notice'>You unlock the assembly.</span>")
playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, -3)
playsound(src.loc, W.usesound, 25, -3)
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
icon_state = initial(icon_state) + (detonator?"_ass":"")
stage = 1
@@ -73,3 +73,13 @@
slot_flags = SLOT_BACK
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 2)
attack_verb = list("chopped", "sliced", "cut", "reaped")
/obj/item/weapon/material/scythe/sickle
icon_state = "sickle0"
name = "sickle"
desc = "A short sharp and curved blade on a wood handle, this tool makes it easy to cut grass."
force_divisor = 0.175 // 16 with hardness 60 (steel)
thrown_force_divisor = 0.04 // 5 with weight 20 (steel)
throw_speed = 2
throw_range = 3
w_class = 2
@@ -53,7 +53,8 @@
/obj/item/weapon/material/hatchet,
/obj/item/device/analyzer/plant_analyzer,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/pipewrench
/obj/item/weapon/pipewrench,
/obj/item/powerdrill
)
@@ -64,7 +65,8 @@
/obj/item/weapon/weldingtool = 1,
/obj/item/weapon/crowbar = 1,
/obj/item/weapon/wirecutters = 1,
/obj/item/stack/cable_coil/random = 1
/obj/item/stack/cable_coil/random = 1,
/obj/item/powerdrill = 1
)
@@ -41,7 +41,7 @@
return
if (W.isscrewdriver())
if (do_after(user, 20))
if (do_after(user, 20/W.toolspeed))
src.open =! src.open
user.show_message(text("<span class='notice'>You [] the service panel.</span>", (src.open ? "open" : "close")))
return
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -614,7 +614,7 @@
user.visible_message("<span class='notice'>[user] is trying to [anchored ? "un" : "" ]secure \the [src]!</span>",
"You are trying to [anchored ? "un" : "" ]secure \the [src]!")
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(src.loc, W.usesound, 50, 1)
if (!do_after(user, 3 SECONDS, act_target = src))
return