diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 7d6c5c7986..1f3e4ad458 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -371,7 +371,7 @@ if(!key) msg += "[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely.\n" else if(!client) - msg += "[t_He] [t_has] a blank, absent-minded stare and appears completely unresponsive to anything. [t_He] may snap out of it soon.\n" + msg += "[t_He] [t_has] a blank, absent-minded stare and [t_has] been completely unresponsive to anything for [round(((world.time - lastclienttime) / (1 MINUTES)), 1)] minutes. [t_He] may snap out of it soon.\n" //SKYRAT CHANGE - ssd indicator if(digitalcamo) msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n" diff --git a/sandcode/code/game/mecha/mech_fabricator.dm b/sandcode/code/game/mecha/mech_fabricator.dm deleted file mode 100644 index 396da01ed5..0000000000 --- a/sandcode/code/game/mecha/mech_fabricator.dm +++ /dev/null @@ -1,487 +0,0 @@ -/obj/machinery/mecha_part_fabricator_adv - icon = 'sandcode/icons/obj/robotics.dmi' - icon_state = "fab-idle" - name = "advanced exosuit fabricator" - desc = "Nothing is being built." - density = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 20 - active_power_usage = 5000 - req_access = list(ACCESS_ROBOTICS) - circuit = /obj/item/circuitboard/machine/mechfab_adv - var/time_coeff = 1 - var/component_coeff = 1 - var/datum/techweb/specialized/autounlocking/exofab/stored_research - var/sync = 0 - var/part_set - var/datum/design/being_built - var/list/queue = list() - var/processing_queue = 0 - var/screen = "main" - var/link_on_init = TRUE - var/temp - var/offstation_security_levels = TRUE - var/datum/component/remote_materials/rmat - var/list/part_sets = list( - "Cyborg", - "Ripley", - "Firefighter", - "Odysseus", - "Gygax", - "Medical-Spec Gygax", - "Durand", - "H.O.N.K", - "Phazon", - "Exosuit Equipment", - "Exosuit Ammunition", - "Cyborg Upgrade Modules", - "Misc" - ) - -/obj/machinery/mecha_part_fabricator_adv/Initialize(mapload) - stored_research = new - rmat = AddComponent(/datum/component/remote_materials, "mechfab", mapload && link_on_init) - RefreshParts() //Recalculating local material sizes if the fab isn't linked - return ..() - -/obj/machinery/mecha_part_fabricator_adv/examine(mob/user) - . = ..() - if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Storing up to [rmat.local_size] material units.
Material consumption at [component_coeff*100]%.
Build time reduced by [100-time_coeff*100]%.
" - -/obj/machinery/mecha_part_fabricator_adv/RefreshParts() - var/T = 0 - - //maximum stocking amount (default 300000, 600000 at T4) - for(var/obj/item/stock_parts/matter_bin/M in component_parts) - T += M.rating - rmat.set_local_size((200000 + (T*50000))) - - //resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55) - T = 1.15 - for(var/obj/item/stock_parts/micro_laser/Ma in component_parts) - T -= Ma.rating*0.15 - component_coeff = T - - //building time adjustment coefficient (1 -> 0.8 -> 0.6) - T = -1 - for(var/obj/item/stock_parts/manipulator/Ml in component_parts) - T += Ml.rating - time_coeff = round(initial(time_coeff) - (initial(time_coeff)*(T))/5,0.01) - -/obj/machinery/mecha_part_fabricator_adv/emag_act() - . = ..() - if(obj_flags & EMAGGED) - return - obj_flags |= EMAGGED - req_access = list() - INVOKE_ASYNC(src, .proc/error_action_sucessful) - return TRUE - -/obj/machinery/mecha_part_fabricator_adv/proc/error_action_sucessful() - say("DB error \[Code 0x00F1\]") - sleep(10) - say("Attempting auto-repair...") - sleep(15) - say("User DB corrupted \[Code 0x00FA\]. Truncating data structure...") - sleep(30) - say("User DB truncated. Please contact your Nanotrasen system operator for future assistance.") - - -/obj/machinery/mecha_part_fabricator_adv/proc/output_parts_list(set_name) - var/output = "" - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(D.build_type & MECHFAB) - if(!(set_name in D.category)) - continue - output += "
[output_part_info(D)]
\[" - if(check_clearance(D) && check_resources(D)) - output += "Build | " - output += "Add to queue\]\[?\]
" - return output - -/obj/machinery/mecha_part_fabricator_adv/proc/check_clearance(datum/design/D) - if(!(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z)) && !ISINRANGE(GLOB.security_level, D.min_security_level, D.max_security_level)) - return FALSE - return TRUE - -/obj/machinery/mecha_part_fabricator_adv/proc/output_part_info(datum/design/D) - var/clearance = !(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z)) - var/sec_text = "" - if(clearance && (D.min_security_level > SEC_LEVEL_GREEN || D.max_security_level < SEC_LEVEL_DELTA)) - sec_text = " (Allowed security levels: " - for(var/n in D.min_security_level to D.max_security_level) - sec_text += NUM2SECLEVEL(n) - if(n + 1 <= D.max_security_level) - sec_text += ", " - sec_text += ") " - var/output = "[initial(D.name)] (Cost: [output_part_cost(D)]) [sec_text][get_construction_time_w_coeff(D)/10]sec" - return output - -/obj/machinery/mecha_part_fabricator_adv/proc/output_part_cost(datum/design/D) - var/i = 0 - var/output - for(var/c in D.materials) - var/datum/material/M = c - output += "[i?" | ":null][get_resource_cost_w_coeff(D, M)] [M.name]" - i++ - return output - -/obj/machinery/mecha_part_fabricator_adv/proc/output_available_resources() - var/output - var/datum/component/material_container/materials = rmat.mat_container - - if(materials) - for(var/mat_id in materials.materials) - var/datum/material/M = mat_id - var/amount = materials.materials[mat_id] - var/ref = REF(M) - output += "[M.name]: [amount] cm³" - if(amount >= MINERAL_MATERIAL_AMOUNT) - output += "- Remove \[1\]" - if(amount >= (MINERAL_MATERIAL_AMOUNT * 10)) - output += " | \[10\]" - output += " | \[50\]" - output += "
" - else - output += "No material storage connected, please contact the quartermaster.
" - return output - -/obj/machinery/mecha_part_fabricator_adv/proc/get_resources_w_coeff(datum/design/D) - var/list/resources = list() - for(var/R in D.materials) - resources[R] = get_resource_cost_w_coeff(D, R) - return resources - -/obj/machinery/mecha_part_fabricator_adv/proc/check_resources(datum/design/D) - if(D.reagents_list.len) // No reagents storage - no reagent designs. - return FALSE - var/datum/component/material_container/materials = rmat.mat_container - if(materials.has_materials(get_resources_w_coeff(D))) - return TRUE - return FALSE - -/obj/machinery/mecha_part_fabricator_adv/proc/build_part(datum/design/D) - var/list/res_coef = get_resources_w_coeff(D) - - var/datum/component/material_container/materials = rmat.mat_container - if (!materials) - say("No access to material storage, please contact the quartermaster.") - return FALSE - if (rmat.on_hold()) - say("Mineral access is on hold, please contact the quartermaster.") - return FALSE - if(!check_resources(D)) - say("Not enough resources. Queue processing stopped.") - return FALSE - being_built = D - desc = "It's building \a [initial(D.name)]." - materials.use_materials(res_coef) - rmat.silo_log(src, "built", -1, "[D.name]", res_coef) - - add_overlay("fab-active") - use_power = ACTIVE_POWER_USE - updateUsrDialog() - sleep(get_construction_time_w_coeff(D)) - use_power = IDLE_POWER_USE - cut_overlay("fab-active") - desc = initial(desc) - - var/location = get_step(src,(dir)) - var/obj/item/I = new D.build_path(location) - I.set_custom_materials(res_coef) - say("\The [I] is complete.") - being_built = null - - updateUsrDialog() - - return TRUE - -/obj/machinery/mecha_part_fabricator_adv/proc/update_queue_on_page() - send_byjax(usr,"mecha_fabricator.browser","queue",list_queue()) - return - -/obj/machinery/mecha_part_fabricator_adv/proc/add_part_set_to_queue(set_name) - if(set_name in part_sets) - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(D.build_type & MECHFAB) - if(set_name in D.category) - add_to_queue(D) - -/obj/machinery/mecha_part_fabricator_adv/proc/add_to_queue(D) - if(!istype(queue)) - queue = list() - if(D) - queue[++queue.len] = D - return queue.len - -/obj/machinery/mecha_part_fabricator_adv/proc/remove_from_queue(index) - if(!isnum(index) || !ISINTEGER(index) || !istype(queue) || (index<1 || index>queue.len)) - return FALSE - queue.Cut(index,++index) - return TRUE - -/obj/machinery/mecha_part_fabricator_adv/proc/process_queue() - var/datum/design/D = queue[1] - if(!D) - remove_from_queue(1) - if(queue.len) - return process_queue() - else - return - temp = null - while(D) - if(stat&(NOPOWER|BROKEN)) - return FALSE - if(!check_clearance(D)) - say("Security level not met. Queue processing stopped.") - temp = {"Security level not met to build next part.
- Try again | Return"} - return FALSE - if(!check_resources(D)) - say("Not enough resources. Queue processing stopped.") - temp = {"Not enough resources to build next part.
-
Try again | Return"} - return FALSE - remove_from_queue(1) - build_part(D) - D = listgetindex(queue, 1) - say("Queue processing finished successfully.") - -/obj/machinery/mecha_part_fabricator_adv/proc/list_queue() - var/output = "Queue contains:" - if(!istype(queue) || !queue.len) - output += "
Nothing" - else - output += "
    " - var/i = 0 - for(var/datum/design/D in queue) - i++ - var/obj/part = D.build_path - output += "" - output += initial(part.name) + " - " - output += "[i>1?"":null] " - output += "[i↓":null] " - output += "Remove" - - output += "
" - output += "\[Process queue | Clear queue\]" - return output - -/obj/machinery/mecha_part_fabricator_adv/proc/sync() - temp = "Updating local R&D database..." - updateUsrDialog() - sleep(30) //only sleep if called by user - - for(var/obj/machinery/computer/rdconsole/RDC in oview(7,src)) - RDC.stored_research.copy_research_to(stored_research) - temp = "Processed equipment designs.
" - //check if the tech coefficients have changed - temp += "Return" - - updateUsrDialog() - say("Successfully synchronized with R&D server.") - return - - temp = "Unable to connect to local R&D Database.
Please check your connections and try again.
Return" - updateUsrDialog() - return - -/obj/machinery/mecha_part_fabricator_adv/proc/get_resource_cost_w_coeff(datum/design/D, resource, roundto = 1) - return round(D.materials[resource]*component_coeff, roundto) - -/obj/machinery/mecha_part_fabricator_adv/proc/get_construction_time_w_coeff(datum/design/D, roundto = 1) //aran - return round(initial(D.construction_time)*time_coeff, roundto) - -/obj/machinery/mecha_part_fabricator_adv/ui_interact(mob/user as mob) - . = ..() - var/dat, left_part - user.set_machine(src) - var/turf/exit = get_step(src,(dir)) - if(exit.density) - say("Error! Part outlet is obstructed.") - return - if(temp) - left_part = temp - else if(being_built) - var/obj/I = being_built.build_path - left_part = {"Building [initial(I.name)].
- Please wait until completion...
"} - else - switch(screen) - if("main") - left_part = output_available_resources()+"
" - left_part += "Sync with R&D servers
" - for(var/part_set in part_sets) - left_part += "[part_set] - \[Add all parts to queue\]
" - if("parts") - left_part += output_parts_list(part_set) - left_part += "
Return" - dat = {" - - - [name] data - - - - - - - - - -
- [left_part] - - [list_queue()] -
- - "} - user << browse(dat, "window=mecha_fabricator;size=1000x430") - onclose(user, "mecha_fabricator") - return - -/obj/machinery/mecha_part_fabricator_adv/Topic(href, href_list) - if(..()) - return - if(href_list["part_set"]) - var/tpart_set = href_list["part_set"] - if(tpart_set) - if(tpart_set=="clear") - part_set = null - else - part_set = tpart_set - screen = "parts" - if(href_list["part"]) - var/T = href_list["part"] - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(D.build_type & MECHFAB) - if(D.id == T) - if(!processing_queue) - build_part(D) - else - add_to_queue(D) - break - if(href_list["add_to_queue"]) - var/T = href_list["add_to_queue"] - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(D.build_type & MECHFAB) - if(D.id == T) - add_to_queue(D) - break - return update_queue_on_page() - if(href_list["remove_from_queue"]) - remove_from_queue(text2num(href_list["remove_from_queue"])) - return update_queue_on_page() - if(href_list["partset_to_queue"]) - add_part_set_to_queue(href_list["partset_to_queue"]) - return update_queue_on_page() - if(href_list["process_queue"]) - spawn(0) - if(processing_queue || being_built) - return FALSE - processing_queue = 1 - process_queue() - processing_queue = 0 - if(href_list["clear_temp"]) - temp = null - if(href_list["screen"]) - screen = href_list["screen"] - if(href_list["queue_move"] && href_list["index"]) - var/index = text2num(href_list["index"]) - var/new_index = index + text2num(href_list["queue_move"]) - if(isnum(index) && isnum(new_index) && ISINTEGER(index) && ISINTEGER(new_index)) - if(ISINRANGE(new_index,1,queue.len)) - queue.Swap(index,new_index) - return update_queue_on_page() - if(href_list["clear_queue"]) - queue = list() - return update_queue_on_page() - if(href_list["sync"]) - sync() - if(href_list["part_desc"]) - var/T = href_list["part_desc"] - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(v) - if(D.build_type & MECHFAB) - if(D.id == T) - var/obj/part = D.build_path - temp = {"

[initial(part.name)] description:

- [initial(part.desc)]
- Return - "} - break - - if(href_list["remove_mat"] && href_list["material"]) - var/datum/material/Mat = locate(href_list["material"]) - eject_sheets(Mat, text2num(href_list["remove_mat"])) - - updateUsrDialog() - return - -/obj/machinery/mecha_part_fabricator_adv/proc/do_process_queue() - if(processing_queue || being_built) - return FALSE - processing_queue = 1 - process_queue() - processing_queue = 0 - -/obj/machinery/mecha_part_fabricator_adv/proc/eject_sheets(eject_sheet, eject_amt) - var/datum/component/material_container/mat_container = rmat.mat_container - if (!mat_container) - say("No access to material storage, please contact the quartermaster.") - return 0 - if (rmat.on_hold()) - say("Mineral access is on hold, please contact the quartermaster.") - return 0 - var/count = mat_container.retrieve_sheets(text2num(eject_amt), eject_sheet, drop_location()) - var/list/matlist = list() - matlist[eject_sheet] = text2num(eject_amt) - rmat.silo_log(src, "ejected", -count, "sheets", matlist) - return count - -/obj/machinery/mecha_part_fabricator_adv/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) - var/stack_name = material2name(id_inserted) - add_overlay("fab-load-[stack_name]") - addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[stack_name]"), 10) - updateUsrDialog() - -/obj/machinery/mecha_part_fabricator_adv/attackby(obj/item/W, mob/user, params) - if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W)) - return TRUE - - if(default_deconstruction_crowbar(W)) - return TRUE - - return ..() - -/obj/machinery/mecha_part_fabricator_adv/proc/material2name(ID) - return copytext(ID,2) - -/obj/machinery/mecha_part_fabricator_adv/proc/is_insertion_ready(mob/user) - if(panel_open) - to_chat(user, "You can't load [src] while it's opened!") - return FALSE - if(being_built) - to_chat(user, "\The [src] is currently processing! Please wait until completion.") - return FALSE - - return TRUE - -/obj/machinery/mecha_part_fabricator_adv/maint - link_on_init = FALSE diff --git a/sandcode/code/game/objects/items/circuitboards/machine_circuitboards.dm b/sandcode/code/game/objects/items/circuitboards/machine_circuitboards.dm index 3dd6a9ada6..ab97d07d54 100644 --- a/sandcode/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/sandcode/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1,12 +1,3 @@ -/obj/item/circuitboard/machine/mechfab_adv - name = "advanced exosuit fabricator (Machine board)" - build_path = /obj/machinery/mecha_part_fabricator_adv - req_components = list( - /obj/item/stock_parts/matter_bin = 2, - /obj/item/stock_parts/manipulator = 1, - /obj/item/stock_parts/micro_laser = 1, - /obj/item/stack/sheet/glass = 1) - /obj/item/circuitboard/machine/pacman/mclunky name = "McLunky-type Generator (Machine Board)" build_path = /obj/machinery/power/port_gen/pacman/mclunky diff --git a/sandcode/code/modules/admin/verbs/fix_air.dm b/sandcode/code/modules/admin/verbs/fix_air.dm index 2798d5543f..4281491e39 100644 --- a/sandcode/code/modules/admin/verbs/fix_air.dm +++ b/sandcode/code/modules/admin/verbs/fix_air.dm @@ -1,7 +1,7 @@ // Proc taken from yogstation, credit to nichlas0010 for the original /client/proc/fix_air(turf/open/T in world) set name = "Fix Air" - set category = "Admin - Game" + set category = "Admin" set desc = "Fixes air in specified radius." if(!holder) diff --git a/sandcode/code/modules/research/designs/machine_designs.dm b/sandcode/code/modules/research/designs/machine_designs.dm index f073c4fd89..fa8cac12f7 100644 --- a/sandcode/code/modules/research/designs/machine_designs.dm +++ b/sandcode/code/modules/research/designs/machine_designs.dm @@ -14,14 +14,6 @@ category = list("Teleportation Machinery") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE -/datum/design/board/mecha_part_fabricator_adv - name= "Machine Design (Advanced exosuit fabricator)" - desc = "An advanced version of the exosuit fabricator that can link to oresilos!" - id = "mech_fab_adv" - build_path = /obj/item/circuitboard/machine/mechfab_adv - category = list("Research Machinery") - departmental_flags = DEPARTMENTAL_FLAG_SCIENCE - /datum/design/mclunky_electronics name = "Machine Design (McLunky Circuit Board)" desc = "Now just give the parts to the botanist and they could perhaps be making power for you!" diff --git a/sandcode/code/modules/research/techweb/all_nodes.dm b/sandcode/code/modules/research/techweb/all_nodes.dm index f3a8a03924..890d423bcd 100644 --- a/sandcode/code/modules/research/techweb/all_nodes.dm +++ b/sandcode/code/modules/research/techweb/all_nodes.dm @@ -23,14 +23,6 @@ design_ids = list("telepad", "telesci_console") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) -/datum/techweb_node/adv_mechfab - id = "advanced_mechfab" - display_name = "Advanced Exosuit Fabricator" - description = "Studying more about devices you get to know how to make a linkable exosuit fabricator" - prereq_ids = list("datatheory") - design_ids = list("mech_fab_adv") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000) - /datum/techweb_node/adv_toolset_implant id = "adv_toolset_implant" display_name = "Advanced Toolset Implant" diff --git a/sandcode/icons/obj/robotics.dmi b/sandcode/icons/obj/robotics.dmi deleted file mode 100644 index aa1c02010e..0000000000 Binary files a/sandcode/icons/obj/robotics.dmi and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index d6ea1a846e..0497784ce4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3584,7 +3584,6 @@ #include "sandcode\code\game\machinery\posialert.dm" #include "sandcode\code\game\machinery\computer\arcade\tetris.dm" #include "sandcode\code\game\machinery\pipe\construction.dm" -#include "sandcode\code\game\mecha\mech_fabricator.dm" #include "sandcode\code\game\mecha\mecha_construction_paths.dm" #include "sandcode\code\game\mecha\mecha_parts.dm" #include "sandcode\code\game\objects\effects\contraband.dm"