Techwebs & Experi-Sci (#17987)

* Techwebs

* Add basic stock parts

* Techweb production machines

* Circuit Imprinter

* More work

* More designs

* More designs, nodes'

* More more

* Better sorting for designs

* Add the exosuit fab'

* More conversions

* More and more and more

* mechfab parts

* Modsuit Designs

* Pinnace baron

* Equipment

* more mechfab

* vehicles

* more mecha

* Micro mechs

* Update mechfab_designs.dm

* no time

* zero

* Update mechfab_designs.dm

* Prosthetics Fabricator and fixes

* Update maps to use new parts

* Whoops, fix a few maps

* Fix lint error

* Port scene tools

* Fireworks~~

* Don't label the sex toys as sex toys

* Fixup maps in TGM format

26517b7122: maps/virgo_minitest/virgo_minitest-1.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* Significant portion of designs converted

* Fix paths

* Fix tgui lints

* Just a whole bunch of designs

* Almost doneeee

* ALL DESIGNS CONVERTED

* Merk all of the old stuff

* Fix a few errors

* Fix more errors

* MORE FIX

* Make server control work

* Undo changes to archive

* Fix a TODO

* Make disks work

* Start the long process of finishing the node tree

* One more oops

* All mechfab designs

* Add departmental protolathes

* Down to 200 designs unsorted

* FINISH TECHWEBS

* Fuck whoops

* Remove the debug verbs

* Little map tweaks

* Fix mousedrop

* More map fixes

* Upstream bug lmao

* guess CI hates this

* Fixup maps in TGM format

fe062e7bc4: maps/tether/tether-03-surface3.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* I gotta stop committing this

* Change scree requested

* Make science able to print implants too

* Fix ghost spawns

* Move NSFW gun

* Merk partbundles, make janus module work

* Pretty animation when you complete the tree :)

* Don't display designs you can't print

* Move security protolathes to warden's office

* Make servers recover from power failure gracefully

* Make fabricators drop their mats on the ground when destroyed

* Ore Silo

* Make CI happy

* Fixup maps in TGM format

fe062e7bc4: maps/tether/tether-05-station1.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* Fix MC crash

* Make experiscanner work for borgs

* I REALLY gotta stop committing this

* Make scientists and the RD spawn with an experiscanner

* Lock NIFs behind scanning mice

* Make Biome happy

* Allow scanning Cocoa and Kendrick in case they can't find mice

* Change from Kendrick to Ratthew, ;help maint, or Brick

* Change the name of the /rat/pet class so the experiscanner is more helpful

* Add departmental_flags to a bunch of things

* Remove a few things from security's techfab

* Add a second engineering lathe to atmos

* Fix runtime recycling rig modules, add name to cost sequence

* Add a discount experiment for scanning slime cores

* Change some fluff and shuffle chameleon clothes to bluespace yadayada

* Make closets alt click immune

* Do a bunch of sorting

* Silly

* Hopefully fix all infinite material bugs in techwebs

* bad merge

* quick ai fix

* fix some robot stuff

* axe downlaod fully

* list

* no ref

* easier readable

---------

Co-authored-by: C.L. <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
ShadowLarkens
2025-07-25 21:30:08 -07:00
committed by GitHub
parent 93efaa653a
commit b60cd47309
271 changed files with 19410 additions and 11158 deletions
@@ -0,0 +1,19 @@
/**
* Creates a mutable appearance with the material color applied for its insertion animation into an autolathe or techfab
* Arguments
*
* * material - the material used to generate the overlay
*/
/proc/material_insertion_animation(datum/material/material)
RETURN_TYPE(/mutable_appearance)
var/static/list/mutable_appearance/apps = list()
var/mutable_appearance/cached_app = apps[material]
if(isnull(cached_app))
cached_app = mutable_appearance('icons/obj/machines/research_vr.dmi', "material_insertion")
cached_app.color = material.icon_colour
// cached_app.alpha = material.alpha
apps[material] = cached_app
return cached_app
@@ -6,6 +6,7 @@
icon_state = "nanopaste"
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
amount = 10
max_amount = 10
toolspeed = 0.75 //Used in surgery, shouldn't be the same speed as a normal screwdriver on mechanical organ repair.
w_class = ITEMSIZE_SMALL
no_variants = FALSE
+5
View File
@@ -55,6 +55,11 @@
synths.Cut()
return ..()
/obj/item/stack/get_material_composition(breakdown_flags)
. = ..()
for(var/M in .)
.[M] *= amount
/obj/item/stack/update_icon()
if(no_variants)
icon_state = initial(icon_state)
@@ -78,3 +78,12 @@
network = list(NETWORK_XENOBIO)
req_access = list()
matter = list(MAT_STEEL = 50, MAT_GLASS = 50)
/obj/item/circuitboard/machine/rdserver
name = T_BOARD("R&D Server")
build_path = /obj/machinery/rnd/server
board_type = new /datum/frame/frame_types/machine
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/scanning_module = 1,
)
@@ -4,18 +4,4 @@
/obj/item/circuitboard/rdconsole
name = T_BOARD("R&D control console")
build_path = /obj/machinery/computer/rdconsole/core
/obj/item/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob)
if(I.has_tool_quality(TOOL_SCREWDRIVER))
playsound(src, I.usesound, 50, 1)
user.visible_message(span_infoplain(span_bold("\The [user]") + " adjusts the jumper on \the [src]'s access protocol pins."), span_notice("You adjust the jumper on the access protocol pins."))
if(build_path == /obj/machinery/computer/rdconsole/core)
name = T_BOARD("RD Console - Robotics")
build_path = /obj/machinery/computer/rdconsole/robotics
to_chat(user, span_notice("Access protocols set to robotics."))
else
name = T_BOARD("RD Console")
build_path = /obj/machinery/computer/rdconsole/core
to_chat(user, span_notice("Access protocols set to default."))
return
build_path = /obj/machinery/computer/rdconsole_tg
@@ -2,39 +2,6 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/circuitboard/rdserver
name = T_BOARD("R&D server")
build_path = /obj/machinery/r_n_d/server/core
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_DATA = 3)
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/stock_parts/scanning_module = 1)
/obj/item/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mob)
if(I.has_tool_quality(TOOL_SCREWDRIVER))
playsound(src, I.usesound, 50, 1)
user.visible_message(span_infoplain(span_bold("\The [user]") + " adjusts the jumper on \the [src]'s access protocol pins."), span_notice("You adjust the jumper on the access protocol pins."))
if(build_path == /obj/machinery/r_n_d/server/core)
name = T_BOARD("RD Console - Robotics")
build_path = /obj/machinery/r_n_d/server/robotics
to_chat(user, span_notice("Access protocols set to robotics."))
else
name = T_BOARD("RD Console")
build_path = /obj/machinery/r_n_d/server/core
to_chat(user, span_notice("Access protocols set to default."))
return
/obj/item/circuitboard/destructive_analyzer
name = T_BOARD("destructive analyzer")
build_path = /obj/machinery/r_n_d/destructive_analyzer
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
/obj/item/stock_parts/scanning_module = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/micro_laser = 1)
/obj/item/circuitboard/autolathe
name = T_BOARD("autolathe")
build_path = /obj/machinery/autolathe
@@ -45,19 +12,40 @@
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/console_screen = 1)
/obj/item/circuitboard/protolathe
/obj/item/circuitboard/machine/protolathe
name = T_BOARD("protolathe")
build_path = /obj/machinery/r_n_d/protolathe
build_path = /obj/machinery/rnd/production/protolathe
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2,
/obj/item/reagent_containers/glass/beaker = 2)
/obj/item/circuitboard/machine/protolathe/department
name = T_BOARD("departmental protolathe")
build_path = /obj/machinery/rnd/production/protolathe/department
/obj/item/circuitboard/machine/protolathe/department/engineering
name = T_BOARD("departmental protolathe (engineering)")
build_path = /obj/machinery/rnd/production/protolathe/department/engineering
/obj/item/circuitboard/machine/protolathe/department/service
name = T_BOARD("departmental protolathe (service)")
build_path = /obj/machinery/rnd/production/protolathe/department/service
/obj/item/circuitboard/machine/protolathe/department/medical
name = T_BOARD("departmental protolathe (medical)")
build_path = /obj/machinery/rnd/production/protolathe/department/medical
/obj/item/circuitboard/machine/protolathe/department/cargo
name = T_BOARD("departmental protolathe (cargo)")
build_path = /obj/machinery/rnd/production/protolathe/department/cargo
/obj/item/circuitboard/machine/protolathe/department/science
name = T_BOARD("departmental protolathe (science)")
build_path = /obj/machinery/rnd/production/protolathe/department/science
/obj/item/circuitboard/machine/protolathe/department/security
name = T_BOARD("departmental protolathe (security)")
build_path = /obj/machinery/rnd/production/protolathe/department/security
/obj/item/circuitboard/circuit_imprinter
name = T_BOARD("circuit imprinter")
build_path = /obj/machinery/r_n_d/circuit_imprinter
build_path = /obj/machinery/rnd/production/circuit_imprinter
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
@@ -67,7 +55,7 @@
/obj/item/circuitboard/mechfab
name = "Circuit board (Exosuit Fabricator)"
build_path = /obj/machinery/mecha_part_fabricator
build_path = /obj/machinery/mecha_part_fabricator_tg
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
@@ -78,7 +66,7 @@
/obj/item/circuitboard/prosthetics
name = "Circuit board (Prosthetics Fabricator)"
build_path = /obj/machinery/mecha_part_fabricator/pros
build_path = /obj/machinery/mecha_part_fabricator_tg/prosthetics
board_type = new /datum/frame/frame_types/machine
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
@@ -17,3 +17,9 @@
req_components = list(
/obj/item/stock_parts/matter_bin = 2,
/obj/item/stock_parts/manipulator = 2)
/obj/item/circuitboard/machine/ore_silo
name = T_BOARD("Ore Silo")
build_path = /obj/machinery/ore_silo
board_type = new /datum/frame/frame_types/machine
req_components = list()
@@ -43,6 +43,7 @@
var/vore_sound = 'sound/effects/metalscrape2.ogg'
/obj/structure/closet/Initialize(mapload)
ADD_TRAIT(src, TRAIT_ALT_CLICK_BLOCKER, ROUNDSTART_TRAIT)
..()
return INITIALIZE_HINT_LATELOAD