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
-72
View File
@@ -1,72 +0,0 @@
/datum/unit_test/research_designs_shall_be_unique
name = "RESEARCH: Designs Shall Be Unique"
/datum/unit_test/research_designs_shall_be_unique/start_test()
var/list/ids = list()
var/list/build_paths = list()
for(var/design_type in typesof(/datum/design) - /datum/design)
var/datum/design/design = design_type
if(initial(design.id) == "id")
continue
group_by(ids, design, initial(design.id))
group_by(build_paths, design, initial(design.build_path))
var/number_of_issues = number_of_issues(ids, "IDs")
number_of_issues += number_of_issues(build_paths, "Build Paths")
if(number_of_issues)
fail("[number_of_issues] issues with research designs found.")
else
pass("All research designs are unique.")
return 1
/datum/unit_test/research_designs_shall_be_unique/proc/group_by(var/list/entries, var/datum/design/entry, var/value)
var/designs = entries[value]
if(!designs)
designs = list()
entries[value] = designs
designs += entry
/datum/unit_test/research_designs_shall_be_unique/proc/number_of_issues(var/list/entries, var/type)
var/issues = 0
for(var/value in entries)
var/list/list_of_designs = entries[value]
if(list_of_designs.len > 1)
log_unit_test("[type] - The following entries have the same value - [value]: " + english_list(list_of_designs))
issues++
return issues
/datum/unit_test/research_designs_have_valid_materials
name = "RESEARCH: Designs Shall Have Valid Materials and Chemicals"
/datum/unit_test/research_designs_have_valid_materials/start_test()
var/number_of_issues = 0
for(var/design_type in subtypesof(/datum/design))
var/datum/design/design = design_type
if(initial(design.id) == "id")
continue
design = new design_type() // Unfortunately we have to actually instantiate to get a list.
for(var/material_name in design.materials)
var/datum/material/material = get_material_by_name(material_name)
if(!material)
log_unit_test("The entry [design_type] has invalid material type [material_name]")
number_of_issues++
for(var/reagent_name in design.chemicals)
if(!(reagent_name in SSchemistry.chemical_reagents))
log_unit_test("The entry [design_type] has invalid chemical type [reagent_name]")
number_of_issues++
if(number_of_issues)
fail("[number_of_issues] issues with research designs found.")
else
pass("All research designs have valid materials.")
return 1