Re-adds nanites (#2995)

## About The Pull Request
Re-adds nanites, balance changes pending.
No plans to do mapping/role changes
Based on https://github.com/tgstation/tgstation/pull/60473 with a lot of
work on modularizing

## Why It's Good For The Game
Nanites are a rather interesting system, my hope is to port it in a more
balanced format.

## Proof Of Testing
Works, thoroughly tested

## Changelog

🆑
add: Re-adds nanites
/🆑
TODO:
- [x] Add techweb linking for nanites
- [x] Prevent stacking of armor mods (fortitude + dna vault + nanite
armor)
- [x] Rebalance damage regeneration programs
- [x] Remove force speak program by @StrangeWeirdKitten request
- [x] Convert UI's to TSX
- [x] Fix Nanite program uhb and programmer overlays not working

---------

Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
This commit is contained in:
Arturlang
2025-03-31 14:49:09 -04:00
committed by nevimer
co-authored by Waterpig
parent 90e3a269fd
commit 9950e761c4
82 changed files with 7550 additions and 24 deletions
@@ -0,0 +1,22 @@
PROCESSING_SUBSYSTEM_DEF(nanites)
name = "Nanites"
flags = SS_BACKGROUND|SS_POST_FIRE_TIMING|SS_NO_INIT
wait = 1 SECONDS
var/list/datum/nanite_cloud_backup/cloud_backups = list()
var/list/mob/living/nanite_monitored_mobs = list()
var/list/datum/nanite_program/relay/nanite_relays = list()
var/neural_network_count = 0
/datum/controller/subsystem/processing/nanites/proc/check_hardware(datum/nanite_cloud_backup/backup)
if(QDELETED(backup.storage) || (backup.storage.machine_stat & (NOPOWER|BROKEN)))
return FALSE
return TRUE
/datum/controller/subsystem/processing/nanites/proc/get_cloud_backup(cloud_id, force = FALSE)
for(var/I in cloud_backups)
var/datum/nanite_cloud_backup/backup = I
if(!force && !check_hardware(backup))
return
if(backup.cloud_id == cloud_id)
return backup