From ee70af6e1cc9fceea8ddaddb95b445216563d142 Mon Sep 17 00:00:00 2001 From: AwareFoxy <135021509+AwareFoxy@users.noreply.github.com> Date: Thu, 5 Dec 2024 19:04:41 +0100 Subject: [PATCH] Upstream #2 (#122) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * changed from tag to material and added icon for capacitor * changed capacitor yaml for substation and memory cell * added Derelict Cyborgs with basic functionality. * minor changes to the Derelict Cyborg * Added Derelict Cyborg midround event. * Fixed accidental removal of something from a meta.json file. * Split part of IonStormRule into IonStormSystem. Added StartIonStormed which also uses IonStormSystem. Added StartIonStormedComponent. Changed stuff related to the Derelict Cyborg. Derelict Cyborg now spawns with a randomized lawset. * Derelict Cyborgs are now very likely to be affected by ion storms. * Minor alterations to the Derelict Cyborg and its ghostrole description * Update Resources/Prototypes/Entities/Mobs/Player/silicon.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Prototypes/Entities/Mobs/Player/silicon.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Textures/Mobs/Silicon/chassis.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Content.Server/Silicons/Laws/StartIonStormedSystem.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Cleaned up a bit of the Derelict Cyborg code. * moved a bit of IonStorm code elsewhere * changed almost nothing * Small changes - hopefully good ones. * changed very minor stuff with no gameplay alterations. * added a code summary * Derelict cyborg minor yaml changes. * Changes IonStorm related code with no gameplay changes. * Fixed IonStorms sometimes affecting the laws of the current AI and future Cyborgs and AI's, including those in subsequent rounds. * Changed DerelictCyborgSpawn event's frequency from 6 to 5, even though i didn't want to. * Removed 1 line of whitespace. * removed whitespace * Derelict Cyborg no longer appears on the endround 'Game Information' screen. It still appears in the Player Manifest. * minor Derelict Cyborg code changes. * remove whitespace. * Fixed cyborgs with the StartIonStormedComponent (which is just the Derelict Cyborg right now) not showing up as 'antag' in the admin player overlay. * Fix comments in StartIonStormedComponent.cs * Add no damage phrase and logic * Fixed minor spelling mistake * Optimization! * Database SnakeCaseNaming fixes Fixes formatting of owned entity type property names. These are normally named "FooBar_Baz" by EF Core, but the snake case thing was turning them into "foo_bar__baz". The double underscore is now fixed. We don't *yet* have any EF Core owned entity in use, but I am planning to add one. I don't know if downstreams are using any so this should still be marked as a breaking change. Also fixed it creating and dropping a Compiled Regex instance for every name, the regex is now cached (and pregenerated). * Integrate Modern HWID into content This should be the primary changes for the future-proof "Modern HWID" system implemented into Robust and the auth server. HWIDs in the database have been given an additional column representing their version, legacy or modern. This is implemented via an EF Core owned entity. By manually setting the column name of the main value column, we can keep DB compatibility and the migration is just adding some type columns. This new HWID type has to be plumbed through everywhere, resulting in some breaking changes for the DB layer and such. New bans and player records are placed with the new modern HWID. Old bans are still checked against legacy HWIDs. Modern HWIDs are presented with a "V2-" prefix to admins, to allow distinguishing them. This is also integrated into the parsing logic for placing new bans. There's also some code cleanup to reduce copy pasting around the place from my changes. Requires latest engine to support ImmutableArray in NetSerializer. * derelictn't (for now) * guh * derelicn't for real * progress * Yippee! * slash * epic empty commit * or was it * S: Awaiting Changes * Temporarily make singularity a bit harder to loose as non-antag * Fix Fluent string ID copypaste fail * Fix the component defaults * Changes + Cleanup * Reduced cost of coloured light fixtures * Bump the failsafe timer down * Increase softcap back to 80 (#33400) * Toggle clothing fix (#32826) * toggle clothing fix * some adding * Automatic changelog update * .NET 9 forward compatibility changes (#33421) This doesn't switch the projects over to .NET 9, but it does make them work on .NET 9 when we decide to switch in the future. * Fix security riot crate (#33415) * move riot crate from security to armory category * Move riot crate to armory, actually make it require armory access to unlock * Localize planet dataset names (#33398) * Localize planet names (borer) * DatasetPrototype -> LocalizedDatasetPrototype * Apply requested changes * Automatic changelog update * Remove drag & drop dropping items from containers (#32706) * Initial commit * Update based on maintainer discussion * Forgot to remove this woops * Automatic changelog update * Automatically add "Approved" to maintainer PRs (#33337) * Add an Approved labeler for maintainer PRs * Be extra safe with conditions * Crew monitoring crate updated to contain flatpacks, science access instead of engi (#33417) * Make a crew monitoring crate with flatpacks * fix image * migration * Automatic changelog update * Add emag functionality * Move some of the new singularity code into shared Hopefully without explosions yay * Fix toggle verbs (#32138) First commit Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Construction menu grid view (#32577) * button * implement populate grid view * tweak min width * Make grid button toggle visible * tweak min window size * fix missing recipe button when mirroring item * make grid buttons toggleable * align button texture vertically * selected grid item has plain color background * tweak window width so all buttons look good * rename select method, defer colouring * get icon better * whoops * simpler button toggle * spritesys frame0, move spritesys * delete old sprite system refs * Automatic changelog update * Automatic changelog update * Automatic changelog update * Actually make the emagging popup work properly * Move PlayerBeforeSpawnEvent and PlayerSpawnCompleteEvent to Shared * Fix imports * Automatic changelog update * Automatic changelog update * Automatic changelog update * Set airlock unlit layers as invisible (#32484) Doesn't really affect anything due to appearance bulldozing this but this aligns with their actual normal states so. * Update salvage.yml * Update cargo_vending.yml * Update salvage.yml * Update salvage.yml * Update to Robust v237.2.0 * Syndicate item fix ups (#33435) tweaks and fixes * Coal presents and chrimmas tree options. Presents no longer itemify (#33147) * Dont ensure ItemComp because it could lead to weirds, and also PickupOrDrop handles non-items already. * presents and tree * woops * reviews a * Automatic changelog update * Fix approval labeler (#33440) * Fix approval labeler * Update labeler-review.yml * Update labeler-review.yml * electrification hud * Fix admin ghosts not being able to see items in pockets or interact with them (#31076) * Fix admin ghosts not being able to see items in pouches or interact with them * fix * oops --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Automatic changelog update * Gas pipe sensors (#33128) * Initial commit * Monitored pipe node is now referenced by name * Review changes * Simplified construction * Tweaked deconstruction to match other binary atmos devices * Helper function removal * Updated attribution * Automatic changelog update * Add telegram to the server info-links (#33459) * Fix sandbox error with new HWID code. (#33461) Oops * cleanup * rename * another rename * baby proof the terminal (#33281) * baby proof the terminal * Make a couple exceptions for items that you might take with you. * alwayspoweredlights * Uncuttable cables since cablecomp is a snowflake construction system * chairs and vendors * rerun heisentests * rerun tests again * Automatic changelog update * Automatic changelog update * Automatic changelog update * Disable submit admin note button on switch to note (#33456) Co-authored-by: Winkarst <74284083+Winkarst-cpu@users.noreply.github.co> * Automatic changelog update * Fix startingGear storage (#33394) * fix starting gear storage * removal of unused --------- Co-authored-by: MetalSage * Minor improvements & fixes to Shuttle Console UI (#31623) * Fix grids and docks being culled from display prematurely * Fix inconsistent disabling of "Undock" buttons * Add a radar icon to indicate where the controlling console is * Tidy up math Remove lots of sketchy transforms-of-transforms, which should have been as single matrix multiply. Assign proper names to matrices. Remove some redundant calculations. * Feedback * Fix door animations mispredicting if closing is interrupted (#33481) * Fix door animations mispredicting if closing is interrupted On master it will flicker states a little bit partially due to it not being predicted. Instead we'll just set it straight back to opening (no animation is ever played anyway). * no log * Automatic changelog update * Don't show drag-drop outline if climbing (#33477) It won't actually do anything. * Automatic changelog update * Ensure wires can always be cut (#32447) ensure wires are always cut * Automatic changelog update * babyproof arrivals shuttle (#33284) * babyproof arrivals shuttle * always powered lights * uncuttable cables from terminal PR. --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Automatic changelog update * Add delay to AutoOrient (#33479) It functions identically to how V1 of orientation worked and it's incredibly annoying. * Automatic changelog update * Update Credits (#33503) Co-authored-by: PJBot * Draw muzzle flash below mobs (#33465) * Draw muzzle flash below mobs * Better naming --------- Co-authored-by: Winkarst <74284083+Winkarst-cpu@users.noreply.github.co> * Automatic changelog update * Allow shuttles on planets to make FTL jump (#33507) This check conflicts with an attempt to FTL from the planet before expedition ends * Automatic changelog update * fix exped caves generation (#32890) Co-authored-by: deltanedas <@deltanedas:kde.org> * Automatic changelog update * various material & ore inhands (#33342) * begin * bones + pyrotten + goliath hide inhands * Update Resources/Prototypes/Entities/Objects/Materials/materials.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Textures/Objects/Materials/materials.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Textures/Objects/Materials/materials.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Textures/Objects/Materials/materials.rsi/meta.json Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * pyrottOn --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Delete HOS headset from warden's locker (#33234) * add headset * Add icons * Meta change * fix * Revert + delete headset from locker * fix airlocks inconsistently auto-closing after unbolting (#33524) fix door auto close timer * Automatic changelog update * baby proof the terminal (#33281) * baby proof the terminal * Make a couple exceptions for items that you might take with you. * alwayspoweredlights * Uncuttable cables since cablecomp is a snowflake construction system * chairs and vendors * rerun heisentests * rerun tests again * babyproof arrivals shuttle (#33284) * babyproof arrivals shuttle * always powered lights * uncuttable cables from terminal PR. --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * [BUGFIX] "Ghost" in the lobby lets you see the whole chat (#33529) * fix bug, in ghost command lobby * fix * Fix build * Automatic changelog update * removed obsolete netmessage creator (#33542) removed opsolete netmessage createor * Fix RA0003 warning for ChatBox (#33531) * Shark plushies now goes rawr on hit. (#33540) Shark goes rawr more * Automatic changelog update * Turn off PointLights on VendingMachines when broken or off. (#33513) The light itself should already turn off due to `LitOnPowered` component, but the broken state of a VendingMachine did not. Fixes #33382 * Automatic changelog update * Adds more diona names (#33066) * adds more diona names * more stuff * AHHHHHHHHHHHHHHHHHHHHHHH * further additions * removes depression + adds comment * fixes + remove some weird stuff + more stuff * remove haste * minor AI cleanup (#33555) * minor cleanup * to * Simplify separated screen top menu (#33047) * Automatic changelog update * Ghost role drop-down alignment (#33397) * dropdown shares margin width with children * removed dependency that rider added for some reason * reduced vertical margin from 8 to 2 * Greytide Virus station event (#33547) * proof of concept * full implementation * I commited a crime * t * min players increase * Make shuttle airlocks not snapcardinals (#33557) * Make shuttle airlocks not snapcardinals * Update Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Update Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --------- Co-authored-by: Winkarst <74284083+Winkarst-cpu@users.noreply.github.co> Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Automatic changelog update * Added two N2 lockers to Reach (#33409) Co-authored-by: dylanstrategie <188926747+dylanstrategie@users.noreply.github.com~> * Hotfix the randomly occurring DeleteAllThenGhost test failures (#33582) * clear mindrole on component shutdown * let it go * Fix space ambient music (#33594) * Automatic changelog update * Fix windoor and high security door not showing electrocution HUD (#33551) * Automatic changelog update * Removes burnt tiles (#33422) remove burnt tiles * Added Oppenhopper poster to the game. (#33588) * o7 * - * oppenhopper v2 * Update Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml * Update Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Fix version for electril_grill meta.json (#33611) fix fixing the version thing in meta json for electril grill textures Co-authored-by: Arthur Kustenko * Fix gauze eyepatch flying pixel (#33564) boo * Fix swapped uniform printer east/west sprites (#33442) Fix uniform printer sprites rotating the wrong way * Makes knives fly straight when thrown (#33615) Gives knives a thrown angle * Light verb is now predicted (#33622) Fix * Automatic changelog update * Update `Content.PatreonParser` to use `net8.0` `TargetFramework` (#33559) Update Content.PatreonParse to use net8.0 targetframework * Approval labeler fix electric boogaloo (#33633) Nik told me to not name this "nya" * Fix gender, maybe (#33631) Co-authored-by: Alpha-Two * Display GPS coordinates on their own line (#33625) * Automatic changelog update * Remove grasshopper from the panic bunker message (#33638) Can be retargetted to stable if preferred, which will then be a hotfix * Add admin log for ghost warping (#33636) * Automatic changelog update * Rename nitrogen internals crate (#33545) * rename nitrogen internals crate * nitrogen internals crate description * migrate CrateNitrogenInternals ID * Automatic changelog update * Cleanup some Client atmos systems (#33634) * Cleanup `ScrubberControl.xaml.cs` * Minor cleanups * Another pile of minor cleanups * Apply requested changes * Rename "which" into "bound". Add whitespace after "if" * Fix for arrivals deleting nuke (#33659) Adds FTLSmashImmune to nuke prototype to stop it from arrival smashing Adds a comment in FasterThanLight to indicate where the FTLSmashImmuneComponent is checked Co-authored-by: aa5g21 * Automatic changelog update * add locale to Shuttle Console Map tab (#33651) fixed * Automatic changelog update * fix PermanentBlindnessComponent to be not so permanent (#33292) * adjust min blindness back to 0 when PermanentBlindnessComponent is removed * mapinit changes * remove OnRemove, move changes to OnShutdown * goodbye event * dependency removal * final adjustment --------- Co-authored-by: lunarcomets * Cog/Marathon: Airlock fixes (#33621) * Fixes the TEG airlock on marathon * Fixes the atmos external airlock on cog * Automatic changelog update * Fix for handcuffing someone more than once (#33646) * Fix for over-cuffing someone * comment * Automatic changelog update * Fix for inspecting entities in hand (#33642) Actually inspect entity in hands * Automatic changelog update * Fix for inspecting entities in the stripping window (#33644) Handle it * Automatic changelog update * Fix borgs not getting names on roundstart (#33578) * Fix borgs not getting names on roundstart * Glory to the NT * Allow riggable to take in multiple reagents * Revert --------- Co-authored-by: Winkarst <74284083+Winkarst-cpu@users.noreply.github.co> * Automatic changelog update * Require Wield To Activate Double-bladed ESword (#32869) * Add MeleeRequiresWield component * Prevent world activation * Automatic changelog update * Fix makeghostroleraffle command where 4 arguments (#31836) Fix makeghostroleraffle command with 4 arguments * Automatic changelog update * Update Credits (#33670) Co-authored-by: PJBot * Fix formatting IDE0055 warnings in VS Code (#33669) * Replace obsolete GetTilesIntersecting methods (#32455) * Remove usage of obsolete GetTilesIntersecting round 1 * Oop wrong uids * Remove usage of obsolete GetLocalTilesIntersecting round 2 * Remove usage of obsolete GetLocalTilesIntersecting final round * weh * Fix using `SharedMapSystem` in `StencilOverlay` * Update Snowasis (#33364) * Update Snowasis * Appease test gods * Woops had the leftward animation backwards. Fixed. * add santa suits and envelopes to chapel * It looks worse unscaled but whatever. * fix ghost role * examines * Automatic changelog update * Fix wrong system usage (#33679) Fix wrong system using * Fix BuckleSystem always marking InteractHandEvent as Handled (#33602) * Add check before marking event as handled * Update Content.Shared/Buckle/SharedBuckleSystem.Interaction.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Cleanup --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Automatic changelog update * Touching up Bagel Security Brig (#33680) * Touching up Bagel Security Brig * Added a few missing door names * Last door name I promise * Address feedback * Forgot to delete old shutter button --------- Co-authored-by: dylanstrategie <188926747+dylanstrategie@users.noreply.github.com~> * [Maps] Tushkan update #3 — Winter (#2826) * Map pool tweak (#2827) * Fixed ghost role rules for some syndicate familiars (#32457) * fix ghost role rules for some syndicate familiars * change from monkey rules to Team Antag rules. * Resolve reviews + Fix rules for LoneOp and Xenos * ghostrole rules --------- Co-authored-by: JIPDawg Co-authored-by: Errant <35878406+Errant-4@users.noreply.github.com> * Automatic changelog update * Fix lobby countdown not showing hours (#33685) * New Low-Mid Pop Station - Amber Station (#33441) * Initial Commit with two departments done * Checkpointing work * Added most of service and science * Started work on medbay * Modified TEG setup and set up atmos pipes for engineering * Re-added medbay, added chapel and janitorial, started routing disposals and generally the final layout of the map is coming together * Plenty of additions, too many to list in a commit message * Major update * Nearly done with the map, just have to do decals and emergency lights * Added all decals, only thing missing is department signs * Toned back the dirt decals a bunch, added hallway signs and other decorations * Finishing touches on the map before testing. * Fixed invalids * Renamed the station to Amber, and made a couple adjustments * Completely redid cargo, added maints around sec * Added Amber to the map post init integration test * Many small updates addressing issues. * Ran a script to update all the camera names, also ran fixgridatmos, fixrotations, tilewalls, and variantize * Started addressing some of the issues brough up by Emisse and others * Addressed all issues mentioned by reviewers. Added mail system. * Wrapped up meeting all the issues raised by reviewers, also did a bunch of testing and resolved issues found during those tests * Addressed additional requested changes, and nabbed some ship designs from Frontier. Redesigned south east maints and surrounding meteor nets based off of those designs * Making a couple more requested changes * Reduced the amount of Nitrogen Closets, made several small adjustments. Ready for review again! * Removed invalids! * web edit lmao --------- Co-authored-by: Emisse <99158783+Emisse@users.noreply.github.com> * Automatic changelog update * Makes kukri not use combat knife's storage sprite (#33661) * Adds a morgue locked maints airlock (#33693) Co-authored-by: Velcroboy * Juiceable slimeballs (#33660) adds extractable component to slimeball prototype * Add missing nacho recipes (#33637) * Nacho recipes, nutrition, and trash In meal_recipes.yml: Add recipes for Nachos, Cheesy Nachos, and Cuban Nachos. In meals.yml: Add a solutions container to regular nachos so it lines up with the others, and add a small plate as trash to each one. * Volumes, nutritional tweaks, and flavor In meals.yml: Lowered maxVol on nachos to leave 5 units of space. Nachos nutriment and vitamin lowered for costing so little. A cheese wedge is 3.75 nutriment, so cheesy having 4 more total nutritional value lines up nicely to me. Cuban nachos had too little volume to fit its reagents in the first place, so increased maxVol by 10. Chili peppers are 4 nutri / 4 vitamin and ketchup has a touch of tomato, so bumped to 8 and 5. Capsaicin lowered partly to make it an even 20u. Ketchup dilutes I guess. Also they don't have cheese so I changed the flavor profile to tomato instead. In meal_recipes.yml: Cuban Nachos recipe tweaked to require one less pepper. Given above numbers, this fits the nutritional value imo. * Automatic changelog update * Amber Station Seasonal Update (#33698) Made some modifications requested by reviewers prior to and after map merge, also added holiday decorations! * [Maps] Pilgrim update #8 & Silly tweak (#2828) * Amber Improvements (#33707) * Various changes (see PR) * variantized, fixedgridatmos, tiledwalls * Fix sinks and toilets not draining (#33691) * Fix AutoDrain Per the system comments, AutoDrain is designed to automatically move puddles into the drain (like a floor drain). Drains without AutoDrain are still supposed to gradually empty the buffer, but not remove puddles (like sinks and toilets). However, a logic error in the original implementation causes drains with AutoDrain set to false to simply not work. Hence sinks never emptied. * Update documentation * Automatic changelog update * Fix layout on wires UI (#33714) Layout would break for machines with >6 lights because the column count was hardcoded. Uncap the UI width and fix the rows count instead. Lights with less than 4 characters of text weren't aligned right, now they are. * Automatic changelog update * Fix for towels not having a cooldown for cleaning (#33700) Added a delay to cleaning with the towel * Add cooldown to buttons in borg's laws UI (#31490) * Adds Store on Collide and Wand of the Locker (#33710) * Adds wand of locker and locker projectile * Adds IsOpen method to check if storage is open * Adds store on collide * Adds Store On Collide to Wizard Locker * Adds Lock API * Adds locking support * Adds resist override and custom visual layers * Fixes decursed states, adds comment for a future visualizer * adds locker wand visuals and descriptions * shrinks locker radius, moves TODO for throw support * Adds whitelist and moves storage and lock logic into their own methods * Adds support to disable store on collide after the first open. Fixes prediction issues with disabling. * Adds wand of locker to the grimoire * Adds wizard access prototype * Adds Wizard to universal access * Moves Lock on collide to on collide method * Comments * Changes layer order * Fixes prediction issues when locking. * Adds Wiz access to universal ID * Automatic changelog update * Update locale * Fix upstream --------- Co-authored-by: TheWaffleJesus <106146578+TheWaffleJesus@users.noreply.github.com> Co-authored-by: The Canned One Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Co-authored-by: Preston Smith Co-authored-by: Justice League Co-authored-by: Pieter-Jan Briers Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: ScarKy0 Co-authored-by: Saphire Co-authored-by: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com> Co-authored-by: ArZarLordOfMango <96249677+ArZarLordOfMango@users.noreply.github.com> Co-authored-by: PJBot Co-authored-by: Plykiya <58439124+Plykiya@users.noreply.github.com> Co-authored-by: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Co-authored-by: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Co-authored-by: SlamBamActionman Co-authored-by: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Co-authored-by: DrSmugleaf Co-authored-by: MissKay1994 <15877268+MissKay1994@users.noreply.github.com> Co-authored-by: ThatGuyUSA Co-authored-by: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Co-authored-by: Vasilis Co-authored-by: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Co-authored-by: c4llv07e Co-authored-by: Winkarst <74284083+Winkarst-cpu@users.noreply.github.com> Co-authored-by: Winkarst <74284083+Winkarst-cpu@users.noreply.github.co> Co-authored-by: MetalSage <74924875+MetalSage@users.noreply.github.com> Co-authored-by: MetalSage Co-authored-by: eoineoineoin Co-authored-by: goet <6637097+goet@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: mubururu_ <139181059+muburu@users.noreply.github.com> Co-authored-by: kosticia Co-authored-by: Schrödinger <132720404+Schrodinger71@users.noreply.github.com> Co-authored-by: Errant <35878406+Errant-4@users.noreply.github.com> Co-authored-by: Ben Co-authored-by: Nikolai Korolev Co-authored-by: Minemoder5000 Co-authored-by: Niels Huylebroeck Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com> Co-authored-by: Intoxicating-Innocence <188202277+Intoxicating-Innocence@users.noreply.github.com> Co-authored-by: dylanstrategie <188926747+dylanstrategie@users.noreply.github.com> Co-authored-by: dylanstrategie <188926747+dylanstrategie@users.noreply.github.com~> Co-authored-by: AlexUm <159550239+AlexUm418@users.noreply.github.com> Co-authored-by: Arthur Kustenko Co-authored-by: Mifia Co-authored-by: SpaceManiac Co-authored-by: SpaceRox1244 <138547931+SpaceRox1244@users.noreply.github.com> Co-authored-by: Alpha-Two <92269094+Alpha-Two@users.noreply.github.com> Co-authored-by: Alpha-Two Co-authored-by: Alice "Arimah" Heurlin <30327355+arimah@users.noreply.github.com> Co-authored-by: MossyGreySlope Co-authored-by: Gansu <68031780+GansuLalan@users.noreply.github.com> Co-authored-by: aa5g21 Co-authored-by: VideoKompany <135313844+VlaDOS1408@users.noreply.github.com> Co-authored-by: lunarcomets <140772713+lunarcomets@users.noreply.github.com> Co-authored-by: lunarcomets Co-authored-by: compilatron <40789662+jbox144@users.noreply.github.com> Co-authored-by: Preston Smith <92108534+thetolbean@users.noreply.github.com> Co-authored-by: Token <56667933+TokenStyle@users.noreply.github.com> Co-authored-by: Nikolai Korolev Co-authored-by: Ko4ergaPunk <62609550+Ko4ergaPunk@users.noreply.github.com> Co-authored-by: JIPDawg <51352440+JIPDawg@users.noreply.github.com> Co-authored-by: JIPDawg Co-authored-by: Southbridge <7013162+southbridge-fur@users.noreply.github.com> Co-authored-by: Emisse <99158783+Emisse@users.noreply.github.com> Co-authored-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com> Co-authored-by: Velcroboy Co-authored-by: Luiz Costa <33888056+luizwritescode@users.noreply.github.com> Co-authored-by: CheddaCheez Co-authored-by: Partmedia Co-authored-by: Tap Co-authored-by: Hreno Co-authored-by: keronshb <54602815+keronshb@users.noreply.github.com> Co-authored-by: Morb0 <14136326+Morb0@users.noreply.github.com> --- .github/workflows/labeler-review.yml | 23 + Content.Client/Actions/ActionsSystem.cs | 12 +- .../UI/BanPanel/BanPanel.xaml.cs | 11 +- .../Administration/UI/Notes/NoteEdit.xaml.cs | 1 + .../Components/PipeColorVisualsComponent.cs | 6 +- .../Consoles/AtmosAlarmEntryContainer.xaml | 3 +- .../Consoles/AtmosAlarmEntryContainer.xaml.cs | 11 +- .../AtmosAlertsComputerBoundUserInterface.cs | 5 - .../Consoles/AtmosAlertsComputerWindow.xaml | 1 - .../AtmosPipeAppearanceSystem.cs | 7 +- .../Monitor/AtmosAlarmableVisualsSystem.cs | 9 +- .../Monitor/UI/AirAlarmBoundUserInterface.cs | 7 +- .../Atmos/Monitor/UI/AirAlarmWindow.xaml.cs | 21 +- .../Monitor/UI/Widgets/PumpControl.xaml.cs | 8 +- .../UI/Widgets/ScrubberControl.xaml.cs | 10 +- .../Monitor/UI/Widgets/SensorInfo.xaml.cs | 13 +- .../UI/Widgets/ThresholdBoundControl.xaml.cs | 3 - .../UI/Widgets/ThresholdControl.xaml.cs | 33 +- .../Atmos/Overlays/AtmosDebugOverlay.cs | 26 +- .../FlippableClothingVisualizerSystem.cs | 2 +- .../Construction/UI/ConstructionMenu.xaml | 13 +- .../Construction/UI/ConstructionMenu.xaml.cs | 17 +- .../UI/ConstructionMenuPresenter.cs | 102 +- .../ElectrocutionHUDVisualizerSystem.cs | 95 + Content.Client/Eui/BaseEui.cs | 2 +- Content.Client/Info/LinkBanner.cs | 1 + .../Inventory/StrippableBoundUserInterface.cs | 15 +- Content.Client/Light/HandheldLightSystem.cs | 16 + Content.Client/Lobby/LobbyState.cs | 6 +- .../Overlays/StencilOverlay.Weather.cs | 2 +- Content.Client/Overlays/StencilOverlay.cs | 4 +- .../Overlays/StencilOverlaySystem.cs | 3 +- .../Shuttles/UI/BaseShuttleControl.xaml.cs | 13 +- Content.Client/Shuttles/UI/NavScreen.xaml.cs | 7 + .../Shuttles/UI/ShuttleConsoleWindow.xaml.cs | 1 + .../Shuttles/UI/ShuttleDockControl.xaml.cs | 74 +- .../Shuttles/UI/ShuttleNavControl.xaml.cs | 100 +- .../Silicons/Laws/Ui/LawDisplay.xaml.cs | 23 + .../Singularity/Systems/EventHorizonSystem.cs | 2 +- .../Systems/SingularityGeneratorSystem.cs | 12 + .../Singularity/Systems/SingularitySystem.cs | 2 +- .../Systems/Chat/Widgets/ChatBox.xaml.cs | 3 +- .../Controls/Roles/GhostRolesWindow.xaml.cs | 1 + .../Systems/Hands/HandsUIController.cs | 5 + .../MenuBar/Widgets/GameTopMenuBar.xaml | 29 +- .../Systems/Storage/StorageUIController.cs | 6 - Content.Client/Wires/UI/WiresMenu.cs | 8 +- .../Tests/Commands/PardonCommand.cs | 24 +- .../Tests/PostMapInitTest.cs | 3 +- .../Content.PatreonParser.csproj | 2 +- .../20241111170112_ModernHwid.Designer.cs | 2072 + .../Postgres/20241111170112_ModernHwid.cs | 62 + ...20241111193608_ConnectionTrust.Designer.cs | 2076 + .../20241111193608_ConnectionTrust.cs | 29 + .../PostgresServerDbContextModelSnapshot.cs | 162 +- .../20241111170107_ModernHwid.Designer.cs | 1995 + .../Sqlite/20241111170107_ModernHwid.cs | 62 + ...20241111193602_ConnectionTrust.Designer.cs | 1999 + .../Sqlite/20241111193602_ConnectionTrust.cs | 29 + .../SqliteServerDbContextModelSnapshot.cs | 161 +- Content.Server.Database/Model.cs | 88 +- Content.Server.Database/SnakeCaseNaming.cs | 40 +- .../Administration/BanList/BanListEui.cs | 8 +- Content.Server/Administration/BanPanelEui.cs | 10 +- .../Administration/Commands/BanListCommand.cs | 2 +- .../Commands/RoleBanListCommand.cs | 2 +- .../Administration/Managers/BanManager.cs | 12 +- .../Administration/Managers/IBanManager.cs | 4 +- .../Administration/PlayerLocator.cs | 99 +- .../Administration/PlayerPanelEui.cs | 4 +- .../Administration/Systems/BwoinkSystem.cs | 2 +- .../Announcements/AnnounceCommand.cs | 3 +- .../Effects/GasProducerAnomalySystem.cs | 8 +- .../Components/AtmosMonitorComponent.cs | 19 +- .../Monitor/Systems/AtmosMonitoringSystem.cs | 17 +- .../Bed/Cryostorage/CryostorageSystem.cs | 4 +- Content.Server/Cargo/Systems/PricingSystem.cs | 2 +- .../Connection/ConnectionManager.cs | 13 +- Content.Server/Connection/UserDataExt.cs | 24 + Content.Server/Database/BanMatcher.cs | 33 +- Content.Server/Database/DatabaseRecords.cs | 3 +- Content.Server/Database/ServerBanDef.cs | 5 +- Content.Server/Database/ServerDbBase.cs | 24 +- Content.Server/Database/ServerDbManager.cs | 35 +- Content.Server/Database/ServerDbPostgres.cs | 124 +- Content.Server/Database/ServerDbSqlite.cs | 55 +- Content.Server/Database/ServerRoleBanDef.cs | 5 +- Content.Server/Dragon/DragonSystem.cs | 3 +- .../Electrocution/ElectrocutionSystem.cs | 15 +- .../Fluids/EntitySystems/DrainSystem.cs | 62 +- .../GameTicking/GameTicker.Spawning.cs | 69 +- .../GameTicking/Rules/DeathMatchRuleSystem.cs | 1 + .../Gateway/Systems/GatewayGeneratorSystem.cs | 7 +- Content.Server/Ghost/GhostCommand.cs | 10 + Content.Server/Ghost/GhostSystem.cs | 7 +- .../Roles/MakeRaffledGhostRoleCommand.cs | 6 +- .../Holiday/Christmas/RandomGiftSystem.cs | 1 - .../EntitySystems/HandheldLightSystem.cs | 24 +- .../Medical/SuitSensors/SuitSensorSystem.cs | 5 +- .../Pathfinding/PathfindingSystem.Breadth.cs | 4 +- .../Pathfinding/PathfindingSystem.Splines.cs | 2 +- .../Pathfinding/PathfindingSystem.Widen.cs | 2 +- Content.Server/Nuke/NukeSystem.cs | 3 +- .../Power/Components/CableComponent.cs | 5 +- .../Power/EntitySystems/CableSystem.cs | 5 +- Content.Server/Power/PowerWireAction.cs | 10 +- .../DungeonJob/DungeonJob.PostGenWallMount.cs | 6 +- .../Respawn/SpecialRespawnSystem.cs | 5 +- .../EntitySystems/RevenantSystem.Abilities.cs | 9 +- .../SalvageSystem.ExpeditionConsole.cs | 2 +- .../Salvage/SpawnSalvageMissionJob.cs | 6 +- .../ServerInfo/ServerInfoManager.cs | 11 +- .../Shuttles/Components/GridSpawnComponent.cs | 6 +- .../Shuttles/Systems/ArrivalsSystem.cs | 2 +- .../Systems/ShuttleSystem.FasterThanLight.cs | 7 +- .../Systems/ShuttleSystem.GridFill.cs | 2 +- .../Shuttles/Systems/ShuttleSystem.cs | 2 + .../Silicons/Laws/IonStormSystem.cs | 280 + .../Silicons/Laws/SiliconLawSystem.cs | 73 +- .../SingularityGeneratorComponent.cs | 33 - .../EntitySystems/EventHorizonSystem.cs | 2 +- .../SingularityGeneratorSystem.cs | 83 +- .../Components/GreytideVirusComponent.cs | 38 + .../StationEvents/Events/GreytideVirusRule.cs | 96 + .../StationEvents/Events/IonStormRule.cs | 264 +- .../Systems/StationRecordsSystem.cs | 3 +- Content.Server/Traits/TraitSystem.cs | 3 +- .../VendingMachines/VendingMachineSystem.cs | 7 + Content.Server/Wires/ComponentWireAction.cs | 5 +- .../Effects/Systems/ThrowArtifactSystem.cs | 8 +- Content.Shared.Database/LogType.cs | 6 +- Content.Shared.Database/TypedHwid.cs | 64 + .../Administration/BanPanelEuiState.cs | 4 +- Content.Shared/Anomaly/SharedAnomalySystem.cs | 8 +- .../Buckle/SharedBuckleSystem.Interaction.cs | 3 +- Content.Shared/CCVar/CCVars.Game.Infolinks.cs | 6 + Content.Shared/CCVar/CCVars.Shuttle.cs | 6 + .../Chemistry/Events/HyposprayEvents.cs | 4 +- .../Climbing/Systems/ClimbSystem.cs | 4 + .../Components/ToggleClothingComponent.cs | 6 + .../EntitySystems/ToggleClothingSystem.cs | 4 + Content.Shared/Cuffs/SharedCuffableSystem.cs | 6 + .../Damage/Systems/DamageExamineSystem.cs | 6 + .../Doors/Components/DoorComponent.cs | 2 +- Content.Shared/Doors/DoorEvents.cs | 13 + .../Doors/Systems/SharedAirlockSystem.cs | 10 +- .../Doors/Systems/SharedDoorSystem.Bolts.cs | 4 + .../Doors/Systems/SharedDoorSystem.cs | 29 +- Content.Shared/DrawDepth/DrawDepth.cs | 23 +- .../ElectrocutionHUDVisualsComponent.cs | 7 + .../ShowElectrocutionHUDComponent.cs | 9 + .../Electrocution/SharedElectrocution.cs | 6 +- .../SharedElectrocutionSystem.cs | 15 + Content.Shared/Emag/Systems/EmagSystem.cs | 7 + .../Fluids/Components/DrainComponent.cs | 4 +- Content.Shared/Forensics/Events.cs | 2 +- .../GameTicking/PlayerBeforeSpawnEvent.cs | 33 + .../GameTicking/PlayerSpawnCompleteEvent.cs | 44 + .../Interaction/SharedInteractionSystem.cs | 4 +- .../Inventory/InventorySystem.Equip.cs | 2 + .../Inventory/InventorySystem.Relay.cs | 2 +- .../Inventory/InventoryTemplatePrototype.cs | 5 + .../Components/ItemToggleComponent.cs | 12 + .../Components/ToggleVerbComponent.cs | 18 - .../Item/ItemToggle/ItemToggleSystem.cs | 2 +- .../Item/ItemToggle/ToggleVerbSystem.cs | 34 - .../Light/SharedHandheldLightSystem.cs | 25 + Content.Shared/Lock/LockSystem.cs | 19 +- .../Components/AutoOrientComponent.cs | 5 +- .../Movement/Systems/AutoOrientSystem.cs | 51 + .../Systems/SharedMoverController.Input.cs | 7 - Content.Shared/Random/Rules/GridInRange.cs | 2 +- .../Random/Rules/NearbyTilesPercent.cs | 3 +- Content.Shared/Roles/SharedRoleSystem.cs | 18 +- Content.Shared/Salvage/SharedSalvageSystem.cs | 4 +- .../Components/EmagSiliconLawComponent.cs | 7 - .../Components/SiliconLawProviderComponent.cs | 6 + .../SharedStationAiSystem.Airlock.cs | 4 +- .../StationAi/SharedStationAiSystem.cs | 3 + .../StationAi/StationAiVisionSystem.cs | 11 +- .../SingularityGeneratorComponent.cs | 69 + .../SharedSingularityGeneratorSystem.cs | 28 + .../Station/SharedStationSpawningSystem.cs | 19 +- .../Components/StoreOnCollideComponent.cs | 34 + .../SharedEntityStorageSystem.cs | 8 + .../EntitySystems/SharedStorageSystem.cs | 14 - .../EntitySystems/StoreOnCollideSystem.cs | 71 + Content.Shared/Storage/StorageComponent.cs | 14 - .../Strip/SharedStrippableSystem.cs | 14 +- .../Assorted/PermanentBlindnessSystem.cs | 15 +- Resources/Changelog/Admin.yml | 15 + Resources/Changelog/Changelog.yml | 855 +- .../ConfigPresets/WizardsDen/wizardsDen.toml | 4 +- Resources/Credits/GitHub.txt | 2 +- Resources/Locale/en-US/GPS/handheld-gps.ftl | 4 +- .../Locale/en-US/atmos/gas-pipe-sensor.ftl | 5 + .../en-US/chat/commands/ghost-command.ftl | 1 + .../components/magboots-component.ftl | 3 - .../construction/ui/construction-menu.ftl | 1 + .../en-US/contraband/contraband-severity.ftl | 2 +- .../Locale/en-US/damage/damage-examine.ftl | 1 + .../Locale/en-US/datasets/names/borer.ftl | 69 + .../fire-extinguisher-component.ftl | 3 +- .../ghost/roles/ghost-role-component.ftl | 10 +- Resources/Locale/en-US/info/server-info.ftl | 1 + .../humanoid-character-profile.ftl | 3 +- .../ui/humanoid-profile-editor.ftl | 2 +- .../en-US/prototypes/access/accesses.ftl | 2 + .../Locale/en-US/server-info/info-links.ftl | 1 + Resources/Locale/en-US/shuttles/console.ftl | 2 +- .../components/generator-component.ftl | 2 + Resources/Locale/en-US/species/species.ftl | 1 + .../catalog/fills/backpacks/duffelbag.ftl | 2 +- .../catalog/fills/boxes/general.ftl | 2 + .../catalog/fills/crates/armory.ftl | 2 + .../catalog/fills/crates/emergency.ftl | 4 +- .../catalog/fills/crates/science.ftl | 2 + .../catalog/fills/crates/security.ftl | 2 - .../catalog/fills/crates/service.ftl | 2 + .../entities/objects/decoration/flora.ftl | 5 + .../entities/objects/decoration/garlands.ftl | 6 + .../entities/objects/decoration/presents.ftl | 11 + .../structures/wallmounts/signs/signs.ftl | 2 + .../entities/markers/spawners/mobs.ftl | 7 + .../prototypes/entities/mobs/npcs/animals.ftl | 4 + .../entities/mobs/player/gingerbread.ftl | 2 + .../entities/objects/decoration/flora.ftl | 5 +- .../entities/objects/decoration/present.ftl | 4 +- .../entities/objects/devices/flatpack.ftl | 4 + .../prototypes/entities/objects/fun/darts.ftl | 2 +- .../entities/objects/materials/ore.ftl | 9 + .../objects/specific/medical/hypospray.ftl | 2 +- .../objects/weapons/guns/basic/wands.ftl | 2 + .../weapons/guns/projectiles/magic.ftl | 2 + .../objects/weapons/guns/smgs/smgs.ftl | 2 +- .../structures/doors/airlocks/access.ftl | 3 + .../piping/atmospherics/gas_pipe_sensor.ftl | 17 + .../structures/power/cable_terminal.ftl | 3 + .../entities/structures/power/cables.ftl | 9 + .../generation/singularity/generator.ftl | 2 +- .../power/generation/tesla/generator.ftl | 2 +- .../structures/wallmounts/signs/posters.ftl | 2 + .../ss14-ru/prototypes/gamerules/events.ftl | 2 + .../station-events/events/greytide-virus.ftl | 1 + Resources/Locale/en-US/station-laws/laws.ftl | 5 +- .../Locale/en-US/store/spellbook-catalog.ftl | 3 + .../Locale/en-US/store/uplink-catalog.ftl | 6 +- .../Locale/ru-RU/atmos/gas-pipe-sensor.ftl | 5 + .../ru-RU/chat/commands/ghost-command.ftl | 1 + .../construction/ui/construction-menu.ftl | 1 + .../Locale/ru-RU/damage/damage-examine.ftl | 1 + .../Locale/ru-RU/datasets/names/borer.ftl | 69 + .../fire-extinguisher-component.ftl | 2 + .../ghost/roles/ghost-role-component.ftl | 4 + Resources/Locale/ru-RU/info/server-info.ftl | 1 + .../ru-RU/prototypes/access/accesses.ftl | 1 + .../Locale/ru-RU/server-info/info-links.ftl | 1 + Resources/Locale/ru-RU/shuttles/console.ftl | 1 + .../components/generator-component.ftl | 2 + Resources/Locale/ru-RU/species/species.ftl | 1 + .../catalog/fills/boxes/general.ftl | 2 + .../catalog/fills/crates/armory.ftl | 2 + .../catalog/fills/crates/emergency.ftl | 2 + .../catalog/fills/crates/science.ftl | 2 + .../catalog/fills/crates/security.ftl | 3 +- .../catalog/fills/crates/service.ftl | 2 + .../entities/objects/decoration/flora.ftl | 2 + .../entities/objects/decoration/garlands.ftl | 2 + .../entities/objects/decoration/presents.ftl | 2 + .../structures/wallmounts/signs/signs.ftl | 1 + .../entities/markers/spawners/mobs.ftl | 7 + .../prototypes/entities/mobs/npcs/animals.ftl | 4 + .../entities/mobs/player/gingerbread.ftl | 2 + .../entities/objects/decoration/flora.ftl | 3 + .../entities/objects/decoration/present.ftl | 4 +- .../entities/objects/devices/flatpack.ftl | 4 + .../entities/objects/materials/ore.ftl | 9 + .../objects/weapons/guns/basic/wands.ftl | 2 + .../weapons/guns/projectiles/magic.ftl | 2 + .../structures/doors/airlocks/access.ftl | 3 + .../piping/atmospherics/gas_pipe_sensor.ftl | 17 + .../structures/power/cable_terminal.ftl | 3 + .../entities/structures/power/cables.ftl | 9 + .../structures/wallmounts/signs/posters.ftl | 2 + .../ss14-ru/prototypes/gamerules/events.ftl | 2 + .../station-events/events/greytide-virus.ftl | 1 + Resources/Locale/ru-RU/station-laws/laws.ftl | 1 + .../Locale/ru-RU/store/spellbook-catalog.ftl | 2 + Resources/Maps/Misc/terminal.yml | 4527 +- Resources/Maps/Shuttles/arrivals.yml | 1363 +- Resources/Maps/amber.yml | 130753 +++++++++++++++ Resources/Maps/bagel.yml | 1686 +- Resources/Maps/cog.yml | 12 + Resources/Maps/corvax_pilgrim.yml | 533 +- Resources/Maps/corvax_silly.yml | 6 +- Resources/Maps/corvax_tushkan.yml | 3539 +- Resources/Maps/marathon.yml | 8 + Resources/Maps/oasis.yml | 7829 +- Resources/Maps/reach.yml | 19 +- Resources/Prototypes/Access/wizard.yml | 3 + .../Prototypes/Catalog/Cargo/cargo_armory.yml | 10 + .../Catalog/Cargo/cargo_circuitboards.yml | 9 - .../Catalog/Cargo/cargo_emergency.yml | 2 +- .../Catalog/Cargo/cargo_science.yml | 10 + .../Catalog/Cargo/cargo_security.yml | 10 - .../Catalog/Cargo/cargo_service.yml | 12 + .../Catalog/Cargo/cargo_vending.yml | 2 +- .../Catalog/Fills/Backpacks/duffelbag.yml | 2 +- .../Catalog/Fills/Boxes/general.yml | 20 + .../Catalog/Fills/Crates/armory.yml | 19 + .../Catalog/Fills/Crates/circuitboards.yml | 12 - .../Catalog/Fills/Crates/emergency.yml | 6 +- .../Catalog/Fills/Crates/science.yml | 12 + .../Catalog/Fills/Crates/security.yml | 20 - .../Catalog/Fills/Crates/service.yml | 11 + .../Catalog/Fills/Lockers/security.yml | 2 - .../VendingMachines/Inventories/salvage.yml | 4 +- .../Prototypes/Catalog/spellbook_catalog.yml | 13 + .../Entities/Objects/Decoration/flora.yml | 2 +- .../Prototypes/Corvax/Maps/Pools/default.yml | 5 +- Resources/Prototypes/Datasets/Names/borer.yml | 76 +- Resources/Prototypes/Datasets/Names/diona.yml | 218 +- .../Entities/Clothing/Hands/gloves.yml | 1 + .../Entities/Clothing/Head/helmets.yml | 1 + .../Entities/Clothing/Multiple/towel.yml | 2 + .../Entities/Clothing/OuterClothing/suits.yml | 1 + .../Entities/Clothing/Shoes/magboots.yml | 3 +- .../Markers/Spawners/Random/posters.yml | 1 + .../Entities/Markers/Spawners/ghost_roles.yml | 2 +- .../Entities/Markers/Spawners/mobs.yml | 43 + .../Mobs/Cyborgs/base_borg_chassis.yml | 3 + .../Prototypes/Entities/Mobs/NPCs/animals.yml | 96 +- .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 2 +- .../Entities/Mobs/Player/gingerbread.yml | 20 + .../Entities/Mobs/Player/observer.yml | 1 + .../Entities/Mobs/Player/silicon.yml | 3 +- .../Objects/Consumable/Food/meals.yml | 30 +- .../Entities/Objects/Consumable/Food/meat.yml | 7 +- .../Entities/Objects/Decoration/flora.yml | 25 +- .../Entities/Objects/Decoration/present.yml | 15 +- .../reinforcement_teleporter.yml | 10 +- .../Entities/Objects/Devices/flatpack.yml | 20 +- .../Prototypes/Entities/Objects/Fun/darts.yml | 2 +- .../Prototypes/Entities/Objects/Fun/toys.yml | 10 + .../Entities/Objects/Materials/materials.yml | 22 +- .../Entities/Objects/Materials/ore.yml | 44 + .../Entities/Objects/Materials/parts.yml | 2 +- .../Objects/Misc/fire_extinguisher.yml | 4 +- .../Objects/Misc/identification_cards.yml | 1 + .../Objects/Specific/Medical/hypospray.yml | 2 +- .../Specific/Robotics/borg_modules.yml | 6 +- .../Objects/Tools/access_configurator.yml | 1 + .../Objects/Weapons/Guns/Basic/wands.yml | 36 + .../Weapons/Guns/Projectiles/magic.yml | 80 + .../Weapons/Guns/Projectiles/projectiles.yml | 8 +- .../Objects/Weapons/Guns/SMGs/smgs.yml | 2 +- .../Objects/Weapons/Melee/e_sword.yml | 1 + .../Entities/Objects/Weapons/Melee/knife.yml | 7 + .../Prototypes/Entities/Stations/base.yml | 2 +- .../Structures/Doors/Airlocks/access.yml | 9 + .../Doors/Airlocks/base_structureairlocks.yml | 7 + .../Structures/Doors/Airlocks/highsec.yml | 7 + .../Structures/Doors/Airlocks/shuttle.yml | 17 +- .../Doors/Windoors/base_structurewindoors.yml | 37 + .../Entities/Structures/Machines/nuke.yml | 1 + .../Piping/Atmospherics/gas_pipe_sensor.yml | 84 + .../Generation/Singularity/generator.yml | 2 +- .../Power/Generation/Tesla/generator.yml | 4 +- .../Structures/Power/cable_terminal.yml | 8 + .../Entities/Structures/Power/cables.yml | 24 + .../Structures/Wallmounts/Signs/posters.yml | 9 + .../Entities/Structures/Walls/fence_metal.yml | 14 +- .../Entities/Structures/Walls/grille.yml | 10 +- Resources/Prototypes/GameRules/events.yml | 22 + Resources/Prototypes/Maps/Pools/default.yml | 1 + Resources/Prototypes/Maps/amber.yml | 66 + .../Graphs/clothing/medsec_hud.yml | 13 +- .../Construction/Graphs/tools/logic_gate.yml | 7 +- .../Graphs/utilities/gas_pipe_sensor.yml | 29 + .../Graphs/utilities/lighting.yml | 10 +- .../Graphs/utilities/wallmount_substation.yml | 8 +- .../Recipes/Construction/utilities.yml | 15 + .../Recipes/Cooking/meal_recipes.yml | 35 + .../Crafting/Graphs/improvised/potato.yml | 12 +- .../Prototypes/Roles/Ghostroles/syndicate.yml | 14 +- Resources/Prototypes/Species/gingerbread.yml | 2 +- .../Prototypes/Stacks/science_stacks.yml | 1 + Resources/Prototypes/Tiles/floors.yml | 17 - Resources/Prototypes/Tiles/plating.yml | 11 - .../Prototypes/Tiles/tile_migrations.yml | 14 + Resources/Prototypes/audio.yml | 4 +- .../Interface/Misc/ai_hud.rsi/apc_hacked.png | Bin 0 -> 561 bytes .../Interface/Misc/ai_hud.rsi/electrified.png | Bin 0 -> 812 bytes .../Interface/Misc/ai_hud.rsi/meta.json | 37 + .../Mobs/Animals/reindeer_buck.rsi/meta.json | 52 + .../reindeer_buck.rsi/reindeer_buck.png | Bin 0 -> 3495 bytes .../reindeer_buck.rsi/reindeer_buck_dead.png | Bin 0 -> 3328 bytes .../reindeer_buck.rsi/reindeer_buck_still.png | Bin 0 -> 1180 bytes .../Mobs/Animals/reindeer_doe.rsi/meta.json | 52 + .../Animals/reindeer_doe.rsi/reindeer_doe.png | Bin 0 -> 3139 bytes .../reindeer_doe.rsi/reindeer_doe_dead.png | Bin 0 -> 3081 bytes .../reindeer_doe.rsi/reindeer_doe_still.png | Bin 0 -> 1035 bytes .../gauze.rsi/gauze_lefteye_2.png | Bin 428 -> 436 bytes .../hide.rsi/goliathhide-inhand-left.png | Bin 0 -> 525 bytes .../hide.rsi/goliathhide-inhand-right.png | Bin 0 -> 535 bytes .../Objects/Materials/hide.rsi/meta.json | 12 +- .../materials.rsi/bananium-inhand-left.png | Bin 0 -> 345 bytes .../materials.rsi/bananium-inhand-right.png | Bin 0 -> 347 bytes .../materials.rsi/bones-inhand-left.png | Bin 0 -> 362 bytes .../materials.rsi/bones-inhand-right.png | Bin 0 -> 369 bytes .../materials.rsi/cardboard-inhand-left.png | Bin 0 -> 418 bytes .../materials.rsi/cardboard-inhand-right.png | Bin 0 -> 441 bytes .../materials.rsi/cloth-inhand-left.png | Bin 0 -> 393 bytes .../materials.rsi/cloth-inhand-right.png | Bin 0 -> 400 bytes .../materials.rsi/corgihide-inhand-left.png | Bin 0 -> 670 bytes .../materials.rsi/corgihide-inhand-right.png | Bin 0 -> 724 bytes .../materials.rsi/cotton-inhand-left.png | Bin 0 -> 262 bytes .../materials.rsi/cotton-inhand-right.png | Bin 0 -> 263 bytes .../materials.rsi/durathread-inhand-left.png | Bin 0 -> 381 bytes .../materials.rsi/durathread-inhand-right.png | Bin 0 -> 372 bytes .../Objects/Materials/materials.rsi/meta.json | 66 +- .../materials.rsi/pyrotton-inhand-left.png | Bin 0 -> 305 bytes .../materials.rsi/pyrotton-inhand-right.png | Bin 0 -> 303 bytes .../ore.rsi/bananium-inhand-left.png | Bin 0 -> 428 bytes .../ore.rsi/bananium-inhand-right.png | Bin 0 -> 435 bytes .../Materials/ore.rsi/coal-inhand-left.png | Bin 0 -> 320 bytes .../Materials/ore.rsi/coal-inhand-right.png | Bin 0 -> 326 bytes .../Materials/ore.rsi/diamond-inhand-left.png | Bin 0 -> 325 bytes .../ore.rsi/diamond-inhand-right.png | Bin 0 -> 334 bytes .../Materials/ore.rsi/gold-inhand-left.png | Bin 0 -> 472 bytes .../Materials/ore.rsi/gold-inhand-right.png | Bin 0 -> 449 bytes .../Materials/ore.rsi/iron-inhand-left.png | Bin 0 -> 321 bytes .../Materials/ore.rsi/iron-inhand-right.png | Bin 0 -> 340 bytes .../Objects/Materials/ore.rsi/meta.json | 82 +- .../Materials/ore.rsi/plasma-inhand-left.png | Bin 0 -> 395 bytes .../Materials/ore.rsi/plasma-inhand-right.png | Bin 0 -> 390 bytes .../Materials/ore.rsi/salt-inhand-left.png | Bin 0 -> 299 bytes .../Materials/ore.rsi/salt-inhand-right.png | Bin 0 -> 300 bytes .../Materials/ore.rsi/silver-inhand-left.png | Bin 0 -> 380 bytes .../Materials/ore.rsi/silver-inhand-right.png | Bin 0 -> 385 bytes .../ore.rsi/spacequartz-inhand-left.png | Bin 0 -> 509 bytes .../ore.rsi/spacequartz-inhand-right.png | Bin 0 -> 469 bytes .../Materials/ore.rsi/uranium-inhand-left.png | Bin 0 -> 453 bytes .../ore.rsi/uranium-inhand-right.png | Bin 0 -> 463 bytes .../Objects/Materials/parts.rsi/meta.json | 10 +- .../Materials/parts.rsi/rods-inhand-left.png | Bin 0 -> 189 bytes .../Materials/parts.rsi/rods-inhand-right.png | Bin 0 -> 192 bytes .../Objects/Materials/silk.rsi/meta.json | 12 +- .../Materials/silk.rsi/silk-inhand-left.png | Bin 0 -> 358 bytes .../Materials/silk.rsi/silk-inhand-right.png | Bin 0 -> 345 bytes .../Guns/Basic/wands.rsi/locker-effect.png | Bin 0 -> 260 bytes .../Basic/wands.rsi/locker-inhand-left.png | Bin 0 -> 794 bytes .../Basic/wands.rsi/locker-inhand-right.png | Bin 0 -> 803 bytes .../Weapons/Guns/Basic/wands.rsi/locker.png | Bin 0 -> 624 bytes .../Weapons/Guns/Basic/wands.rsi/meta.json | 16 +- .../Machines/electric_grill.rsi/meta.json | 2 +- .../Machines/uniform_printer.rsi/building.png | Bin 5327 -> 6498 bytes .../Machines/uniform_printer.rsi/icon.png | Bin 2196 -> 5037 bytes .../Atmospherics/gas_pipe_sensor.rsi/base.png | Bin 0 -> 248 bytes .../gas_pipe_sensor.rsi/blank.png | Bin 0 -> 83 bytes .../Atmospherics/gas_pipe_sensor.rsi/icon.png | Bin 0 -> 523 bytes .../gas_pipe_sensor.rsi/lights.png | Bin 0 -> 183 bytes .../gas_pipe_sensor.rsi/meta.json | 29 + .../Wallmounts/posters.rsi/meta.json | 5 +- .../Wallmounts/posters.rsi/poster53_legit.png | Bin 0 -> 3081 bytes Resources/Textures/Tiles/plating_burnt.png | Bin 1407 -> 0 bytes Resources/Textures/Tiles/steel_burnt.png | Bin 3689 -> 0 bytes Resources/migration.yml | 9 + RobustToolbox | 2 +- 469 files changed, 157990 insertions(+), 7651 deletions(-) create mode 100644 .github/workflows/labeler-review.yml create mode 100644 Content.Client/Electrocution/ElectrocutionHUDVisualizerSystem.cs create mode 100644 Content.Client/Singularity/Systems/SingularityGeneratorSystem.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111170112_ModernHwid.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20241111193608_ConnectionTrust.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111170107_ModernHwid.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20241111193602_ConnectionTrust.cs create mode 100644 Content.Server/Connection/UserDataExt.cs create mode 100644 Content.Server/Silicons/Laws/IonStormSystem.cs delete mode 100644 Content.Server/Singularity/Components/SingularityGeneratorComponent.cs create mode 100644 Content.Server/StationEvents/Components/GreytideVirusComponent.cs create mode 100644 Content.Server/StationEvents/Events/GreytideVirusRule.cs create mode 100644 Content.Shared.Database/TypedHwid.cs create mode 100644 Content.Shared/Electrocution/Components/ElectrocutionHUDVisualsComponent.cs create mode 100644 Content.Shared/Electrocution/Components/ShowElectrocutionHUDComponent.cs create mode 100644 Content.Shared/GameTicking/PlayerBeforeSpawnEvent.cs create mode 100644 Content.Shared/GameTicking/PlayerSpawnCompleteEvent.cs delete mode 100644 Content.Shared/Item/ItemToggle/Components/ToggleVerbComponent.cs delete mode 100644 Content.Shared/Item/ItemToggle/ToggleVerbSystem.cs create mode 100644 Content.Shared/Movement/Systems/AutoOrientSystem.cs create mode 100644 Content.Shared/Singularity/Components/SingularityGeneratorComponent.cs create mode 100644 Content.Shared/Singularity/EntitySystems/SharedSingularityGeneratorSystem.cs create mode 100644 Content.Shared/Storage/Components/StoreOnCollideComponent.cs create mode 100644 Content.Shared/Storage/EntitySystems/StoreOnCollideSystem.cs create mode 100644 Resources/Locale/en-US/atmos/gas-pipe-sensor.ftl delete mode 100644 Resources/Locale/en-US/clothing/components/magboots-component.ftl create mode 100644 Resources/Locale/en-US/datasets/names/borer.ftl create mode 100644 Resources/Locale/en-US/singularity/components/generator-component.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/objects/decoration/flora.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/objects/decoration/garlands.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/objects/decoration/presents.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/corvax/entities/structures/wallmounts/signs/signs.ftl create mode 100644 Resources/Locale/en-US/ss14-ru/prototypes/entities/structures/piping/atmospherics/gas_pipe_sensor.ftl create mode 100644 Resources/Locale/en-US/station-events/events/greytide-virus.ftl create mode 100644 Resources/Locale/ru-RU/atmos/gas-pipe-sensor.ftl create mode 100644 Resources/Locale/ru-RU/datasets/names/borer.ftl create mode 100644 Resources/Locale/ru-RU/singularity/components/generator-component.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/objects/decoration/flora.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/objects/decoration/garlands.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/objects/decoration/presents.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/structures/wallmounts/signs/signs.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/piping/atmospherics/gas_pipe_sensor.ftl create mode 100644 Resources/Locale/ru-RU/station-events/events/greytide-virus.ftl create mode 100644 Resources/Maps/amber.yml create mode 100644 Resources/Prototypes/Access/wizard.yml delete mode 100644 Resources/Prototypes/Catalog/Cargo/cargo_circuitboards.yml delete mode 100644 Resources/Prototypes/Catalog/Fills/Crates/circuitboards.yml create mode 100644 Resources/Prototypes/Entities/Structures/Piping/Atmospherics/gas_pipe_sensor.yml create mode 100644 Resources/Prototypes/Maps/amber.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/utilities/gas_pipe_sensor.yml create mode 100644 Resources/Textures/Interface/Misc/ai_hud.rsi/apc_hacked.png create mode 100644 Resources/Textures/Interface/Misc/ai_hud.rsi/electrified.png create mode 100644 Resources/Textures/Interface/Misc/ai_hud.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Animals/reindeer_buck.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Animals/reindeer_buck.rsi/reindeer_buck.png create mode 100644 Resources/Textures/Mobs/Animals/reindeer_buck.rsi/reindeer_buck_dead.png create mode 100644 Resources/Textures/Mobs/Animals/reindeer_buck.rsi/reindeer_buck_still.png create mode 100644 Resources/Textures/Mobs/Animals/reindeer_doe.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Animals/reindeer_doe.rsi/reindeer_doe.png create mode 100644 Resources/Textures/Mobs/Animals/reindeer_doe.rsi/reindeer_doe_dead.png create mode 100644 Resources/Textures/Mobs/Animals/reindeer_doe.rsi/reindeer_doe_still.png create mode 100644 Resources/Textures/Objects/Materials/hide.rsi/goliathhide-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/hide.rsi/goliathhide-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/bananium-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/bananium-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/bones-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/bones-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/cardboard-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/cardboard-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/cloth-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/cloth-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/corgihide-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/corgihide-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/cotton-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/cotton-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/durathread-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/durathread-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/materials.rsi/pyrotton-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/bananium-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/bananium-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/coal-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/coal-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/diamond-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/diamond-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/gold-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/gold-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/iron-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/iron-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/plasma-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/plasma-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/salt-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/salt-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/silver-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/silver-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/spacequartz-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/spacequartz-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/uranium-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/ore.rsi/uranium-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/parts.rsi/rods-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/parts.rsi/rods-inhand-right.png create mode 100644 Resources/Textures/Objects/Materials/silk.rsi/silk-inhand-left.png create mode 100644 Resources/Textures/Objects/Materials/silk.rsi/silk-inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Basic/wands.rsi/locker-effect.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Basic/wands.rsi/locker-inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Basic/wands.rsi/locker-inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Basic/wands.rsi/locker.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/base.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/blank.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/icon.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/lights.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/gas_pipe_sensor.rsi/meta.json create mode 100644 Resources/Textures/Structures/Wallmounts/posters.rsi/poster53_legit.png delete mode 100644 Resources/Textures/Tiles/plating_burnt.png delete mode 100644 Resources/Textures/Tiles/steel_burnt.png diff --git a/.github/workflows/labeler-review.yml b/.github/workflows/labeler-review.yml new file mode 100644 index 00000000000..0adfee7d0e5 --- /dev/null +++ b/.github/workflows/labeler-review.yml @@ -0,0 +1,23 @@ +name: "Labels: Approved" +on: + pull_request_review: + types: [submitted] +jobs: + add_label: + # Change the repository name after you've made sure the team name is correct for your fork! + if: ${{ (github.repository == 'space-wizards/space-station-14') && (github.event.review.state == 'APPROVED') }} + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: tspascoal/get-user-teams-membership@v3 + id: checkUserMember + with: + username: ${{ github.actor }} + team: "content-maintainers,junior-maintainers" + GITHUB_TOKEN: ${{ secrets.LABELER_PAT }} + - if: ${{ steps.checkUserMember.outputs.isTeamMember == 'true' }} + uses: actions-ecosystem/action-add-labels@v1 + with: + labels: "S: Approved" diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 7b13233bab5..b594817701e 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -258,13 +258,13 @@ public void UnlinkAllActions() public void LinkAllActions(ActionsComponent? actions = null) { - if (_playerManager.LocalEntity is not { } user || - !Resolve(user, ref actions, false)) - { - return; - } + if (_playerManager.LocalEntity is not { } user || + !Resolve(user, ref actions, false)) + { + return; + } - LinkActions?.Invoke(actions); + LinkActions?.Invoke(actions); } public override void Shutdown() diff --git a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs index 588d62e5603..3c7322d4739 100644 --- a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs +++ b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs @@ -22,11 +22,11 @@ namespace Content.Client.Administration.UI.BanPanel; [GenerateTypedNameReferences] public sealed partial class BanPanel : DefaultWindow { - public event Action? BanSubmitted; + public event Action? BanSubmitted; public event Action? PlayerChanged; private string? PlayerUsername { get; set; } private (IPAddress, int)? IpAddress { get; set; } - private byte[]? Hwid { get; set; } + private ImmutableTypedHwid? Hwid { get; set; } private double TimeEntered { get; set; } private uint Multiplier { get; set; } private bool HasBanFlag { get; set; } @@ -371,9 +371,8 @@ private void OnIpChanged() private void OnHwidChanged() { var hwidString = HwidLine.Text; - var length = 3 * (hwidString.Length / 4) - hwidString.TakeLast(2).Count(c => c == '='); - Hwid = new byte[length]; - if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !Convert.TryFromBase64String(hwidString, Hwid, out _)) + ImmutableTypedHwid? hwid = null; + if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !ImmutableTypedHwid.TryParse(hwidString, out hwid)) { ErrorLevel |= ErrorLevelEnum.Hwid; HwidLine.ModulateSelfOverride = Color.Red; @@ -390,7 +389,7 @@ private void OnHwidChanged() Hwid = null; return; } - Hwid = Convert.FromHexString(hwidString); + Hwid = hwid; } private void OnTypeChanged() diff --git a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs index a412e47396b..c8e3afeb22c 100644 --- a/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs +++ b/Content.Client/Administration/UI/Notes/NoteEdit.xaml.cs @@ -159,6 +159,7 @@ private void OnTypeChanged(OptionButton.ItemSelectedEventArgs args) SecretCheckBox.Pressed = false; SeverityOption.Disabled = false; PermanentCheckBox.Pressed = true; + SubmitButton.Disabled = true; UpdatePermanentCheckboxFields(); break; case (int) NoteType.Message: // Message: these are shown to the player when they log on diff --git a/Content.Client/Atmos/Components/PipeColorVisualsComponent.cs b/Content.Client/Atmos/Components/PipeColorVisualsComponent.cs index 355b10cb4a4..9b24b1adc25 100644 --- a/Content.Client/Atmos/Components/PipeColorVisualsComponent.cs +++ b/Content.Client/Atmos/Components/PipeColorVisualsComponent.cs @@ -1,8 +1,4 @@ -using Robust.Shared.GameObjects; - namespace Content.Client.Atmos.Components; [RegisterComponent] -public sealed partial class PipeColorVisualsComponent : Component -{ -} +public sealed partial class PipeColorVisualsComponent : Component; diff --git a/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml b/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml index 6bdfb3989f9..3dbe14e6b6d 100644 --- a/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml +++ b/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml @@ -1,6 +1,5 @@ @@ -62,7 +61,7 @@ - + diff --git a/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml.cs b/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml.cs index 79bb66560e3..e533ef2dce0 100644 --- a/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml.cs +++ b/Content.Client/Atmos/Consoles/AtmosAlarmEntryContainer.xaml.cs @@ -136,8 +136,9 @@ public void UpdateEntry(AtmosAlertsComputerEntry entry, bool isFocus, AtmosAlert GasGridContainer.RemoveAllChildren(); var gasData = focusData.Value.GasData.Where(g => g.Key != Gas.Oxygen); + var keyValuePairs = gasData.ToList(); - if (gasData.Count() == 0) + if (keyValuePairs.Count == 0) { // No other gases var gasLabel = new Label() @@ -158,13 +159,11 @@ public void UpdateEntry(AtmosAlertsComputerEntry entry, bool isFocus, AtmosAlert else { // Add an entry for each gas - foreach ((var gas, (var mol, var percent, var alert)) in gasData) + foreach ((var gas, (var mol, var percent, var alert)) in keyValuePairs) { - var gasPercent = (FixedPoint2)0f; - gasPercent = percent * 100f; + FixedPoint2 gasPercent = percent * 100f; - if (!_gasShorthands.TryGetValue(gas, out var gasShorthand)) - gasShorthand = "X"; + var gasShorthand = _gasShorthands.GetValueOrDefault(gas, "X"); var gasLabel = new Label() { diff --git a/Content.Client/Atmos/Consoles/AtmosAlertsComputerBoundUserInterface.cs b/Content.Client/Atmos/Consoles/AtmosAlertsComputerBoundUserInterface.cs index 08cae979b9b..6f0e7f80da1 100644 --- a/Content.Client/Atmos/Consoles/AtmosAlertsComputerBoundUserInterface.cs +++ b/Content.Client/Atmos/Consoles/AtmosAlertsComputerBoundUserInterface.cs @@ -14,8 +14,6 @@ protected override void Open() _menu = new AtmosAlertsComputerWindow(this, Owner); _menu.OpenCentered(); _menu.OnClose += Close; - - EntMan.TryGetComponent(Owner, out var xform); } protected override void UpdateState(BoundUserInterfaceState state) @@ -24,9 +22,6 @@ protected override void UpdateState(BoundUserInterfaceState state) var castState = (AtmosAlertsComputerBoundInterfaceState) state; - if (castState == null) - return; - EntMan.TryGetComponent(Owner, out var xform); _menu?.UpdateUI(xform?.Coordinates, castState.AirAlarms, castState.FireAlarms, castState.FocusData); } diff --git a/Content.Client/Atmos/Consoles/AtmosAlertsComputerWindow.xaml b/Content.Client/Atmos/Consoles/AtmosAlertsComputerWindow.xaml index 8824a776ee6..e5ede1b92e3 100644 --- a/Content.Client/Atmos/Consoles/AtmosAlertsComputerWindow.xaml +++ b/Content.Client/Atmos/Consoles/AtmosAlertsComputerWindow.xaml @@ -1,7 +1,6 @@ (OnInit); - SubscribeLocalEvent(OnAppearanceChanged, after: new[] { typeof(SubFloorHideSystem) }); + SubscribeLocalEvent(OnAppearanceChanged, after: [typeof(SubFloorHideSystem)]); } private void OnInit(EntityUid uid, PipeAppearanceComponent component, ComponentInit args) @@ -84,7 +82,8 @@ private void OnAppearanceChanged(EntityUid uid, PipeAppearanceComponent componen layer.Visible &= visible; - if (!visible) continue; + if (!visible) + continue; layer.Color = color; } diff --git a/Content.Client/Atmos/Monitor/AtmosAlarmableVisualsSystem.cs b/Content.Client/Atmos/Monitor/AtmosAlarmableVisualsSystem.cs index 019f25f376b..18ca2234752 100644 --- a/Content.Client/Atmos/Monitor/AtmosAlarmableVisualsSystem.cs +++ b/Content.Client/Atmos/Monitor/AtmosAlarmableVisualsSystem.cs @@ -1,12 +1,7 @@ -using System.Collections.Generic; using Content.Shared.Atmos.Monitor; using Content.Shared.Power; using Robust.Client.GameObjects; using Robust.Client.Graphics; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Maths; -using Robust.Shared.Serialization.Manager.Attributes; namespace Content.Client.Atmos.Monitor; @@ -27,7 +22,7 @@ protected override void OnAppearanceChange(EntityUid uid, AtmosAlarmableVisualsC { foreach (var visLayer in component.HideOnDepowered) { - if (args.Sprite.LayerMapTryGet(visLayer, out int powerVisibilityLayer)) + if (args.Sprite.LayerMapTryGet(visLayer, out var powerVisibilityLayer)) args.Sprite.LayerSetVisible(powerVisibilityLayer, powered); } } @@ -36,7 +31,7 @@ protected override void OnAppearanceChange(EntityUid uid, AtmosAlarmableVisualsC { foreach (var (setLayer, powerState) in component.SetOnDepowered) { - if (args.Sprite.LayerMapTryGet(setLayer, out int setStateLayer)) + if (args.Sprite.LayerMapTryGet(setLayer, out var setStateLayer)) args.Sprite.LayerSetState(setStateLayer, new RSI.StateId(powerState)); } } diff --git a/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs b/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs index d9e94e373b4..650f96eec97 100644 --- a/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs +++ b/Content.Client/Atmos/Monitor/UI/AirAlarmBoundUserInterface.cs @@ -1,11 +1,7 @@ using Content.Shared.Atmos; using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Monitor.Components; -using Robust.Client.GameObjects; using Robust.Client.UserInterface; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Log; namespace Content.Client.Atmos.Monitor.UI; @@ -78,6 +74,7 @@ protected override void Dispose(bool disposing) { base.Dispose(disposing); - if (disposing) _window?.Dispose(); + if (disposing) + _window?.Dispose(); } } diff --git a/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs b/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs index e1425ac491b..65164983865 100644 --- a/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml.cs @@ -8,7 +8,6 @@ using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Temperature; using Robust.Client.AutoGenerated; -using Robust.Client.GameObjects; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; @@ -59,7 +58,7 @@ public AirAlarmWindow() AirAlarmMode.Fill => "air-alarm-ui-mode-fill", AirAlarmMode.Panic => "air-alarm-ui-mode-panic", AirAlarmMode.None => "air-alarm-ui-mode-none", - _ => "error" + _ => "error", }; _modes.AddItem(Loc.GetString(text)); } @@ -70,7 +69,7 @@ public AirAlarmWindow() AirAlarmModeChanged!.Invoke((AirAlarmMode) args.Id); }; - _autoMode.OnToggled += args => + _autoMode.OnToggled += _ => { AutoModeChanged!.Invoke(_autoMode.Pressed); }; @@ -176,22 +175,18 @@ public void UpdateDeviceData(string addr, IAtmosDeviceData device) public static Color ColorForThreshold(float amount, AtmosAlarmThreshold threshold) { - threshold.CheckThreshold(amount, out AtmosAlarmType curAlarm); + threshold.CheckThreshold(amount, out var curAlarm); return ColorForAlarm(curAlarm); } public static Color ColorForAlarm(AtmosAlarmType curAlarm) { - if(curAlarm == AtmosAlarmType.Danger) + return curAlarm switch { - return StyleNano.DangerousRedFore; - } - else if(curAlarm == AtmosAlarmType.Warning) - { - return StyleNano.ConcerningOrangeFore; - } - - return StyleNano.GoodGreenFore; + AtmosAlarmType.Danger => StyleNano.DangerousRedFore, + AtmosAlarmType.Warning => StyleNano.ConcerningOrangeFore, + _ => StyleNano.GoodGreenFore, + }; } diff --git a/Content.Client/Atmos/Monitor/UI/Widgets/PumpControl.xaml.cs b/Content.Client/Atmos/Monitor/UI/Widgets/PumpControl.xaml.cs index 17b03b84684..2cd51d6fc7f 100644 --- a/Content.Client/Atmos/Monitor/UI/Widgets/PumpControl.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/Widgets/PumpControl.xaml.cs @@ -1,12 +1,8 @@ -using System; -using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Monitor.Components; using Content.Shared.Atmos.Piping.Unary.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Localization; namespace Content.Client.Atmos.Monitor.UI.Widgets; @@ -25,7 +21,7 @@ public sealed partial class PumpControl : BoxContainer private OptionButton _pressureCheck => CPressureCheck; private FloatSpinBox _externalBound => CExternalBound; private FloatSpinBox _internalBound => CInternalBound; - private Button _copySettings => CCopySettings; + private Button _copySettings => CCopySettings; public PumpControl(GasVentPumpData data, string address) { @@ -86,7 +82,7 @@ public PumpControl(GasVentPumpData data, string address) _data.PressureChecks = (VentPressureBound) args.Id; PumpDataChanged?.Invoke(_address, _data); }; - + _copySettings.OnPressed += _ => { PumpDataCopied?.Invoke(_data); diff --git a/Content.Client/Atmos/Monitor/UI/Widgets/ScrubberControl.xaml.cs b/Content.Client/Atmos/Monitor/UI/Widgets/ScrubberControl.xaml.cs index f2241bcd8da..c16ff688c93 100644 --- a/Content.Client/Atmos/Monitor/UI/Widgets/ScrubberControl.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/Widgets/ScrubberControl.xaml.cs @@ -1,15 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; using Content.Shared.Atmos; -using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Monitor.Components; using Content.Shared.Atmos.Piping.Unary.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Localization; namespace Content.Client.Atmos.Monitor.UI.Widgets; @@ -27,7 +21,7 @@ public sealed partial class ScrubberControl : BoxContainer private OptionButton _pumpDirection => CPumpDirection; private FloatSpinBox _volumeRate => CVolumeRate; private CheckBox _wideNet => CWideNet; - private Button _copySettings => CCopySettings; + private Button _copySettings => CCopySettings; private GridContainer _gases => CGasContainer; private Dictionary _gasControls = new(); @@ -77,7 +71,7 @@ public ScrubberControl(GasVentScrubberData data, string address) _data.PumpDirection = (ScrubberPumpDirection) args.Id; ScrubberDataChanged?.Invoke(_address, _data); }; - + _copySettings.OnPressed += _ => { ScrubberDataCopied?.Invoke(_data); diff --git a/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs b/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs index da602cd7479..9e60b6cea62 100644 --- a/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/Widgets/SensorInfo.xaml.cs @@ -43,7 +43,8 @@ public SensorInfo(AtmosSensorData data, string address) var label = new RichTextLabel(); var fractionGas = amount / data.TotalMoles; - label.SetMarkup(Loc.GetString("air-alarm-ui-gases-indicator", ("gas", $"{gas}"), + label.SetMarkup(Loc.GetString("air-alarm-ui-gases-indicator", + ("gas", $"{gas}"), ("color", AirAlarmWindow.ColorForThreshold(fractionGas, data.GasThresholds[gas])), ("amount", $"{amount:0.####}"), ("percentage", $"{(100 * fractionGas):0.##}"))); @@ -53,9 +54,9 @@ public SensorInfo(AtmosSensorData data, string address) var threshold = data.GasThresholds[gas]; var gasThresholdControl = new ThresholdControl(Loc.GetString($"air-alarm-ui-thresholds-gas-title", ("gas", $"{gas}")), threshold, AtmosMonitorThresholdType.Gas, gas, 100); gasThresholdControl.Margin = new Thickness(20, 2, 2, 2); - gasThresholdControl.ThresholdDataChanged += (type, threshold, arg3) => + gasThresholdControl.ThresholdDataChanged += (type, alarmThreshold, arg3) => { - OnThresholdUpdate!(_address, type, threshold, arg3); + OnThresholdUpdate!(_address, type, alarmThreshold, arg3); }; _gasThresholds.Add(gas, gasThresholdControl); @@ -64,7 +65,8 @@ public SensorInfo(AtmosSensorData data, string address) _pressureThreshold = new ThresholdControl(Loc.GetString("air-alarm-ui-thresholds-pressure-title"), data.PressureThreshold, AtmosMonitorThresholdType.Pressure); PressureThresholdContainer.AddChild(_pressureThreshold); - _temperatureThreshold = new ThresholdControl(Loc.GetString("air-alarm-ui-thresholds-temperature-title"), data.TemperatureThreshold, + _temperatureThreshold = new ThresholdControl(Loc.GetString("air-alarm-ui-thresholds-temperature-title"), + data.TemperatureThreshold, AtmosMonitorThresholdType.Temperature); TemperatureThresholdContainer.AddChild(_temperatureThreshold); @@ -103,7 +105,8 @@ public void ChangeData(AtmosSensorData data) } var fractionGas = amount / data.TotalMoles; - label.SetMarkup(Loc.GetString("air-alarm-ui-gases-indicator", ("gas", $"{gas}"), + label.SetMarkup(Loc.GetString("air-alarm-ui-gases-indicator", + ("gas", $"{gas}"), ("color", AirAlarmWindow.ColorForThreshold(fractionGas, data.GasThresholds[gas])), ("amount", $"{amount:0.####}"), ("percentage", $"{(100 * fractionGas):0.##}"))); diff --git a/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdBoundControl.xaml.cs b/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdBoundControl.xaml.cs index 3612d84de4c..55f7c008987 100644 --- a/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdBoundControl.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdBoundControl.xaml.cs @@ -1,7 +1,4 @@ -using Content.Client.Message; -using Content.Shared.Atmos; using Content.Shared.Atmos.Monitor; -using Content.Shared.Temperature; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; diff --git a/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdControl.xaml.cs b/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdControl.xaml.cs index 78c73fa573a..651620f3e25 100644 --- a/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdControl.xaml.cs +++ b/Content.Client/Atmos/Monitor/UI/Widgets/ThresholdControl.xaml.cs @@ -1,12 +1,8 @@ -using System; using Content.Shared.Atmos; using Content.Shared.Atmos.Monitor; -using Content.Shared.Atmos.Monitor.Components; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.Localization; // holy FUCK // this technically works because some of this you can *not* do in XAML but holy FUCK @@ -115,29 +111,38 @@ public ThresholdControl(string name, AtmosAlarmThreshold threshold, AtmosMonitor _enabled.Pressed = !_threshold.Ignore; } - private String LabelForBound(string boundType) //, DebugMessage)> state) => { if (_system.TileData.TryGetValue(uid, out var data)) diff --git a/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs b/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs index 2c3afb0324f..1f09ae9eebb 100644 --- a/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs +++ b/Content.Client/Clothing/FlippableClothingVisualizerSystem.cs @@ -7,7 +7,7 @@ namespace Content.Client.Clothing; -public sealed class FlippableClothingVisualizerSystem : VisualizerSystem +public sealed class FlippableClothingVisualizerSystem : VisualizerSystem { [Dependency] private readonly SharedItemSystem _itemSys = default!; diff --git a/Content.Client/Construction/UI/ConstructionMenu.xaml b/Content.Client/Construction/UI/ConstructionMenu.xaml index 6e4438cf6fd..a934967a533 100644 --- a/Content.Client/Construction/UI/ConstructionMenu.xaml +++ b/Content.Client/Construction/UI/ConstructionMenu.xaml @@ -1,15 +1,20 @@ - + + + + - -