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 12:07:46 -07:00
committed by Erki
parent abd926b14a
commit d6ff38ef96
164 changed files with 2571 additions and 1055 deletions
+1
View File
@@ -82,6 +82,7 @@
var/cleaving = FALSE
var/reach = 1 // Length of tiles it can reach, 1 is adjacent.
var/lock_picking_level = 0 //used to determine whether something can pick a lock, and how well.
// Its vital that if you make new power tools or new recipies that you include this
/obj/item/Destroy()
if(ismob(loc))
+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
+2
View File
@@ -24,6 +24,8 @@
var/icon_species_in_hand = 0//If 1, we will use the species tag even for rendering this item in the left/right hand.
var/equip_slot = 0
var/usesound = null
var/toolspeed = 1
/obj/Destroy()
STOP_PROCESSING(SSprocessing, src)
+2 -2
View File
@@ -31,11 +31,11 @@
switch(anchored)
if(0)
anchored = 1
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
playsound(src.loc, W.usesound, 75, 1)
user.visible_message("[user.name] secures [src.name] to the floor.", "You secure [src.name] to the floor.", "You hear a ratchet")
if(1)
anchored = 0
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
playsound(src.loc, W.usesound, 75, 1)
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", "You unsecure [src.name] from the floor.", "You hear a ratchet")
return
+1 -1
View File
@@ -29,7 +29,7 @@ LINEN BINS
/obj/item/weapon/bedsheet/attackby(obj/item/I, mob/user)
if(is_sharp(I))
user.visible_message("<span class='notice'>\The [user] begins cutting up [src] with [I].</span>", "<span class='notice'>You begin cutting up [src] with [I].</span>")
if(do_after(user, 50))
if(do_after(user, 50/I.toolspeed))
to_chat(user, "<span class='notice'>You cut [src] into pieces!</span>")
for(var/i in 1 to rand(2,5))
new /obj/item/weapon/reagent_containers/glass/rag(get_turf(src))
@@ -276,7 +276,7 @@
"You hear a welding torch on metal."
)
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
if (!do_after(user, 2 SECONDS, act_target = src, extra_checks = CALLBACK(src, .proc/is_closed)))
if (!do_after(user, 2/W.toolspeed SECONDS, act_target = src, extra_checks = CALLBACK(src, .proc/is_closed)))
return
if(!WT.remove_fuel(0,user))
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
@@ -91,7 +91,7 @@
"You hear a welding torch on metal."
)
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
if (!do_after(user, 2 SECONDS, act_target = src, extra_checks = CALLBACK(src, .proc/is_open)))
if (!do_after(user, 2/W.toolspeed SECONDS, act_target = src, extra_checks = CALLBACK(src, .proc/is_open)))
return
if(!WT.remove_fuel(0,user))
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
@@ -115,33 +115,33 @@
else if(W.isscrewdriver() && canbemoved)
if(screwed)
to_chat(user, "<span class='notice'>You start to unscrew the locker from the floor...</span>")
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
if (do_after(user, 10 SECONDS, act_target = src))
playsound(loc, W.usesound, 50, 1)
if (do_after(user, 10/W.toolspeed SECONDS, act_target = src))
to_chat(user, "<span class='notice'>You unscrew the locker!</span>")
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(loc, W.usesound, 50, 1)
screwed = 0
else if(!screwed && wrenched)
to_chat(user, "<span class='notice'>You start to screw the locker to the floor...</span>")
playsound(src, 'sound/items/Welder.ogg', 80, 1)
if (do_after(user, 15, act_target = src))
if (do_after(user, 15/W.toolspeed SECONDS, act_target = src))
to_chat(user, "<span class='notice'>You screw the locker!</span>")
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(loc, W.usesound, 50, 1)
screwed = 1
else if(W.iswrench() && canbemoved)
if(wrenched && !screwed)
to_chat(user, "<span class='notice'>You start to unfasten the bolts holding the locker in place...</span>")
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
if (do_after(user, 15 SECONDS, act_target = src))
playsound(loc, W.usesound, 50, 1)
if (do_after(user, 15/W.toolspeed SECONDS, act_target = src))
to_chat(user, "<span class='notice'>You unfasten the locker's bolts!</span>")
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(loc, W.usesound, 50, 1)
wrenched = 0
anchored = 0
else if(!wrenched)
to_chat(user, "<span class='notice'>You start to fasten the bolts holding the locker in place...</span>")
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
if (do_after(user, 15, act_target = src))
playsound(loc, W.usesound, 50, 1)
if (do_after(user, 15/W.toolspeed SECONDS, act_target = src))
to_chat(user, "<span class='notice'>You fasten the locker's bolts!</span>")
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(loc, W.usesound, 50, 1)
wrenched = 1
anchored = 1
else if(!opened)
+10 -10
View File
@@ -166,7 +166,7 @@
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
if(istext(glass))
user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src || !WT.isOn()) return
to_chat(user, "<span class='notice'>You welded the [glass] plating off!</span>")
var/M = text2path("/obj/item/stack/material/[glass]")
@@ -174,14 +174,14 @@
glass = 0
else if(glass == 1)
user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src || !WT.isOn()) return
to_chat(user, "<span class='notice'>You welded the glass panel out!</span>")
new /obj/item/stack/material/glass/reinforced(src.loc)
glass = 0
else if(!anchored)
user.visible_message("[user] dissassembles the airlock assembly.", "You start to dissassemble the airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src || !WT.isOn()) return
to_chat(user, "<span class='notice'>You dissasembled the airlock assembly!</span>")
new /obj/item/stack/material/steel(src.loc, 4)
@@ -191,13 +191,13 @@
return
else if(W.iswrench() && state == 0)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
if(anchored)
user.visible_message("[user] begins unsecuring the airlock assembly from the floor.", "You starts unsecuring the airlock assembly from the floor.")
else
user.visible_message("[user] begins securing the airlock assembly to the floor.", "You starts securing the airlock assembly to the floor.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You [anchored? "un" : ""]secured the airlock assembly!</span>")
anchored = !anchored
@@ -217,7 +217,7 @@
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You cut the airlock wires.!</span>")
new/obj/item/stack/cable_coil(src.loc, 1)
@@ -229,7 +229,7 @@
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
EL.inuse = 1
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
EL.inuse = 0
if(!src) return
user.drop_from_inventory(EL,src)
@@ -250,7 +250,7 @@
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("\The [user] starts removing the electronics from the airlock assembly.", "You start removing the electronics from the airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You removed the airlock electronics!</span>")
src.state = 1
@@ -284,10 +284,10 @@
glass = material_name
else if(W.isscrewdriver() && state == 2 )
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
to_chat(user, "<span class='notice'>Now finishing the airlock.</span>")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You finish the airlock!</span>")
var/path
+15
View File
@@ -209,6 +209,21 @@
..()
icon_state = "firstbush_[rand(1, 4)]"
/obj/structure/flora/ausbushes/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(istype(W,/obj/item/weapon/material/scythe/sickle))
if(prob(50))
new /obj/item/stack/material/wood(get_turf(src), 2)
if(prob(40))
new /obj/item/stack/material/wood(get_turf(src), 4)
if(prob(10))
var/pickberry = pick(list(/obj/item/seeds/berryseed,/obj/item/seeds/blueberryseed))
new /obj/item/stack/material/wood(get_turf(src), 4)
new pickberry(get_turf(src), 4)
to_chat(usr, "<span class='notice'>You find some seeds as you hack the bush away!</span>")
to_chat(usr, "<span class='notice'>You slice at the bush!</span>")
qdel(src)
playsound(src.loc, 'sound/effects/woodcutting.ogg', 50, 1)
/obj/structure/flora/ausbushes/reedbush
icon_state = "reedbush_1"
+19 -19
View File
@@ -56,22 +56,22 @@
/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob)
if(W.iswrench() && state == 0)
if(anchored && !reinf_material)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
to_chat(user, "<span class='notice'>Now disassembling the girder...</span>")
if(do_after(user,40))
if(do_after(user,40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You dissasembled the girder!</span>")
dismantle()
else if(!anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
to_chat(user, "<span class='notice'>Now securing the girder...</span>")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
to_chat(user, "<span class='notice'>You secured the girder!</span>")
reset_girder()
else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30))
if(do_after(user,30/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
@@ -80,7 +80,7 @@
var/obj/item/weapon/melee/energy/WT = W
if(WT.active)
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30))
if(do_after(user,30/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
@@ -90,7 +90,7 @@
else if(istype(W, /obj/item/weapon/melee/energy/blade))
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30))
if(do_after(user,30/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
@@ -99,7 +99,7 @@
var/obj/item/weapon/melee/chainsword/WT = W
if(WT.active)
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,60))
if(do_after(user,60/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
@@ -113,21 +113,21 @@
else if(W.isscrewdriver())
if(state == 2)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
to_chat(user, "<span class='notice'>Now unsecuring support struts...</span>")
if(do_after(user,40))
if(do_after(user,40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You unsecured the support struts!</span>")
state = 1
else if(anchored && !reinf_material)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
reinforcing = !reinforcing
to_chat(user, "<span class='notice'>\The [src] can now be [reinforcing? "reinforced" : "constructed"]!</span>")
else if(W.iswirecutter() && state == 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
to_chat(user, "<span class='notice'>Now removing support struts...</span>")
if(do_after(user,40))
if(do_after(user,40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You removed the support struts!</span>")
reinf_material.place_dismantled_product(get_turf(src))
@@ -137,7 +137,7 @@
else if(W.iscrowbar() && state == 0 && anchored)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
to_chat(user, "<span class='notice'>Now dislodging the girder...</span>")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You dislodged the girder!</span>")
icon_state = "displaced"
@@ -273,15 +273,15 @@
/obj/structure/girder/cult/attackby(obj/item/W as obj, mob/user as mob)
if(W.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
to_chat(user, "<span class='notice'>Now disassembling the girder...</span>")
if(do_after(user,40))
if(do_after(user,40/W.toolspeed))
to_chat(user, "<span class='notice'>You dissasembled the girder!</span>")
dismantle()
else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30))
if(do_after(user,30/W.toolspeed))
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
@@ -294,7 +294,7 @@
var/obj/item/weapon/melee/energy/WT = W
if(WT.active)
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30))
if(do_after(user,30/W.toolspeed))
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
else
@@ -303,7 +303,7 @@
else if(istype(W, /obj/item/weapon/melee/energy/blade))
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30))
if(do_after(user,30/W.toolspeed))
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
@@ -311,7 +311,7 @@
var/obj/item/weapon/melee/chainsword/WT = W
if(WT.active)
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,60))
if(do_after(user,60/W.toolspeed))
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
else
+2 -2
View File
@@ -75,7 +75,7 @@
/obj/structure/lattice/catwalk/attackby(obj/item/C, mob/user)
if (C.iswelder())
var/obj/item/weapon/weldingtool/WT = C
if (do_after(user, 5, act_target = src) && WT.remove_fuel(1, user))
if (do_after(user, 5/C.toolspeed, act_target = src) && WT.remove_fuel(1, user))
to_chat(user, "<span class='notice'>You slice apart [src].</span>")
playsound(src, 'sound/items/Welder.ogg', 50, 1)
new /obj/item/stack/rods{amount = 3}(loc)
@@ -85,7 +85,7 @@
if (C.isscrewdriver())
anchored = !anchored
to_chat(user, "<span class='notice'>You [anchored ? "" : "un"]anchor [src].</span>")
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
playsound(src, C.usesound, 50, 1)
queue_smooth(src)
queue_smooth_neighbors(src)
else
+4 -4
View File
@@ -415,18 +415,18 @@
/obj/structure/device/piano/attackby(obj/item/O as obj, mob/user as mob)
if (O.iswrench())
if (anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(src.loc, O.usesound, 50, 1)
to_chat(user, "<span class='notice'>You begin to loosen \the [src]'s casters...</span>")
if (do_after(user, 40))
if (do_after(user, 40/O.toolspeed))
user.visible_message( \
"[user] loosens \the [src]'s casters.", \
"<span class='notice'>You have loosened \the [src]. Now it can be pulled somewhere else.</span>", \
"You hear ratchet.")
src.anchored = 0
else
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(src.loc, O.usesound, 50, 1)
to_chat(user, "<span class='notice'>You begin to tighten \the [src] to the floor...</span>")
if (do_after(user, 20))
if (do_after(user, 20/O.toolspeed))
user.visible_message( \
"[user] tightens \the [src]'s casters.", \
"<span class='notice'>You have tightened \the [src]'s casters. Now it can be played again</span>.", \
@@ -95,7 +95,7 @@
/obj/structure/bed/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.iswrench())
if(can_dismantle)
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(src.loc, W.usesound, 50, 1)
dismantle()
qdel(src)
else if(istype(W,/obj/item/stack))
@@ -115,7 +115,7 @@
/obj/item/weapon/stool/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(src.loc, W.usesound, 50, 1)
dismantle()
qdel(src)
else if(istype(W,/obj/item/stack))
+13 -4
View File
@@ -30,7 +30,7 @@
/obj/structure/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.iswrench())
var/obj/structure/bed/chair/C = new /obj/structure/bed/chair(loc)
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(loc, W.usesound, 50, 1)
C.set_dir(dir)
part.forceMove(get_turf(src))
part.master = null
@@ -187,7 +187,7 @@
/obj/structure/metronome/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.iswrench())
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
playsound(src.loc, W.usesound, 50, 1)
if(anchored)
to_chat(user, "<span class='notice'>You unanchor \the [src] and it destabilizes.</span>")
STOP_PROCESSING(SSfast_process, src)
@@ -239,6 +239,12 @@
var/locked
var/obj/machinery/chakraconsole/connected
component_types = list(
/obj/item/weapon/circuitboard/crystelpod,
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/scanning_module = 2
)
/obj/machinery/chakrapod/Destroy()
if (connected)
connected.connected = null
@@ -404,8 +410,6 @@
update_use_power(2)
flick("[initial(icon_state)]-anim", src)
update_icon()
for(var/obj/Obj in src)
Obj.forceMove(get_turf(src))
src.add_fingerprint(user)
return
@@ -419,6 +423,11 @@
var/obj/machinery/chakrapod/connected
var/crystal = 0
var/working = 0
component_types = list(
/obj/item/weapon/circuitboard/crystelpodconsole,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/scanning_module = 2
)
/obj/machinery/chakraconsole/ex_act(severity)
+3 -3
View File
@@ -48,7 +48,7 @@
if(I.iscrowbar())
to_chat(user, "<span class='notice'>You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"].</span>")
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, 1)
if(do_after(user, 30))
if(do_after(user, 30/I.toolspeed))
user.visible_message("<span class='notice'>[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!</span>", "<span class='notice'>You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!</span>", "You hear grinding porcelain.")
cistern = !cistern
update_icon()
@@ -178,8 +178,8 @@
if(I.iswrench())
var/newtemp = input(user, "What setting would you like to set the temperature valve to?", "Water Temperature Valve") in temperature_settings
to_chat(user, "<span class='notice'>You begin to adjust the temperature valve with \the [I].</span>")
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 50))
playsound(src.loc, I.usesound, 50, 1)
if(do_after(user, 50/I.toolspeed))
watertemp = newtemp
user.visible_message("<span class='notice'>[user] adjusts the shower with \the [I].</span>", "<span class='notice'>You adjust the shower with \the [I].</span>")
add_fingerprint(user)
@@ -75,7 +75,7 @@ obj/structure/windoor_assembly/Destroy()
user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.")
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src || !WT.isOn()) return
to_chat(user, "<span class='notice'>You dissasembled the windoor assembly!</span>")
new /obj/item/stack/material/glass/reinforced(get_turf(src), 5)
@@ -88,10 +88,10 @@ obj/structure/windoor_assembly/Destroy()
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
if(W.iswrench() && !anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You've secured the windoor assembly!</span>")
src.anchored = 1
@@ -102,10 +102,10 @@ obj/structure/windoor_assembly/Destroy()
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
else if(W.iswrench() && anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You've unsecured the windoor assembly!</span>")
src.anchored = 0
@@ -122,7 +122,7 @@ obj/structure/windoor_assembly/Destroy()
return
to_chat(user, "<span class='notice'>You start to reinforce the windoor with rods.</span>")
if(do_after(user,40) && !secure)
if(do_after(user,40/W.toolspeed) && !secure)
if (R.use(4))
to_chat(user, "<span class='notice'>You reinforce the windoor.</span>")
src.secure = "secure_"
@@ -136,7 +136,7 @@ obj/structure/windoor_assembly/Destroy()
user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly.")
var/obj/item/stack/cable_coil/CC = W
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if (CC.use(1))
to_chat(user, "<span class='notice'>You wire the windoor!</span>")
src.state = "02"
@@ -154,7 +154,7 @@ obj/structure/windoor_assembly/Destroy()
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
to_chat(user, "<span class='notice'>You cut the windoor wires.!</span>")
@@ -184,10 +184,10 @@ obj/structure/windoor_assembly/Destroy()
//Screwdriver to remove airlock electronics. Step 6 undone.
else if(W.isscrewdriver() && src.electronics)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
playsound(src.loc, W.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src || !src.electronics) return
to_chat(user, "<span class='notice'>You've removed the airlock electronics!</span>")
if(src.secure)
@@ -207,7 +207,7 @@ obj/structure/windoor_assembly/Destroy()
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
if(do_after(user, 40))
if(do_after(user, 40/W.toolspeed))
if(!src) return
+4 -4
View File
@@ -225,21 +225,21 @@
if(reinf && state >= 1)
state = 3 - state
update_nearby_icons()
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
playsound(loc, W.usesound, 75, 1)
to_chat(user, (state == 1 ? "<span class='notice'>You have unfastened the window from the frame.</span>" : "<span class='notice'>You have fastened the window to the frame.</span>"))
else if(reinf && state == 0)
anchored = !anchored
update_nearby_icons()
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
playsound(loc, W.usesound, 75, 1)
to_chat(user, (anchored ? "<span class='notice'>You have fastened the frame to the floor.</span>" : "<span class='notice'>You have unfastened the frame from the floor.</span>"))
else if(!reinf)
anchored = !anchored
update_nearby_icons()
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
playsound(loc, W.usesound, 75, 1)
to_chat(user, (anchored ? "<span class='notice'>You have fastened the window to the floor.</span>" : "<span class='notice'>You have unfastened the window.</span>"))
else if(W.iscrowbar() && reinf && state <= 1)
state = 1 - state
playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
playsound(loc, W.usesound, 75, 1)
to_chat(user, (state ? "<span class='notice'>You have pried the window into the frame.</span>" : "<span class='notice'>You have pried the window out of the frame.</span>"))
else if(W.iswrench() && !anchored && (!state || !reinf))
if(!glasstype)