From 802af538a827e86671354fee314d6c953c045a31 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Wed, 3 Apr 2024 10:33:34 +0300 Subject: [PATCH] Upstream, Yay (#27) * Make BaseMedicalPDA abstract (#26567) * Fix GasMixers/Filters not working (#26568) * Fix GasMixers/Filters not working * OKAY GAS FILTERS TOO --------- Co-authored-by: Plykiya * Industrial Reagent Grinder Hotfix (#26571) fixed * Give stores the ability to check for owner only (#26573) adds a check if the store belongs to the user * Fix round start crash (causing instant restart) (#26579) * Fix round start crash * Make `TryCreateObjective` more error tolerant * Update engine to v217.1.0 (#26588) * Fix initial infected icon hiding (#26585) * Fix Meta evac shuttle name (#26587) * Make timer ignore client predict setting (#26554) * Make timer ignore client predict setting * making tests run --------- Co-authored-by: wrexbe * Make advertise system survive no map inits (#26553) * Make advertise system survive no map inits * Add comment to try prevent future bugs * Update Credits (#26589) Co-authored-by: PJBot * Fix fox spawn on reach (#26584) Co-authored-by: wrexbe * Removes SCAF armor (#26566) * removes scaf armor * replace maint loot spawner spot with basic helmet * Update Patrons.yml (#26578) * Automatic changelog update * Make aghost command work on other players using optional argument (#26546) * Translations * Make aghost command work on other players using optional argument * Reviews * Automatic changelog update * Add new component to Make sound on interact (#26523) * Adds new Component: EmitSoundOnInteractUsing * Missed an import * File-scoping * Replace ID check with Prototype check * Moved component and system to shared. Set prediction to true. * Removed impoper imports and changed namespace of component to reflect changed folder. * Following function naming theme * All this code is basically deltanedas's, but it was a learning experience for me * Update Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs * Update Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Increase syndi duffelbag storage (#26565) * Increase syndi duffelbag storage * weh * Automatic changelog update * Adds construction/decon graphs for plastic flaps (#26341) * Adds construction/decon graphs for plastic flaps * Dang arbitrage * undo conflict --------- Co-authored-by: Velcroboy * Automatic changelog update * Makes secglasses roundstart (#26487) * makes secglasses roundstart * fix epic fail * fix tests questionmark? * Update Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> --------- Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> * Automatic changelog update * Toilet Upgrade (needs review) (#22133) * Toilet Draft * fixes * toilets now have secret stash to place items in cistern. * fixes * plungers now unblock toilets. * fix sprite * new sprites and fix * fixes * improve seat sprites. * fix * removed visualisersystem changed to genericvisualizers * flush sound for toilets and copyright for toilet sprites. * fix atrributions * fixes * fix datafield flushtime * sprite improvements * fixes * multiple changes * fix * fix * fixes remove vv * moved stash related functions to secret stash system from toilet. * fix * fix * changes for recent review. * fix * fix * Automatic changelog update * Uplink store interface searchable with a searchbar. (#24287) * Can now search the uplink store interface with a searchbar. * Search text updates no longer send server messages. Persists listings locally. * Formatting fixes and tidying. * Added helper method to get localised name and description (or otherwise, entity name and description) of store listing items. * Update Content.Client/Store/Ui/StoreMenu.xaml * Review change; moved localisation helper functions to their own class. * Prevent thread-unsafe behaviour as-per review. * Remove dummy boxcontainer --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth * Automatic changelog update * Improved RCDs (#22799) * Initial radial menu prototyping for the RCD * Radial UI buttons can send messages to the server * Beginning to update RCDSystem * RCD building system in progress * Further updates * Added extra effects, RCDSystem now reads RCD prototype data * Replacing tiles is instant, multiple constructions are allowed, deconstruction is broken * Added extra functionality to RadialContainers plus documentation * Fixed localization of RCD UI strings * Menu opens near cursor, added basic RCD * Avoiding merge conflict * Implemented atomized construction / deconstruction rules * Increased RCD ammo base charges * Moved input context definition to content * Removed obsoleted code * Updates to system * Switch machine and computer frames for electrical cabling * Added construction ghosts * Fixed issue with keybind detection code * Fixed RCD construction ghost mispredications * Code clean up * Updated deconstruction effects * RCDs effects don't rotate * Code clean up * Balancing for ammo counts * Code clean up * Added missing localized strings * More clean up * Made directional window handling more robust * Added documentation to radial menus and made them no longer dependent on Content * Made radial containers more robust * Further robustness to the radial menu * The RCD submenu buttons are only shown when the destination layer has at least one children * Expanded upon deconstructing plus construction balance * Fixed line endings * Updated list of RCD deconstructable entities. Now needs a component to deconstruct instead of a tag * Bug fixes * Revert unnecessary change * Updated RCD strings * Fixed bug * More fixes * Deconstructed tiles/subflooring convert to lattice instead * Fixed failed tests (Linux doesn't like invalid spritespecifer paths) * Fixing merge conflict * Updated airlock assembly * Fixing merge conflict * Fixing merge conflict * More fixing... * Removed erroneous project file change * Fixed string handling issue * Trying to fix merge conflict * Still fixing merge conflicts * Balancing * Hidden RCD construction ghosts when in 'build' mode * Fixing merge conflict * Implemented requested changes (Part 1) * Added more requested changes * Fix for failed test. Removed sussy null suppression * Made requested changes - custom construction ghost system was replaced * Fixing merge conflict * Fixed merge conflict * Fixed bug in RCD construction ghost validation * Fixing merge conflict * Merge conflict fixed * Made required update * Removed lingering RCD deconstruct tag * Fixing merge conflict * Merge conflict fixed * Made requested changes * Bug fixes and balancing * Made string names more consistent * Can no longer stack catwalks * Automatic changelog update * Update submodule to 217.2.0 (#26592) * Southern accent (#26543) * created the AccentComponent and the AccentSystem * word replacement schtuhff * made it a trait fr ongg!!1 * Update Content.Server/Speech/EntitySystems/SouthernAccentSystem.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Prevent storing liquids in equipped buckets (#24412) * Block access to solutions in equipped spillables. * Stop Drink verb appearing if the solution can't be accessed. * Automatic changelog update * Fix 'Hypopen shouldn't display solution examine text' (#26453) * stealthy hypo * ExaminableSolution hand check when in covert implement. ExaminableSolution now has 'hidden' datafield to enable chemical inspection only in hand. * cleaning code * more cleaning * Hidden datafield renamed to HeldOnly * review --------- Co-authored-by: metalgearsloth * Automatic changelog update * Revert Paint (#26593) * Revert "Fix build (#26258)" This reverts commit 6de5fbfafbde700d711a566f6a43f05f7a99e455. * Revert "Spray Paint (Review Ready) (#23003)" This reverts commit e4d5e7f1aebfc37b1bc3453fdb39578f3897b6a1. # Conflicts: # Resources/Prototypes/Entities/Structures/Holographic/projections.yml * Fix: Prevent single-use hyposprays from getting the toggle draw verb (#26595) Prevent single-use hyposprays from getting the toggle draw verb Co-authored-by: Plykiya * MeleeHitSoundSystem (#25005) * Began work to unscrew melee noises * finished * cleanup * cleanup * Update Content.Server/Weapons/Melee/MeleeWeaponSystem.cs Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com> * _Style * Fix merge --------- Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com> Co-authored-by: metalgearsloth * Remove physics comp from VendingMachineWallmount (#25632) * Remove physics comp from VendingMachineWallmount * Fixtures removal --------- Co-authored-by: Jeff Co-authored-by: metalgearsloth * Remake hairflowers (#25475) * Add more lily usage (orange hairflower and flowercrown) * comit 2 * ee * more fixes * w * im stupid * bring poppy in authodrobe * weh --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Automatic changelog update * Injector UI shows TransferAmount change, Spilling liquid changes Injector mode (#26596) * Injector UI shows TransferAmount change, spill changes mode * Update Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs * Update Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs --------- Co-authored-by: Plykiya Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Update submodule to 217.2.1 (#26599) * disallow unanchoring or opening panels on locked emitters/APEs (#26600) * disallow unanchoring or opening panels on locked emitters/APEs * no locking open panels * oops * needback feedback * Update Content.Shared/Lock/LockSystem.cs * Update Content.Shared/Lock/LockSystem.cs * Update Content.Shared/Lock/LockSystem.cs * sanity --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth * Automatic changelog update * Fix grave digging sound indefinitely playing if dug by aghost. (#26420) Admins bypass doafters. As such, the code that runs on doafter completion is ran before the sound is actually created. This then leads to the sound never being stopped, and as such it would infinitely play. This commit gets around the issue by manually stopping the sound should the doafter fail to start. If we could be sure that the doafter would never fail, then we could just move the call to StartDigging above starting the doafter but this is currently not possible. Co-authored-by: metalgearsloth * Make the buttons on the map ui not squished (#26604) Make the map ui work Co-authored-by: wrexbe * Combine flower crown and wreath (#26605) * Combine flower crown and wreath * huh * huuh :trollface: * Automatic changelog update * Add AP damage to throwing knives (#26380) * add * ap * no more stam dmg * Automatic changelog update * cancelable brig timers (#26557) brig timers now cancelable. also some screensystem yakshave * Fix orientation of roller skate sprites (#26627) Co-authored-by: Eoin Mcloughlin * Automatic changelog update * Fix GastTileOverlay sending redundant data (#26623) Fix GastTileOverlay not updating properly * Auto DeAdmin sooner (#26551) Co-authored-by: wrexbe * Add briefcase to curadrobe and lawdrobe, and some briefcases cleanup (#26527) * Add briefcase to curadrobe and some briefcases cleanup * also add to lawdrobe * Automatic changelog update * Fix some text overflow bugs in HUD (#26615) * Don't clip text in item status * Fix overflow in examine tooltip --------- Co-authored-by: Eoin Mcloughlin * Adds two milk cartons to the BoozeOMat (#26635) * Automatic changelog update * made the hover text less vague (sorry) (#26630) * blacklisted throwing knifes from pneumatic cannon (#26628) * Fix radio jammer not blocking suit sensors. (#26632) As it turns out, they are not in fact on their own netid. They are actually just on wireless. The way I had tested my previous pr led to this mistake being made. I originally had the radio jammer block wireless as well, but decided to take out under the flase assumption that it suit sensors were actually on their own netid and did not require the ability to block all wireless packets at the last moment. * Fix dirt decals in reach not being cleanable (#26636) made all dirt decals cleanable Co-authored-by: hamurlik * Automatic changelog update * Replace drill_hit.ogg and drill_use.ogg with better sounds (#26622) * Replace drill_hit.ogg and drill_use.ogg with better sounds * Fix attribution source for drill_hit.ogg * Update Resources/Audio/Items/attributions.yml Co-authored-by: Kara * Update Resources/Audio/Items/attributions.yml Co-authored-by: Kara --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Kara * Gave Blast door access permissions (#26606) Added access reader to all blast doors. Added pre configured blast doors for engineering and science. * Gives all wheeled objects low friction (#26601) * gives all wheeled objects friction * adjustments to sum stuff * Automatic changelog update * Combine solution injection systems; Fix embeddable injectors (#26268) * Combine injection systems * Update Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Automatic changelog update * Add ValueList import (#26640) * Change assault borg modules texture (#26502) * Update borg_modules.yml * Fix borg_modules.yml? * Uh --------- Co-authored-by: metalgearsloth * Automatic changelog update * Add Cyborg Emote Sounds (#26594) * Hal 9000's first emote * Add Chime emote & Change variation to 0.05 * Modify Buzz emote * Add Buzz-two emote * modified Horn * add ping emote * add slowclap emote * Convert slowclap.ogg to mono, reflect change in attribution.yml * fix capitalization for all chatMessages && change all catagory to category * remove all traces of slowclap.ogg * forgor one file smh * collating copywrite * spelling mistakes will be the death of me * more spelling mistakes * change yml string to list * Automatic changelog update * Coordinates Disks & Shuttle FTL Travel (#23240) * Adds the CentComm Disk and configures it to work with direct-use shuttles * Added functionality for drone shuttles (i.e. cargo shuttle) * Adds support for pods, and a disk console object for disks to be inserted into. Also sprites. * Added the disk to HoP's locker * Removed leftover logs & comments * Fix for integration test * Apply suggestions from code review (formatting & proper DataField) Co-authored-by: 0x6273 <0x40@keemail.me> * Fix integration test & changes based on code review * Includes Disk Cases to contain Coordinate Disks, which are now CDs instead of Floppy Disks * Check pods & non-evac shuttles for CentCom travel, even in FTL * Import * Remove CentCom travel restrictions & pod disk consoles * Major changes that changes the coordinates disk system to work with salvage expeditions * Missed CC diskcase removal * Fix build * Review suggestions and changes * Major additional changes after merge * Minor tag miss * Integration test fix * review --------- Co-authored-by: 0x6273 <0x40@keemail.me> Co-authored-by: metalgearsloth * Automatic changelog update * Add door electronics access configuration menu (#17778) * Add door electronics configuration menu * Use file-scoped namespaces Signed-off-by: c4llv07e * Open door electronics configuration menu only with network configurator Signed-off-by: c4llv07e * Doors will now try to move their AccessReaderComponent to their door electronics when the map is initialized Signed-off-by: c4llv07e * Make the access list in the id card computer a separate control Signed-off-by: c4llv07e * Fix merge conflict Signed-off-by: c4llv07e * Remove DoorElectronics tag Signed-off-by: c4llv07e * Integrate doors with #17927 Signed-off-by: c4llv07e * Move door electornics ui stuff to the right place Signed-off-by: c4llv07e * Some review fixes Signed-off-by: c4llv07e * More fixes Signed-off-by: c4llv07e * review fix Signed-off-by: c4llv07e * move all accesses from airlock prototypes to door electronics Signed-off-by: c4llv07e * rework door electronics config access list Signed-off-by: c4llv07e * Remove Linq from the door electronics user interface * [WIP] Add EntityWhitelist to the activatable ui component Signed-off-by: c4llv07e * Better interaction system Signed-off-by: c4llv07e * Refactor Signed-off-by: c4llv07e * Fix some door electronics not working without AccessReaderComponent Signed-off-by: c4llv07e * Move AccessReaderComponent update code to the AccessReaderSystem Signed-off-by: c4llv07e * Remove unnecesary newlines in the door access prototypes Signed-off-by: c4llv07e * Remove unused variables in access level control Signed-off-by: c4llv07e * Remove unnecessary method from the door electronics configuration menu Signed-off-by: c4llv07e * [WIP] change access type from string to ProtoId Signed-off-by: c4llv07e * Remove unused methods Signed-off-by: c4llv07e * Newline fix Signed-off-by: c4llv07e * Restored to a functional state Signed-off-by: c4llv07e * Fix access configurator not working with door electronics AccessReaderComponent Signed-off-by: c4llv07e * Replace all string access fields with ProtoId Signed-off-by: c4llv07e * move access level control initialization into Populate method Signed-off-by: c4llv07e * Review --------- Signed-off-by: c4llv07e Co-authored-by: metalgearsloth * Automatic changelog update * scoopable ash and foam, solution transfer prediction (#25832) * move SolutionTransfer to shared and predict as much as possible * fully move OpenableSystem to shared now that SolutionTransfer is * fix imports for everything * doc for solution transfer system * trolling * add scoopable system * make ash and foam scoopable * untroll * untroll real * make clickable it work * troll * the scooping room --------- Co-authored-by: deltanedas <@deltanedas:kde.org> Co-authored-by: metalgearsloth * Replace the teleportation logic on the SCRAM implant! (#26429) * Replace the teleportation logic on the SCRAM implant! Now instead of just trying to pick a random tile in range 20 times, the scram teleportation logic now: - Gets a list of grids in range - Until a suitable tile is picked it picks a random grid - From that grid it picks a random tile. - If the tile is suitable, then it is set as the target and the user will be teleported there. - Grids and tiles are randomly picked as outlined above until a valid tile is found, or all valid grids and tiles are exhausted. - Should no suitable tile be found then they get teleported to the same position they are at. Effectively not teleporting them. * Actually make the defaults sane which I forgor in the last commit * Extract tile section to its own function. Bias selection for current grid. Use proper coords for box. * Address reviews as much as possible * Address reviews * Refactored AdvertiseComponent (#26598) * Made it better * ok * alright --------- Co-authored-by: wrexbe * Bartender "Essentials" (#25367) * drinks round 1 saving my progress before my hard drive explodes * test 2 please work * name fixes whoops * Update drinks.yml * various fixes am dumb * add sol dry to vends more fixes and changes, yippee! * more fixes & ingame testing shrimple tests * last fixes :trollface: should be ready for pr now * Update soda.yml sate thirst * Automatic changelog update * Add ERT Chaplain (#25956) * ERT Chaplain * Make BibleUser * It was not intended * reword my poor words * 1984 a comment that I decided was unnecessary. * Update Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Changes in chemicals page in guidebook (#25831) * Added pages to chemical categories The chemical categories have their own page now. Added the "Chemical Tabs" in /ServerInfo/Guidebook. Moved the Chemicals code from shiftsandjobs.yml to its own .yml file which is "chemicals.yml". * Update guides.ftl * Update chemicals.yml Changed the guide entry's ID for the medical tab from Medicine to Medicinal. Hope this works... * Update Resources/ServerInfo/Guidebook/Chemical Tabs/Biological.xml Co-authored-by: exincore * Update Resources/ServerInfo/Guidebook/Chemical Tabs/Foods.xml Co-authored-by: exincore * Update Resources/ServerInfo/Guidebook/Chemical Tabs/Elements.xml Co-authored-by: exincore * Update Resources/ServerInfo/Guidebook/Chemical Tabs/Narcotics.xml Co-authored-by: exincore * Update Resources/ServerInfo/Guidebook/Chemical Tabs/Toxins.xml Co-authored-by: exincore * Fixed a few errors and stuff! A few typos have been fixed thanks to exincore. Added dedicated .xml files to be used for the dedicated category pages (Medicinal and Botanical pages). Made it so it doesn't use any duplicated IDs anymore. If there's more problems, please do tell so I can fix it! * Update settings.json * Fix? --------- Co-authored-by: exincore * Automatic changelog update * Anomalies behaviours (#24683) * Added new anomaly particle * Add basic anomaly behaviour * +2 parametres * add functional to new particle * add components to behaviours * big content * add shuffle, moved thing to server * clean up * fixes * random pick redo * bonjour behavioUr * fix AJCM * fix * add some new behaviours * power modifier behaviour * rmeove timer * new event for update ui fix * refactor! * fixes * enum * Fix mapinit * Minor touches --------- Co-authored-by: metalgearsloth * Automatic changelog update * Fix clipping/overlap in lathe machine UIs (#26646) * Add scrollbars to lathe material list when necessary * Fix bug where shrinking window would cause elements to overlap --------- Co-authored-by: Eoin Mcloughlin * Added chat window transparency slider to options (#24990) * Adds a new slider to the misc tab in options that lets the player set chat window transparency * Tweaked variable names * Fixed order to match UI * Renamed set chat window transparency function * Changed and refactored to opacity instead of transparency * Remove unnecessary int to float conversions Slider used to be 0-100 while the CCVar was 0.0-1.0f. This is confusing and was only used for rounding to 2 decimal points. * Round the value to two decimal points * Remove rounding for now * Rename * Unhardcode chat color by moving to stylesheet * Fix indent * Make opacity slider only change opacity --------- Co-authored-by: Your Name Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> * Automatic changelog update * Infinity books (#25840) * setup text data * roundstart reshuffling keywords with gibberish words * saved data categorized * add book with hints * start redrawing books * +4 book design * +books +random visual upgrade * finish first file * finish lore file * finish with books.rsi now authorbooks.rsi... * aurora! and some fix * nuke author books * speelbuke update * finish respriting work * fix scientist guide visual * setup datasets * setup stupid funny random story * restore author books, upgrade hint generation * add variety to story generator * add learning system * minor textgen edit * file restruct, hint count variation * more restruct * more renaming add basis learning system logic. Spears locked for special book for test. * nuke all systems, for splitting PR gods * typo fix * update migration with deleted books * add random story books to maint * Update construction-system.ftl * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> * typo fix * interchangeably * final * Update Resources/Prototypes/Datasets/Names/books.yml Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com> * "." * Update Content.Server/Paper/PaperRandomStorySystem.cs Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com> * Ubazer fix * inadequate * localized * Update meta.json * fuck merge conflicts * fix jani book --------- Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com> * Automatic changelog update * Resprite ambuzol plus pills (#26651) * Automatic changelog update * Fixed air injector visuals (#26654) * Make cyborgs hands explosion proof. (#26515) * Make the advanced treatment modules beakers explosion-proof. * undo changes * Epic rename fail * Explosion recursion data field * Logic for data field * Automatic changelog update * Automatic changelog update * Make typing indicator shaded (#26678) * Automatic changelog update * Validate wire layout prototypes and remove invalid WiresComponents (#26682) Validate wire layout prototypes; delete invalid wirescomponents. * Increase time inbetween anomaly pulses (#26677) nerf anomaly pulse delays * Automatic changelog update * Fix for items dropped being rotated to world north (#26662) * Fix rotation of dropped items * combined world position rotation function for dumpable * scuffed implementation? * less scuffed? * even less scuffed... I guess * capital D --------- Co-authored-by: Plykiya * Automatic changelog update * fix typo --------- Signed-off-by: c4llv07e Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com> Co-authored-by: Plykiya <58439124+Plykiya@users.noreply.github.com> Co-authored-by: Plykiya Co-authored-by: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Co-authored-by: keronshb <54602815+keronshb@users.noreply.github.com> Co-authored-by: Wrexbe (Josh) <81056464+wrexbe@users.noreply.github.com> Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Co-authored-by: wrexbe Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: PJBot Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com> Co-authored-by: DrSmugleaf Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com> Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com> Co-authored-by: Velcroboy Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Co-authored-by: brainfood1183 <113240905+brainfood1183@users.noreply.github.com> Co-authored-by: J. Brown Co-authored-by: metalgearsloth Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Co-authored-by: UBlueberry <161545003+UBlueberry@users.noreply.github.com> Co-authored-by: Tayrtahn Co-authored-by: drteaspoon420 <87363733+drteaspoon420@users.noreply.github.com> Co-authored-by: Bixkitts <72874643+Bixkitts@users.noreply.github.com> Co-authored-by: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com> Co-authored-by: Ubaser <134914314+UbaserB@users.noreply.github.com> Co-authored-by: avery <51971268+graevy@users.noreply.github.com> Co-authored-by: eoineoineoin Co-authored-by: Eoin Mcloughlin Co-authored-by: RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com> Co-authored-by: Zealith-Gamer <61980908+Zealith-Gamer@users.noreply.github.com> Co-authored-by: hamurlik <75280571+hamurlik@users.noreply.github.com> Co-authored-by: hamurlik Co-authored-by: no <165581243+pissdemon@users.noreply.github.com> Co-authored-by: Kara Co-authored-by: SoulFN <164462467+SoulFN@users.noreply.github.com> Co-authored-by: Keer-Sar <144283718+Keer-Sar@users.noreply.github.com> Co-authored-by: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Co-authored-by: 0x6273 <0x40@keemail.me> Co-authored-by: c4llv07e <38111072+c4llv07e@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: Firewatch <54725557+musicmanvr@users.noreply.github.com> Co-authored-by: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Co-authored-by: f0x-n3rd <150924715+f0x-n3rd@users.noreply.github.com> Co-authored-by: exincore Co-authored-by: Sk1tch Co-authored-by: Your Name Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com> Co-authored-by: osjarw <62134478+osjarw@users.noreply.github.com> --- .../Access/UI/AccessLevelControl.xaml | 4 + .../Access/UI/AccessLevelControl.xaml.cs | 52 ++ .../UI/AccessOverriderBoundUserInterface.cs | 2 +- .../Access/UI/AccessOverriderWindow.xaml.cs | 17 +- .../UI/IdCardConsoleBoundUserInterface.cs | 4 +- .../Access/UI/IdCardConsoleWindow.xaml | 6 +- .../Access/UI/IdCardConsoleWindow.xaml.cs | 51 +- .../Anomaly/Ui/AnomalyScannerMenu.xaml | 6 +- .../Chemistry/UI/InjectorStatusControl.cs | 3 + .../Disposal/Systems/DisposalUnitSystem.cs | 24 +- .../DoorElectronicsBoundUserInterface.cs | 59 ++ .../DoorElectronicsConfigurationMenu.xaml | 6 + .../DoorElectronicsConfigurationMenu.xaml.cs | 41 + Content.Client/Examine/ExamineSystem.cs | 27 +- Content.Client/Input/ContentContexts.cs | 3 + Content.Client/Lathe/UI/LatheMenu.xaml | 4 +- .../Materials/UI/MaterialStorageControl.xaml | 9 +- .../UI/MaterialStorageControl.xaml.cs | 8 +- .../Nutrition/EntitySystems/OpenableSystem.cs | 7 - Content.Client/Options/UI/Tabs/MiscTab.xaml | 11 +- .../Options/UI/Tabs/MiscTab.xaml.cs | 12 + Content.Client/Paint/PaintVisualizerSystem.cs | 116 --- Content.Client/Pinpointer/UI/NavMapControl.cs | 13 +- Content.Client/Popups/PopupSystem.cs | 7 +- Content.Client/RCD/AlignRCDConstruction.cs | 122 +++ .../RCD/RCDConstructionGhostSystem.cs | 78 ++ Content.Client/RCD/RCDMenu.xaml | 47 ++ Content.Client/RCD/RCDMenu.xaml.cs | 137 ++++ .../RCD/RCDMenuBoundUserInterface.cs | 49 ++ Content.Client/Shuttles/UI/MapScreen.xaml.cs | 12 +- .../Store/Ui/StoreBoundUserInterface.cs | 40 +- Content.Client/Store/Ui/StoreMenu.xaml | 3 +- Content.Client/Store/Ui/StoreMenu.xaml.cs | 25 +- Content.Client/Stylesheets/StyleNano.cs | 76 +- Content.Client/TextScreen/TextScreenSystem.cs | 16 +- Content.Client/Toilet/ToiletVisualsSystem.cs | 25 - .../UserInterface/Controls/RadialContainer.cs | 105 +++ .../UserInterface/Controls/RadialMenu.cs | 255 +++++++ .../Systems/Chat/ChatUIController.cs | 43 +- .../{ChatInputBox.cs => ChatInputBox.xaml.cs} | 4 +- .../Systems/Chat/Widgets/ChatBox.xaml | 7 +- .../Inventory/Controls/ItemStatusPanel.xaml | 4 +- Content.Client/Zombies/ZombieSystem.cs | 2 +- .../Tests/Access/AccessReaderTest.cs | 60 +- .../Access/Systems/AccessOverriderSystem.cs | 42 +- .../Access/Systems/IdCardConsoleSystem.cs | 17 +- .../Administration/Commands/AGhost.cs | 172 +++-- .../Systems/AdminVerbSystem.Tools.cs | 5 +- .../Components/AdvertiseComponent.cs | 6 - .../EntitySystems/AdvertiseSystem.cs | 112 +-- .../Anomaly/AnomalySystem.Scanner.cs | 106 ++- Content.Server/Anomaly/AnomalySystem.cs | 115 ++- .../Components/AnomalousParticleComponent.cs | 24 +- .../Components/SecretDataAnomalyComponent.cs | 45 ++ .../ShuffleParticlesAnomalyComponent.cs | 28 + .../Anomaly/Effects/BluespaceAnomalySystem.cs | 6 +- .../Effects/ElectricityAnomalySystem.cs | 4 +- .../Anomaly/Effects/EntityAnomalySystem.cs | 14 +- .../Anomaly/Effects/InjectionAnomalySystem.cs | 4 +- .../Effects/ProjectileAnomalySystem.cs | 4 +- .../Effects/PuddleCreateAnomalySystem.cs | 3 +- .../Effects/PyroclasticAnomalySystem.cs | 6 +- .../Effects/SecretDataAnomalySystem.cs | 40 + .../Effects/ShuffleParticlesAnomalySystem.cs | 41 + .../Anomaly/Effects/TileAnomalySystem.cs | 14 +- .../EntitySystems/GasTileOverlaySystem.cs | 10 +- .../Trinary/EntitySystems/GasFilterSystem.cs | 2 +- .../BaseSolutionInjectOnEventComponent.cs | 60 ++ .../MeleeChemicalInjectorComponent.cs | 37 +- .../SolutionInjectOnCollideComponent.cs | 28 - .../SolutionInjectOnEmbedComponent.cs | 8 + .../SolutionInjectOnProjectileHitComponent.cs | 8 + .../EntitySystems/ReagentDispenserSystem.cs | 3 +- .../SolutionInjectOnCollideSystem.cs | 49 -- .../SolutionInjectOnEventSystem.cs | 148 ++++ .../EntitySystems/SolutionTransferSystem.cs | 234 ------ .../Conditions/ToiletLidClosed.cs | 39 - .../Thresholds/Behaviors/OpenBehavior.cs | 2 +- .../Components/SignalTimerComponent.cs | 6 + .../Systems/SignalTimerSystem.cs | 23 +- .../Unit/EntitySystems/DisposalUnitSystem.cs | 7 +- .../Systems/DoorElectronicsSystem.cs | 69 ++ .../Extinguisher/FireExtinguisherSystem.cs | 1 + .../EntitySystems/PuddleSystem.Spillable.cs | 15 +- .../GameTicking/GameTicker.RoundFlow.cs | 35 +- .../GameTicking/GameTicker.Spawning.cs | 4 - .../GameTicking/Rules/NukeopsRuleSystem.cs | 4 - Content.Server/Glue/GlueSystem.cs | 2 +- Content.Server/Hands/Systems/HandsSystem.cs | 3 + .../Components/ScramImplantComponent.cs | 6 - .../Implants/SubdermalImplantSystem.cs | 120 ++- Content.Server/Lube/LubeSystem.cs | 2 +- .../Materials/MaterialReclaimerSystem.cs | 4 +- .../NPC/Systems/NPCUtilitySystem.cs | 1 + .../EntitySystems/NodeContainerSystem.cs | 2 +- .../Nutrition/EntitySystems/DrinkSystem.cs | 5 + .../Nutrition/EntitySystems/FoodSystem.cs | 1 + .../Nutrition/EntitySystems/OpenableSystem.cs | 27 - Content.Server/Paint/PaintSystem.cs | 178 ----- .../Paper/PaperRandomStoryComponent.cs | 14 + .../Paper/PaperRandomStorySystem.cs | 29 + Content.Server/Popups/PopupSystem.cs | 2 +- .../Radio/EntitySystems/JammerSystem.cs | 12 +- .../RandomMetadata/RandomMetadataSystem.cs | 6 +- .../Resist/EscapeInventorySystem.cs | 2 +- .../SalvageSystem.ExpeditionConsole.cs | 13 +- .../Salvage/SalvageSystem.Expeditions.cs | 5 +- Content.Server/Salvage/SalvageSystem.cs | 3 + .../Salvage/SpawnSalvageMissionJob.cs | 26 +- Content.Server/Sandbox/SandboxSystem.cs | 3 +- .../Screens/Systems/ScreenSystem.cs | 1 + .../Shuttles/Components/EscapePodComponent.cs | 2 +- .../Components/ShuttleConsoleComponent.cs | 6 + .../Systems/EmergencyShuttleSystem.cs | 2 +- .../Systems/ShuttleConsoleSystem.FTL.cs | 6 +- .../Components/SouthernAccentComponent.cs | 8 + .../EntitySystems/SouthernAccentSystem.cs | 28 + .../Components/SecretStashComponent.cs | 39 - .../EntitySystems/BluespaceLockerSystem.cs | 4 +- .../EntitySystems/SpawnItemsOnUseSystem.cs | 6 +- .../Store/Components/StoreComponent.cs | 7 + .../Store/Systems/StoreSystem.Ui.cs | 4 +- Content.Server/Store/Systems/StoreSystem.cs | 17 + Content.Server/Toilet/ToiletSystem.cs | 197 +---- .../UserInterface/ActivatableUIComponent.cs | 13 +- .../UserInterface/ActivatableUISystem.cs | 11 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 60 +- .../Weapons/Ranged/Systems/GunSystem.cs | 2 +- Content.Server/Wires/WiresComponent.cs | 3 +- Content.Shared/Access/AccessGroupPrototype.cs | 4 +- Content.Shared/Access/AccessLevelPrototype.cs | 8 + .../Access/Components/AccessComponent.cs | 12 +- .../Components/AccessOverriderComponent.cs | 16 +- .../Components/AccessReaderComponent.cs | 20 +- .../Components/IdCardConsoleComponent.cs | 20 +- .../Access/Systems/AccessReaderSystem.cs | 51 +- .../Access/Systems/SharedAccessSystem.cs | 6 +- .../Systems/SharedIdCardConsoleSystem.cs | 14 + .../Anomaly/Components/AnomalyComponent.cs | 48 +- .../Effects/SharedGravityAnomalySystem.cs | 10 +- .../Prototypes/AnomalyBehaviorPrototype.cs | 45 ++ Content.Shared/Anomaly/SharedAnomaly.cs | 1 + Content.Shared/Anomaly/SharedAnomalySystem.cs | 49 +- .../Buckle/Components/StrapComponent.cs | 11 +- .../Buckle/SharedBuckleSystem.Buckle.cs | 4 +- Content.Shared/Burial/BurialSystem.cs | 18 +- Content.Shared/CCVar/CCVars.cs | 7 + .../Charges/Systems/SharedChargesSystem.cs | 22 + .../TypingIndicatorPrototype.cs | 2 +- .../BlockSolutionAccessComponent.cs | 11 + .../Components/HyposprayComponent.cs | 7 + .../Components/ScoopableSolutionComponent.cs | 31 + .../ExaminableSolutionComponent.cs | 6 + .../EntitySystems/ScoopableSolutionSystem.cs | 53 ++ .../EntitySystems/SharedHypospraySystem.cs | 2 +- .../SharedSolutionContainerSystem.cs | 35 + .../EntitySystems/SolutionTransferSystem.cs | 223 ++++++ .../Components/ComputerBoardComponent.cs | 4 +- .../Components/SharedDisposalUnitComponent.cs | 50 +- .../Disposal/SharedDisposalUnitSystem.cs | 19 +- .../Electronics/DoorElectronicsComponent.cs | 42 ++ .../Fluids/SharedPuddleSystem.Spillable.cs | 9 +- .../Hands/Components/HandsComponent.cs | 6 + .../EntitySystems/SharedHandsSystem.Drop.cs | 4 +- Content.Shared/Lock/LockSystem.cs | 71 +- .../Lock/LockedAnchorableComponent.cs | 13 + .../Lock/LockedWiresPanelComponent.cs | 13 + .../Nutrition/Components/OpenableComponent.cs | 2 +- ...redOpenableSystem.cs => OpenableSystem.cs} | 13 +- .../Nutrition/EntitySystems/SealableSystem.cs | 2 +- .../Systems/SharedObjectivesSystem.cs | 5 + Content.Shared/Paint/PaintComponent.cs | 60 -- Content.Shared/Paint/PaintDoAfterEvent.cs | 9 - Content.Shared/Paint/PaintRemoverComponent.cs | 24 - .../Paint/PaintRemoverDoAfterEvent.cs | 9 - Content.Shared/Paint/PaintRemoverSystem.cs | 94 --- Content.Shared/Paint/PaintedComponent.cs | 41 - Content.Shared/Paint/SharedPaintSystem.cs | 11 - .../Plants}/PottedPlantHideComponent.cs | 5 +- .../Plants}/PottedPlantHideSystem.cs | 13 +- .../Plunger/Components/PlungerComponent.cs | 18 + .../Plunger/Components/PlungerUseComponent.cs | 42 ++ Content.Shared/Plunger/PlungerDoAfterEvent.cs | 10 + .../Plunger/Systems/PlungerSystem.cs | 79 ++ Content.Shared/Popups/SharedPopupSystem.cs | 2 +- .../RCD/Components/RCDAmmoComponent.cs | 4 +- Content.Shared/RCD/Components/RCDComponent.cs | 75 +- .../Components/RCDDeconstructibleComponent.cs | 34 + Content.Shared/RCD/RCDEvents.cs | 34 + Content.Shared/RCD/RCDPrototype.cs | 144 ++++ Content.Shared/RCD/Systems/RCDSystem.cs | 708 +++++++++++++----- Content.Shared/Random/RulesPrototype.cs | 4 +- Content.Shared/Roles/JobPrototype.cs | 16 +- .../Salvage/Expeditions/SalvageExpeditions.cs | 7 +- .../Components/FTLDestinationComponent.cs | 6 + .../SharedShuttleConsoleComponent.cs | 2 +- .../ShuttleDestinationCoordinatesComponent.cs | 15 + .../Shuttles/Systems/SharedShuttleSystem.cs | 42 +- .../EmitSoundOnInteractUsingComponent.cs | 15 + Content.Shared/Sound/SharedEmitSoundSystem.cs | 8 + .../SprayPainter/SharedSprayPainterSystem.cs | 3 - .../Components/SecretStashComponent.cs | 90 +++ .../Storage/EntitySystems/DumpableSystem.cs | 4 +- .../EntitySystems/SecretStashSystem.cs | 107 ++- .../Store/ListingLocalisationHelpers.cs | 42 ++ .../Toilet/Components/ToiletComponent.cs | 40 + .../Toilet/Systems/SharedToiletSystem.cs | 109 +++ Content.Shared/Toilet/ToiletComponent.cs | 32 - Content.Shared/Toilet/ToiletVisuals.cs | 10 - .../Weapons/Melee/MeleeSoundSystem.cs | 108 +++ .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 117 +-- Content.Shared/Wires/SharedWiresSystem.cs | 24 +- Content.Shared/Wires/WiresPanelComponent.cs | 6 + .../Audio/Effects/Fluids/attributions.yml | 10 + Resources/Audio/Effects/Fluids/flush.ogg | Bin 0 -> 132202 bytes Resources/Audio/Effects/Fluids/splash.ogg | Bin 0 -> 44679 bytes Resources/Audio/Items/attributions.yml | 10 + Resources/Audio/Items/drill_hit.ogg | Bin 40866 -> 40108 bytes Resources/Audio/Items/drill_use.ogg | Bin 45403 -> 54931 bytes Resources/Audio/Machines/attributions.yml | 9 + Resources/Audio/Machines/buzz-sigh.ogg | Bin 0 -> 8972 bytes Resources/Audio/Machines/buzz-two.ogg | Bin 0 -> 12724 bytes Resources/Audio/Machines/chime.ogg | Bin 0 -> 8240 bytes Resources/Audio/Machines/twobeep.ogg | Bin 0 -> 6851 bytes Resources/Audio/Weapons/glug.ogg | Bin 0 -> 27517 bytes Resources/Changelog/Admin.yml | 8 + Resources/Changelog/Changelog.yml | 538 ++++++------- Resources/Credits/GitHub.txt | 2 +- Resources/Credits/Patrons.yml | 36 +- Resources/Locale/en-US/accent/southern.ftl | 17 + .../en-US/administration/commands/aghost.ftl | 3 + Resources/Locale/en-US/anomaly/anomaly.ftl | 29 + .../components/scoopable-component.ftl | 1 + .../en-US/escape-menu/ui/options-menu.ftl | 2 + .../Locale/en-US/flavors/flavor-profiles.ftl | 7 + .../ghost/roles/ghost-role-component.ftl | 3 + Resources/Locale/en-US/guidebook/guides.ftl | 8 + .../Locale/en-US/job/job-description.ftl | 1 + Resources/Locale/en-US/job/job-names.ftl | 2 + .../Locale/en-US/lock/lock-component.ftl | 3 +- .../en-US/machine-linking/receiver_ports.ftl | 3 + Resources/Locale/en-US/paint/paint.ftl | 8 - .../Locale/en-US/paper/story-generation.ftl | 244 ++++++ .../en-US/rcd/components/rcd-component.ftl | 68 +- .../meta/consumable/drink/alcohol.ftl | 15 + .../reagents/meta/consumable/drink/drinks.ftl | 13 +- .../reagents/meta/consumable/drink/soda.ftl | 9 + Resources/Locale/en-US/shell.ftl | 1 + .../components/secret-stash-component.ftl | 1 + Resources/Locale/en-US/store/store.ftl | 2 + .../Locale/en-US/toilet/toilet-component.ftl | 2 + Resources/Locale/en-US/traits/traits.ftl | 3 + Resources/Locale/en-US/ui/general.ftl | 3 + Resources/Maps/Shuttles/emergency_meta.yml | 2 +- Resources/Maps/reach.yml | 9 +- .../Prototypes/Accents/word_replacements.yml | 9 + Resources/Prototypes/Anomaly/behaviours.yml | 208 +++++ .../Prototypes/Catalog/Cargo/cargo_fun.yml | 10 - .../Catalog/Cargo/cargo_service.yml | 4 +- .../Fills/Backpacks/StarterGear/backpack.yml | 21 + .../Catalog/Fills/Books/bookshelf.yml | 158 ++-- .../Prototypes/Catalog/Fills/Books/lore.yml | 122 --- .../Catalog/Fills/Crates/engineering.yml | 6 +- .../Prototypes/Catalog/Fills/Crates/fun.yml | 48 +- .../Catalog/Fills/Items/briefcases.yml | 6 +- .../Catalog/Fills/Lockers/heads.yml | 6 +- .../Prototypes/Catalog/Fills/Lockers/misc.yml | 6 +- .../Catalog/Fills/Lockers/security.yml | 13 +- .../Catalog/ReagentDispensers/beverage.yml | 2 +- .../VendingMachines/Inventories/boozeomat.yml | 3 + .../VendingMachines/Inventories/cola.yml | 1 + .../VendingMachines/Inventories/curadrobe.yml | 3 +- .../VendingMachines/Inventories/gib.yml | 1 + .../VendingMachines/Inventories/lawdrobe.yml | 1 + .../VendingMachines/Inventories/pwrgame.yml | 1 + .../Inventories/shamblersjuice.yml | 1 + .../VendingMachines/Inventories/soda.yml | 1 + .../VendingMachines/Inventories/spaceup.yml | 1 + .../VendingMachines/Inventories/starkist.yml | 1 + .../VendingMachines/Inventories/theater.yml | 2 +- .../Prototypes/Datasets/story_generation.yml | 266 +++++++ .../Prototypes/DeviceLinking/sink_ports.yml | 5 + .../Entities/Clothing/Back/backpacks.yml | 9 + .../Entities/Clothing/Back/duffel.yml | 3 + .../Entities/Clothing/Eyes/glasses.yml | 8 + .../Clothing/Head/hardsuit-helmets.yml | 15 + .../Entities/Clothing/Head/helmets.yml | 23 - .../Entities/Clothing/Head/misc.yml | 31 +- .../Entities/Clothing/Neck/misc.yml | 14 - .../Entities/Clothing/OuterClothing/armor.yml | 26 - .../Clothing/OuterClothing/hardsuits.yml | 14 + .../Entities/Clothing/Uniforms/jumpsuits.yml | 11 + .../Entities/Effects/chemistry_effects.yml | 10 +- Resources/Prototypes/Entities/Effects/rcd.yml | 107 ++- .../Random/Food_Drinks/drinks_glass.yml | 8 + .../Random/Food_Drinks/drinks_soda.yml | 1 + .../Markers/Spawners/Random/crates.yml | 1 - .../Markers/Spawners/Random/maintenance.yml | 7 +- .../Entities/Markers/Spawners/jobs.yml | 12 + .../Entities/Markers/construction_ghost.yml | 2 +- .../Mobs/Cyborgs/base_borg_chassis.yml | 9 +- .../Prototypes/Entities/Mobs/NPCs/carp.yml | 1 - .../Entities/Mobs/NPCs/revenant.yml | 3 - .../Entities/Mobs/Player/guardian.yml | 2 - .../Entities/Mobs/Player/humanoid.yml | 60 ++ .../Consumable/Drinks/drinks-cartons.yml | 18 + .../Objects/Consumable/Drinks/drinks.yml | 157 ++++ .../Consumable/Drinks/drinks_bottles.yml | 17 + .../Objects/Consumable/Drinks/drinks_cans.yml | 18 + .../Objects/Consumable/Food/produce.yml | 4 + .../Entities/Objects/Decoration/present.yml | 4 +- .../Objects/Devices/Electronics/door.yml | 12 +- .../Devices/Electronics/door_access.yml | 264 +++++++ .../Entities/Objects/Devices/cartridges.yml | 2 +- .../Entities/Objects/Devices/pda.yml | 1 + .../Instruments/instruments_structures.yml | 3 - .../Prototypes/Entities/Objects/Fun/darts.yml | 9 +- .../Entities/Objects/Fun/spray_paint.yml | 292 -------- .../Entities/Objects/Magic/books.yml | 96 ++- .../Objects/Materials/Sheets/glass.yml | 1 - .../Objects/Materials/Sheets/metal.yml | 1 - .../Objects/Materials/Sheets/other.yml | 3 - .../Entities/Objects/Materials/materials.yml | 1 - .../Entities/Objects/Misc/books.yml | 329 +++++--- .../{authorbooks.yml => books_author.yml} | 374 +++++++-- .../Entities/Objects/Misc/briefcases.yml | 23 +- .../Prototypes/Entities/Objects/Misc/cds.yml | 19 + .../Entities/Objects/Misc/diskcases.yml | 21 + .../Entities/Objects/Misc/tiles.yml | 3 - .../Objects/Specific/Janitorial/janitor.yml | 411 +--------- .../Objects/Specific/Janitorial/soap.yml | 1 - .../Entities/Objects/Specific/Mech/mechs.yml | 3 - .../Objects/Specific/Medical/healing.yml | 4 + .../Objects/Specific/Medical/hypospray.yml | 9 + .../Objects/Specific/Medical/morgue.yml | 2 + .../Specific/Robotics/borg_modules.yml | 26 +- .../Entities/Objects/Tools/tools.yml | 71 +- .../Guns/Ammunition/Projectiles/shotgun.yml | 8 +- .../Weapons/Guns/Battery/battery_guns.yml | 5 + .../Weapons/Guns/Projectiles/arrows.yml | 4 +- .../Weapons/Guns/Projectiles/projectiles.yml | 50 ++ .../Objects/Weapons/Melee/e_sword.yml | 4 - .../Entities/Objects/Weapons/Melee/knife.yml | 2 + .../Entities/Objects/Weapons/Melee/spear.yml | 5 +- .../Prototypes/Entities/Stations/base.yml | 2 +- .../Structures/Decoration/bonfire.yml | 3 - .../Dispensers/base_structuredispensers.yml | 1 - .../Entities/Structures/Dispensers/booze.yml | 3 - .../Entities/Structures/Dispensers/chem.yml | 3 - .../Entities/Structures/Dispensers/soda.yml | 3 - .../Structures/Doors/Airlocks/access.yml | 642 +++++++--------- .../Structures/Doors/Airlocks/airlocks.yml | 44 +- .../Doors/Airlocks/base_assembly.yml | 4 + .../Doors/Airlocks/base_structureairlocks.yml | 57 +- .../Structures/Doors/Airlocks/external.yml | 2 +- .../Structures/Doors/Airlocks/highsec.yml | 1 + .../Structures/Doors/Airlocks/shuttle.yml | 2 +- .../Structures/Doors/Firelocks/firelock.yml | 7 +- .../Structures/Doors/Firelocks/frame.yml | 4 + .../Doors/MaterialDoors/material_doors.yml | 4 + .../Doors/SecretDoor/secret_door.yml | 8 + .../Structures/Doors/Shutter/blast_door.yml | 1 + .../Doors/Shutter/blast_door_autolink.yml | 44 ++ .../Structures/Doors/Windoors/assembly.yml | 4 + .../Doors/Windoors/base_structurewindoors.yml | 6 +- .../Entities/Structures/Furniture/toilet.yml | 100 ++- .../Structures/Holographic/projections.yml | 3 - .../Structures/Lighting/base_lighting.yml | 6 +- .../Machines/Computers/computers.yml | 16 + .../Machines/Medical/chemistry_machines.yml | 2 - .../Structures/Machines/anomaly_equipment.yml | 15 +- .../Structures/Machines/artifact_analyzer.yml | 3 - .../Structures/Machines/chem_master.yml | 3 - .../Structures/Machines/cloning_machine.yml | 3 - .../Structures/Machines/fatextractor.yml | 3 - .../Structures/Machines/flatpacker.yml | 3 - .../Structures/Machines/gravity_generator.yml | 3 - .../Entities/Structures/Machines/lathe.yml | 7 - .../Machines/material_reclaimer.yml | 3 - .../Structures/Machines/medical_scanner.yml | 3 - .../Devices => Structures/Machines}/nuke.yml | 4 +- .../Structures/Machines/reagent_grinder.yml | 6 +- .../Entities/Structures/Machines/research.yml | 2 - .../Structures/Machines/telecomms.yml | 3 - .../Structures/Machines/vending_machines.yml | 3 - .../Piping/Atmospherics/portable.yml | 2 +- .../Structures/Piping/Atmospherics/unary.yml | 8 +- .../Structures/Piping/Disposal/units.yml | 20 +- .../Power/Generation/Singularity/emitter.yml | 2 + .../Power/Generation/portable_generator.yml | 12 +- .../Entities/Structures/Power/apc.yml | 3 - .../Structures/Power/cable_terminal.yml | 4 + .../Entities/Structures/Power/cables.yml | 4 + .../Entities/Structures/Power/chargers.yml | 5 - .../Entities/Structures/Power/smes.yml | 3 - .../Entities/Structures/Power/substation.yml | 3 - .../Structures/Specific/Anomaly/anomalies.yml | 16 +- .../Structures/Specific/Janitor/drain.yml | 62 ++ .../Structures/Specific/Janitor/janicart.yml | 324 ++++++++ .../Structures/Storage/Crates/crates.yml | 2 +- .../Storage/Tanks/base_structuretanks.yml | 18 + .../Structures/Storage/Tanks/tanks.yml | 18 +- .../Entities/Structures/Walls/fence_metal.yml | 7 +- .../Entities/Structures/Walls/fence_wood.yml | 5 +- .../Entities/Structures/Walls/grille.yml | 14 +- .../Entities/Structures/Walls/railing.yml | 18 +- .../Entities/Structures/Walls/walls.yml | 58 +- .../Entities/Structures/Windows/mining.yml | 2 +- .../Entities/Structures/Windows/plasma.yml | 4 +- .../Structures/Windows/reinforced.yml | 8 + .../Entities/Structures/Windows/rplasma.yml | 4 +- .../Entities/Structures/Windows/ruranium.yml | 2 +- .../Entities/Structures/Windows/shuttle.yml | 2 +- .../Entities/Structures/Windows/uranium.yml | 2 +- .../Entities/Structures/Windows/window.yml | 25 +- .../Entities/Structures/base_structure.yml | 8 + .../Entities/Structures/catwalk.yml | 4 + .../Entities/Structures/hydro_tray.yml | 6 - .../Entities/Structures/plastic_flaps.yml | 17 +- Resources/Prototypes/Flavors/flavors.yml | 35 + Resources/Prototypes/Guidebook/chemicals.yml | 63 ++ Resources/Prototypes/Guidebook/medical.yml | 2 +- .../Prototypes/Guidebook/shiftandcrew.yml | 7 - .../Prototypes/Objectives/objectiveGroups.yml | 1 - Resources/Prototypes/RCD/rcd.yml | 294 ++++++++ .../Reagents/Consumable/Drink/alcohol.yml | 92 +++ .../Reagents/Consumable/Drink/drinks.yml | 48 ++ .../Reagents/Consumable/Drink/soda.yml | 46 ++ .../Graphs/clothing/glasses_sechud.yml | 25 + .../Construction/Graphs/furniture/toilet.yml | 1 - .../Graphs/structures/airlock.yml | 2 +- .../Graphs/structures/plastic_flaps.yml | 71 ++ .../Graphs/structures/shutter.yml | 2 +- .../Graphs/structures/shuttle.yml | 2 +- .../Graphs/structures/windoor.yml | 4 +- .../Recipes/Construction/clothing.yml | 11 + .../Recipes/Construction/furniture.yml | 2 +- .../Recipes/Construction/structures.yml | 53 +- .../Graphs/improvised/flowercrown.yml | 26 - .../Graphs/improvised/flowerwreath.yml | 2 +- .../Crafting/Graphs/improvised/hairflower.yml | 16 - .../Recipes/Crafting/improvised.yml | 32 +- .../Prototypes/Recipes/Lathes/security.yml | 8 - .../Prototypes/Recipes/Reactions/drinks.yml | 124 +++ Resources/Prototypes/Research/arsenal.yml | 1 - .../Roles/Jobs/Fun/emergencyresponseteam.yml | 55 ++ .../Roles/Jobs/Security/detective.yml | 2 +- .../Roles/Jobs/Security/head_of_security.yml | 2 +- .../Roles/Jobs/Security/security_officer.yml | 2 +- .../Prototypes/Roles/Jobs/Security/warden.yml | 2 +- .../Prototypes/Roles/play_time_trackers.yml | 3 + Resources/Prototypes/Traits/neutral.yml | 7 + .../Prototypes/Voice/speech_emote_sounds.yml | 18 + Resources/Prototypes/Voice/speech_emotes.yml | 104 +++ Resources/Prototypes/tags.yml | 12 +- .../Guidebook/ChemicalTabs/Biological.xml | 9 + .../Guidebook/ChemicalTabs/Botany.xml | 14 + .../Guidebook/ChemicalTabs/Elements.xml | 9 + .../Guidebook/ChemicalTabs/Foods.xml | 8 + .../Guidebook/ChemicalTabs/Narcotics.xml | 5 + .../Guidebook/ChemicalTabs/Other.xml | 5 + .../Guidebook/ChemicalTabs/Pyrotechnic.xml | 5 + .../Guidebook/ChemicalTabs/Toxins.xml | 5 + .../ertchaplain.rsi/equipped-BACKPACK.png | Bin 0 -> 806 bytes .../Back/Backpacks/ertchaplain.rsi/icon.png | Bin 0 -> 553 bytes .../Backpacks/ertchaplain.rsi/inhand-left.png | Bin 0 -> 654 bytes .../ertchaplain.rsi/inhand-right.png | Bin 0 -> 708 bytes .../Backpacks/ertchaplain.rsi}/meta.json | 6 +- .../ERThelmets/ertchaplain.rsi/icon-flash.png | Bin 0 -> 374 bytes .../ERThelmets/ertchaplain.rsi/icon.png | Bin 0 -> 386 bytes .../ERThelmets/ertchaplain.rsi/meta.json | 41 + .../ertchaplain.rsi/off-equipped-HELMET.png | Bin 0 -> 828 bytes .../ertchaplain.rsi/off-inhand-left.png | Bin 0 -> 677 bytes .../ertchaplain.rsi/off-inhand-right.png | Bin 0 -> 707 bytes .../ertchaplain.rsi/on-equipped-HELMET.png | Bin 0 -> 796 bytes .../ertchaplain.rsi/on-inhand-left.png | Bin 0 -> 685 bytes .../ertchaplain.rsi/on-inhand-right.png | Bin 0 -> 706 bytes .../Head/Helmets/scaf.rsi/equipped-HELMET.png | Bin 890 -> 0 bytes .../Clothing/Head/Helmets/scaf.rsi/icon.png | Bin 569 -> 0 bytes .../Head/Helmets/scaf.rsi/inhand-left.png | Bin 753 -> 0 bytes .../Head/Helmets/scaf.rsi/inhand-right.png | Bin 774 -> 0 bytes .../equipped-HELMET.png | Bin .../Misc/flower-wreath.rsi/equipped-NECK.png | Bin .../Misc/flower-wreath.rsi/icon.png | Bin .../meta.json | 6 +- .../Head/Misc/hairflower.rsi/icon.png | Bin 259 -> 0 bytes .../Head/Misc/hairflower.rsi/inhand-left.png | Bin 291 -> 0 bytes .../Head/Misc/hairflower.rsi/inhand-right.png | Bin 266 -> 0 bytes .../Head/Misc/hairflower.rsi/meta.json | 26 - .../Armor/scaf.rsi/equipped-OUTERCLOTHING.png | Bin 1487 -> 0 bytes .../OuterClothing/Armor/scaf.rsi/icon.png | Bin 667 -> 0 bytes .../Armor/scaf.rsi/inhand-left.png | Bin 691 -> 0 bytes .../Armor/scaf.rsi/inhand-right.png | Bin 680 -> 0 bytes .../equipped-OUTERCLOTHING.png | Bin 0 -> 1793 bytes .../ERTSuits/ertchaplain.rsi/icon.png | Bin 0 -> 637 bytes .../ERTSuits/ertchaplain.rsi/inhand-left.png | Bin 0 -> 541 bytes .../ERTSuits/ertchaplain.rsi/inhand-right.png | Bin 0 -> 528 bytes .../ERTSuits/ertchaplain.rsi}/meta.json | 2 +- .../Specific/skates.rsi/equipped-FEET.png | Bin 21114 -> 773 bytes .../Shoes/Specific/skates.rsi/inhand-left.png | Bin 20591 -> 630 bytes .../Specific/skates.rsi/inhand-right.png | Bin 20584 -> 651 bytes .../equipped-INNERCLOTHING-monkey.png | Bin 0 -> 974 bytes .../equipped-INNERCLOTHING.png | Bin 0 -> 1393 bytes .../Jumpsuit/ert_chaplain.rsi/icon.png | Bin 0 -> 421 bytes .../Jumpsuit/ert_chaplain.rsi/inhand-left.png | Bin 0 -> 551 bytes .../ert_chaplain.rsi/inhand-right.png | Bin 0 -> 544 bytes .../Jumpsuit/ert_chaplain.rsi/meta.json | 30 + .../Textures/Effects/rcd.rsi/construct.png | Bin 3612 -> 0 bytes .../Textures/Effects/rcd.rsi/construct0.png | Bin 0 -> 1095 bytes .../Textures/Effects/rcd.rsi/construct1.png | Bin 0 -> 3663 bytes .../Textures/Effects/rcd.rsi/construct2.png | Bin 0 -> 3663 bytes .../Textures/Effects/rcd.rsi/construct3.png | Bin 0 -> 3663 bytes .../Textures/Effects/rcd.rsi/construct4.png | Bin 0 -> 6200 bytes .../Textures/Effects/rcd.rsi/deconstruct2.png | Bin 0 -> 4964 bytes .../Textures/Effects/rcd.rsi/deconstruct4.png | Bin 0 -> 8158 bytes .../Textures/Effects/rcd.rsi/deconstruct6.png | Bin 0 -> 8158 bytes .../Textures/Effects/rcd.rsi/deconstruct8.png | Bin 0 -> 7941 bytes .../Effects/rcd.rsi/deconstructPreview.png | Bin 0 -> 47364 bytes Resources/Textures/Effects/rcd.rsi/meta.json | 411 +++++++++- .../Textures/Interface/Radial/RCD/airlock.png | Bin 0 -> 710 bytes .../Interface/Radial/RCD/airlocks.png | Bin 0 -> 776 bytes .../Interface/Radial/RCD/bulb_light.png | Bin 0 -> 283 bytes .../Interface/Radial/RCD/cable_terminal.png | Bin 0 -> 646 bytes .../Textures/Interface/Radial/RCD/catwalk.png | Bin 0 -> 404 bytes .../Interface/Radial/RCD/computer_frame.png | Bin 0 -> 467 bytes .../Radial/RCD/computers_and_frames.png | Bin 0 -> 775 bytes .../Interface/Radial/RCD/deconstruct.png | Bin 0 -> 1200 bytes .../Interface/Radial/RCD/directional.png | Bin 0 -> 312 bytes .../Radial/RCD/directional_reinforced.png | Bin 0 -> 296 bytes .../Interface/Radial/RCD/firelock.png | Bin 0 -> 637 bytes .../Interface/Radial/RCD/glass_airlock.png | Bin 0 -> 698 bytes .../Textures/Interface/Radial/RCD/grille.png | Bin 0 -> 223 bytes .../Textures/Interface/Radial/RCD/hv_coil.png | Bin 0 -> 856 bytes .../Interface/Radial/RCD/lighting.png | Bin 0 -> 901 bytes .../Textures/Interface/Radial/RCD/lv_coil.png | Bin 0 -> 850 bytes .../Interface/Radial/RCD/machine_frame.png | Bin 0 -> 655 bytes .../Interface/Radial/RCD/metal_tile.png | Bin 0 -> 297 bytes .../Interface/Radial/RCD/multicoil.png | Bin 0 -> 976 bytes .../Textures/Interface/Radial/RCD/mv_coil.png | Bin 0 -> 833 bytes .../Textures/Interface/Radial/RCD/plating.png | Bin 0 -> 436 bytes .../Interface/Radial/RCD/reinforced_wall.png | Bin 0 -> 2312 bytes .../Interface/Radial/RCD/solid_wall.png | Bin 0 -> 448 bytes .../Interface/Radial/RCD/tube_light.png | Bin 0 -> 266 bytes .../Radial/RCD/walls_and_flooring.png | Bin 0 -> 431 bytes .../Textures/Interface/Radial/RCD/window.png | Bin 0 -> 739 bytes .../Radial/RCD/window_reinforced.png | Bin 0 -> 1175 bytes .../Radial/RCD/windows_and_grilles.png | Bin 0 -> 1205 bytes .../Textures/Interface/Radial/back_hover.png | Bin 0 -> 495 bytes .../Textures/Interface/Radial/back_normal.png | Bin 0 -> 525 bytes .../Interface/Radial/button_hover.png | Bin 0 -> 211 bytes .../Interface/Radial/button_normal.png | Bin 0 -> 186 bytes .../Textures/Interface/Radial/close_hover.png | Bin 0 -> 389 bytes .../Interface/Radial/close_normal.png | Bin 0 -> 391 bytes .../Textures/Interface/VerbIcons/paint.svg | 39 - .../VerbIcons/paint.svg.192dpi.png.yml | 2 - .../Drinks/arnoldpalmer.rsi/icon.png | Bin 0 -> 4790 bytes .../Drinks/arnoldpalmer.rsi/meta.json | 14 + .../Drinks/bluehawaiian.rsi/icon.png | Bin 0 -> 4796 bytes .../Drinks/bluehawaiian.rsi/meta.json | 14 + .../Consumable/Drinks/coconutrum.rsi/icon.png | Bin 0 -> 4451 bytes .../Drinks/coconutrum.rsi/meta.json | 14 + .../Drinks/coconutwater.rsi/icon.png | Bin 0 -> 4497 bytes .../Drinks/coconutwater.rsi/icon_open.png | Bin 0 -> 4474 bytes .../Drinks/coconutwater.rsi/meta.json | 17 + .../Drinks/cosmopolitan.rsi/icon.png | Bin 0 -> 4363 bytes .../Drinks/cosmopolitan.rsi/meta.json | 14 + .../Drinks/painkiller.rsi}/icon.png | Bin 5190 -> 4729 bytes .../Drinks/painkiller.rsi/meta.json | 14 + .../Consumable/Drinks/pinacolada.rsi/icon.png | Bin 0 -> 4454 bytes .../Drinks/pinacolada.rsi/meta.json | 14 + .../Consumable/Drinks/royrogers.rsi/icon.png | Bin 0 -> 4915 bytes .../Consumable/Drinks/royrogers.rsi/meta.json | 22 + .../Drinks/shirleytemple.rsi/icon.png | Bin 0 -> 929 bytes .../Drinks/shirleytemple.rsi/meta.json | 14 + .../Consumable/Drinks/sol_dry.rsi/icon.png | Bin 0 -> 4764 bytes .../Drinks/sol_dry.rsi/icon_open.png | Bin 0 -> 4776 bytes .../Drinks/sol_dry.rsi/inhand-left.png | Bin 0 -> 4557 bytes .../Drinks/sol_dry.rsi/inhand-right.png | Bin 0 -> 4565 bytes .../Consumable/Drinks/sol_dry.rsi/meta.json | 53 ++ .../Drinks/sol_dry_glass.rsi/icon.png | Bin 0 -> 4367 bytes .../Drinks/sol_dry_glass.rsi/meta.json | 14 + .../Objects/Fun/spraycans.rsi/meta.json | 19 +- .../Objects/Fun/spraycans.rsi/spray_cap.png | Bin 0 -> 246 bytes .../Magic/spellbooks.rsi/bookfireball.png | Bin 652 -> 0 bytes .../Magic/spellbooks.rsi/bookforcewall.png | Bin 532 -> 0 bytes .../Magic/spellbooks.rsi/bookknock.png | Bin 693 -> 0 bytes .../Objects/Magic/spellbooks.rsi/meta.json | 47 -- .../Magic/spellbooks.rsi/spellbook.png | Bin 743 -> 0 bytes .../Misc/authorbooks.rsi/book_aurora.png | Bin 358 -> 0 bytes .../Misc/authorbooks.rsi/book_cafe.png | Bin 517 -> 0 bytes .../Misc/authorbooks.rsi/book_earth.png | Bin 498 -> 0 bytes .../authorbooks.rsi/book_ian_antarctica.png | Bin 756 -> 0 bytes .../Misc/authorbooks.rsi/book_ian_arctic.png | Bin 531 -> 0 bytes .../Misc/authorbooks.rsi/book_ian_city.png | Bin 538 -> 0 bytes .../Misc/authorbooks.rsi/book_ian_desert.png | Bin 557 -> 0 bytes .../authorbooks.rsi/book_ian_mountain.png | Bin 603 -> 0 bytes .../Misc/authorbooks.rsi/book_ian_ocean.png | Bin 542 -> 0 bytes .../Misc/authorbooks.rsi/book_ian_ranch.png | Bin 530 -> 0 bytes .../Misc/authorbooks.rsi/book_ian_wolfpup.png | Bin 552 -> 0 bytes .../Misc/authorbooks.rsi/book_journ_mount.png | Bin 445 -> 0 bytes .../Objects/Misc/authorbooks.rsi/book_map.png | Bin 379 -> 0 bytes .../Misc/authorbooks.rsi/book_medical.png | Bin 356 -> 0 bytes .../Misc/authorbooks.rsi/book_morgue.png | Bin 630 -> 0 bytes .../Misc/authorbooks.rsi/book_names.png | Bin 317 -> 0 bytes .../authorbooks.rsi/book_narsie_legend.png | Bin 570 -> 0 bytes .../Misc/authorbooks.rsi/book_possum.png | Bin 468 -> 0 bytes .../Misc/authorbooks.rsi/book_rufus.png | Bin 410 -> 0 bytes .../Misc/authorbooks.rsi/book_scmmd.png | Bin 452 -> 0 bytes .../Misc/authorbooks.rsi/book_scpz.png | Bin 438 -> 0 bytes .../Misc/authorbooks.rsi/book_scsss.png | Bin 351 -> 0 bytes .../Misc/authorbooks.rsi/book_struck.png | Bin 480 -> 0 bytes .../Objects/Misc/authorbooks.rsi/book_sun.png | Bin 643 -> 0 bytes .../Misc/authorbooks.rsi/book_temple.png | Bin 553 -> 0 bytes .../Misc/authorbooks.rsi/book_truth.png | Bin 556 -> 0 bytes .../Misc/authorbooks.rsi/book_watched.png | Bin 421 -> 0 bytes .../Misc/authorbooks.rsi/book_world.png | Bin 526 -> 0 bytes .../Objects/Misc/authorbooks.rsi/meta.json | 95 --- .../Textures/Objects/Misc/books.rsi/book0.png | Bin 593 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book1.png | Bin 802 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book2.png | Bin 270 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book3.png | Bin 265 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book4.png | Bin 266 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book5.png | Bin 255 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book6.png | Bin 266 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book7.png | Bin 341 -> 0 bytes .../Textures/Objects/Misc/books.rsi/book8.png | Bin 289 -> 0 bytes .../Objects/Misc/books.rsi/book_bar.png | Bin 371 -> 0 bytes .../Misc/books.rsi/book_boneworking.png | Bin 687 -> 0 bytes .../Objects/Misc/books.rsi/book_borg.png | Bin 515 -> 0 bytes .../Objects/Misc/books.rsi/book_chemistry.png | Bin 360 -> 0 bytes .../Objects/Misc/books.rsi/book_cloning.png | Bin 352 -> 0 bytes .../Objects/Misc/books.rsi/book_cooking.png | Bin 500 -> 0 bytes .../Misc/books.rsi/book_demonomicon.png | Bin 1015 -> 0 bytes .../Objects/Misc/books.rsi/book_detective.png | Bin 396 -> 0 bytes .../Misc/books.rsi/book_engineering.png | Bin 585 -> 0 bytes .../Misc/books.rsi/book_engineering2.png | Bin 672 -> 0 bytes .../Objects/Misc/books.rsi/book_fish.png | Bin 514 -> 0 bytes .../Objects/Misc/books.rsi/book_hacking.png | Bin 487 -> 0 bytes .../books.rsi/book_hydroponics_pod_people.png | Bin 593 -> 0 bytes .../Objects/Misc/books.rsi/book_icon.png | Bin 0 -> 652 bytes .../Misc/books.rsi/book_infections.png | Bin 427 -> 0 bytes .../Objects/Misc/books.rsi/book_medical.png | Bin 361 -> 0 bytes .../Objects/Misc/books.rsi/book_nuclear.png | Bin 809 -> 0 bytes .../Objects/Misc/books.rsi/book_origami.png | Bin 376 -> 0 bytes .../books.rsi/book_particle_accelerator.png | Bin 402 -> 0 bytes .../Objects/Misc/books.rsi/book_science.png | Bin 291 -> 0 bytes .../Objects/Misc/books.rsi/book_security.png | Bin 319 -> 0 bytes .../Objects/Misc/books.rsi/book_space_law.png | Bin 434 -> 0 bytes .../Objects/Misc/books.rsi/cover_base.png | Bin 0 -> 288 bytes .../Objects/Misc/books.rsi/cover_old.png | Bin 0 -> 578 bytes .../Objects/Misc/books.rsi/cover_strong.png | Bin 0 -> 470 bytes .../Objects/Misc/books.rsi/decor_bottom.png | Bin 0 -> 220 bytes .../Objects/Misc/books.rsi/decor_diagonal.png | Bin 0 -> 246 bytes .../Objects/Misc/books.rsi/decor_middle.png | Bin 0 -> 173 bytes .../Objects/Misc/books.rsi/decor_spine.png | Bin 0 -> 195 bytes .../Misc/books.rsi/decor_vertical_middle.png | Bin 0 -> 196 bytes .../Objects/Misc/books.rsi/decor_wingette.png | Bin 0 -> 179 bytes .../Misc/books.rsi/decor_wingette_circle.png | Bin 0 -> 213 bytes .../Misc/books.rsi/decor_wingette_flat.png | Bin 0 -> 138 bytes .../Misc/books.rsi/detail_bookmark.png | Bin 0 -> 169 bytes .../Objects/Misc/books.rsi/detail_rivets.png | Bin 0 -> 142 bytes .../Objects/Misc/books.rsi/icon_apple.png | Bin 0 -> 218 bytes .../Objects/Misc/books.rsi/icon_atmos.png | Bin 0 -> 246 bytes .../Objects/Misc/books.rsi/icon_aurora.png | Bin 0 -> 248 bytes .../Objects/Misc/books.rsi/icon_banana.png | Bin 0 -> 193 bytes .../Objects/Misc/books.rsi/icon_bar.png | Bin 0 -> 218 bytes .../Objects/Misc/books.rsi/icon_biohazard.png | Bin 0 -> 179 bytes .../Objects/Misc/books.rsi/icon_borg.png | Bin 0 -> 293 bytes .../Objects/Misc/books.rsi/icon_briefcase.png | Bin 0 -> 194 bytes .../Objects/Misc/books.rsi/icon_bucket.png | Bin 0 -> 212 bytes .../Objects/Misc/books.rsi/icon_cabbage.png | Bin 0 -> 439 bytes .../Objects/Misc/books.rsi/icon_chemical.png | Bin 0 -> 218 bytes .../Objects/Misc/books.rsi/icon_corner.png | Bin 0 -> 137 bytes .../Objects/Misc/books.rsi/icon_diamond.png | Bin 0 -> 193 bytes .../Objects/Misc/books.rsi/icon_dna.png | Bin 0 -> 163 bytes .../Objects/Misc/books.rsi/icon_eye.png | Bin 0 -> 172 bytes .../Objects/Misc/books.rsi/icon_fish.png | Bin 0 -> 342 bytes .../Objects/Misc/books.rsi/icon_glow.png | Bin 0 -> 230 bytes .../Objects/Misc/books.rsi/icon_hacking.png | Bin 0 -> 306 bytes .../Objects/Misc/books.rsi/icon_ian.png | Bin 0 -> 390 bytes .../Objects/Misc/books.rsi/icon_law.png | Bin 0 -> 240 bytes .../Objects/Misc/books.rsi/icon_letter_N.png | Bin 0 -> 164 bytes .../Objects/Misc/books.rsi/icon_letter_P.png | Bin 0 -> 179 bytes .../Objects/Misc/books.rsi/icon_lightning.png | Bin 0 -> 181 bytes .../Objects/Misc/books.rsi/icon_magic.png | Bin 0 -> 184 bytes .../Misc/books.rsi/icon_magic_fireball.png | Bin 0 -> 342 bytes .../Misc/books.rsi/icon_magic_forcewall.png | Bin 0 -> 334 bytes .../Misc/books.rsi/icon_magic_knock.png | Bin 0 -> 368 bytes .../Objects/Misc/books.rsi/icon_magnifier.png | Bin 0 -> 266 bytes .../Objects/Misc/books.rsi/icon_medical.png | Bin 0 -> 180 bytes .../Misc/books.rsi/icon_medical_cross.png | Bin 0 -> 215 bytes .../Objects/Misc/books.rsi/icon_mount.png | Bin 0 -> 311 bytes .../Objects/Misc/books.rsi/icon_nuclear.png | Bin 0 -> 316 bytes .../Objects/Misc/books.rsi/icon_origami.png | Bin 0 -> 215 bytes .../Misc/books.rsi/icon_pentagramm.png | Bin 0 -> 201 bytes .../Objects/Misc/books.rsi/icon_planet.png | Bin 0 -> 311 bytes .../Objects/Misc/books.rsi/icon_possum.png | Bin 0 -> 337 bytes .../Objects/Misc/books.rsi/icon_question.png | Bin 0 -> 256 bytes .../Objects/Misc/books.rsi/icon_scmmd.png | Bin 0 -> 280 bytes .../Objects/Misc/books.rsi/icon_skull.png | Bin 0 -> 270 bytes .../Objects/Misc/books.rsi/icon_stars.png | Bin 0 -> 181 bytes .../Objects/Misc/books.rsi/icon_stars2.png | Bin 0 -> 160 bytes .../Objects/Misc/books.rsi/icon_stunbaton.png | Bin 0 -> 183 bytes .../Objects/Misc/books.rsi/icon_temple.png | Bin 0 -> 381 bytes .../Objects/Misc/books.rsi/icon_text.png | Bin 0 -> 182 bytes .../Objects/Misc/books.rsi/icon_text2.png | Bin 0 -> 167 bytes .../Objects/Misc/books.rsi/icon_text3.png | Bin 0 -> 160 bytes .../Objects/Misc/books.rsi/icon_time.png | Bin 0 -> 205 bytes .../Objects/Misc/books.rsi/icon_tree.png | Bin 0 -> 417 bytes .../Objects/Misc/books.rsi/icon_wrench.png | Bin 0 -> 473 bytes .../Textures/Objects/Misc/books.rsi/meta.json | 202 ++++- .../Objects/Misc/books.rsi/overlay_blood.png | Bin 0 -> 335 bytes .../Objects/Misc/books.rsi/overlay_dirt.png | Bin 0 -> 608 bytes .../Objects/Misc/books.rsi/overlay_null.png | Bin 0 -> 96 bytes .../Textures/Objects/Misc/books.rsi/paper.png | Bin 0 -> 327 bytes .../Objects/Misc/books.rsi/paper_blood.png | Bin 0 -> 686 bytes .../Textures/Objects/Misc/cd.rsi/icon.png | Bin 0 -> 361 bytes .../Misc/cd.rsi}/meta.json | 7 +- .../Objects/Misc/diskcases.rsi/icon_base.png | Bin 0 -> 240 bytes .../Objects/Misc/diskcases.rsi/icon_cargo.png | Bin 0 -> 234 bytes .../Objects/Misc/diskcases.rsi/icon_cc.png | Bin 0 -> 239 bytes .../Objects/Misc/diskcases.rsi/meta.json | 20 + .../Hydroponics/lily.rsi/equipped-HELMET.png | Bin 0 -> 341 bytes .../Specific/Hydroponics/lily.rsi/meta.json | 6 +- .../poppy.rsi}/equipped-HELMET.png | Bin .../Specific/Hydroponics/poppy.rsi/meta.json | 6 +- .../toilet.rsi/closed_toilet_seat_down.png | Bin 1445 -> 0 bytes .../toilet.rsi/closed_toilet_seat_up.png | Bin 1553 -> 0 bytes .../Furniture/toilet.rsi/condisposal.png | Bin 0 -> 31043 bytes .../toilet.rsi/disposal-charging.png | Bin 0 -> 31052 bytes .../Furniture/toilet.rsi/disposal-closed.png | Bin 0 -> 29675 bytes .../Furniture/toilet.rsi/disposal-down.png | Bin 0 -> 29554 bytes .../Furniture/toilet.rsi/disposal-flush.png | Bin 0 -> 25461 bytes .../Furniture/toilet.rsi/disposal-open.png} | Bin 20783 -> 28502 bytes .../Furniture/toilet.rsi/disposal-up.png | Bin 0 -> 29203 bytes .../Furniture/toilet.rsi/disposal.png | Bin 0 -> 31095 bytes .../Furniture/toilet.rsi/dispover-charge.png} | Bin 21199 -> 28316 bytes .../Furniture/toilet.rsi/dispover-full.png} | Bin 15653 -> 17416 bytes .../Furniture/toilet.rsi/dispover-handle.png} | Bin 20773 -> 17416 bytes .../Furniture/toilet.rsi/dispover-ready.png} | Bin 21213 -> 28318 bytes .../Structures/Furniture/toilet.rsi/meta.json | 238 +++++- .../toilet.rsi/open_toilet_seat_down.png | Bin 1437 -> 0 bytes .../toilet.rsi/open_toilet_seat_up.png | Bin 1535 -> 0 bytes Resources/migration.yml | 30 +- RobustToolbox | 2 +- 745 files changed, 11345 insertions(+), 4987 deletions(-) create mode 100644 Content.Client/Access/UI/AccessLevelControl.xaml create mode 100644 Content.Client/Access/UI/AccessLevelControl.xaml.cs create mode 100644 Content.Client/Doors/Electronics/DoorElectronicsBoundUserInterface.cs create mode 100644 Content.Client/Doors/Electronics/DoorElectronicsConfigurationMenu.xaml create mode 100644 Content.Client/Doors/Electronics/DoorElectronicsConfigurationMenu.xaml.cs delete mode 100644 Content.Client/Nutrition/EntitySystems/OpenableSystem.cs delete mode 100644 Content.Client/Paint/PaintVisualizerSystem.cs create mode 100644 Content.Client/RCD/AlignRCDConstruction.cs create mode 100644 Content.Client/RCD/RCDConstructionGhostSystem.cs create mode 100644 Content.Client/RCD/RCDMenu.xaml create mode 100644 Content.Client/RCD/RCDMenu.xaml.cs create mode 100644 Content.Client/RCD/RCDMenuBoundUserInterface.cs delete mode 100644 Content.Client/Toilet/ToiletVisualsSystem.cs create mode 100644 Content.Client/UserInterface/Controls/RadialContainer.cs create mode 100644 Content.Client/UserInterface/Controls/RadialMenu.cs rename Content.Client/UserInterface/Systems/Chat/Controls/{ChatInputBox.cs => ChatInputBox.xaml.cs} (95%) create mode 100644 Content.Server/Anomaly/Components/SecretDataAnomalyComponent.cs create mode 100644 Content.Server/Anomaly/Components/ShuffleParticlesAnomalyComponent.cs create mode 100644 Content.Server/Anomaly/Effects/SecretDataAnomalySystem.cs create mode 100644 Content.Server/Anomaly/Effects/ShuffleParticlesAnomalySystem.cs create mode 100644 Content.Server/Chemistry/Components/BaseSolutionInjectOnEventComponent.cs delete mode 100644 Content.Server/Chemistry/Components/SolutionInjectOnCollideComponent.cs create mode 100644 Content.Server/Chemistry/Components/SolutionInjectOnEmbedComponent.cs create mode 100644 Content.Server/Chemistry/Components/SolutionInjectOnProjectileHitComponent.cs delete mode 100644 Content.Server/Chemistry/EntitySystems/SolutionInjectOnCollideSystem.cs create mode 100644 Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs delete mode 100644 Content.Server/Chemistry/EntitySystems/SolutionTransferSystem.cs delete mode 100644 Content.Server/Construction/Conditions/ToiletLidClosed.cs create mode 100644 Content.Server/Doors/Electronics/Systems/DoorElectronicsSystem.cs delete mode 100644 Content.Server/Nutrition/EntitySystems/OpenableSystem.cs delete mode 100644 Content.Server/Paint/PaintSystem.cs create mode 100644 Content.Server/Paper/PaperRandomStoryComponent.cs create mode 100644 Content.Server/Paper/PaperRandomStorySystem.cs create mode 100644 Content.Server/Speech/Components/SouthernAccentComponent.cs create mode 100644 Content.Server/Speech/EntitySystems/SouthernAccentSystem.cs delete mode 100644 Content.Server/Storage/Components/SecretStashComponent.cs create mode 100644 Content.Shared/Anomaly/Prototypes/AnomalyBehaviorPrototype.cs create mode 100644 Content.Shared/Chemistry/Components/BlockSolutionAccessComponent.cs create mode 100644 Content.Shared/Chemistry/Components/ScoopableSolutionComponent.cs create mode 100644 Content.Shared/Chemistry/EntitySystems/ScoopableSolutionSystem.cs create mode 100644 Content.Shared/Chemistry/EntitySystems/SolutionTransferSystem.cs create mode 100644 Content.Shared/Doors/Electronics/DoorElectronicsComponent.cs create mode 100644 Content.Shared/Lock/LockedAnchorableComponent.cs create mode 100644 Content.Shared/Lock/LockedWiresPanelComponent.cs rename Content.Shared/Nutrition/EntitySystems/{SharedOpenableSystem.cs => OpenableSystem.cs} (91%) delete mode 100644 Content.Shared/Paint/PaintComponent.cs delete mode 100644 Content.Shared/Paint/PaintDoAfterEvent.cs delete mode 100644 Content.Shared/Paint/PaintRemoverComponent.cs delete mode 100644 Content.Shared/Paint/PaintRemoverDoAfterEvent.cs delete mode 100644 Content.Shared/Paint/PaintRemoverSystem.cs delete mode 100644 Content.Shared/Paint/PaintedComponent.cs delete mode 100644 Content.Shared/Paint/SharedPaintSystem.cs rename {Content.Server/Plants/Components => Content.Shared/Plants}/PottedPlantHideComponent.cs (80%) rename {Content.Server/Plants/Systems => Content.Shared/Plants}/PottedPlantHideSystem.cs (86%) create mode 100644 Content.Shared/Plunger/Components/PlungerComponent.cs create mode 100644 Content.Shared/Plunger/Components/PlungerUseComponent.cs create mode 100644 Content.Shared/Plunger/PlungerDoAfterEvent.cs create mode 100644 Content.Shared/Plunger/Systems/PlungerSystem.cs create mode 100644 Content.Shared/RCD/Components/RCDDeconstructibleComponent.cs create mode 100644 Content.Shared/RCD/RCDEvents.cs create mode 100644 Content.Shared/RCD/RCDPrototype.cs create mode 100644 Content.Shared/Shuttles/Components/ShuttleDestinationCoordinatesComponent.cs create mode 100644 Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs create mode 100644 Content.Shared/Storage/Components/SecretStashComponent.cs rename {Content.Server => Content.Shared}/Storage/EntitySystems/SecretStashSystem.cs (55%) create mode 100644 Content.Shared/Store/ListingLocalisationHelpers.cs create mode 100644 Content.Shared/Toilet/Components/ToiletComponent.cs create mode 100644 Content.Shared/Toilet/Systems/SharedToiletSystem.cs delete mode 100644 Content.Shared/Toilet/ToiletComponent.cs delete mode 100644 Content.Shared/Toilet/ToiletVisuals.cs create mode 100644 Content.Shared/Weapons/Melee/MeleeSoundSystem.cs create mode 100644 Resources/Audio/Effects/Fluids/flush.ogg create mode 100644 Resources/Audio/Effects/Fluids/splash.ogg create mode 100644 Resources/Audio/Machines/buzz-sigh.ogg create mode 100644 Resources/Audio/Machines/buzz-two.ogg create mode 100644 Resources/Audio/Machines/chime.ogg create mode 100644 Resources/Audio/Machines/twobeep.ogg create mode 100644 Resources/Audio/Weapons/glug.ogg create mode 100644 Resources/Locale/en-US/accent/southern.ftl create mode 100644 Resources/Locale/en-US/administration/commands/aghost.ftl create mode 100644 Resources/Locale/en-US/chemistry/components/scoopable-component.ftl delete mode 100644 Resources/Locale/en-US/paint/paint.ftl create mode 100644 Resources/Locale/en-US/paper/story-generation.ftl create mode 100644 Resources/Locale/en-US/ui/general.ftl create mode 100644 Resources/Prototypes/Anomaly/behaviours.yml delete mode 100644 Resources/Prototypes/Catalog/Fills/Books/lore.yml create mode 100644 Resources/Prototypes/Datasets/story_generation.yml create mode 100644 Resources/Prototypes/Entities/Objects/Devices/Electronics/door_access.yml delete mode 100644 Resources/Prototypes/Entities/Objects/Fun/spray_paint.yml rename Resources/Prototypes/Entities/Objects/Misc/{authorbooks.yml => books_author.yml} (68%) create mode 100644 Resources/Prototypes/Entities/Objects/Misc/cds.yml create mode 100644 Resources/Prototypes/Entities/Objects/Misc/diskcases.yml rename Resources/Prototypes/Entities/{Objects/Devices => Structures/Machines}/nuke.yml (95%) create mode 100644 Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml create mode 100644 Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml create mode 100644 Resources/Prototypes/Guidebook/chemicals.yml create mode 100644 Resources/Prototypes/RCD/rcd.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/clothing/glasses_sechud.yml delete mode 100644 Resources/Prototypes/Recipes/Crafting/Graphs/improvised/flowercrown.yml delete mode 100644 Resources/Prototypes/Recipes/Crafting/Graphs/improvised/hairflower.yml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Biological.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Botany.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Elements.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Foods.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Narcotics.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Other.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Pyrotechnic.xml create mode 100644 Resources/ServerInfo/Guidebook/ChemicalTabs/Toxins.xml create mode 100644 Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Back/Backpacks/ertchaplain.rsi/inhand-right.png rename Resources/Textures/Clothing/{Head/Helmets/scaf.rsi => Back/Backpacks/ertchaplain.rsi}/meta.json (60%) create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/icon-flash.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/off-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/off-inhand-right.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/on-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertchaplain.rsi/on-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/scaf.rsi/equipped-HELMET.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/scaf.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/scaf.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/scaf.rsi/inhand-right.png rename Resources/Textures/Clothing/Head/Misc/{flower-crown.rsi => flower-wreath.rsi}/equipped-HELMET.png (100%) rename Resources/Textures/Clothing/{Neck => Head}/Misc/flower-wreath.rsi/equipped-NECK.png (100%) rename Resources/Textures/Clothing/{Neck => Head}/Misc/flower-wreath.rsi/icon.png (100%) rename Resources/Textures/Clothing/Head/Misc/{flower-crown.rsi => flower-wreath.rsi}/meta.json (59%) delete mode 100644 Resources/Textures/Clothing/Head/Misc/hairflower.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/hairflower.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/hairflower.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Head/Misc/hairflower.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/equipped-OUTERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/scaf.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertchaplain.rsi/inhand-right.png rename Resources/Textures/Clothing/OuterClothing/{Armor/scaf.rsi => Hardsuits/ERTSuits/ertchaplain.rsi}/meta.json (71%) create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_chaplain.rsi/equipped-INNERCLOTHING-monkey.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_chaplain.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_chaplain.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_chaplain.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_chaplain.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/ert_chaplain.rsi/meta.json delete mode 100644 Resources/Textures/Effects/rcd.rsi/construct.png create mode 100644 Resources/Textures/Effects/rcd.rsi/construct0.png create mode 100644 Resources/Textures/Effects/rcd.rsi/construct1.png create mode 100644 Resources/Textures/Effects/rcd.rsi/construct2.png create mode 100644 Resources/Textures/Effects/rcd.rsi/construct3.png create mode 100644 Resources/Textures/Effects/rcd.rsi/construct4.png create mode 100644 Resources/Textures/Effects/rcd.rsi/deconstruct2.png create mode 100644 Resources/Textures/Effects/rcd.rsi/deconstruct4.png create mode 100644 Resources/Textures/Effects/rcd.rsi/deconstruct6.png create mode 100644 Resources/Textures/Effects/rcd.rsi/deconstruct8.png create mode 100644 Resources/Textures/Effects/rcd.rsi/deconstructPreview.png create mode 100644 Resources/Textures/Interface/Radial/RCD/airlock.png create mode 100644 Resources/Textures/Interface/Radial/RCD/airlocks.png create mode 100644 Resources/Textures/Interface/Radial/RCD/bulb_light.png create mode 100644 Resources/Textures/Interface/Radial/RCD/cable_terminal.png create mode 100644 Resources/Textures/Interface/Radial/RCD/catwalk.png create mode 100644 Resources/Textures/Interface/Radial/RCD/computer_frame.png create mode 100644 Resources/Textures/Interface/Radial/RCD/computers_and_frames.png create mode 100644 Resources/Textures/Interface/Radial/RCD/deconstruct.png create mode 100644 Resources/Textures/Interface/Radial/RCD/directional.png create mode 100644 Resources/Textures/Interface/Radial/RCD/directional_reinforced.png create mode 100644 Resources/Textures/Interface/Radial/RCD/firelock.png create mode 100644 Resources/Textures/Interface/Radial/RCD/glass_airlock.png create mode 100644 Resources/Textures/Interface/Radial/RCD/grille.png create mode 100644 Resources/Textures/Interface/Radial/RCD/hv_coil.png create mode 100644 Resources/Textures/Interface/Radial/RCD/lighting.png create mode 100644 Resources/Textures/Interface/Radial/RCD/lv_coil.png create mode 100644 Resources/Textures/Interface/Radial/RCD/machine_frame.png create mode 100644 Resources/Textures/Interface/Radial/RCD/metal_tile.png create mode 100644 Resources/Textures/Interface/Radial/RCD/multicoil.png create mode 100644 Resources/Textures/Interface/Radial/RCD/mv_coil.png create mode 100644 Resources/Textures/Interface/Radial/RCD/plating.png create mode 100644 Resources/Textures/Interface/Radial/RCD/reinforced_wall.png create mode 100644 Resources/Textures/Interface/Radial/RCD/solid_wall.png create mode 100644 Resources/Textures/Interface/Radial/RCD/tube_light.png create mode 100644 Resources/Textures/Interface/Radial/RCD/walls_and_flooring.png create mode 100644 Resources/Textures/Interface/Radial/RCD/window.png create mode 100644 Resources/Textures/Interface/Radial/RCD/window_reinforced.png create mode 100644 Resources/Textures/Interface/Radial/RCD/windows_and_grilles.png create mode 100644 Resources/Textures/Interface/Radial/back_hover.png create mode 100644 Resources/Textures/Interface/Radial/back_normal.png create mode 100644 Resources/Textures/Interface/Radial/button_hover.png create mode 100644 Resources/Textures/Interface/Radial/button_normal.png create mode 100644 Resources/Textures/Interface/Radial/close_hover.png create mode 100644 Resources/Textures/Interface/Radial/close_normal.png delete mode 100644 Resources/Textures/Interface/VerbIcons/paint.svg delete mode 100644 Resources/Textures/Interface/VerbIcons/paint.svg.192dpi.png.yml create mode 100644 Resources/Textures/Objects/Consumable/Drinks/arnoldpalmer.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/arnoldpalmer.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bluehawaiian.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/bluehawaiian.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coconutrum.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coconutrum.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coconutwater.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coconutwater.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/coconutwater.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/cosmopolitan.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/cosmopolitan.rsi/meta.json rename Resources/Textures/{Clothing/Head/Misc/flower-crown.rsi => Objects/Consumable/Drinks/painkiller.rsi}/icon.png (53%) create mode 100644 Resources/Textures/Objects/Consumable/Drinks/painkiller.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/pinacolada.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/pinacolada.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/royrogers.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/royrogers.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shirleytemple.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/shirleytemple.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry.rsi/icon_open.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry_glass.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/sol_dry_glass.rsi/meta.json create mode 100644 Resources/Textures/Objects/Fun/spraycans.rsi/spray_cap.png delete mode 100644 Resources/Textures/Objects/Magic/spellbooks.rsi/bookfireball.png delete mode 100644 Resources/Textures/Objects/Magic/spellbooks.rsi/bookforcewall.png delete mode 100644 Resources/Textures/Objects/Magic/spellbooks.rsi/bookknock.png delete mode 100644 Resources/Textures/Objects/Magic/spellbooks.rsi/meta.json delete mode 100644 Resources/Textures/Objects/Magic/spellbooks.rsi/spellbook.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_aurora.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_cafe.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_earth.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_antarctica.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_arctic.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_city.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_desert.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_mountain.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_ocean.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_ranch.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_ian_wolfpup.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_journ_mount.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_map.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_medical.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_morgue.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_names.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_narsie_legend.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_possum.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_rufus.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_scmmd.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_scpz.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_scsss.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_struck.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_sun.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_temple.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_truth.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_watched.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/book_world.png delete mode 100644 Resources/Textures/Objects/Misc/authorbooks.rsi/meta.json delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book0.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book1.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book2.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book3.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book4.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book5.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book6.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book7.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book8.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_bar.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_boneworking.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_borg.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_chemistry.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_cloning.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_cooking.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_demonomicon.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_detective.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_engineering.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_engineering2.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_fish.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_hacking.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_hydroponics_pod_people.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_icon.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_infections.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_medical.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_nuclear.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_origami.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_particle_accelerator.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_science.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_security.png delete mode 100644 Resources/Textures/Objects/Misc/books.rsi/book_space_law.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/cover_base.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/cover_old.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/cover_strong.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_bottom.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_diagonal.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_middle.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_spine.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_vertical_middle.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_wingette.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_wingette_circle.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/decor_wingette_flat.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/detail_bookmark.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/detail_rivets.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_apple.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_atmos.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_aurora.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_banana.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_bar.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_biohazard.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_borg.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_briefcase.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_bucket.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_cabbage.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_chemical.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_corner.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_diamond.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_dna.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_eye.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_fish.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_glow.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_hacking.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_ian.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_law.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_letter_N.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_letter_P.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_lightning.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_magic.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_magic_fireball.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_magic_forcewall.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_magic_knock.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_magnifier.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_medical.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_medical_cross.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_mount.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_nuclear.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_origami.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_pentagramm.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_planet.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_possum.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_question.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_scmmd.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_skull.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_stars.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_stars2.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_stunbaton.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_temple.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_text.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_text2.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_text3.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_time.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_tree.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/icon_wrench.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/overlay_blood.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/overlay_dirt.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/overlay_null.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/paper.png create mode 100644 Resources/Textures/Objects/Misc/books.rsi/paper_blood.png create mode 100644 Resources/Textures/Objects/Misc/cd.rsi/icon.png rename Resources/Textures/{Clothing/Neck/Misc/flower-wreath.rsi => Objects/Misc/cd.rsi}/meta.json (58%) create mode 100644 Resources/Textures/Objects/Misc/diskcases.rsi/icon_base.png create mode 100644 Resources/Textures/Objects/Misc/diskcases.rsi/icon_cargo.png create mode 100644 Resources/Textures/Objects/Misc/diskcases.rsi/icon_cc.png create mode 100644 Resources/Textures/Objects/Misc/diskcases.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/lily.rsi/equipped-HELMET.png rename Resources/Textures/{Clothing/Head/Misc/hairflower.rsi => Objects/Specific/Hydroponics/poppy.rsi}/equipped-HELMET.png (100%) delete mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/closed_toilet_seat_down.png delete mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/closed_toilet_seat_up.png create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/condisposal.png create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/disposal-charging.png create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/disposal-closed.png create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/disposal-down.png create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/disposal-flush.png rename Resources/Textures/{Objects/Fun/spraycans.rsi/clown-inhand-right.png => Structures/Furniture/toilet.rsi/disposal-open.png} (64%) create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/disposal-up.png create mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/disposal.png rename Resources/Textures/{Objects/Fun/spraycans.rsi/spray-inhand-left.png => Structures/Furniture/toilet.rsi/dispover-charge.png} (66%) rename Resources/Textures/{Interface/VerbIcons/paint.svg.192dpi.png => Structures/Furniture/toilet.rsi/dispover-full.png} (79%) rename Resources/Textures/{Objects/Fun/spraycans.rsi/clown-inhand-left.png => Structures/Furniture/toilet.rsi/dispover-handle.png} (74%) rename Resources/Textures/{Objects/Fun/spraycans.rsi/spray-inhand-right.png => Structures/Furniture/toilet.rsi/dispover-ready.png} (66%) delete mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/open_toilet_seat_down.png delete mode 100644 Resources/Textures/Structures/Furniture/toilet.rsi/open_toilet_seat_up.png diff --git a/Content.Client/Access/UI/AccessLevelControl.xaml b/Content.Client/Access/UI/AccessLevelControl.xaml new file mode 100644 index 0000000000..56968d8983 --- /dev/null +++ b/Content.Client/Access/UI/AccessLevelControl.xaml @@ -0,0 +1,4 @@ + + diff --git a/Content.Client/Access/UI/AccessLevelControl.xaml.cs b/Content.Client/Access/UI/AccessLevelControl.xaml.cs new file mode 100644 index 0000000000..34db80b7af --- /dev/null +++ b/Content.Client/Access/UI/AccessLevelControl.xaml.cs @@ -0,0 +1,52 @@ +using System.Linq; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; +using Content.Shared.Access; +using Content.Shared.Access.Systems; + +namespace Content.Client.Access.UI; + +[GenerateTypedNameReferences] +public sealed partial class AccessLevelControl : GridContainer +{ + public readonly Dictionary, Button> ButtonsList = new(); + + public AccessLevelControl() + { + RobustXamlLoader.Load(this); + } + + public void Populate(List> accessLevels, IPrototypeManager prototypeManager) + { + foreach (var access in accessLevels) + { + if (!prototypeManager.TryIndex(access, out var accessLevel)) + { + Logger.Error($"Unable to find accesslevel for {access}"); + continue; + } + + var newButton = new Button + { + Text = accessLevel.GetAccessLevelName(), + ToggleMode = true, + }; + AddChild(newButton); + ButtonsList.Add(accessLevel.ID, newButton); + } + } + + public void UpdateState( + List> pressedList, + List>? enabledList = null) + { + foreach (var (accessName, button) in ButtonsList) + { + button.Pressed = pressedList.Contains(accessName); + button.Disabled = !(enabledList?.Contains(accessName) ?? true); + } + } +} diff --git a/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs b/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs index 0c23542f79..c1b63dc4d0 100644 --- a/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs +++ b/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs @@ -64,7 +64,7 @@ namespace Content.Client.Access.UI _window?.UpdateState(castState); } - public void SubmitData(List newAccessList) + public void SubmitData(List> newAccessList) { SendMessage(new WriteToTargetAccessReaderIdMessage(newAccessList)); } diff --git a/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs b/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs index 2fd0057121..6025c3b551 100644 --- a/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs +++ b/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs @@ -16,7 +16,6 @@ namespace Content.Client.Access.UI [Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - private readonly ISawmill _logMill = default!; private readonly AccessOverriderBoundUserInterface _owner; private readonly Dictionary _accessButtons = new(); @@ -25,7 +24,7 @@ namespace Content.Client.Access.UI { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); - _logMill = _logManager.GetSawmill(SharedAccessOverriderSystem.Sawmill); + var logMill = _logManager.GetSawmill(SharedAccessOverriderSystem.Sawmill); _owner = owner; @@ -33,13 +32,13 @@ namespace Content.Client.Access.UI { if (!prototypeManager.TryIndex(access, out var accessLevel)) { - _logMill.Error($"Unable to find accesslevel for {access}"); + logMill.Error($"Unable to find accesslevel for {access}"); continue; } var newButton = new Button { - Text = GetAccessLevelName(accessLevel), + Text = accessLevel.GetAccessLevelName(), ToggleMode = true, }; @@ -49,14 +48,6 @@ namespace Content.Client.Access.UI } } - private static string GetAccessLevelName(AccessLevelPrototype prototype) - { - if (prototype.Name is { } name) - return Loc.GetString(name); - - return prototype.ID; - } - public void UpdateState(AccessOverriderBoundUserInterfaceState state) { PrivilegedIdLabel.Text = state.PrivilegedIdName; @@ -105,7 +96,7 @@ namespace Content.Client.Access.UI _owner.SubmitData( // Iterate over the buttons dictionary, filter by `Pressed`, only get key from the key/value pair - _accessButtons.Where(x => x.Value.Pressed).Select(x => x.Key).ToList()); + _accessButtons.Where(x => x.Value.Pressed).Select(x => new ProtoId(x.Key)).ToList()); } } } diff --git a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs index 898792aa03..5b7011c195 100644 --- a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs +++ b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs @@ -1,5 +1,6 @@ using Content.Shared.Access; using Content.Shared.Access.Components; +using Content.Shared.Access; using Content.Shared.Access.Systems; using Content.Shared.Containers.ItemSlots; using Content.Shared.CrewManifest; @@ -28,7 +29,6 @@ namespace Content.Client.Access.UI if (EntMan.TryGetComponent(Owner, out var idCard)) { accessLevels = idCard.AccessLevels; - accessLevels.Sort(); } else { @@ -65,7 +65,7 @@ namespace Content.Client.Access.UI _window?.UpdateState(castState); } - public void SubmitData(string newFullName, string newJobTitle, List newAccessList, string newJobPrototype) + public void SubmitData(string newFullName, string newJobTitle, List> newAccessList, string newJobPrototype) { if (newFullName.Length > MaxFullNameLength) newFullName = newFullName[..MaxFullNameLength]; diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.xaml b/Content.Client/Access/UI/IdCardConsoleWindow.xaml index c29adc8ebd..a2f5f3382b 100644 --- a/Content.Client/Access/UI/IdCardConsoleWindow.xaml +++ b/Content.Client/Access/UI/IdCardConsoleWindow.xaml @@ -30,10 +30,6 @@