## 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:

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
/🆑
## About The Pull Request
Test Card Distribution debug verb has been altered slightly to prevent
runtimes. Backing out of any one of the menus would send null as an
argument, and cause a runtime.
The Validate Cards verb now returns a message if no errors are found. I
kept mistakenly clicking this verb thinking it was the Cardpack
Distribution one, and would get confused whenever nothing happened. Now
it returns a message!
Also converts some of the stuff I touch into snake case because pretty
code is nice.
## Why It's Good For The Game
Closes#66987. Feedback for the random debug buttons I accidentally
click is good.
## Changelog
🆑 Rhials
fix: backing out of the Test Card Packs debug menu will no longer cause
a runtime
fix: Validate Cards debug verb now gives feedback if no errors are
detected.
/🆑
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Refactors tcg code a bit. Adds support for "keywords"
Idea is to allow card makers to embed tooltips in their card
descriptions.
These tooltips are defined in the keywords.json file
They can be referenced using {$keyword_name}
I've also done some refactoring to move more logic and state onto the
subsystem, and implemented a few keywords from the wiki
* New keywords, applies the old ones to the second card set
* Adds support for embedding react components in tgui chat
This is done by adding the data-component attribute to an html element
The value of that attibute is the component you want to use.
New components can be added by modifying the TGUI_CHAT_COMPONENTS list
in tgui-panel/chat/renderer.js.
Props can also be passed in in a limited capacity.
Any props you wish to pass must be added to
TGUI_CHAT_ATTRIBUTES_TO_PROPS.
This is due to a style restriction of html attributes, they cannot
contain an upper case char.
Use this list to convert between attibute compatible text and the prop's
name.
Props support 3 datatypes.
true and false can be passed by wrapping them in ""s. (Note to self add
a special char here to prevent colison with people just passing the
string true.
Numbers are supported in a limited capacity. Whitespace is not allowed,
but floats and ints are fair game.
And of course, strings are fully supported.
I've currently added support for Tooltip, since that's what I'm using
this for. Also added some tooltip html styles to the chat css.
* Implements the embedded component system to make tcg cards have nice pretty tooltips so people don't need to have the wiki open on one screen
* Adds documentation for embedding tgui components in chat, adds some protection against accidentially sending true as a bool
* Adds italitcs to the tooltips, moves the span stuff to a macro
* tGUI -> tgui, thank fikou
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Style suggestions
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Removes unneeded key from the components list
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* Removes needless span
* Actually adds the tooltip, oops
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
* here goes nothing
no really this is basically nothing
* dme is less dumb
* aaaaa string files
* Card backend (#3)
* Adds card backend and hotloading
This is a combination of 2 commits.
OH SHIT THE SM IS ON FIRE
WE DONE LADS
* Woop
* Best we'll get
* fixed file system, courtesy of potato
* updated tools (thanks potato), now up to 40 cards
* Adds rarity (#4)
* Adds rarity
* just to be sure
* Adds it to cards
* Didn't read templates WHAT A NERD AMAROIGHT
* Commets
* Woop you'd think I'd know my own system
* There we go
* Fuck you EOF (#5)
* Makes rarity not suck (#6)
* Fuck you EOF
* Makes rarity not suck
* Auto stash before merge of "blueeyedwhitejumpsuit" and "origin/blueeyedwhitejumpsuit"
* Makes rarity work as expected, thanks dogman (#7)
* smolcards
* Adds datum cards (#8)
* Datum cards
* Some docs and a little bit of cleanup
* fuck
* problems be had
* Fuck (#9)
* fucko bungo RELASE ME FROM THIS HELL GIT
* datum FUCKING AHHHHHHHHHHH
* packs and games
* boomer mood (#10)
* Card debugging (#11)
* Adds debug vars
* that's a bit better
* shit
* unfucks rarity
* scales sorted
* That should do it
* Parity
* fun fact
* series 1 json
* and so it is done
* Don't need this, I'm dumb.
MacRo-Op???@?#?@??!#?!@
* BRAINDAMAGE
* resin redux, smaller cards
* shut up shut up shut up IT'S ASSUMED TYPE OK? *it's not all that bad*
* double rarity TABLELS, fixed the silly linter
* flippers and rarities
* guaranteed rarity, rarity tables
* fuck it let's ask
* resinfront
* 2560 core set
* fixes flippers
* template icon, extra variable juice
* ADDS SPEED (#12)
* FUCK FUCK FUCK SHIT I BROKE IT AGAIN
* Kills my dreams in the NAME OF SPEED
* and some cleanup
* Minor changes, some qol (#13)
* couple small changes, moved the datum procs around to make things cleaner, made some comments autodocced
* Let's be more clear,
* and a woooop
* Removing ids, carpel tunnel edittion (#14)
* Subsystem
* Carpel tunnel completed
* woop
* curator is no longer equipment
* I'm not dumb you're dumb (#15)
* minor rarity tweak
ladies and gents, it's finished
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>