* I dunno, break shit I guess.
* Actually fix some shit for once.
* test flakey or me flakey?
* Test were not flakey, they just didnt make any sense anymore.
* more stationy tests
* undo abuncha shit I can set in yml instead
* forgor an assert
* unneeded usings
* 1984
* I made github angy
* yoink
* the end is never the end is never the end is never the end is never the end is never the end is never the
* Im going to commit sudoku
* item toggle refactoring and some new systems
* add ToggleClothing component/system
* unhardcode magboots gravity logic
* make magboots and speedboots use ItemToggle and stuff
* remove now useless clothing components
* update client/server magboots systems
* add note to use ItemToggledEvent in ToggleActionEvent doc
* refactor PowerCellDraw to use ItemToggle for ui open/close control
* add TryUseCharges, refactor charges system
* update magboot trigger code
* make borg use ItemToggle, network SelectedModule instead of now removed Activated
* add AccessToggle for borg
* the giga ninja refactor
* update ninja yml
* update ItemToggle usage for some stuff
* fix activatableui requires power
* random fixing
* yaml fixing
* nuke ItemToggleDisarmMalus
* make defib use ItemToggle
* make things that use power not turn on if missing use charge
* pro
* fix sound prediction
* bruh
* proximity detector use ItemToggle
* oop
* big idiot syndrome
* fix ninja spawn rule and make it generic
* fix ninja spawn rule yml
* move loading profiles into AntagLoadProfileRule
* more ninja refactor
* ninja yml fixes
* the dreaded copy paste ops
* remove useless NinjaRuleComponent and ue AntagSelection for greeting
* fix invisibility
* move IsCompleted to SharedObjectivesSystem
* ability fixes
* oop fix powercell instantly draining itself
* sentient speedboots gaming
* make reflect use ItemToggle
* fix other test
* loadprofilerule moved into its own pr
* remove conflict with dragon refactor
* remove all GenericAntag code from ninja
* )
* probably
* remove old enabled
* great language bravo vince
* GREAT LANGUAGE
* who made this language
* because it stinks
* reparent blood-red magboots to magboots probbbly works
* most of the review stuff
* hasGrav doesnt mean what i thought it did
* make health analyzer use itemtoggle, not fail test
* fix mag/speed boots being wacky
* UNTROLL
* add ItemToggle to the random health analyzers
* a
* remove unused obsolete borg func
* untrolling
* :trollface:
* fix test
* fix
* g
* untroll
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Revert "Make all Nukies humans (#29693)"
This reverts commit 3e3e050aaf.
* Implemented species blacklist
* Re-enabled all species as Nukies except for Vox because loadouts don't support breathing alternative gases yet.
* move MinMax to shared
* cleanup MinMax
* move other ticking components to shared just because
* remove unused prototype file
* update everything to use shared components
* test
* test 2
* test 3
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* A comprehensive rule list for joining admins and mid round command to get rule list added
* Fix up for when a rule is added vs started and some logging
* fix command help localization, fix admin flags and spam anouncement.
* Send admin message only to the joining player not all admins.
* Bit better formatting in chat box
* move profile loading out of nukeops rule
* make BaseNukeopsRule and use AntagLoadProfileRule
* untroll
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* add AntagObjectives from GenericAntag
* add AntagRandomObjectives that traitor and thief can use
* make ObjectivesSystem use initial character name which AntagSelection passes
* make thief and traitor use AntagRandomObjectives
* remove now unused locale
* make sleeper agents rule use baseTraitorRule
* restore dragon rule oop
* bandaid for genericantag
* real
* typo
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Add tests for ghost spawn position
* Make ghosts spawn immediately
* Format mind system
* Move ghost spawning to GhostSystem
* Spawn ghost on grid or map
This fixes the ghosts being attached the parent entity instead of the grid.
* Move logging out of the ghost system
* Make round start observer spawn using GhostSystem
* Move GameTicker ghost spawning to GhostSystem
Moved the more robust character name selection code over.
Moved the TimeOfDeath code over.
Added canReturn logic.
* Add overrides and default for ghost spawn coordinates
* Add warning log to ghost spawn fail
* Clean up test
* Dont spawn ghost on map delete
* Minor changes to the role test
* Fix role test failing to spawn ghost
It was failing the map check due to using Nullspace
* Fix ghost tests when running in parallel
Not sure what happened, but it seems to be because they were running simultaneously and overwriting values.
* Clean up ghost tests
* Test that map deletion does not spawn ghosts
* Spawn ghost on the next available map
* Disallow spawning on deleted maps
* Fix map deletion ghost test
* Cleanup
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.