19 Commits
Author SHA1 Message Date
Watermelon914andShadow-Quill 79b00baad2 Refactors subsystems to use dependency-ordering to determine init order. Subsystems can now declare their own dependencies. (#90268)
## About The Pull Request
As the title says.
`init_order` is no more, subsystems ordering now depends on their
declared dependencies.
Subsystems can now declare which other subsystems need to init before
them using a list and the subsystem's typepath
I.e.
```dm
dependencies = list(
    /datum/controller/subsystem/atoms,
    /datum/controller/subsystem/mapping
)
```
The reverse can also be done, if a subsystem must initialize after your
own:
```dm
dependents = list(
    /datum/controller/subsystem/atoms
)
```
Cyclical dependencies are not allowed and will throw an error on
initialization if one is found.
There's also a debug tool to visualize the dependency graph, although
it's a bit basic:

![image](https://github.com/user-attachments/assets/80c854d9-c2a5-4f2f-92db-a031e9a8e257)

Subsystem load ordering can still be controlled using `init_stage`, some
subsystems use this in cases where they must initialize first or last
regardless of dependencies. An error will be thrown if a subsystem has
an `init_stage` before one of their dependencies.

## Why It's Good For The Game
Makes dealing with subsystem dependencies easier, and reduces the chance
of making a dependency error when needing to shift around subsystem
inits.

## Changelog
🆑
refactor: Refactored subsystem initialization
/🆑
2025-04-29 17:11:39 -06:00
a00cad0164 [MIRROR] Clean up subsystem Initialize(), require an explicit result returned, give a formal way to fail (for SSlua) [MDB IGNORE] (#16248)
* Clean up subsystem Initialize(), require an explicit result returned, give a formal way to fail (for SSlua)

* [PR for MIRROR PR] Changes for 16248 (#16277)

* Merge skyrat changes, update SR SS's, and remove lobby_eye

* Apply suggestions from code review

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Update modular_skyrat/modules/autotransfer/code/autotransfer.dm

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* restore lobby_cam for now

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

Co-authored-by: Tastyfish <crazychris32@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2022-09-24 17:32:40 -04:00
f1d15ea189 [MIRROR] Fix stickyban SS runtiming on initialize [MDB IGNORE] (#11225)
* Fix stickyban SS runtiming on initialize (#64586)

Stickyban SS no longer runtimes if there is broken entries in the DB and instead notifes admins

* Fix stickyban SS runtiming on initialize

Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
2022-02-02 09:14:13 +00:00
nemvarandGitHub b87f65d95e Converts ALL typepaths to lowercase (#51642)
* Case of lower

* More changes

* Ruins the nice 420 diff, brainfart when doing the second batch of conversions

* More changes

* Next batch. I think

* Converts even more paths

* Restarts bots

* Capital Free Zone

* Come on travis, do something

* Renames areas

* Bots, please stop dying

* Updates CONTRIBUTING.md and updates a few paths I missed.

* APC recgarftzfvas
/obj/item/computer_hardware/recharger/apc to /obj/item/computer_hardware/recharger/apc_recharger
2020-06-17 20:47:57 -03:00
Tad HardestyandGitHub 829e95896e Replace BSQL with rust-g, paramaterize all queries (#51255)
cl
refactor: BSQL has been replaced with rust-g, improving SQL reliability and safety.
/cl

Queries were parameterized as much as possible. Careful code read by someone else also versed in SQL would be a good idea. Things seemed fine spot-testing roundstart, library, bans, and polls, but more stress-testing may be useful.

Also updates rust-g to v0.4.5:

    Improved Linux .so detection
    Perlin noise functions

Also updates Travis script to bionic.
2020-06-08 16:00:07 +12:00
orangesandRob Bailey 9d91853f78 Non temp workaround for admins matching stickybans because of… (#46462)
* temp workaround for admins matching stickybans because of a byond bug.

* Globalify the lists used for stickyban exemptions
2019-09-25 18:45:18 -07:00
MrStonedOne 186f6c8ddd dbstickybans: Qdeleting queries, misc fixes, Query select proc for executing mutiple queries at once... 2019-03-16 00:23:40 -07:00
MrStonedOne 54f5e57880 Fixes and improvements 2019-03-16 00:23:39 -07:00
MrStonedOne f0f40bda51 Fixes and improvements. Hub password changes
Uses lazy access on inner lists (had to make lazy access work on inner lists @cyberboss you won't like this but lazyaccess is useless if you can't use it on inner lists)
Byond only does full stickyban matching when the server has a valid hub password set or compiled in, so now we have to remove it during init.
2019-03-16 00:23:38 -07:00
MrStonedOne 214c0de655 Adds automatic importing of older legacy stickybans 2019-03-16 00:23:38 -07:00
MrStonedOne 03f1eb2f2b Some fixes. 2019-03-16 00:23:38 -07:00
MrStonedOne 2e757683ab Database backed stickybans
Supports disabling stickybans for a round, exempting a key from matching a stickyban, and it now also detects rogue stickybans before anybody currently connected even gets disconnected. (new matches trigger a 5 second sleep and abort enforcement if enough other new matches happen in that timeframe)
2019-03-16 00:23:37 -07:00
Emmett GainesandAnturK 70beb65889 Unit test to make sure all subsystems which initialize call parent (#36466) 2018-03-20 14:01:46 +01:00
Jack Edge a76d4374c1 Moves init_order to defines, moves SSevents above ticker. 2017-04-22 22:08:31 +01:00
Cyberboss fb596bcdb3 _DEF 2017-03-22 14:52:21 -04:00
Cyberboss 7e14ec75fc Normalizes subsystem definitions 2017-03-22 11:50:46 -04:00
CyberbossandAnturK 31ee152489 Repaths subsystem to controller/subsystem (#24624)
* Repaths subsystem to controller/subsystem

* Fix the shit
2017-03-08 22:05:45 +01:00
Kyle Spier-SwensonandGitHub 2472e7227d Fixes stickyban list getting corrupted 2016-08-14 06:17:17 -07:00
Kyle Spier-Swensonandoranges c1b14680c4 Rogue stickyban detection system. (#19201)
* Rogue stickyban detection system.

This will detect when stickybans go rogue and revert them to whatever their state was when the world started.

* does the remie

* Increases STICKYBAN_MAX_MATCHES to 20 to prevent gaming
2016-07-16 12:00:47 +12:00