* Give silicons proper lobby/character editor previews
No more naked dummies, properly show a borg/AI sprite now.
This means taking the JobEntity into account when spawning the dummy. For AIs I had to add a "JobPreviewEntity" field because they'd look like a posibrain otherwise. AI therefore uses a custom dummy entity I defined.
Also I had to add some margins to the UI, because otherwise the 32x32 sprite of the AI would look bad.
* Update Content.Shared/Roles/JobPrototype.cs
* Update Content.Client/Lobby/LobbyUIController.cs
* Update Resources/Prototypes/Entities/Mobs/Player/silicon.yml
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Organize Sandbox Panel
* Map Editing -> Editing
* Unset ToggleMode on Suicide button. Can hardly un-suicide, no?
* Remove 'Link machines' button that has done nothing for 3 years
* Remember Sandbox window's position instead of forcing to center
* Shows Spawns -> Show Spawns
* Remove SandboxSystem.MachineLinking
Layout would break for machines with >6 lights because the column count was hardcoded. Uncap the UI width and fix the rows count instead.
Lights with less than 4 characters of text weren't aligned right, now they are.
* Cleanup `ScrubberControl.xaml.cs`
* Minor cleanups
* Another pile of minor cleanups
* Apply requested changes
* Rename "which" into "bound". Add whitespace after "if"
* Fix grids and docks being culled from display prematurely
* Fix inconsistent disabling of "Undock" buttons
* Add a radar icon to indicate where the controlling console is
* Tidy up math
Remove lots of sketchy transforms-of-transforms, which should have been
as single matrix multiply. Assign proper names to matrices. Remove some
redundant calculations.
* Feedback
* Borg type switching.
This allows borgs (new spawn or constructed) to select their chassis type on creation, like in SS13. This removes the need for the many different chassis types, and means round-start borgs can actually play the game immediately instead of waiting for science to unlock everything.
New borgs have an additional action that allows them to select their type. This opens a nice window with basic information about the borgs and a select button. Once a type has been selected it is permanent for that borg chassis.
These borg types also immediately start the borg with specific modules, so they do not need to be printed. Additional modules can still be inserted for upgrades, though this is now less critical. The built-in modules cannot be removed, but are shown in the UI.
The modules that each borg type starts with:
* Generic: tools
* Engineering: advanced tools, construction, RCD, cable
* Salvage: Grappling gun, appraisal, mining
* Janitor: cleaning, light replacer
* Medical: treatment
* Service: music, service, clowning
Specialized borgs have 3 additional module slots available on top of the ones listed above, generic borgs have 5.
Borg types are specified in a new BorgTypePrototype. These prototypes specify all information about the borg type. It is assigned to the borg entity through a mix of client side, server, and shared code. Some of the involved components were made networked, others are just ensured they're set on both sides of the wire.
The most gnarly change is the inventory template prototype, which needs to change purely to modify the borg hat offset. I managed to bodge this in with an API that *probably* won't explode for specifically for this use case, but it's still not the most clean of API designs.
Parts for specific borg chassis have been removed (so much deleted YAML) and specialized borg modules that are in the base set of a type have been removed from the exosuit fab as there's no point to printing those.
The ability to "downgrade" a borg so it can select a new chassis, like in SS13, is something that would be nice, but was not high enough priority for me to block the feature on. I did keep it in mind with some of the code, so it may be possible in the future.
There is no fancy animation when selecting borg types like in SS13, because I didn't think it was high priority, and it would add a lot of complex code.
* Fix sandbox failure due to collection expression.
* Module tweak
Fix salvage borg modules still having research/lathe recipes
Engie borg has regular tool module, not advanced.
* Fix inventory system breakage
* Fix migrations
Some things were missing
* Guidebook rewordings & review
* MinWidth on confirm selection button
This should be the primary changes for the future-proof "Modern HWID" system implemented into Robust and the auth server.
HWIDs in the database have been given an additional column representing their version, legacy or modern. This is implemented via an EF Core owned entity. By manually setting the column name of the main value column, we can keep DB compatibility and the migration is just adding some type columns.
This new HWID type has to be plumbed through everywhere, resulting in some breaking changes for the DB layer and such.
New bans and player records are placed with the new modern HWID. Old bans are still checked against legacy HWIDs.
Modern HWIDs are presented with a "V2-" prefix to admins, to allow distinguishing them. This is also integrated into the parsing logic for placing new bans.
There's also some code cleanup to reduce copy pasting around the place from my changes.
Requires latest engine to support ImmutableArray<byte> in NetSerializer.
* cant disguise to thing in a container
* copy cigarette visualiser
* prevent aghost throwing an error
* make disguises die in space
* fuck it rewrite it to not use polymorph
* fix action troll
* oop
* add vebr
* add access to the components
* 2/3
* fix
* relay damage from disguise to user
* fix integrity
* :trollface:
* :trollface:
* m
* kill integrity
* fix a bug
* review
* remove them from component
* relay flash effect to the disguise
* fix icon being weird
* change method since multiple systems cant handle same network event
* :trollface:
* actually network Disguise real
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Make ghost roles collapsible
* Save `BodyVisible` state of each `Collapsible` box
* Make ghost role collapsible only when group has more than 1 role
* Make it a little prettier
* Make only ghost role buttons collapsible
* Apply requested changes
* Typo
* Small cleanup
* Store in list, instead of iterating
* Make unique ids more unique
* Move it out of the cycle
* Make _collapsibleBoxes into dictionary and use key instead of Collapsible boxes names
Added TODO. So after the problem will be fixed in `GhostRolesEui`, it should be mirrored and fixed here too.
* Put TODO in GhostRolesEui. I guess Issue must be made for this
* Use HashSet instead of Dictionary as suggested. Invert the HashSet, so being present means it uncollapsed
I decided to invert HashSet to _uncollapsedStates, because players surely will have more collapsed buttons than opened, so we optimise memory usage a little bit.
* Remove extra space from ghost roles window
* Add buttons stretching. Size 3:1