* Fix usages of TryIndex()
Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)
This then resulted in TryIndex() getting modified to log errors (94f98073b0), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)
This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.
Fixes#39115
Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.
* fix tests
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Mind Role Entities wip
* headrev count fix
* silicon stuff, cleanup
* exclusive antag config, cleanup
* jobroleadd overwerite
* logging stuff
* MindHasRole cleanup, admin log stuff
* last second cleanup
* ocd
* minor cleanup
* remove createdTime datafield
* now actually using the event replacement I made for role time tracking
* weh
First bug: if an error occured during pref loading code, it would fail. If the person then readied up, it would likely cause the round to fail to start.
Why could they ready up? The code only checks that the prefs finished loading, not that they finished loading *successfully*. Whoops.
Anyways, now people get kicked if their prefs fail to load. And I improved the error handling.
Second bug: if a user disconnected while their prefs were loading, it would cause an exception. This exception would go unobserved on lobby servers or raise through gameticker on non-lobby servers.
This happened even on a live server once and then triggered the first bug, but idk how.
Fixed this by properly plumbing through cancellation into the preferences loading code. The stuff is now cancelled properly.
Third bug: if somebody has a loadout item with a playtime requirement active, load-time sanitization of player prefs could run into a race condition because the sanitization can happen *before* play time was loaded.
Fixed by moving pref sanitizations to a later stage in the load process.
* Ghost roles now get new Minds
* Some round start/end button stuff
* Mind tracking for better round end reports
* Make traitor kill objectives use mind CharacterName rather than actual occupied entity ("kill brain" prevention)
* Transition over to EntityUid for mind stuff because that's the only way to do it
* BrainSystem fix for PR rebase
* GameTicker turned into an EntitySystem
* Turns ClientGameTicker into an EntitySystem, turn NetMessages into events
* Change event names to be more consistent with the rest.
* YAML linter uses the dummy gameticker CVar override.
* Fix game ticker initialization order
* Dummy ticker won't spawn players.
* Fix character creation test
* Engine namespace changes.
* Automated remove redundant using statements.
* Simplified Graphics namespace.
* Apparently the container system stores full type names in the map file.😞 This updates those names.
* API Changes to LocalizationManager.LoadCulture.
* Update submodule to v0.3.2
* Holy crap auth works
* Fix some usages of UserID instead of UserName
* Refactor preferences.
They be non-async now. Also faster.
* Rename DbContext.
* Guest username assignment.
* Fix saving of profiles.
* Don't store data for guests.
* Fix generating invalid random colors.
* Don't allow dumb garbage for char preferences.
* Bans.
* Lol forgot to fill out the command description.
* Connection log.
* Rename all the tables and columns to be snake_case.
* Re-do migrations.
* Fixing tests and warnings.
* Update submodule
* Non-accessed local variable
* Merge cast and type checks.
* StringComparison.Ordinal added for better culture support
* Supposed code improvement in launcher. Remove unused code.
* Update ExplosionHelper.cs
Unintentional change.
* Optimized Import
* Add Robust.Shared.Utility import where it was deleted
* Other random suggestion
* Improve my comment