From ce19ab1681463bbfc879d62645ca7fafd7dc2389 Mon Sep 17 00:00:00 2001 From: Geeves Date: Wed, 7 Jul 2021 03:30:41 +0200 Subject: [PATCH] RnD Tech Processors (#12136) --- aurorastation.dme | 1 + code/game/machinery/door_control.dm | 8 ++ code/game/objects/items/devices/multitool.dm | 2 + .../items/devices/radio/_radio_defines.dm | 22 ++++- .../game/objects/items/devices/radio/radio.dm | 4 + .../circuitboards/machinery/research.dm | 10 +++ code/global.dm | 2 +- .../designs/circuit/machine_circuits.dm | 5 ++ code/modules/research/rdconsole.dm | 29 +++--- code/modules/research/research.dm | 4 +- code/modules/research/server.dm | 34 ++++++- code/modules/research/tech_processor.dm | 85 ++++++++++++++++++ html/changelogs/geeves-fun_research.yml | 10 +++ icons/obj/machines/research.dmi | Bin 18119 -> 20422 bytes maps/aurora/aurora-4_mainlevel.dmm | 43 ++++----- 15 files changed, 217 insertions(+), 42 deletions(-) create mode 100644 code/modules/research/tech_processor.dm create mode 100644 html/changelogs/geeves-fun_research.yml diff --git a/aurorastation.dme b/aurorastation.dme index 4f663a92a1a..ca6a8977b04 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -2723,6 +2723,7 @@ #include "code\modules\research\research.dm" #include "code\modules\research\server.dm" #include "code\modules\research\stockparts.dm" +#include "code\modules\research\tech_processor.dm" #include "code\modules\research\weaponsanalyzer.dm" #include "code\modules\research\designs\designs.dm" #include "code\modules\research\designs\circuit\AI_law_boards.dm" diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 2a46db50a9c..0f569210939 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -125,6 +125,14 @@ if(specialfunctions & SAFE) D.set_safeties(1) +/obj/machinery/button/remote/airlock/screamer + var/message = "REPLACE THIS!" + var/channel = "Common" + +/obj/machinery/button/remote/airlock/screamer/trigger() + . = ..() + global_announcer.autosay(message, capitalize_first_letters(name), channel) + #undef OPEN #undef IDSCAN #undef BOLTS diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 222decc29b5..f97cb0b9668 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -66,6 +66,7 @@ buffer_object = buffer if(buffer_object) destroyed_event.register(buffer_object, src, /obj/item/device/multitool/proc/unregister_buffer) + update_icon() /obj/item/device/multitool/proc/unregister_buffer(var/atom/buffer_to_unregister) // Only remove the buffered object, don't reset the name @@ -73,6 +74,7 @@ if(buffer_to_unregister == buffer_object && buffer_object) destroyed_event.unregister(buffer_object, src) buffer_object = null + update_icon() /obj/item/device/multitool/resolve_attackby(atom/A, mob/user, var/click_parameters) if(!isobj(A)) diff --git a/code/game/objects/items/devices/radio/_radio_defines.dm b/code/game/objects/items/devices/radio/_radio_defines.dm index c277e4b8746..19b708d2921 100644 --- a/code/game/objects/items/devices/radio/_radio_defines.dm +++ b/code/game/objects/items/devices/radio/_radio_defines.dm @@ -16,4 +16,24 @@ #define CHANNEL_MERCENARY "Mercenary" #define CHANNEL_NINJA "Ninja" #define CHANNEL_BLUESPACE "Bluespace" -#define CHANNEL_BURGLAR "Burglar" \ No newline at end of file +#define CHANNEL_BURGLAR "Burglar" + +var/global/list/ALL_RADIO_CHANNELS = list( + CHANNEL_COMMON = TRUE, + CHANNEL_ENTERTAINMENT = TRUE, + CHANNEL_COMMAND = TRUE, + CHANNEL_SCIENCE = TRUE, + CHANNEL_MEDICAL = TRUE, + CHANNEL_ENGINEERING = TRUE, + CHANNEL_SECURITY = TRUE, + CHANNEL_SUPPLY = TRUE, + CHANNEL_SERVICE = TRUE, + CHANNEL_AI_PRIVATE = TRUE, + CHANNEL_PENAL = TRUE, + CHANNEL_RESPONSE_TEAM = TRUE, + CHANNEL_RAIDER = TRUE, + CHANNEL_MERCENARY = TRUE, + CHANNEL_NINJA = TRUE, + CHANNEL_BLUESPACE = TRUE, + CHANNEL_BURGLAR = TRUE + ) \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 7e8c7fa53d4..39fb3519154 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -808,3 +808,7 @@ var/global/list/default_medbay_channels = list( /obj/item/device/radio/phone/medbay/Initialize() . = ..() internal_channels = default_medbay_channels.Copy() + +/obj/item/device/radio/all_channels/Initialize() + channels = ALL_RADIO_CHANNELS.Copy() + . = ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/circuitboards/machinery/research.dm b/code/game/objects/items/weapons/circuitboards/machinery/research.dm index 8a8ddacb414..34464d7bd1e 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/research.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/research.dm @@ -11,6 +11,16 @@ obj/item/circuitboard/rdserver "/obj/item/stack/cable_coil" = 2, "/obj/item/stock_parts/scanning_module" = 1) +obj/item/circuitboard/rdtechprocessor + name = T_BOARD("R&D tech processor") + build_path = /obj/machinery/r_n_d/tech_processor + board_type = "machine" + origin_tech = list(TECH_DATA = 3) + req_components = list( + "/obj/item/stack/cable_coil" = 2, + "/obj/item/stock_parts/scanning_module" = 2 + ) + /obj/item/circuitboard/destructive_analyzer name = T_BOARD("destructive analyzer") build_path = /obj/machinery/r_n_d/destructive_analyzer diff --git a/code/global.dm b/code/global.dm index b2fd2d5ffa6..b69941762be 100644 --- a/code/global.dm +++ b/code/global.dm @@ -141,7 +141,7 @@ var/static/list/scarySounds = list( var/max_explosion_range = 14 // Announcer intercom, because too much stuff creates an intercom for one message then hard del()s it. -var/global/obj/item/device/radio/intercom/global_announcer = new(null) +var/global/obj/item/device/radio/all_channels/global_announcer = new(null) // the number next to it denotes how much money the department receives when its account is generated var/list/department_funds = list( diff --git a/code/modules/research/designs/circuit/machine_circuits.dm b/code/modules/research/designs/circuit/machine_circuits.dm index f66392a60c4..ea5f9521837 100644 --- a/code/modules/research/designs/circuit/machine_circuits.dm +++ b/code/modules/research/designs/circuit/machine_circuits.dm @@ -46,6 +46,11 @@ req_tech = list(TECH_DATA = 3) build_path = /obj/item/circuitboard/rdserver +/datum/design/circuit/machine/rdtechprocessor + name = "R&D Tech Processor" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/circuitboard/rdtechprocessor + /datum/design/circuit/machine/mechfab name = "Exosuit Fabricator" req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index d52b25279e3..c15dcec9d35 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -96,20 +96,19 @@ won't update every console in existence) but it's more of a hassle to do. Also, return /obj/machinery/computer/rdconsole/proc/SyncTechs() - if(src) - for(var/obj/machinery/r_n_d/server/S in SSmachinery.all_machines) - var/server_processed = 0 - if((id in S.id_with_upload) || istype(S, /obj/machinery/r_n_d/server/centcom)) - for(var/tech_id in files.known_tech) - var/datum/tech/T = files.known_tech[tech_id] - S.files.AddTech2Known(T) - S.files.RefreshResearch() - server_processed = 1 - files.known_tech = S.files.known_tech.Copy() - if(!istype(S, /obj/machinery/r_n_d/server/centcom) && server_processed) - S.produce_heat() - screen = 1.6 - updateUsrDialog() + for(var/obj/machinery/r_n_d/server/S in SSmachinery.all_machines) + var/server_processed = 0 + if((id in S.id_with_upload) || istype(S, /obj/machinery/r_n_d/server/centcom)) + for(var/tech_id in files.known_tech) + var/datum/tech/T = files.known_tech[tech_id] + S.files.AddTech2Known(T) + S.files.RefreshResearch() + server_processed = 1 + files.known_tech = S.files.known_tech.Copy() + if(!istype(S, /obj/machinery/r_n_d/server/centcom) && server_processed) + S.produce_heat() + screen = 1.6 + updateUsrDialog() /obj/machinery/computer/rdconsole/proc/griefProtection() //Have it automatically push research to the centcomm server so wild griffins can't fuck up R&D's work for(var/obj/machinery/r_n_d/server/centcom/C in SSmachinery.all_machines) @@ -861,7 +860,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, /obj/machinery/computer/rdconsole/robotics name = "robotics R&D console" - id = 2 + id = 1 req_access = list(access_robotics) allow_analyzer = FALSE allow_lathe = FALSE diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index ce9a51bc9c8..7918bd2e310 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -150,10 +150,12 @@ var/global/list/designs_imprinter_categories = list() if(KT.level >= MAX_TECH_LEVEL) break if(KT.next_level_progress + progress >= KT.next_level_threshold) - progress -= KT.next_level_threshold - KT.next_level_progress + var/progress_left = KT.next_level_threshold - KT.next_level_progress + KT.next_level_progress += progress_left KT.level++ KT.level = clamp(KT.level, 0, MAX_TECH_LEVEL) KT.next_level_threshold = get_level_value(KT.level) + progress -= progress_left continue KT.next_level_progress += progress break diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index c7fd1fe9ee4..398acc1329c 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -1,5 +1,5 @@ /obj/machinery/r_n_d/server - name = "R&D server" + name = "\improper R&D server" desc = "A server which houses a back-up of all station research. It can be used to restore lost data, or to act as another point of retrieval." icon = 'icons/obj/machines/research.dmi' icon_state = "server" @@ -10,11 +10,13 @@ var/id_with_upload_string = "" //String versions for easy editing in map editor. var/id_with_download_string = "" var/server_id = 0 - var/produces_heat = 1 + var/produces_heat = TRUE idle_power_usage = 800 var/delay = 10 req_access = list(access_rd) //Only the R&D can change server settings. + var/list/linked_processors + component_types = list( /obj/item/circuitboard/rdserver, /obj/item/stock_parts/scanning_module, @@ -22,6 +24,8 @@ ) /obj/machinery/r_n_d/server/Destroy() + for(var/obj/machinery/r_n_d/tech_processor/TP as anything in linked_processors) + TP.set_server(null) griefProtection() return ..() @@ -52,6 +56,9 @@ id_with_download += text2num(N) /obj/machinery/r_n_d/server/machinery_process() + if(stat & (NOPOWER|BROKEN)) + return + var/datum/gas_mixture/environment = loc.return_air() switch(environment.temperature) if(0 to T0C) @@ -73,6 +80,19 @@ else produce_heat() delay = initial(delay) + upgrade_techs() + +/obj/machinery/r_n_d/server/proc/upgrade_techs() + for(var/obj/machinery/r_n_d/tech_processor/TP as anything in linked_processors) + if(TP.stat & (NOPOWER|BROKEN)) + continue + TP.processing_stage++ + if(TP.processing_stage == 5) + for(var/tech_id in files.known_tech) + var/datum/tech/T = files.known_tech[tech_id] + if(T.level) + files.UpdateTech(T.id, round(TP.tech_rate)) + TP.processing_stage = 0 /obj/machinery/r_n_d/server/emp_act(severity) griefProtection() @@ -113,7 +133,15 @@ env.merge(removed) -/obj/machinery/r_n_d/server/attackby(var/obj/item/O as obj, var/mob/user as mob) +/obj/machinery/r_n_d/server/attackby(obj/item/O, mob/user) + if(O.ismultitool()) + var/obj/item/device/multitool/MT = O + var/obj/machinery/r_n_d/tech_processor/TP = MT.get_buffer(/obj/machinery/r_n_d/tech_processor) + if(TP) + TP.set_server(src) + MT.unregister_buffer(TP) + to_chat(user, SPAN_NOTICE("You link \the [TP] to \the [src].")) + return if(default_deconstruction_screwdriver(user, O)) return if(default_deconstruction_crowbar(user, O)) diff --git a/code/modules/research/tech_processor.dm b/code/modules/research/tech_processor.dm new file mode 100644 index 00000000000..9ff5498e254 --- /dev/null +++ b/code/modules/research/tech_processor.dm @@ -0,0 +1,85 @@ +/obj/machinery/r_n_d/tech_processor + name = "\improper R&D tech processor" + desc = "A highly advanced analytical computation engine, when connected to an R&D server with a multitool, it will start processing known technology and add research points to it." + icon_state = "tech_processor" + + component_types = list( + /obj/item/circuitboard/rdtechprocessor, + /obj/item/stock_parts/scanning_module = 2, + /obj/item/stack/cable_coil = 2 + ) + + idle_power_usage = 800 + + var/tech_rate = 0 + var/obj/machinery/r_n_d/server/linked_server + + var/processing_stage = 0 + + var/heat_delay = 10 + +/obj/machinery/r_n_d/tech_processor/Destroy() + set_server(null) + return ..() + +/obj/machinery/r_n_d/tech_processor/RefreshParts() + tech_rate = 0 + for(var/obj/item/stock_parts/scanning_module/SM in component_parts) + tech_rate += SM.rating / 2 + idle_power_usage = initial(idle_power_usage) * tech_rate // lots of power + update_icon() + +/obj/machinery/r_n_d/tech_processor/machinery_process() + heat_delay-- + if(!heat_delay) + produce_heat() + heat_delay = initial(heat_delay) + +/obj/machinery/r_n_d/tech_processor/attackby(obj/item/W, mob/user) + if(W.ismultitool()) + var/obj/item/device/multitool/MT = W + MT.set_buffer(src) + to_chat(user, SPAN_NOTICE("You attach \the [src]'s linking node to \the [MT]'s machinery buffer.")) + return + if(default_deconstruction_screwdriver(user, W)) + return + if(default_deconstruction_crowbar(user, W)) + return + if(default_part_replacement(user, W)) + return + return ..() + +/obj/machinery/r_n_d/tech_processor/proc/set_server(var/obj/machinery/r_n_d/server/S) + if(linked_server) + LAZYREMOVE(linked_server.linked_processors, src) + linked_server = S + if(linked_server) + LAZYADD(linked_server.linked_processors, src) + update_icon() + +/obj/machinery/r_n_d/tech_processor/proc/produce_heat() + if(!(stat & (NOPOWER|BROKEN))) + var/turf/simulated/L = loc + if(istype(L)) + var/datum/gas_mixture/env = L.return_air() + var/transfer_moles = 0.25 * env.total_moles + var/datum/gas_mixture/removed = env.remove(transfer_moles) + if(removed) + var/heat_produced = idle_power_usage //obviously can't produce more heat than the machine draws from it's power source + removed.add_thermal_energy(heat_produced) + env.merge(removed) + +/obj/machinery/r_n_d/tech_processor/power_change() + . = ..() + update_icon() + +/obj/machinery/r_n_d/tech_processor/update_icon() + cut_overlays() + if(stat & (NOPOWER|BROKEN)) + icon_state = "[initial(icon_state)]_off" + else if(!linked_server) + icon_state = "[initial(icon_state)]_unlinked" + else + icon_state = initial(icon_state) + if(panel_open) + add_overlay("[initial(icon_state)]_open") \ No newline at end of file diff --git a/html/changelogs/geeves-fun_research.yml b/html/changelogs/geeves-fun_research.yml new file mode 100644 index 00000000000..006a1ba9eb5 --- /dev/null +++ b/html/changelogs/geeves-fun_research.yml @@ -0,0 +1,10 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Added Tech Processors, circuits available in the Machinery section of the circuit imprinter. When linked to an RnD server with a multitool, it will passively increase any techs above level zero." + - rscadd: "A single tech processor circuitboard and two basic scanning modules have been added to Tech Storage." + - rscadd: "The entrance to the server room now has a button next to it that'll toggle ID Scan, it will also state that it has been used on the science radio channel." + - rscdel: "Removed the robotics server from the server room, the core server will now serve and be served by both consoles." + - bugfix: "Tech now properly adds the progress to the total progress when you increase a tech level." \ No newline at end of file diff --git a/icons/obj/machines/research.dmi b/icons/obj/machines/research.dmi index 5f13a3858fe3ec3580ec2c194f3b3f32dff8d0de..496a61d626278ad1203c562cb584a7f787c25ffd 100644 GIT binary patch literal 20422 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 z zv9Xp1G;dUiH8(jfav8gq29z(=8SUyVg!Ud}t2*#UzMl;Eza97ga zfSvk*;$IWNE}V2?tn&cD&M*ZIWPf4(M^`ciuuEu!hfnoa=cB&z^fh9vD{wtqnK8vj zbyybbd_U?aNVl)gxw3-)#c5&&8|+mR>490Ad`E5FR;D-I&zpr>K}X%`8D$_qAG;z( zJ#4g-$PN>Vz5+?jwqa$!j zOx=0bLwN|~-d?Sx5>AseS_P-V{vMd2$wFS=emQTpC?T9NANhQr9!iI9B!0N!e8zx} zDVwC$gS^(5CGoRqG!h#;U?f3gU7nL>!UpewGDDM&29c`QG&hGOEJLSYpdu0q9$Yg+ zG0#yz^Fa2f2){EQK{`39#OGXMTg>;phS~>H z?gZo_QyX5g6Z`5;Dzl)DHP*&=K~4R%(jvnlLXe#em@H@;)5}ld@U3AoX)81DQ!vkO z&#|WN4I+)!d_)eta~|!WaFt+wgza$bD6nvCURbj^6T}i0ceTyp9a+s{{LG|TJ#!~e&rFd62zgqM*MqunN?b*}luy5UAjKZ%t9 znVPZ(IOuDH{02h)^SPmqp~RJpdm*}^G|&mRpKnv$5OzZ5Ct;_bx4gOvP}*)$L8*A5 z#*1I>1?{=8Tdlr#PHk~brN$`elOr6pRU>2G5*9cx4DFSLXETPUjSbty<0Hz`7^g`2 zy#%oXR+xzjA$3(ewNCg7Ir+0g)j)2)@r7yA7Qv=%W}{9=rux35UgSy6MYmX4-aB*K z7m$(R&&3@h2chQ!bPWLA30(iHd41PVxw}HvJ-Y^8t+~*gSU%heIA=A_ZmUZah(F6&Z+n)1e#@j zT*Ov;Xn<}Js=p`7K93LA@n?vG>S{xl(N}=H_UN1S3}QX>kaHHKhW_yjP2$;iUQAl> zDp4xlROr!b$Q{1Dpw$rvdGKV^wSu{EFGyw(D*N*Jd|JA#SBtEGssKi!T*P2Da>&gw zSb%JM%?aBcACG!4Aqd)$Yr#WB_bw`r5lpEA+qL`N*wd^t}#1-QksXFOQw#QIRiN`Ve z5!%OZw57Q3yzrdhx7*5zBkgb2b0s*~_As2b^K_(yce@;u|Xg ziYsu_Mzw530hW}x7bjN3SbFA8DOJw=a*qO*6kL<$Y@QuFFQYc#yuWqT zyO6yV4ID3$Zhd1IIabj_UB2|86uA;%Ju5(q^vS*&d@)7FT!?d|wRARoja1`ol}xaNV6JCN2TrZC9JRuse!k5Ev+pA_*{$AGUHADn2{j+MdrOS*py#F8 zQh$Dv!tPX6eFO4f>dSkCld8jfp`PE{yHAIt@%)k`LHt)M++Z4b#ZMT`Lm${befp)t z$ad+{JI6eXG4hx072NB7F_l3i=C>2_jUZaUhf$lM&< z3zF9QCOCLg@7J&STvpre&$j9JF`mZjfgi!{(LGFAFWj~++TZ;HFm2L1z8ZA*RqiG= zrUzgm4vA$wv4T#Qxno-j@bH+YxAeK>VWq(`p^(*|Tc^@vT0cW7neV2ZP91rNCCXPI zfl2HBd`}4xa!r%mA|*~VXDTqc_ijiQ0CA}WaI>mmFQ1&MfA7bXXID5cbIoOlE}E-i zPTfq4UJOdWF3p+mDNOzO)+eY*RxR^g2eeK!CE)zY4e_me;{t7-m+lP~ZCx+pUz?Qj zQP_%bXKt>b3S0Z+FPv8i-p9J8a--xZu}=}6^r{0-a_Q{ACB*S~k)&X|>Nc zF2f~vwvNO9W-#|MYzGoyFpe*FrHr`hK8GdqxWAbIs;qduQN zX~R?roj}iqr6bz78#l-u9pF@6DPXS@F9w?cB-;`5Qz4;uQY?-f0^WDE=DqlxtAyeX z>$|g&!doLsuQDKh^BGTSl_QKj!o6^g zRI6@THMSlkgAsf*2`NQi8eu-+f8l?%p4#QZ4$EPN0RqK|i1{~*KUw;4pBg1#KU|xH z$z~_cCYe8R?R*mzvT5UV>6)mLal!x% z5Yjg7V#$@z=d4WvYiXO&_vlL#%u0TXlg-9m$A&yiGEknEbpMa&F*o@AC+mJ}2oU5P zTMjzMTv0N}iRoHTwDOldF^Wd*&$b||)TjGoMh2`n)^}&02i*#tX9?2IG+@lFtxtY0 zg`tV?6eHo+36#&!gmmxaC`U+z`Wjq0#{ASj;pdye8;*q=fA_16e`V#rFU=T->AhC5 zo4x^8+QJm6X4w_HF2#yW8Quxl(DFYq_F<6;Bw#+tcYDuL{TRgcbW_ICta&NJyqq&{ zcC!A_8@SnLCH;Me8(WNM$P@QJ&6oSlAMd8EuGrw(4X+=5 z9gbp&3~_i3Dcx2aW2ZK&!KN&$TJ2AbqJ2_Y%}*6s zp42Gr>D~8&2?iHHP859jaNTcnePsYt+f!3VykyaGupP+*Xa#QYlPj_#D-Vk*-p3+j zt`4h(GJuf8;Bifzm>8LoZN0LRk_*)dGEj=Xj*e75d)P+YS_@e0-O_mA^jiz&=)3bm z_|om>k+}qh?6~X|ijT4_o;#oRyP;~sTd1!L15HXAQE`-Uo1PIti5+CT3X#i@%x7=; zIicAP^W&k~7PvpTP!0=07n%8MUID|E zwlPcGy;@NvynNz1c-_#=F3$zlOEgXEJ)U)&?wW+T3$G->^GDcYf;hc(Ul!6>5z>V% z#j3fUVfx20<}nQCuE%grg-!Zx9hSf*wm_nUo3hd=a_CEA%#0k?CKXeNKRz;D!!3SE zX$VDnw^^5v5mUV{5MXbWpET(6^mcL9Mm?%kv(KXV3lY!XB<$20i%cativ0&!dmR)p z`K-A3Cu84NnO?P27X6d-1Fn4m1h%ok)#YeV+B$q?WDu6GaoD(BtJPo3n(?B*#jN6Lj= z-|hv)sW@yVfzPxW7F&*nF`ktN&`?vv;Q-q_*Y@>f4`UbQ5U7@(>&4_VX$&IBT z9VP6=1IWt&isDyk=C|jzTZ+a{xBX~uX)Ne)Rlx)`U%(x^flrZSQtz#7tS^6)a456! z4quxyvn8_)X$$`Dec`%P=%Hnoi#8YDp57RLcu_rMVm2BAx(>s|!~t#k64d1_0?fs< zQzKBq`q_{|ce^ESIdCnDxzsgpxZIqB!hC2U2CQI?+KA5w(6QmE8dBdPhxxwVvt;10 zuhTuJrEGO8UFAX5)%14~pP*lcP%4P4+}AHF0m+?H{fV1(%bLI2lC&kIWH2~;XPO1v z!Vb7YO)(mEYb(^cmQQz*Kisf+1~6cPrr?3FwKM=^<30rJB&)L;H#b=HLQ3u0q(8}c z2GE#TYiMOdN}J0cfZ>~dTNb+ht6H6^67G=zd{1VR8fWH0-`ocPe5RiSX+9V1-2!k3 z%?G!ULZvWxBby1QFB-!sI8`ChCb1jf?#+!)X0lzDa49p3WVOzxH@n^q{$6z-C&B(| znl-jRw^uThkulZ&6#nw*Z$%)4#=@w4OJA52k38cpy6MaGbgI+R;$X~qZQ=7;e+KQz@aWfkn)*uiU$Aeg$1bI6&c2+F?=tB zxr*-{LG2gZt0nt#%O|61kI#aS(4Tye!4Am4Ws3v)uue^TT2HNMK`ZDBir!PZSpDJy za}O>uX%^UWurFT6cc>GzSA7l0&~Nx1{iqTuJjkqb0?%}3GFw<+U+0vP2~}T)N3@Cp zECjJ0{-psEuy%%acPAG_Y`#?r_1{^-S2LL4Z97n1f|6{&4`}?wqPA`L?O5m%2jXF) z_LI?H%-?ZBm$<+_afbbR2u5Or8D8N)%!Yas~@L$O| z^J|!*;>q694dM!^nB0xEqpRqDTmj%^_HPgvhJj{g3AH?zNcRUeLg3*Whd`cU(^%~w zDGM;$T=1__x;aJ*Bifv=frj+c@AJP(6RelL>RMHvqQE#E~(~3%H1f0N6$=gCDIr{5m~d zW5qDuJ|CK~9lHka!TqK&eMo>iCX0xQ-t);U9prHEyBx&+x1Kp*!$rw99RRp;-2epITf(Ub9A*yK>0WWeX+mh3L0w7jP+)%b7Ur?TnMwd4SdXDi1l3n&JSN1 zh-`$^ig^JB-19g8wr>;|t~`$O04;fyp(75Ehan(asgw63PVAMEvx|$%+b@5@i$S^A zZuKl6iP++RBd|Xn$PqW%t*j)IY~d~PC(zs13Ye9xr9MU1>md}b+clefMcnH&dLan$ zPhgboPhb=hLFYwsD|kh+wfx+PAEuog{--T{K6hC`%_<n^V6eu7SysyMX9LplaxK4kg=?HUTLMUa*sAqx@)v*u_g~9c3PL0IzJ!Tu zb158-WnoK^8|`V(Yd!gzj_4&+yhVKs*XMIt@#Op9?$TK$5l??u?4^4U(-<1cg`=205S<(R5 zK9q5TT$*Xc8gre6!7U@}XRWV4KOa)rS*v@Os_XNh3E4ylv-R}+1c|B%3(N(;hGplU z+NN}Nzu6B2S-e;~WYIf&MCA_aRFhzm5tDY`8w(oU&ay-v(S)MmqlXU_0ICPg`z8el zqTyiYswRuRcQl=A%?z6dZ^E4K+Ft4ZW_EjyAxokEJ_&e(yFB79MKS!h)c%9S$8p|9 z82$cg0=^nbDh!_gktSS8T`su4)qie-@_qjCjN2*c7v{|oTXgfp75CRrXi~~EdE@P= zwnX_SMNRn-I?WL!=7$fvWX|*6@;D6$q=FDYQdRi4WNig&o2Xig&!VI61=LOappNYo z!`?Itx1Z<^q*Towe!v1ifuX)jZaa42$UX7724+1mAa#3UHCprqi*n6?!T}-jQTMO699ymY^iCO+vJyYw#Ue~V8F{F)F0LOu(P$vY|+2B9A?H`wntA5wsulv zm(r`5t%pay@Xph$604a5%IK-PnOaQrl_LvS^x)6~jgnx`A76fdPU6z)<_c?x0v`b3 zfAJ@E{E2LU$Ub=^G1%?UvNNv8i({dBx?4YPgbM7Zw}ij%t&v4iq!Y9AJ>3BFZRr&H_+PI6R82?G5P<_+d6{W4pp)HW<)xDln89`;~~p4er=nsm@+oV zm8TIt{35Bs@w+ulCpvR6coViB;(%u7nF0J8a)OfB8h$3k~o4wWg^& zDkzRUe7Bi^^2GFr=g@f**!uf9fek&HAB~t@U0|5pk4uDH2%YZ1UnSYuiOj9A+Znv3 zJ6#x_(F`ZY@>zKUtZ7FOez4_t0jqa0iQ=msm9ud;F8a3znAZKrZ+4_m8ZM>3i?u8K>6O z?8|->S5eQ|&&2$>b((e`jmR@11iD)`g%!H6dHiJvb=HJjtR76qmR%16#8_EN_CCJ_ zkR5$4r-jls98{S3G~QIKut^4LlGMznQ_4y{pzPUcv3HH)YM7(+m`3HE8(H=s>8q?nv2Wc_jM!!_meY3 zK#pGE3d)341q|FZnv`qvZh09!aKA56OY)@lFlzbzBKxP*iD(>kp=cEOVa zNMCB7owv(##r;dsAA$45id86+Q5S63Qod(aI{XP{1~*IYzAEQlm3~kcI?R>~TccDK z4qPHD4DKWWl}wsq&3SO;x$xQ$V^AAzfA`-!W#F+z?;s1~w*R`@5!2vO4qmCaKl*Q; zDlfV*tA`%cLK4;KMf)Vxo#S?tyeIlf5s)VcGgPB978dEL9d_Mx>JxHSY+ z@@=w!Q9}Xy&CX4q?ICL%Wj|Vi?F5>8Y$JEz(sSa#xlN!OqW`Y!S~z>+yW81srXRZS zXrtj_F}tblw+w@MecOQ{1+0VrmAL3RfQsTBprSa5n47GCC`a z*%+D}?f2Zf@qVS?yFa%tUb(X5*G@@LzWMaJ_n;pz+r0Uv-gS_3zeuykez7l?<*d zp{~fn^l!%5OTbd|0OXqzw_5r?bn5(Uzi_Mnc7jp=n%P$c+$i^GF}7mc z{TEn*@rft(O3a%5_WSo2AJ5Jx^M21?ztA>T`!7RCa>1&&2R5-vXUAx&MF3+grYmXEO*?^PJ%NKl57gr;qcscYVL|=biiR*F3+M>drHa;AHsp z&K$VB^JP(t#v%q+-~iTb^{Pid>O{WDDyhdm%@emhp13cM_W|exqV%S?`jStkLd{cw ztGF{%89)xW`?2hBn=6MZ{W5z3?jYuUT`trou5b~ur1O1P{i=r< zj6!!ILxMm_B`MYuzwC^z!31`*`@6cbHhd_)_*O*q70fbM#a|Qe6oE>tM|v*e3W|`k cX8zkR78aNmvw5->@O(Z7Pgg&ebxsLQ0J0h|_W%F@ literal 18119 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 diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm index 76e3b8a06f6..90c70b71ab0 100644 --- a/maps/aurora/aurora-4_mainlevel.dmm +++ b/maps/aurora/aurora-4_mainlevel.dmm @@ -1515,15 +1515,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/substation/security) -"adf" = ( -/obj/machinery/r_n_d/server/advanced/robotics, -/turf/simulated/floor/bluegrid{ - name = "Server Base"; - nitrogen = 500; - oxygen = 0; - temperature = 80 - }, -/area/server) "adg" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -2183,6 +2174,7 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/r_n_d/server/advanced/core, /turf/simulated/floor/bluegrid{ name = "Server Base"; nitrogen = 500; @@ -2638,6 +2630,15 @@ /obj/effect/floor_decal/corner_wide/paleblue{ dir = 9 }, +/obj/machinery/button/remote/airlock/screamer{ + channel = "Science"; + id = "server_door_lock"; + message = "The Server Room Airlock's ID lock toggle has been used."; + name = "Server Room Control"; + pixel_x = -24; + pixel_y = -24; + specialfunctions = 2 + }, /turf/simulated/floor/tiled/white, /area/rnd/research) "afi" = ( @@ -2894,15 +2895,6 @@ temperature = 278 }, /area/security/investigations_storage) -"afF" = ( -/obj/machinery/r_n_d/server/advanced/core, -/turf/simulated/floor/bluegrid{ - name = "Server Base"; - nitrogen = 500; - oxygen = 0; - temperature = 80 - }, -/area/server) "afG" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -21686,6 +21678,8 @@ dir = 8 }, /obj/machinery/firealarm/south, +/obj/structure/table/steel, +/obj/item/device/multitool, /turf/simulated/floor/carpet/rubber, /area/server) "aLL" = ( @@ -22977,7 +22971,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/window/westleft{ name = "Server Room"; - req_access = list(30) + req_access = null }, /obj/machinery/door/window/eastleft{ name = "Server Room" @@ -23864,6 +23858,7 @@ icon_state = "4-8" }, /obj/machinery/door/airlock/glass_command{ + id_tag = "server_door_lock"; name = "Server Room"; req_access = list(30) }, @@ -34174,6 +34169,10 @@ dir = 8; layer = 2.9 }, +/obj/item/circuitboard/rdtechprocessor{ + pixel_x = -2; + pixel_y = 2 + }, /obj/item/circuitboard/unary_atmos/heater, /obj/item/circuitboard/unary_atmos/cooler{ pixel_x = 3; @@ -34859,6 +34858,8 @@ /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/capacitor, /obj/item/stock_parts/capacitor, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/scanning_module, /turf/simulated/floor/plating, /area/storage/tech) "biw" = ( @@ -90686,9 +90687,9 @@ bnx boX bqk brr -adf +aes aer -afF +aes bvS bwP byt