From 01307135188a96b6fbea12a9e0fb9ca12231d7ae Mon Sep 17 00:00:00 2001 From: Rane <60792108+Elijahrane@users.noreply.github.com> Date: Mon, 25 Jul 2022 11:33:41 -0400 Subject: [PATCH] Merge0725 (#289) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Automatic changelog update * Update ContainerOcclusionTest.cs (#9692) * Identity fixes (#9701) * Healing tweaks (#9697) * Automatic changelog update * Generic morgue visualizer (#9696) * Remove IActivate (#9705) * git mv * purge IActivate * File scoped NS * Update misc.yml (#9691) * cltohes (#9680) * Update submodule to 0.28.5.0 (#9708) * mathaotnont (#9711) * bagl... (#9710) * Traitor deathmatch ecs (#9714) * salty (#9712) * Machine frame ECS (#9713) * Entity storage whitelist (#9694) * Update common color to station announcements (#9670) * Atlas Update 1.6 (#9709) * Automatic changelog update * Update shards.yml (#9644) * Remove `IInteractUsing` (#9718) * Automatic changelog update * Remove `IAfterInteract` (#9715) * remove gas analyzer iafterinteract * solution transfer + obsolete * cuffable * remove * dart becomestation comp fix (plus render) (#9497) * dart becomestation comp fix * minor fixes and changes to ERT shuttle Dart * Hospital curtains add (#9707) * curtainss * sound_mono * hotfix_curtains * Automatic changelog update * [2 lines] fix blinding (#9690) * Adds blinding + blindfolds (#8688) * Adds blinding + blindfolds * Don't break examining lol * moment * fix toggle lights behavior * move checks around * Sloth review * Added a salvage funny * review * woops * Switch circle shader Co-authored-by: wrexbe * resolve merge conflict Co-authored-by: wrexbe * Automatic changelog update * Re-implement recoil (#9406) * Re-implement recoil Playing around with the values atm * Update constants * final tweaks * Automatic changelog update * Fix zombie percent in the round end summary (#9682) * Make controlmob not require sentience (#9479) * Outer clothing nerf (#9143) * Reduced backpack to 99 size from 100 * Increase hardsuit and softsuit size * Adds ClothingOuterBaseLarge * Parenting * Changed parent base, reduced duplication * 101 the people have spoken * 100 backpack cry * Changes some things to large base 60 * Updates armour based to large * Large base slowdown 20% * Speed boost * Removed syndie eva box Duffel exists, no need * Apparently this is an eva suit * Fixed formatting * Syndie duffel boosted to 131 To fit a hardsuit plus mask and gas * Hardsuits to 121 size No more bagging * Made heavy clothing 80 * moves syndie eva box to a duffel * Automatic changelog update * Muzzle flash enhancements (#9527) * Automatic changelog update * remove 1 taser (#9725) * Remove some tasers (#9727) * Packed Station Update (#9722) * RPG-7, Kardashev rifle and Hristov heavy sniper resprites (#9729) Co-authored-by: and_a * Guard against weird renderer bug (#9720) * Make disposal pipes use generic visualizer (#9672) * Automatic changelog update * Add AMIV disease stages (#9637) * Add AMIV disease stages * remove unused import * move stages to top for readability * monkey immunity to amiv * Update to use time instead of index * Revert "Update to use time instead of index" This reverts commit 6bc83b0d48c167fe30437fa94272a00ed1633c5d. * add comments * rerun test * Automatic changelog update * Fix bricked welding component (#9741) * Automatic changelog update * Make entity storage lookup range positive (#9735) * Automatic changelog update * Add uplink command completions (#9742) * Remove telekinesis (#9737) * Add batch cooking (#9359) * Automatic changelog update * Prevent content from overriding sprite shader (#9036) * Fix disappearing decals bug (#9608) * Automatic changelog update * Make flash prevent handheld light toggle (#9448) Co-authored-by: Kara * Bring pills back to 50 units maximum (#9626) * Adds a nuclear pinpointer to the operative and medic operative duffel fills (#9634) * Nerf disease outbreak (#9640) * Automatic changelog update * Make sure dragdrop doesn't delay by a frame (#9745) * Vapor tweaks (#9638) * Magic staves + wands (#9070) * Automatic changelog update * Operating table add (#9687) * Automatic changelog update * Fix loadbp window perm issue (#9671) * Steal condition tells you where to steal it from (#9605) * Automatic changelog update * Add FTL destinations (#9685) * Job-specific traitor items (#9601) * Automatic changelog update * Proto-kinetic accelerator (#9748) * Automatic changelog update * Update submodule to 0.28.5.1 (#9750) * Reduce radar minimap radius (#9673) * Ghost role probability (#9752) * Ghost role probability * give it to regular ticks/bears too * Automatic changelog update * Smooth radar zooming (#9753) * Automatic changelog update * Convert familiars to GhostRoleMobSpawner (#9525) Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Port honkbots from nyano (#9698) * Automatic changelog update * Identity popup fixes (#9743) * Automatic changelog update * Bartending Tweaks (#9307) * Automatic changelog update * Nuke ops war anounce sound (#9035) * Altars add (#9678) * Automatic changelog update * Updated alarm sound effect (#9756) * Updated alarm sound * Added Loop to alarm sound effect * Automatic changelog update * Bagel Update 14.3 (#9757) * Cargo shuttle qol and fixe (#9759) * Fix emergency shuttle docking (#9758) Woopsy * Portable scrubbers (#9417) * Automatic changelog update * Add public method to update cargo bank account (again) (#9761) * quickfix nukie uplinks (#9765) * Automatic changelog update * Portable scrubbers on Delta (#9771) * Automatic changelog update * Fix mob throwing (#9775) * Automatic changelog update * The real movement refactor (#9645) * The real movement refactor * ref events * Jetpack cleanup * a * Vehicles partially working * Balance tweaks * Restore some shitcode * AAAAAAAA * Even more prediction * ECS compstate trying to fix this * yml * vehicles kill me * Don't lock keys * a * Fix problem * Fix sounds * shuttle inputs * Shuttle controls * space brakes * Keybinds * Fix merge * Handle shutdown * Fix keys * Bump friction * fix buckle offset * Fix relay and friction * Fix jetpack turning * contexts amirite * Automatic changelog update * Update submodule to 0.28.6.0 (#9776) * Fix ghost movement (#9778) * Fix aghost (#9781) * Fixes makeshift laser using the wrong type of construction step. (#9811) It needed to use the "material" step, not the "prototype" step... * Automatic changelog update * Nukie planet update (#9784) * Error entity (#9740) Co-authored-by: tijn * Automatic changelog update * Refactor set alert level command (#9794) * Adds Research, Virology, Glass Maint Airlocks (#9350) * Automatic changelog update * Add a log to cut cables. How did this not exist before? (#9780) * Order permissions panel admins by username (#9782) * Fix aghost movement (#9823) * Don't relay incapacitated move inputs (#9822) * using existing FixedPoint2 for popup message, instead of raw float (#9820) Co-authored-by: fooberticus * Make shuttle brakes use thrusters and bandaid shuttle movement (#9826) * Automatic changelog update * Make FTL arrive closer (#9828) * Automatic changelog update * Fix docking control size (#9833) * Saltern Update 4.0 (#9838) * a (#9837) * make nukies actual antags (#9844) * Automatic changelog update * Remove ranged injection/feeding (#9841) * Automatic changelog update * Packed In (#9760) * Update packedstation.yml * Update atlas.yml * packed...,,, * packed..,,, * e (#9835) * allow decals to be removed from placement menu (#9843) * Port cleanbots from Nyano (#9853) * Automatic changelog update * Remove overfed/overhydrated alerts (#9852) * Automatic changelog update * Add gravitycomponent support to maps (#9857) * Add gravitycomponent support to maps The alert still needs fixing if you want planets. * move * Packed Fixe (#9859) * More Packed Fixe... (#9874) * packed fixe... * society.... * Removed lifetime handling from ImmovableRod and added TimedDespawnComponent to the prototype instead (#9870) * Damage overlay fixes (#9831) - Fix death overlay showing when returning to body. - Made the diff non-linear. * Fix blindfold round cleanup bug (#9821) * Blindness public api * fix blinding round cleanup bug * Automatic changelog update * Update submodule to 0.29.0.0 (#9881) * Update submodule to 0.29.1.0 (#9886) * Announce shuttle direction on proximity (#9885) * Automatic changelog update * Add public sex method for those who don't have access to change sex (#9894) * The nuke must be anchored to arm. (#9898) * Automatic changelog update * Perform CentCom-ification (#9876) * Change "CentComm" to "CentCom" * Change "Centcomm" to "CentCom", skipping CVar and changelog * Change "Centcom" to "CentCom", skipping lots of item IDs * Change "centcomm" to "CentCom", skipping URLs, some var, IDs * Change "centcom" to "CentCom", skipping IDs and alike * Automatic changelog update * botany slight rebalance (#9766) * Automatic changelog update * Add under-pressure lockout to air vents (#9824) * Add under-pressure lockout to vent pumps * Add examine text showing UPLO * Automatic changelog update * Fix content test warnings (#9865) * Fix content test warnings * while I'm here * fix Co-authored-by: wrexbe * Stabalize tests (#9901) * Antag menu (#9900) * Refactor traitor generation code. * RandomTraitorAlive no longer crashes when 1 traitor. Also cleaner/faster * Add Antag menu for admins, add Traitor to the list. * Add zombie to admin-antag menu * Pirates, lone op, make traitor consistent with the rest. * Add name strings * cleaned usings. * Cleanup. Co-authored-by: drakewill Co-authored-by: moonheart08 * Automatic changelog update * long awaited (#9869) * Add files via upload (#9893) * Automatic changelog update * Gas pipes now need to be unanchored before deconstruction. (#9904) Cleans up their graphs, they had no spacing at all. * Automatic changelog update * Update uplink_catalog.yml (#9917) * Automatic changelog update * Allow pAIs to play MIDI again (#9921) * Automatic changelog update * Renamed the Bojevic bundle (#9895) * Small fix * shuttle winder fix * Automatic changelog update * Fix PDA ID light (#9938) * Fix weightless (#9939) * Update ZombifyOnDeathSystem.cs (#9919) * Automatic changelog update * Remove CanBeAntag for nukeops (#9947) * Automatic changelog update * Add cvardef template for Rider (#9948) * Research Servers now have proper IDs, and can be selected in lathe menu (#9949) * rd servers now increment properly when added * remove debug message * Automatic changelog update * Adds even more smites and a bunch of tools. (#9825) * Adds three new smites, headstand, locker stuff, and reptilian species swap. * Localize all the smites. * save work * More smites... * Final tweaks. * oops * !PLEH * Adds disarm prone and improved hand removal options. * fix chances. * take out the trash. * Add some admin TRICKS instead of more smites. * oop * Implements the admin test arena and associated trick. * Tricks for granting/revoking access. * e * mfw * Implement quick dialogs, for when you don't want to spend 20 minutes writing a simple dialog prompt. * Forgot the rejuv icon. * E * docs * augh * Add rename/redescribe buttons. * Adds objects menu, implements a couple tricks for stations. * 1984 * Adds a trick for effectively infinite power. * fixes some icon uggo. * a * HALT! * Pause/unpause buttons. * Forgor the textures. * they broke every bone in their body. * i added more * more battery actions, touch up battery icon. * Address reviews. * Automatic changelog update * i forgor (#9951) * Ban single-line if statements. (#9953) * Ban single-line if statements. * Make these files more accessible from sln * Compat for Result Analyzer engine PR (#9966) * Fix pulling cancelling randomly. (#9982) * Fix thrusters using generic Burn damage group instead of Heat type (#9972) Getting high temperature, electric and frostbite burns at once is silly. * Automatic changelog update * Various localization fixes (#9860) * Bagel Update 14.5 (#9988) * Marathon Update 2.7 (#9989) * Saltern Update 4.1 (#9990) * Packed Drink 1984 (#9991) * Centered shot glass sprite (#9986) * Automatic changelog update * Adds the station name to PDAs (#9987) Co-authored-by: ike709 * Automatic changelog update * change shotgun shell boxes from 6 to 12 (#9540) * Automatic changelog update * Shuttle Window fix thingy (#9932) * guns (#9958) Co-authored-by: and_a * Juggernaut Suit Buff (#9994) * lmao * Update hardsuits.yml * thresholds (#9960) * Automatic changelog update * set canCrush and collision check to false (#9957) * Automatic changelog update * Prevent Glass duplication in lathes (#9954) * lathes have been handled ;) * Update LatheSystem.cs * Automatic changelog update * Magboot & Stun visualizers (#9961) * Allow changing instrument style while playing them (#9946) * Properly dirty changes when calling "SetInstrumentProgram" method * Allow using swappable instrument verbs even while playing the instrument. It's funnier this way * Automatic changelog update * Construction graph node test (#9995) * Construction graph node test * fix the test Co-authored-by: wrexbe * added backpacks to the clothesmate (#10006) * Automatic changelog update * Update altar.yml (#10004) * Automatic changelog update * Gas tile overlay rejig (#9619) * Fix a bunch of mover bugs (#9999) * Fix a bunch of mover bugs Just regressions from random things * Fix vehicle movement I guess * Gas tank internals alerts (#9567) * Automatic changelog update * Fixes power wire action electrocution (#8520) * Don't let someone block if they're too close or if they're in a doorway. (#9890) Co-authored-by: metalgearsloth * Automatic changelog update * ECS NPCs (#9941) * ECS * A * parity * Remove dummy update * abs * thanks rider * Per-map parallax support (#9786) * Per-map parallax support * Comments for future sloth * c * bet * Fix exception * VV support * Fix parallax * mem * weightless sounds * Gravity stuff * placeholder coz im too lazy to stash don't @ me son * decent clouds * sky * Fast parallax * Imagine spelling * Loicense * perish * Fix weightless status Co-authored-by: metalgearsloth * Automatic changelog update * Scrolling menu parallax + less tiling (#9764) * Scrolling parallax * unnecessary field * Load fastspace * Update submodule to 0.30.0.0 (#10012) * Clip radar control (#10011) Forgor to do it. Still need to make the viewport square but at least it won't draw under the display anymore. * Revert parallax (#10014) Woops, was using these values for testing scrolling parallax. * Adds axolotl and snake hood frills for reptilians! (#10013) * Automatic changelog update * Fix gravity mispredict (#10017) * Automatic changelog update * Fix magboots in space (#10019) * Automatic changelog update * Fix cursor popups (#10016) * Automatic changelog update * Update submodule to 0.30.0.1 (#10021) * fix tests * I swear if this works... * Engine update? * Robust update again * Updaterino? Co-authored-by: PJBot Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Co-authored-by: Kara Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Co-authored-by: Emisse <99158783+Emisse@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: lapatison <100279397+lapatison@users.noreply.github.com> Co-authored-by: Peptide90 <78795277+Peptide90@users.noreply.github.com> Co-authored-by: Deahaka <96499407+Deahaka@users.noreply.github.com> Co-authored-by: wrexbe Co-authored-by: sBasalto <109002990+sBasalto@users.noreply.github.com> Co-authored-by: TaralGit <76408146+TaralGit@users.noreply.github.com> Co-authored-by: and_a Co-authored-by: themias <89101928+themias@users.noreply.github.com> Co-authored-by: Jacob Tong <10494922+ShadowCommander@users.noreply.github.com> Co-authored-by: Myctai <108953437+Myctai@users.noreply.github.com> Co-authored-by: Level10Cybermancer <71363161+Level10Cybermancer@users.noreply.github.com> Co-authored-by: Kevin Zheng Co-authored-by: ZeroDayDaemon <60460608+ZeroDayDaemon@users.noreply.github.com> Co-authored-by: Morber <14136326+Morb0@users.noreply.github.com> Co-authored-by: Kimpes <93582901+Kimpes@users.noreply.github.com> Co-authored-by: TimrodDX Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com> Co-authored-by: sunbear-dev <107123733+sunbear-dev@users.noreply.github.com> Co-authored-by: tijn Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com> Co-authored-by: Moony Co-authored-by: Fooberticus Bazly <34943053+fooberticus@users.noreply.github.com> Co-authored-by: fooberticus Co-authored-by: Andreas Kämper Co-authored-by: wrexbe <81056464+wrexbe@users.noreply.github.com> Co-authored-by: drakewill-CRL <46307022+drakewill-CRL@users.noreply.github.com> Co-authored-by: drakewill Co-authored-by: OldDanceJacket <98985560+OldDanceJacket@users.noreply.github.com> Co-authored-by: Andreas Kämper Co-authored-by: Ablankmann <103340990+Ablankmann@users.noreply.github.com> Co-authored-by: Pieter-Jan Briers Co-authored-by: Chris Co-authored-by: Rinkashikachi <15rinkashikachi15@gmail.com> Co-authored-by: ike709 Co-authored-by: ike709 Co-authored-by: Flipp Syder <76629141+vulppine@users.noreply.github.com> Co-authored-by: keronshb <54602815+keronshb@users.noreply.github.com> Co-authored-by: metalgearsloth Co-authored-by: metalgearsloth Co-authored-by: T-Stalker <43253663+DogZeroX@users.noreply.github.com> --- .editorconfig | 2 + .../Administration/AdminNameOverlay.cs | 1 + .../Components/HeadstandComponent.cs | 10 + .../Administration/QuickDialogSystem.cs | 154 + .../{ => Systems}/AdminSystem.Menu.cs | 29 +- .../{ => Systems}/AdminSystem.Overlay.cs | 2 +- .../{ => Systems}/AdminSystem.cs | 5 +- .../{ => Systems}/AdminVerbSystem.cs | 5 +- .../{ => Systems}/BwoinkSystem.cs | 11 +- .../Administration/Systems/HeadstandSystem.cs | 35 + .../{ => Systems}/KillSignSystem.cs | 2 +- .../UI/AdminAnnounceWindow.xaml | 8 +- .../UI/AdminAnnounceWindow.xaml.cs | 4 +- .../Administration/UI/AdminMenuWindow.xaml | 4 +- .../Administration/UI/AdminMenuWindow.xaml.cs | 1 + .../Administration/UI/BwoinkWindow.xaml.cs | 1 + .../UI/CustomControls/BwoinkPanel.xaml.cs | 1 + .../CustomControls/PlayerListControl.xaml.cs | 1 + .../Administration/UI/PermissionsEui.cs | 2 +- .../UI/Tabs/AdminTab/AdminTab.xaml | 16 +- .../UI/Tabs/ObjectsTab/ObjectsTab.xaml | 16 + .../UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs | 73 + .../UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml | 18 + .../Tabs/ObjectsTab/ObjectsTabEntry.xaml.cs | 19 + .../UI/Tabs/PlayerTab/PlayerTab.xaml.cs | 1 + .../EntitySystems/GasTileOverlaySystem.cs | 244 +- .../Atmos/Overlays/FireTileOverlay.cs | 57 - .../Atmos/Overlays/GasTileOverlay.cs | 196 +- Content.Client/Buckle/BuckleSystem.cs | 17 + Content.Client/Buckle/Strap/StrapComponent.cs | 1 - Content.Client/Commands/OpenAHelpCommand.cs | 1 + .../UI/CommunicationsConsoleMenu.cs | 2 +- .../Decals/UI/DecalPlacerWindow.xaml.cs | 5 +- Content.Client/Entry/EntryPoint.cs | 4 +- .../EscapeMenu/UI/Tabs/KeyRebindTab.xaml.cs | 9 + Content.Client/Eye/Blinding/BlindingSystem.cs | 15 + Content.Client/Eye/EyeLerpingSystem.cs | 2 +- Content.Client/Gravity/GravitySystem.cs | 2 +- Content.Client/HUD/GameHud.cs | 1 + Content.Client/Input/ContentContexts.cs | 8 +- .../Instruments/UI/InstrumentMenu.xaml.cs | 10 +- .../UI/SignalPortSelectorMenu.xaml | 6 +- Content.Client/MobState/MobStateSystem.cs | 1 + .../MobState/Overlays/DamageOverlay.cs | 36 +- Content.Client/Nuke/NukeMenu.xaml.cs | 2 +- Content.Client/PDA/PDABoundUserInterface.cs | 6 +- Content.Client/PDA/PDAMenu.xaml | 5 +- .../Parallax/Data/IParallaxTextureSource.cs | 2 - .../Data/ImageParallaxTextureSource.cs | 3 - .../Parallax/Data/ParallaxLayerConfig.cs | 7 + .../Parallax/Managers/IParallaxManager.cs | 29 +- .../Parallax/Managers/ParallaxManager.cs | 108 +- Content.Client/Parallax/ParallaxControl.cs | 16 +- Content.Client/Parallax/ParallaxOverlay.cs | 41 +- Content.Client/Parallax/ParallaxSystem.cs | 71 + .../Physics/Controllers/MoverController.cs | 50 +- Content.Client/Popups/PopupSystem.cs | 7 +- .../ResearchClientServerSelectionMenu.xaml.cs | 6 +- .../BUI/ShuttleConsoleBoundUserInterface.cs | 6 - .../Shuttles/Systems/ShuttleConsoleSystem.cs | 31 +- Content.Client/Shuttles/UI/DockingControl.cs | 5 +- Content.Client/Shuttles/UI/RadarControl.cs | 3 +- .../Shuttles/UI/ShuttleConsoleWindow.xaml | 4 - .../Shuttles/UI/ShuttleConsoleWindow.xaml.cs | 9 - Content.Client/Station/StationSystem.cs | 32 + Content.Client/UserInterface/FancyWindow.xaml | 5 +- Content.Client/Vehicle/VehicleSystem.cs | 56 +- .../Vehicle/VehicleVisualsSystem.cs | 5 +- Content.Client/Wires/UI/WiresMenu.cs | 10 +- .../DummyParallaxManager.cs | 27 +- .../Tests/AI/BehaviorSetsTest.cs | 2 +- .../Tests/Commands/RejuvenateTest.cs | 31 +- .../Construction/ConstructionPrototypeTest.cs | 40 + .../Tests/DoAfter/DoAfterServerTest.cs | 8 +- Content.IntegrationTests/Tests/EntityTest.cs | 21 +- .../Tests/Fluids/PuddleTest.cs | 6 +- .../Tests/Gravity/WeightlessStatusTests.cs | 6 +- .../Tests/GravityGridTest.cs | 6 +- .../Click/InteractionSystemTests.cs | 3 +- .../Tests/Interaction/InRangeUnobstructed.cs | 8 +- .../Tests/PostMapInitTest.cs | 8 +- Content.Server/AI/Commands/AddAiCommand.cs | 17 +- .../AI/Components/ActiveNPCComponent.cs | 7 + .../AI/Components/AiControllerComponent.cs | 60 - Content.Server/AI/Components/NPCComponent.cs | 17 + .../AI/EntitySystems/GoToPuddleSystem.cs | 2 +- .../AI/EntitySystems/NPCSystem.Blackboard.cs | 42 + .../AI/EntitySystems/NPCSystem.Utility.cs | 284 + Content.Server/AI/EntitySystems/NPCSystem.cs | 101 +- .../AI/LoadBalancer/AiActionRequestJob.cs | 2 +- .../AI/LoadBalancer/AiActionSystem.cs | 27 - .../Pathfinding/Accessible/ReachableArgs.cs | 3 +- .../AI/Steering/AiSteeringSystem.cs | 10 +- .../Utility/Actions/Bots/GoToPuddleAndWait.cs | 0 .../AI/Utility/AiLogic/UtilityAI.cs | 176 - .../AI/Utility/AiLogic/UtilityNPCComponent.cs | 46 + .../Combat/Melee/MeleeAttackNearbyExp.cs | 2 +- .../Melee/UnarmedAttackNearbyHostilesExp.cs | 2 +- .../Bots/BufferNearbyPuddlesExp.cs | 2 +- .../AI/Utility/NpcBehaviorManager.cs | 165 - Content.Server/AI/Utility/UtilityAiHelpers.cs | 4 +- .../States/Clothing/NearbyClothingState.cs | 2 +- .../Combat/Nearby/NearbyMeleeWeapons.cs | 2 +- .../States/Mobs/NearbyBodiesState.cs | 2 +- .../States/Mobs/NearbyPlayersState.cs | 2 +- .../States/Nutrition/NearbyDrinkState.cs | 2 +- .../States/Nutrition/NearbyFoodState.cs | 2 +- .../Components/DisarmProneComponent.cs | 7 + .../Components/HeadstandComponent.cs | 10 + .../StationInfiniteBatteryTargetComponent.cs | 10 + .../QuickDialogSystem.OpenDialog.cs | 176 + .../Administration/QuickDialogSystem.cs | 176 + .../Systems/AdminTestArenaSystem.cs | 33 + .../Systems/AdminVerbSystem.Antags.cs | 106 + .../Systems/AdminVerbSystem.Smites.cs | 334 +- .../Systems/AdminVerbSystem.Tools.cs | 928 + .../Administration/Systems/AdminVerbSystem.cs | 2 + Content.Server/Alert/Click/ToggleInternals.cs | 53 + .../Commands/SetAlertLevelCommand.cs | 66 +- .../Announcements/AnnounceCommand.cs | 2 +- .../Atmos/Components/BreathToolComponent.cs | 26 +- .../Atmos/Components/GasTankComponent.cs | 250 +- .../AtmosphereSystem.BreathTool.cs | 30 + .../Atmos/EntitySystems/AtmosphereSystem.cs | 3 + .../Atmos/EntitySystems/GasTankSystem.cs | 237 +- .../EntitySystems/GasTileOverlaySystem.cs | 488 +- .../Unary/Components/GasVentPumpComponent.cs | 11 + .../Unary/EntitySystems/GasVentPumpSystem.cs | 22 + .../Body/Components/InternalsComponent.cs | 64 +- Content.Server/Body/Systems/BodySystem.cs | 4 +- Content.Server/Body/Systems/BrainSystem.cs | 3 +- .../Body/Systems/InternalsSystem.cs | 155 +- Content.Server/Body/Systems/LungSystem.cs | 5 +- .../Buckle/Components/BuckleComponent.cs | 63 +- .../Buckle/Components/StrapComponent.cs | 54 +- Content.Server/Buckle/Systems/BuckleSystem.cs | 30 +- .../SmokeSolutionAreaEffectComponent.cs | 2 +- .../EntitySystems/ChemistrySystem.Injector.cs | 13 +- Content.Server/Chunking/ChunkingSystem.cs | 104 + Content.Server/Clothing/MagbootsSystem.cs | 32 +- Content.Server/Clothing/MaskSystem.cs | 12 +- Content.Server/CombatMode/CombatModeSystem.cs | 10 +- .../Cuffs/Components/HandcuffComponent.cs | 4 + Content.Server/Decals/DecalSystem.cs | 58 +- .../Disposal/Tube/DisposalTubeSystem.cs | 4 +- .../Unit/EntitySystems/DisposalUnitSystem.cs | 4 +- Content.Server/DoAfter/DoAfter.cs | 2 + .../Doors/WireActions/DoorTimingWireAction.cs | 4 +- Content.Server/Entry/EntryPoint.cs | 1 - .../GameTicking/GameTicker.RoundFlow.cs | 2 + .../GameTicking/Rules/NukeopsRuleSystem.cs | 18 +- .../GameTicking/Rules/PiratesRuleSystem.cs | 10 +- .../GameTicking/Rules/TraitorRuleSystem.cs | 171 +- Content.Server/Ghost/GhostSystem.cs | 4 +- .../Gravity/EntitySystems/GravitySystem.cs | 31 +- .../Gravity/EntitySystems/WeightlessSystem.cs | 157 - .../ImmovableRod/ImmovableRodComponent.cs | 11 +- .../ImmovableRod/ImmovableRodSystem.cs | 10 +- .../Instruments/SwappableInstrumentSystem.cs | 3 - Content.Server/IoC/ServerContentIoC.cs | 1 - Content.Server/Lathe/LatheSystem.cs | 4 + .../CrewMonitoringConsoleSystem.cs | 2 +- .../Medical/MedicalScannerSystem.cs | 4 +- .../Mind/Commands/MakeSentientCommand.cs | 9 +- .../Movement/Systems/JetpackSystem.cs | 7 +- Content.Server/Nuke/NukeSystem.cs | 2 +- .../Components/ForcefeedOnCollideComponent.cs | 19 - .../Nutrition/Components/HungerComponent.cs | 1 - .../Nutrition/Components/ThirstComponent.cs | 1 - .../Nutrition/EntitySystems/DrinkSystem.cs | 3 +- .../Nutrition/EntitySystems/FoodSystem.cs | 2 +- .../EntitySystems/ForcefeedOnCollideSystem.cs | 31 - .../ExpendableActions/Bots/InjectNearbyExp.cs | 3 +- .../Nyanotrasen/Abilities/Fart/FartSystem.cs | 55 - .../Abilities/Fart/FarterComponent.cs | 15 - .../FloorBuffer/FloorBufferComponent.cs | 22 - .../FloorBuffer/FloorBufferSystem.cs | 60 - .../Conditions/RandomTraitorAliveCondition.cs | 15 +- Content.Server/PDA/PDASystem.cs | 25 +- Content.Server/Parallax/ParallaxSystem.cs | 23 + .../Physics/Controllers/MoverController.cs | 444 +- .../Physics/Controllers/PullController.cs | 7 + .../PneumaticCannon/PneumaticCannonSystem.cs | 19 +- .../Power/EntitySystems/CableSystem.cs | 5 + Content.Server/Power/PowerWireAction.cs | 80 +- .../Components/ResearchServerComponent.cs | 2 +- .../Research/Systems/ResearchSystem.cs | 1 + .../Resist/EscapeInventorySystem.cs | 4 +- Content.Server/Resist/ResistLockerSystem.cs | 4 +- .../Shuttles/Components/ShuttleComponent.cs | 5 +- .../Shuttles/Systems/ShuttleConsoleSystem.cs | 71 +- .../Systems/ShuttleSystem.EmergencyConsole.cs | 2 +- .../Systems/ShuttleSystem.EmergencyShuttle.cs | 49 +- .../Systems/ShuttleSystem.FasterThanLight.cs | 72 +- .../Shuttles/Systems/ShuttleSystem.cs | 34 +- .../Station/Systems/StationJobsSystem.cs | 4 - .../Station/Systems/StationSystem.cs | 22 + .../Storage/EntitySystems/StorageSystem.cs | 4 +- .../Stunnable/Systems/StunbatonSystem.cs | 21 +- .../Tools/Systems/WeldableSystem.cs | 12 + Content.Server/Vehicle/HonkSystem.cs | 57 - Content.Server/Vehicle/RiderSystem.cs | 57 - Content.Server/Vehicle/VehicleSystem.Rider.cs | 92 + Content.Server/Vehicle/VehicleSystem.cs | 230 +- Content.Server/Wires/WiresSystem.cs | 61 +- .../Zombies/ZombifyOnDeathSystem.cs | 5 +- Content.Shared.Database/LogType.cs | 3 +- .../ActionBlocker/ActionBlockerSystem.cs | 8 +- .../Components/SharedHeadstandComponent.cs | 6 + .../Administration/QuickDialogOpenEvent.cs | 129 + Content.Shared/Alert/AlertCategory.cs | 1 + Content.Shared/Alert/AlertType.cs | 3 +- .../EntitySystems/SharedAtmosphereSystem.cs | 15 +- .../SharedGasTileOverlaySystem.cs | 105 +- Content.Shared/Atmos/GasOverlayChunk.cs | 120 +- Content.Shared/Blocking/BlockingSystem.cs | 31 + .../Components/SharedBuckleComponent.cs | 30 + .../Buckle/Components/SharedStrapComponent.cs | 53 +- Content.Shared/Buckle/SharedBuckleSystem.cs | 19 + Content.Shared/CCVar/CCVars.cs | 65 - .../Systems/SharedHumanoidAppearanceSystem.cs | 11 + .../Clothing/SharedMagbootsSystem.cs | 30 + .../Containers/ItemSlot/ItemSlotsSystem.cs | 2 +- Content.Shared/Decals/DecalPrototype.cs | 3 +- Content.Shared/Decals/SharedDecalSystem.cs | 8 - .../Eye/Blinding/SharedBlindingSystem.cs | 20 +- Content.Shared/Follower/FollowerSystem.cs | 4 +- .../Friction/SharedTileFrictionController.cs | 21 +- ...angedMessage.cs => GravityChangedEvent.cs} | 6 +- Content.Shared/Gravity/GravityComponent.cs | 43 +- Content.Shared/Gravity/SharedGravitySystem.cs | 102 + Content.Shared/Input/ContentKeyFunctions.cs | 8 +- .../Instruments/SharedInstrumentSystem.cs | 4 +- .../Components/FootstepModifierComponent.cs | 8 +- .../Movement/Components/IMobMoverComponent.cs | 19 - .../Movement/Components/IMoverComponent.cs | 37 - .../Components/InputMoverComponent.cs | 51 + .../Components/JetpackUserComponent.cs | 3 - .../Movement/Components/MobMoverComponent.cs | 59 + .../MovementIgnoreGravityComponent.cs | 9 +- .../MovementSpeedModifierComponent.cs | 67 +- .../Components/RelayInputMoverComponent.cs | 13 + .../SharedDummyInputMoverComponent.cs | 24 - .../SharedPlayerInputMoverComponent.cs | 257 - .../SharedPlayerMobMoverComponent.cs | 88 - .../ContainerRelayMovementEntityEvent.cs | 16 + .../Movement/Events/MoveInputEvent.cs | 17 + .../Events/RelayMovementEntityEvent.cs | 12 - .../Movement/Systems/SharedJetpackSystem.cs | 48 +- .../SharedMoverController.Footsteps.cs | 35 + .../Systems/SharedMoverController.Input.cs | 342 +- .../Systems/SharedMoverController.Mob.cs | 39 + .../Systems/SharedMoverController.Pushing.cs | 10 +- .../Systems/SharedMoverController.Relay.cs | 43 + .../Movement/Systems/SharedMoverController.cs | 233 +- Content.Shared/PDA/PDAComponent.cs | 1 + Content.Shared/PDA/PDAUpdateState.cs | 4 +- Content.Shared/PDA/SharedPDASystem.cs | 4 +- Content.Shared/Parallax/ParallaxComponent.cs | 28 + .../Parallax/SharedParallaxSystem.cs | 16 + .../Pulling/Systems/SharedPullableSystem.cs | 13 +- .../ShuttleConsoleBoundInterfaceState.cs | 4 +- .../Shuttles/Components/PilotComponent.cs | 11 + .../Components/SharedShuttleComponent.cs | 8 - .../Events/ShuttleModeRequestMessage.cs | 13 - .../Station/StationsUpdatedEvent.cs | 14 + Content.Shared/Throwing/ThrowingSystem.cs | 12 +- .../Toggleable/ToggleActionEvent.cs | 11 + .../Vehicle/Components/InVehicleComponent.cs | 7 +- .../Vehicle/Components/RiderComponent.cs | 6 +- .../Vehicle/Components/VehicleComponent.cs | 77 +- .../Vehicle/SharedVehicleSystem.Rider.cs | 20 + Content.Shared/Vehicle/SharedVehicleSystem.cs | 179 +- Content.Shared/Verbs/VerbCategory.cs | 7 +- .../Shared/Alert/AlertOrderPrototypeTests.cs | 5 - Resources/Changelog/Changelog.yml | 532 +- .../Locale/en-US/actions/actions/blocking.ftl | 2 + .../en-US/actions/actions/internals.ftl | 5 +- .../Locale/en-US/actions/actions/vehicle.ftl | 2 - .../Locale/en-US/administration/antag.ftl | 5 + .../Locale/en-US/administration/smites.ftl | 79 + .../ui/admin-announce-window.ftl | 10 +- .../administration/ui/admin-menu-window.ftl | 1 + .../tabs/admin-tab/player-actions-window.ftl | 8 + .../alert-levels/alert-level-command.ftl | 7 + .../Locale/en-US/atmos/gas-vent-pump.ftl | 1 + .../communications-console-component.ftl | 1 + .../en-US/escape-menu/ui/options-menu.ftl | 9 + Resources/Locale/en-US/job/job-names.ftl | 2 +- .../en-US/machine-linking/port-selector.ftl | 3 + Resources/Locale/en-US/markings/reptilian.ftl | 5 + .../Locale/en-US/paper/stamp-component.ftl | 2 +- Resources/Locale/en-US/pda/pda-component.ftl | 6 + Resources/Locale/en-US/shell.ftl | 1 + Resources/Locale/en-US/shuttles/emergency.ftl | 4 +- Resources/Locale/en-US/verbs/verb-system.ftl | 1 + .../wires/components/wires-component.ftl | 2 + Resources/Maps/Test/admin_test_arena.yml | 1324 + Resources/Maps/atlas.yml | 70502 ---------------- Resources/Maps/centcomm.yml | 10540 +-- Resources/Prototypes/Access/cargo.yml | 2 + Resources/Prototypes/Access/command.yml | 2 + Resources/Prototypes/Access/engineering.yml | 4 +- Resources/Prototypes/Access/external.yml | 3 +- Resources/Prototypes/Access/maintenance.yml | 1 + Resources/Prototypes/Access/medical.yml | 2 + Resources/Prototypes/Access/research.yml | 1 + Resources/Prototypes/Access/security.yml | 3 + Resources/Prototypes/Access/service.yml | 7 + Resources/Prototypes/Alerts/alerts.yml | 28 +- .../Prototypes/Body/Mechanisms/human.yml | 5 +- Resources/Prototypes/Body/Parts/human.yml | 5 +- Resources/Prototypes/Body/Parts/reptilian.yml | 5 +- Resources/Prototypes/Body/Parts/slime.yml | 5 +- Resources/Prototypes/Body/Parts/vox.yml | 5 +- .../Prototypes/Catalog/Cargo/cargo_botany.yml | 24 +- .../Catalog/Cargo/cargo_livestock.yml | 12 + .../Catalog/Fills/Backpacks/duffelbag.yml | 4 +- .../Catalog/Fills/Boxes/ammunition.yml | 100 + .../Catalog/Fills/Boxes/security.yml | 162 - .../Catalog/Fills/Crates/botany.yml | 37 +- .../Catalog/Research/technologies.yml | 15 + .../Inventories/clothesmate.yml | 3 + .../VendingMachines/Inventories/medidrobe.yml | 1 + .../VendingMachines/Inventories/seeds.yml | 10 +- .../Prototypes/Catalog/uplink_catalog.yml | 10 + Resources/Prototypes/Datasets/news.yml | 2 +- Resources/Prototypes/Decals/markings.yml | 12 + .../Entities/Clothing/Ears/headsets.yml | 3 +- .../Entities/Clothing/Head/hats.yml | 2 +- .../Entities/Clothing/Masks/masks.yml | 2 +- .../Clothing/OuterClothing/hardsuits.yml | 16 +- .../Clothing/OuterClothing/wintercoats.yml | 2 +- .../Entities/Clothing/Shoes/magboots.yml | 12 +- .../Entities/Clothing/Shoes/misc.yml | 1 - .../Entities/Clothing/Uniforms/jumpsuits.yml | 4 +- .../Mobs/Customization/Markings/reptilian.yml | 20 + .../Prototypes/Entities/Mobs/NPCs/animals.yml | 26 +- .../Prototypes/Entities/Mobs/NPCs/bear.yml | 6 +- .../Prototypes/Entities/Mobs/NPCs/carp.yml | 6 +- .../Entities/Mobs/NPCs/dummy_npcs.yml | 6 +- .../Prototypes/Entities/Mobs/NPCs/human.yml | 14 +- .../Prototypes/Entities/Mobs/NPCs/mimic.yml | 6 +- .../Prototypes/Entities/Mobs/NPCs/pets.yml | 8 +- .../Entities/Mobs/NPCs/regalrat.yml | 12 +- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 37 +- .../Entities/Mobs/NPCs/simplemob.yml | 12 +- .../Entities/Mobs/NPCs/spacetick.yml | 8 +- .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 12 +- .../Entities/Mobs/Player/admin_ghost.yml | 3 +- .../Entities/Mobs/Player/dragon.yml | 4 +- .../Prototypes/Entities/Mobs/Player/dwarf.yml | 4 +- .../Entities/Mobs/Player/familiars.yml | 6 +- .../Entities/Mobs/Player/guardian.yml | 4 +- .../Prototypes/Entities/Mobs/Player/human.yml | 8 +- .../Entities/Mobs/Player/observer.yml | 4 +- .../Entities/Mobs/Player/reptilian.yml | 4 +- .../Entities/Mobs/Player/silicon.yml | 4 +- .../Entities/Mobs/Player/skeleton.yml | 4 +- .../Prototypes/Entities/Mobs/Player/slime.yml | 4 +- .../Prototypes/Entities/Mobs/Player/vox.yml | 4 +- .../Entities/Mobs/Species/human.yml | 2 - .../Entities/Objects/Devices/pda.yml | 2 +- .../Entities/Objects/Fun/bike_horn.yml | 1 - .../Prototypes/Entities/Objects/Fun/error.yml | 40 + .../Entities/Objects/Fun/immovable_rod.yml | 2 + .../Entities/Objects/Misc/bedsheets.yml | 2 +- .../Objects/Specific/Cargo/cargo_pallet.yml | 2 +- .../Entities/Objects/Tools/gas_tanks.yml | 9 +- .../Entities/Objects/Tools/jetpacks.yml | 6 + .../Entities/Objects/Vehicles/buckleable.yml | 77 +- .../Entities/Objects/Weapons/security.yml | 12 +- .../Structures/Decoration/curtains.yml | 2 + .../Structures/Doors/Airlocks/access.yml | 24 + .../Structures/Doors/Airlocks/airlocks.yml | 46 + .../Structures/Doors/airlock_groups.yml | 3 + .../Entities/Structures/Furniture/altar.yml | 49 +- .../Entities/Structures/Power/apc.yml | 1 + .../Entities/Structures/Power/smes.yml | 1 + .../Entities/Structures/Power/substation.yml | 2 + .../Structures/Shuttles/thrusters.yml | 4 +- .../Entities/Structures/Storage/morgue.yml | 2 +- .../Entities/Structures/Windows/shuttle.yml | 5 +- Resources/Prototypes/Maps/atlas.yml | 42 - .../Recipes/Crafting/Graphs/Bot/honkbot.yml | 38 - .../Catalog/Recipes/Crafting/bots.yml | 26 - .../Entities/Mobs/NPCs/mutants.yml | 2 +- .../Entities/Mobs/NPCs/silicon.yml | 26 +- .../Entities/Mobs/Player/cynocephalus.yml | 4 +- .../Entities/Mobs/Player/felinid.yml | 4 +- .../Nyanotrasen/Entities/Mobs/Player/oni.yml | 4 +- .../Nyanotrasen/Markers/Spawners/bots.yml | 2 +- Resources/Prototypes/Parallaxes/default.yml | 39 +- Resources/Prototypes/Parallaxes/planet.yml | 24 + Resources/Prototypes/Polymorphs/admin.yml | 37 + Resources/Prototypes/Polymorphs/polymorph.yml | 18 - .../Graphs/utilities/atmos_binary.yml | 35 +- .../Graphs/utilities/atmos_pipes.yml | 26 +- .../Graphs/utilities/atmos_trinary.yml | 11 +- .../Graphs/utilities/atmos_unary.yml | 20 +- .../Graphs/weapons/makeshift_laser_gun.yml | 19 + .../Crafting/Graphs/bots}/cleanbot.yml | 2 +- .../Prototypes/Recipes/Crafting/bots.yml | 13 + Resources/Prototypes/Recipes/Lathes/tools.yml | 3 - .../Roles/Jobs/Cargo/quartermaster.yml | 2 +- .../Roles/Jobs/Civilian/janitor.yml | 13 + Resources/Prototypes/secret_weights.yml | 6 +- .../Textures/Interface/Actions/internal0.png | Bin 850 -> 0 bytes .../Textures/Interface/Actions/internal1.png | Bin 861 -> 0 bytes .../Interface/AdminActions/adjust-stack.png | Bin 0 -> 210 bytes .../Interface/AdminActions/bar_jobslots.png | Bin 0 -> 307 bytes .../Textures/Interface/AdminActions/bolt.png | Bin 0 -> 267 bytes .../Interface/AdminActions/drain_battery.png | Bin 0 -> 226 bytes .../AdminActions/emergency_access.png | Bin 0 -> 238 bytes .../Interface/AdminActions/fill-stack.png | Bin 0 -> 213 bytes .../Interface/AdminActions/fill_battery.png | Bin 0 -> 228 bytes .../Textures/Interface/AdminActions/flip.png | Bin 0 -> 264 bytes .../Textures/Interface/AdminActions/halt.png | Bin 0 -> 145 bytes .../Interface/AdminActions/help-backwards.png | Bin 0 -> 188 bytes .../AdminActions/infinite_battery.png | Bin 0 -> 240 bytes .../Textures/Interface/AdminActions/pause.png | Bin 0 -> 128 bytes .../Textures/Interface/AdminActions/play.png | Bin 0 -> 198 bytes .../Interface/AdminActions/redescribe.png | Bin 0 -> 212 bytes .../Interface/AdminActions/rejuvenate.png | Bin 0 -> 253 bytes .../Interface/AdminActions/remove-hand.png | Bin 0 -> 221 bytes .../Interface/AdminActions/remove-hands.png | Bin 0 -> 234 bytes .../Interface/AdminActions/rename.png | Bin 0 -> 218 bytes .../AdminActions/rename_and_redescribe.png | Bin 0 -> 292 bytes .../Interface/AdminActions/run-walk-swap.png | Bin 0 -> 302 bytes .../Interface/AdminActions/snap_joints.png | Bin 0 -> 290 bytes .../Interface/AdminActions/tricks.png | Bin 0 -> 274 bytes .../Interface/AdminActions/unbolt.png | Bin 0 -> 272 bytes .../Textures/Interface/AdminActions/zoom.png | Bin 0 -> 270 bytes .../Alerts/internals.rsi/internal0.png | Bin 0 -> 1511 bytes .../Alerts/internals.rsi/internal1.png | Bin 0 -> 918 bytes .../Alerts/internals.rsi/internal2.png | Bin 0 -> 896 bytes .../Interface/Alerts/internals.rsi/meta.json | 26 + .../VerbIcons/antag-e_sword-temp.192dpi.png | Bin 0 -> 1061 bytes .../reptilian_parts.rsi/frills_axolotl.png | Bin 0 -> 493 bytes .../frills_hood_primary.png | Bin 0 -> 506 bytes .../frills_hood_secondary.png | Bin 0 -> 342 bytes .../reptilian_parts.rsi/meta.json | 15 +- .../Silicon/Bots}/cleanbot.rsi/cleanbot.png | Bin .../Silicon/Bots}/cleanbot.rsi/meta.json | 0 .../Mobs/Robots/honkbot.rsi/honkbot.png | Bin 628 -> 0 bytes .../Mobs/Robots/honkbot.rsi/meta.json | 15 - .../Consumable/Drinks/shotglass.rsi/icon.png | Bin 287 -> 291 bytes .../Guns/Launchers/rocket.rsi/base.png | Bin 349 -> 372 bytes .../Guns/Launchers/rocket.rsi/mag-0.png | Bin 175 -> 184 bytes .../Guns/Launchers/rocket.rsi/mag-1.png | Bin 175 -> 184 bytes .../Weapons/Guns/SMGs/atreides.rsi/base.png | Bin 5695 -> 442 bytes .../Weapons/Guns/SMGs/atreides.rsi/icon.png | Bin 2557 -> 334 bytes .../Guns/SMGs/atreides.rsi/inhand-left.png | Bin 641 -> 641 bytes .../Guns/SMGs/atreides.rsi/inhand-right.png | Bin 630 -> 630 bytes .../Weapons/Guns/SMGs/atreides.rsi/mag-0.png | Bin 2548 -> 174 bytes .../Weapons/Guns/SMGs/atreides.rsi/meta.json | 56 +- .../Guns/SMGs/atreides.rsi/suppressor.png | Bin 2545 -> 154 bytes Resources/Textures/Parallaxes/land.png | Bin 0 -> 853650 bytes Resources/Textures/Parallaxes/licences.txt | 4 + Resources/Textures/Parallaxes/noise.png | Bin 0 -> 658094 bytes .../Airlocks/Glass/maint.rsi/assembly.png | Bin 0 -> 936 bytes .../Airlocks/Glass/maint.rsi/bolted_unlit.png | Bin 0 -> 144 bytes .../Doors/Airlocks/Glass/maint.rsi/closed.png | Bin 0 -> 1410 bytes .../Airlocks/Glass/maint.rsi/closed_unlit.png | Bin 0 -> 144 bytes .../Airlocks/Glass/maint.rsi/closing.png | Bin 0 -> 2571 bytes .../Glass/maint.rsi/closing_unlit.png | Bin 0 -> 432 bytes .../Airlocks/Glass/maint.rsi/deny_unlit.png | Bin 0 -> 321 bytes .../Glass/maint.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Doors/Airlocks/Glass/maint.rsi/meta.json | 195 + .../Doors/Airlocks/Glass/maint.rsi/open.png | Bin 0 -> 342 bytes .../Airlocks/Glass/maint.rsi/opening.png | Bin 0 -> 2667 bytes .../Glass/maint.rsi/opening_unlit.png | Bin 0 -> 284 bytes .../Glass/maint.rsi/panel_closing.png | Bin 0 -> 445 bytes .../Airlocks/Glass/maint.rsi/panel_open.png | Bin 0 -> 315 bytes .../Glass/maint.rsi/panel_opening.png | Bin 0 -> 470 bytes .../Doors/Airlocks/Glass/maint.rsi/sparks.png | Bin 0 -> 697 bytes .../Glass/maint.rsi/sparks_broken.png | Bin 0 -> 183 bytes .../Glass/maint.rsi/sparks_damaged.png | Bin 0 -> 184 bytes .../Airlocks/Glass/maint.rsi/sparks_open.png | Bin 0 -> 175 bytes .../Doors/Airlocks/Glass/maint.rsi/welded.png | Bin 0 -> 296 bytes .../Airlocks/Glass/science.rsi/assembly.png | Bin 979 -> 953 bytes .../Airlocks/Glass/science.rsi/closed.png | Bin 1280 -> 1352 bytes .../Airlocks/Glass/science.rsi/closing.png | Bin 2239 -> 2498 bytes .../Doors/Airlocks/Glass/science.rsi/open.png | Bin 348 -> 389 bytes .../Airlocks/Glass/science.rsi/opening.png | Bin 2299 -> 2608 bytes .../Airlocks/Glass/virology.rsi/assembly.png | Bin 0 -> 953 bytes .../Glass/virology.rsi/bolted_unlit.png | Bin 0 -> 144 bytes .../Airlocks/Glass/virology.rsi/closed.png | Bin 0 -> 1354 bytes .../Glass/virology.rsi/closed_unlit.png | Bin 0 -> 144 bytes .../Airlocks/Glass/virology.rsi/closing.png | Bin 0 -> 2507 bytes .../Glass/virology.rsi/closing_unlit.png | Bin 0 -> 432 bytes .../Glass/virology.rsi/deny_unlit.png | Bin 0 -> 321 bytes .../Glass/virology.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Glass/virology.rsi/meta.json | 195 + .../Airlocks/Glass/virology.rsi/open.png | Bin 0 -> 394 bytes .../Airlocks/Glass/virology.rsi/opening.png | Bin 0 -> 2593 bytes .../Glass/virology.rsi/opening_unlit.png | Bin 0 -> 284 bytes .../Glass/virology.rsi/panel_closing.png | Bin 0 -> 445 bytes .../Glass/virology.rsi/panel_open.png | Bin 0 -> 315 bytes .../Glass/virology.rsi/panel_opening.png | Bin 0 -> 470 bytes .../Airlocks/Glass/virology.rsi/sparks.png | Bin 0 -> 697 bytes .../Glass/virology.rsi/sparks_broken.png | Bin 0 -> 183 bytes .../Glass/virology.rsi/sparks_damaged.png | Bin 0 -> 184 bytes .../Glass/virology.rsi/sparks_open.png | Bin 0 -> 175 bytes .../Airlocks/Glass/virology.rsi/welded.png | Bin 0 -> 296 bytes .../Standard/science.rsi/assembly.png | Bin 973 -> 953 bytes .../Airlocks/Standard/science.rsi/closed.png | Bin 954 -> 538 bytes .../Airlocks/Standard/science.rsi/closing.png | Bin 1852 -> 1220 bytes .../Airlocks/Standard/science.rsi/open.png | Bin 348 -> 389 bytes .../Airlocks/Standard/science.rsi/opening.png | Bin 1902 -> 1225 bytes .../Standard/virology.rsi/assembly.png | Bin 0 -> 953 bytes .../Standard/virology.rsi/bolted_unlit.png | Bin 0 -> 144 bytes .../Airlocks/Standard/virology.rsi/closed.png | Bin 0 -> 538 bytes .../Standard/virology.rsi/closed_unlit.png | Bin 0 -> 144 bytes .../Standard/virology.rsi/closing.png | Bin 0 -> 1220 bytes .../Standard/virology.rsi/closing_unlit.png | Bin 0 -> 432 bytes .../Standard/virology.rsi/deny_unlit.png | Bin 0 -> 321 bytes .../Standard/virology.rsi/emergency_unlit.png | Bin 0 -> 588 bytes .../Airlocks/Standard/virology.rsi/meta.json | 195 + .../Airlocks/Standard/virology.rsi/open.png | Bin 0 -> 394 bytes .../Standard/virology.rsi/opening.png | Bin 0 -> 1225 bytes .../Standard/virology.rsi/opening_unlit.png | Bin 0 -> 284 bytes .../Standard/virology.rsi/panel_closing.png | Bin 0 -> 445 bytes .../Standard/virology.rsi/panel_open.png | Bin 0 -> 315 bytes .../Standard/virology.rsi/panel_opening.png | Bin 0 -> 470 bytes .../Airlocks/Standard/virology.rsi/sparks.png | Bin 0 -> 697 bytes .../Standard/virology.rsi/sparks_broken.png | Bin 0 -> 183 bytes .../Standard/virology.rsi/sparks_damaged.png | Bin 0 -> 184 bytes .../Standard/virology.rsi/sparks_open.png | Bin 0 -> 175 bytes .../Airlocks/Standard/virology.rsi/welded.png | Bin 0 -> 296 bytes Resources/keybinds.yml | 24 +- RobustToolbox | 2 +- SpaceStation14.sln | 8 + SpaceStation14.sln.DotSettings | 31 +- 534 files changed, 10847 insertions(+), 85528 deletions(-) create mode 100644 Content.Client/Administration/Components/HeadstandComponent.cs create mode 100644 Content.Client/Administration/QuickDialogSystem.cs rename Content.Client/Administration/{ => Systems}/AdminSystem.Menu.cs (85%) rename Content.Client/Administration/{ => Systems}/AdminSystem.Overlay.cs (96%) rename Content.Client/Administration/{ => Systems}/AdminSystem.cs (94%) rename Content.Client/Administration/{ => Systems}/AdminVerbSystem.cs (91%) rename Content.Client/Administration/{ => Systems}/BwoinkSystem.cs (96%) create mode 100644 Content.Client/Administration/Systems/HeadstandSystem.cs rename Content.Client/Administration/{ => Systems}/KillSignSystem.cs (96%) create mode 100644 Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml create mode 100644 Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs create mode 100644 Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml create mode 100644 Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTabEntry.xaml.cs delete mode 100644 Content.Client/Atmos/Overlays/FireTileOverlay.cs create mode 100644 Content.Client/Parallax/ParallaxSystem.cs create mode 100644 Content.Client/Station/StationSystem.cs create mode 100644 Content.Server/AI/Components/ActiveNPCComponent.cs delete mode 100644 Content.Server/AI/Components/AiControllerComponent.cs create mode 100644 Content.Server/AI/Components/NPCComponent.cs rename Content.Server/{Nyanotrasen => }/AI/EntitySystems/GoToPuddleSystem.cs (81%) create mode 100644 Content.Server/AI/EntitySystems/NPCSystem.Blackboard.cs create mode 100644 Content.Server/AI/EntitySystems/NPCSystem.Utility.cs delete mode 100644 Content.Server/AI/LoadBalancer/AiActionSystem.cs rename Content.Server/{Nyanotrasen => }/AI/Utility/Actions/Bots/GoToPuddleAndWait.cs (100%) delete mode 100644 Content.Server/AI/Utility/AiLogic/UtilityAI.cs create mode 100644 Content.Server/AI/Utility/AiLogic/UtilityNPCComponent.cs rename Content.Server/{Nyanotrasen => }/AI/Utility/ExpendableActions/Bots/BufferNearbyPuddlesExp.cs (96%) delete mode 100644 Content.Server/AI/Utility/NpcBehaviorManager.cs create mode 100644 Content.Server/Administration/Components/DisarmProneComponent.cs create mode 100644 Content.Server/Administration/Components/HeadstandComponent.cs create mode 100644 Content.Server/Administration/Components/StationInfiniteBatteryTargetComponent.cs create mode 100644 Content.Server/Administration/QuickDialogSystem.OpenDialog.cs create mode 100644 Content.Server/Administration/QuickDialogSystem.cs create mode 100644 Content.Server/Administration/Systems/AdminTestArenaSystem.cs create mode 100644 Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs create mode 100644 Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs create mode 100644 Content.Server/Alert/Click/ToggleInternals.cs create mode 100644 Content.Server/Atmos/EntitySystems/AtmosphereSystem.BreathTool.cs create mode 100644 Content.Server/Chunking/ChunkingSystem.cs delete mode 100644 Content.Server/Gravity/EntitySystems/WeightlessSystem.cs delete mode 100644 Content.Server/Nutrition/Components/ForcefeedOnCollideComponent.cs delete mode 100644 Content.Server/Nutrition/EntitySystems/ForcefeedOnCollideSystem.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Fart/FartSystem.cs delete mode 100644 Content.Server/Nyanotrasen/Abilities/Fart/FarterComponent.cs delete mode 100644 Content.Server/Nyanotrasen/FloorBuffer/FloorBufferComponent.cs delete mode 100644 Content.Server/Nyanotrasen/FloorBuffer/FloorBufferSystem.cs create mode 100644 Content.Server/Parallax/ParallaxSystem.cs delete mode 100644 Content.Server/Vehicle/HonkSystem.cs delete mode 100644 Content.Server/Vehicle/RiderSystem.cs create mode 100644 Content.Server/Vehicle/VehicleSystem.Rider.cs create mode 100644 Content.Shared/Administration/Components/SharedHeadstandComponent.cs create mode 100644 Content.Shared/Administration/QuickDialogOpenEvent.cs rename Content.Shared/Gravity/{GravityChangedMessage.cs => GravityChangedEvent.cs} (58%) delete mode 100644 Content.Shared/Movement/Components/IMobMoverComponent.cs delete mode 100644 Content.Shared/Movement/Components/IMoverComponent.cs create mode 100644 Content.Shared/Movement/Components/InputMoverComponent.cs create mode 100644 Content.Shared/Movement/Components/MobMoverComponent.cs create mode 100644 Content.Shared/Movement/Components/RelayInputMoverComponent.cs delete mode 100644 Content.Shared/Movement/Components/SharedDummyInputMoverComponent.cs delete mode 100644 Content.Shared/Movement/Components/SharedPlayerInputMoverComponent.cs delete mode 100644 Content.Shared/Movement/Components/SharedPlayerMobMoverComponent.cs create mode 100644 Content.Shared/Movement/Events/ContainerRelayMovementEntityEvent.cs create mode 100644 Content.Shared/Movement/Events/MoveInputEvent.cs delete mode 100644 Content.Shared/Movement/Events/RelayMovementEntityEvent.cs create mode 100644 Content.Shared/Movement/Systems/SharedMoverController.Footsteps.cs create mode 100644 Content.Shared/Movement/Systems/SharedMoverController.Mob.cs create mode 100644 Content.Shared/Movement/Systems/SharedMoverController.Relay.cs create mode 100644 Content.Shared/Parallax/ParallaxComponent.cs create mode 100644 Content.Shared/Parallax/SharedParallaxSystem.cs delete mode 100644 Content.Shared/Shuttles/Components/SharedShuttleComponent.cs delete mode 100644 Content.Shared/Shuttles/Events/ShuttleModeRequestMessage.cs create mode 100644 Content.Shared/Station/StationsUpdatedEvent.cs create mode 100644 Content.Shared/Vehicle/SharedVehicleSystem.Rider.cs create mode 100644 Resources/Locale/en-US/administration/antag.ftl create mode 100644 Resources/Locale/en-US/alert-levels/alert-level-command.ftl create mode 100644 Resources/Locale/en-US/atmos/gas-vent-pump.ftl create mode 100644 Resources/Locale/en-US/machine-linking/port-selector.ftl create mode 100644 Resources/Maps/Test/admin_test_arena.yml delete mode 100644 Resources/Maps/atlas.yml create mode 100644 Resources/Prototypes/Entities/Objects/Fun/error.yml delete mode 100644 Resources/Prototypes/Maps/atlas.yml delete mode 100644 Resources/Prototypes/Nyanotrasen/Catalog/Recipes/Crafting/Graphs/Bot/honkbot.yml create mode 100644 Resources/Prototypes/Parallaxes/planet.yml create mode 100644 Resources/Prototypes/Polymorphs/admin.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/weapons/makeshift_laser_gun.yml rename Resources/Prototypes/{Nyanotrasen/Catalog/Recipes/Crafting/Graphs/Bot => Recipes/Crafting/Graphs/bots}/cleanbot.yml (89%) delete mode 100644 Resources/Textures/Interface/Actions/internal0.png delete mode 100644 Resources/Textures/Interface/Actions/internal1.png create mode 100644 Resources/Textures/Interface/AdminActions/adjust-stack.png create mode 100644 Resources/Textures/Interface/AdminActions/bar_jobslots.png create mode 100644 Resources/Textures/Interface/AdminActions/bolt.png create mode 100644 Resources/Textures/Interface/AdminActions/drain_battery.png create mode 100644 Resources/Textures/Interface/AdminActions/emergency_access.png create mode 100644 Resources/Textures/Interface/AdminActions/fill-stack.png create mode 100644 Resources/Textures/Interface/AdminActions/fill_battery.png create mode 100644 Resources/Textures/Interface/AdminActions/flip.png create mode 100644 Resources/Textures/Interface/AdminActions/halt.png create mode 100644 Resources/Textures/Interface/AdminActions/help-backwards.png create mode 100644 Resources/Textures/Interface/AdminActions/infinite_battery.png create mode 100644 Resources/Textures/Interface/AdminActions/pause.png create mode 100644 Resources/Textures/Interface/AdminActions/play.png create mode 100644 Resources/Textures/Interface/AdminActions/redescribe.png create mode 100644 Resources/Textures/Interface/AdminActions/rejuvenate.png create mode 100644 Resources/Textures/Interface/AdminActions/remove-hand.png create mode 100644 Resources/Textures/Interface/AdminActions/remove-hands.png create mode 100644 Resources/Textures/Interface/AdminActions/rename.png create mode 100644 Resources/Textures/Interface/AdminActions/rename_and_redescribe.png create mode 100644 Resources/Textures/Interface/AdminActions/run-walk-swap.png create mode 100644 Resources/Textures/Interface/AdminActions/snap_joints.png create mode 100644 Resources/Textures/Interface/AdminActions/tricks.png create mode 100644 Resources/Textures/Interface/AdminActions/unbolt.png create mode 100644 Resources/Textures/Interface/AdminActions/zoom.png create mode 100644 Resources/Textures/Interface/Alerts/internals.rsi/internal0.png create mode 100644 Resources/Textures/Interface/Alerts/internals.rsi/internal1.png create mode 100644 Resources/Textures/Interface/Alerts/internals.rsi/internal2.png create mode 100644 Resources/Textures/Interface/Alerts/internals.rsi/meta.json create mode 100644 Resources/Textures/Interface/VerbIcons/antag-e_sword-temp.192dpi.png create mode 100644 Resources/Textures/Mobs/Customization/reptilian_parts.rsi/frills_axolotl.png create mode 100644 Resources/Textures/Mobs/Customization/reptilian_parts.rsi/frills_hood_primary.png create mode 100644 Resources/Textures/Mobs/Customization/reptilian_parts.rsi/frills_hood_secondary.png rename Resources/Textures/{Nyanotrasen/Mobs/Robots => Mobs/Silicon/Bots}/cleanbot.rsi/cleanbot.png (100%) rename Resources/Textures/{Nyanotrasen/Mobs/Robots => Mobs/Silicon/Bots}/cleanbot.rsi/meta.json (100%) delete mode 100644 Resources/Textures/Nyanotrasen/Mobs/Robots/honkbot.rsi/honkbot.png delete mode 100644 Resources/Textures/Nyanotrasen/Mobs/Robots/honkbot.rsi/meta.json create mode 100644 Resources/Textures/Parallaxes/land.png create mode 100644 Resources/Textures/Parallaxes/licences.txt create mode 100644 Resources/Textures/Parallaxes/noise.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/assembly.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/bolted_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/closed.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/closed_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/closing.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/closing_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/deny_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/meta.json create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/opening.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/opening_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/panel_closing.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/panel_open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/panel_opening.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/sparks.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/sparks_broken.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/sparks_damaged.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/sparks_open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/maint.rsi/welded.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/assembly.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/bolted_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/closed.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/closed_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/closing.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/closing_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/deny_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/meta.json create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/opening.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/opening_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/panel_closing.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/panel_open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/panel_opening.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/sparks.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/sparks_broken.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/sparks_damaged.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/sparks_open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Glass/virology.rsi/welded.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/assembly.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/bolted_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/closed.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/closed_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/closing.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/closing_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/deny_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/emergency_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/meta.json create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/opening.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/opening_unlit.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/panel_closing.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/panel_open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/panel_opening.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/sparks.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/sparks_broken.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/sparks_damaged.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/sparks_open.png create mode 100644 Resources/Textures/Structures/Doors/Airlocks/Standard/virology.rsi/welded.png diff --git a/.editorconfig b/.editorconfig index 186026ff1f5..3e71517eba6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -115,6 +115,8 @@ csharp_new_line_before_finally = true csharp_new_line_before_members_in_object_initializers = false csharp_new_line_before_open_brace = all csharp_new_line_between_query_expression_clauses = true +resharper_csharp_place_simple_embedded_statement_on_same_line = never +resharper_csharp_keep_existing_embedded_arrangement = false # Indentation preferences #csharp_indent_block_contents = true diff --git a/Content.Client/Administration/AdminNameOverlay.cs b/Content.Client/Administration/AdminNameOverlay.cs index 01793a2fa1e..0d2526831de 100644 --- a/Content.Client/Administration/AdminNameOverlay.cs +++ b/Content.Client/Administration/AdminNameOverlay.cs @@ -1,3 +1,4 @@ +using Content.Client.Administration.Systems; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Shared.Enums; diff --git a/Content.Client/Administration/Components/HeadstandComponent.cs b/Content.Client/Administration/Components/HeadstandComponent.cs new file mode 100644 index 00000000000..403d3260929 --- /dev/null +++ b/Content.Client/Administration/Components/HeadstandComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Administration.Components; +using Robust.Shared.GameStates; + +namespace Content.Client.Administration.Components; + +[RegisterComponent, NetworkedComponent] +public sealed class HeadstandComponent : SharedHeadstandComponent +{ + +} diff --git a/Content.Client/Administration/QuickDialogSystem.cs b/Content.Client/Administration/QuickDialogSystem.cs new file mode 100644 index 00000000000..fcd439d9869 --- /dev/null +++ b/Content.Client/Administration/QuickDialogSystem.cs @@ -0,0 +1,154 @@ +using System.Linq; +using Content.Client.UserInterface; +using Content.Shared.Administration; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; + +namespace Content.Client.Administration; + +/// +/// This handles the client portion of quick dialogs. +/// +public sealed class QuickDialogSystem : EntitySystem +{ + /// + public override void Initialize() + { + SubscribeNetworkEvent(OpenDialog); + } + + private void OpenDialog(QuickDialogOpenEvent ev) + { + var window = new FancyWindow() + { + Title = ev.Title + }; + + var entryContainer = new BoxContainer() + { + Orientation = BoxContainer.LayoutOrientation.Vertical, + Margin = new Thickness(8), + }; + + var promptsDict = new Dictionary(); + + foreach (var entry in ev.Prompts) + { + var entryBox = new BoxContainer() + { + Orientation = BoxContainer.LayoutOrientation.Horizontal + }; + + entryBox.AddChild(new Label { Text = entry.Prompt, HorizontalExpand = true, SizeFlagsStretchRatio = 0.5f }); + var edit = new LineEdit() { HorizontalExpand = true}; + entryBox.AddChild(edit); + switch (entry.Type) + { + case QuickDialogEntryType.Integer: + edit.IsValid += VerifyInt; + edit.PlaceHolder = "Integer.."; + break; + case QuickDialogEntryType.Float: + edit.IsValid += VerifyFloat; + edit.PlaceHolder = "Float.."; + break; + case QuickDialogEntryType.ShortText: + edit.IsValid += VerifyShortText; + edit.PlaceHolder = "Short text.."; + break; + case QuickDialogEntryType.LongText: + edit.IsValid += VerifyLongText; + edit.PlaceHolder = "Long text.."; + break; + default: + throw new ArgumentOutOfRangeException(); + } + promptsDict.Add(entry.FieldId, edit); + entryContainer.AddChild(entryBox); + } + + var buttonsBox = new BoxContainer() + { + Orientation = BoxContainer.LayoutOrientation.Horizontal, + HorizontalAlignment = Control.HAlignment.Center, + }; + + var alreadyReplied = false; + + if ((ev.Buttons & QuickDialogButtonFlag.OkButton) != 0) + { + var okButton = new Button() + { + Text = "Ok", + }; + + okButton.OnPressed += _ => + { + RaiseNetworkEvent(new QuickDialogResponseEvent(ev.DialogId, + promptsDict.Select(x => (x.Key, x.Value.Text)).ToDictionary(x => x.Key, x => x.Text), + QuickDialogButtonFlag.OkButton)); + alreadyReplied = true; + window.Close(); + }; + + buttonsBox.AddChild(okButton); + } + + if ((ev.Buttons & QuickDialogButtonFlag.OkButton) != 0) + { + var cancelButton = new Button() + { + Text = "Cancel", + }; + + cancelButton.OnPressed += _ => + { + RaiseNetworkEvent(new QuickDialogResponseEvent(ev.DialogId, + new(), + QuickDialogButtonFlag.CancelButton)); + alreadyReplied = true; + window.Close(); + }; + + buttonsBox.AddChild(cancelButton); + } + + window.OnClose += () => + { + if (!alreadyReplied) + { + RaiseNetworkEvent(new QuickDialogResponseEvent(ev.DialogId, + new(), + QuickDialogButtonFlag.CancelButton)); + } + }; + + entryContainer.AddChild(buttonsBox); + + window.ContentsContainer.AddChild(entryContainer); + + window.MinWidth *= 2; // Just double it. + + window.OpenCentered(); + } + + private bool VerifyInt(string input) + { + return int.TryParse(input, out var _); + } + + private bool VerifyFloat(string input) + { + return float.TryParse(input, out var _); + } + + private bool VerifyShortText(string input) + { + return input.Length <= 100; + } + + private bool VerifyLongText(string input) + { + return input.Length <= 2000; + } +} diff --git a/Content.Client/Administration/AdminSystem.Menu.cs b/Content.Client/Administration/Systems/AdminSystem.Menu.cs similarity index 85% rename from Content.Client/Administration/AdminSystem.Menu.cs rename to Content.Client/Administration/Systems/AdminSystem.Menu.cs index 0def38a0990..c10cadd48a5 100644 --- a/Content.Client/Administration/AdminSystem.Menu.cs +++ b/Content.Client/Administration/Systems/AdminSystem.Menu.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; using Content.Client.Administration.Managers; using Content.Client.Administration.UI; +using Content.Client.Administration.UI.Tabs.ObjectsTab; using Content.Client.Administration.UI.Tabs.PlayerTab; using Content.Client.HUD; using Content.Client.Verbs; @@ -11,13 +11,11 @@ using Robust.Client.ResourceManagement; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; -using Robust.Shared.GameObjects; using Robust.Shared.Input; using Robust.Shared.Input.Binding; -using Robust.Shared.IoC; using Robust.Shared.Network; -namespace Content.Client.Administration +namespace Content.Client.Administration.Systems { public sealed partial class AdminSystem { @@ -101,13 +99,18 @@ public void Open() } _window.PlayerTabControl.OnEntryPressed += PlayerTabEntryPressed; + _window.ObjectsTabControl.OnEntryPressed += ObjectsTabEntryPressed; _window.OpenCentered(); } public void Close() { if (_window != null) + { _window.PlayerTabControl.OnEntryPressed -= PlayerTabEntryPressed; + _window.ObjectsTabControl.OnEntryPressed -= ObjectsTabEntryPressed; + } + _window?.Close(); foreach (var window in _commandWindows) @@ -163,5 +166,23 @@ private void PlayerTabEntryPressed(BaseButton.ButtonEventArgs args) args.Event.Handle(); } + + private void ObjectsTabEntryPressed(BaseButton.ButtonEventArgs args) + { + if (args.Button is not ObjectsTabEntry button) + return; + + var uid = button.AssocEntity; + var function = args.Event.Function; + + if (function == EngineKeyFunctions.UIClick) + _clientConsoleHost.ExecuteCommand($"vv {uid}"); + else if (function == ContentKeyFunctions.OpenContextMenu) + _verbSystem.VerbMenu.OpenVerbMenu(uid, true); + else + return; + + args.Event.Handle(); + } } } diff --git a/Content.Client/Administration/AdminSystem.Overlay.cs b/Content.Client/Administration/Systems/AdminSystem.Overlay.cs similarity index 96% rename from Content.Client/Administration/AdminSystem.Overlay.cs rename to Content.Client/Administration/Systems/AdminSystem.Overlay.cs index febb9d6421b..85611626d50 100644 --- a/Content.Client/Administration/AdminSystem.Overlay.cs +++ b/Content.Client/Administration/Systems/AdminSystem.Overlay.cs @@ -1,7 +1,7 @@ using Content.Client.Administration.Managers; using Robust.Client.Graphics; -namespace Content.Client.Administration +namespace Content.Client.Administration.Systems { public sealed partial class AdminSystem { diff --git a/Content.Client/Administration/AdminSystem.cs b/Content.Client/Administration/Systems/AdminSystem.cs similarity index 94% rename from Content.Client/Administration/AdminSystem.cs rename to Content.Client/Administration/Systems/AdminSystem.cs index 137a4ea3fb7..de62caa4ef4 100644 --- a/Content.Client/Administration/AdminSystem.cs +++ b/Content.Client/Administration/Systems/AdminSystem.cs @@ -1,13 +1,10 @@ -using System; -using System.Collections.Generic; using System.Linq; using Content.Shared.Administration; using Content.Shared.Administration.Events; using Content.Shared.GameTicking; -using Robust.Shared.GameObjects; using Robust.Shared.Network; -namespace Content.Client.Administration +namespace Content.Client.Administration.Systems { public sealed partial class AdminSystem : EntitySystem { diff --git a/Content.Client/Administration/AdminVerbSystem.cs b/Content.Client/Administration/Systems/AdminVerbSystem.cs similarity index 91% rename from Content.Client/Administration/AdminVerbSystem.cs rename to Content.Client/Administration/Systems/AdminVerbSystem.cs index cb440a92dac..9a6bfd705d5 100644 --- a/Content.Client/Administration/AdminVerbSystem.cs +++ b/Content.Client/Administration/Systems/AdminVerbSystem.cs @@ -1,10 +1,7 @@ using Content.Shared.Verbs; using Robust.Client.Console; -using Robust.Client.ViewVariables; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -namespace Content.Client.Verbs +namespace Content.Client.Administration.Systems { /// /// Client-side admin verb system. These usually open some sort of UIs. diff --git a/Content.Client/Administration/BwoinkSystem.cs b/Content.Client/Administration/Systems/BwoinkSystem.cs similarity index 96% rename from Content.Client/Administration/BwoinkSystem.cs rename to Content.Client/Administration/Systems/BwoinkSystem.cs index c04b5fdfd32..96076d96cf2 100644 --- a/Content.Client/Administration/BwoinkSystem.cs +++ b/Content.Client/Administration/Systems/BwoinkSystem.cs @@ -1,7 +1,5 @@ #nullable enable -using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Client.Administration.Managers; using Content.Client.Administration.UI; using Content.Client.Administration.UI.CustomControls; @@ -9,16 +7,13 @@ using Content.Shared.Administration; using JetBrains.Annotations; using Robust.Client.Graphics; -using Robust.Client.UserInterface.CustomControls; using Robust.Client.Player; -using Robust.Shared.GameObjects; -using Robust.Shared.Player; -using Robust.Shared.Localization; +using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Audio; -using Robust.Shared.IoC; using Robust.Shared.Network; +using Robust.Shared.Player; -namespace Content.Client.Administration +namespace Content.Client.Administration.Systems { [UsedImplicitly] public sealed class BwoinkSystem : SharedBwoinkSystem diff --git a/Content.Client/Administration/Systems/HeadstandSystem.cs b/Content.Client/Administration/Systems/HeadstandSystem.cs new file mode 100644 index 00000000000..d0634e4ddd6 --- /dev/null +++ b/Content.Client/Administration/Systems/HeadstandSystem.cs @@ -0,0 +1,35 @@ +using Content.Client.Administration.Components; +using Robust.Client.GameObjects; + +namespace Content.Client.Administration.Systems; + +public sealed class HeadstandSystem : EntitySystem +{ + public override void Initialize() + { + SubscribeLocalEvent(OnHeadstandAdded); + SubscribeLocalEvent(OnHeadstandRemoved); + } + + private void OnHeadstandAdded(EntityUid uid, HeadstandComponent component, ComponentStartup args) + { + if (!TryComp(uid, out var sprite)) + return; + + foreach (var layer in sprite.AllLayers) + { + layer.Rotation += Angle.FromDegrees(180.0f); + } + } + + private void OnHeadstandRemoved(EntityUid uid, HeadstandComponent component, ComponentShutdown args) + { + if (!TryComp(uid, out var sprite)) + return; + + foreach (var layer in sprite.AllLayers) + { + layer.Rotation -= Angle.FromDegrees(180.0f); + } + } +} diff --git a/Content.Client/Administration/KillSignSystem.cs b/Content.Client/Administration/Systems/KillSignSystem.cs similarity index 96% rename from Content.Client/Administration/KillSignSystem.cs rename to Content.Client/Administration/Systems/KillSignSystem.cs index 2959593bb96..5d86c0d91ef 100644 --- a/Content.Client/Administration/KillSignSystem.cs +++ b/Content.Client/Administration/Systems/KillSignSystem.cs @@ -2,7 +2,7 @@ using Robust.Client.GameObjects; using Robust.Shared.Utility; -namespace Content.Client.Administration; +namespace Content.Client.Administration.Systems; public sealed class KillSignSystem : EntitySystem { diff --git a/Content.Client/Administration/UI/AdminAnnounceWindow.xaml b/Content.Client/Administration/UI/AdminAnnounceWindow.xaml index bb5c29bc788..a703a7f5e62 100644 --- a/Content.Client/Administration/UI/AdminAnnounceWindow.xaml +++ b/Content.Client/Administration/UI/AdminAnnounceWindow.xaml @@ -1,15 +1,15 @@ - + - + - public sealed class ParallaxControl : Control { + [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IParallaxManager _parallaxManager = default!; [Dependency] private readonly IRobustRandom _random = default!; - [ViewVariables(VVAccess.ReadWrite)] public Vector2i Offset { get; set; } + [ViewVariables(VVAccess.ReadWrite)] public Vector2 Offset { get; set; } public ParallaxControl() { @@ -24,20 +24,24 @@ public ParallaxControl() Offset = (_random.Next(0, 1000), _random.Next(0, 1000)); RectClipContent = true; + _parallaxManager.LoadParallaxByName("FastSpace"); } protected override void Draw(DrawingHandleScreen handle) { - foreach (var layer in _parallaxManager.ParallaxLayers) + foreach (var layer in _parallaxManager.GetParallaxLayers("FastSpace")) { var tex = layer.Texture; - var texSize = tex.Size * layer.Config.Scale.Floored(); + var texSize = (tex.Size.X * (int) Size.X, tex.Size.Y * (int) Size.X) * layer.Config.Scale.Floored() / 540; var ourSize = PixelSize; + var currentTime = (float) _timing.RealTime.TotalSeconds; + var offset = Offset + new Vector2(currentTime * 100f, currentTime * 0f); + if (layer.Config.Tiled) { // Multiply offset by slowness to match normal parallax - var scaledOffset = (Offset * layer.Config.Slowness).Floored(); + var scaledOffset = (offset * layer.Config.Slowness).Floored(); // Then modulo the scaled offset by the size to prevent drawing a bunch of offscreen tiles for really small images. scaledOffset.X %= texSize.X; diff --git a/Content.Client/Parallax/ParallaxOverlay.cs b/Content.Client/Parallax/ParallaxOverlay.cs index 89b27194263..1f401cde913 100644 --- a/Content.Client/Parallax/ParallaxOverlay.cs +++ b/Content.Client/Parallax/ParallaxOverlay.cs @@ -1,47 +1,55 @@ -using System; using Content.Client.Parallax.Managers; using Content.Shared.CCVar; using Robust.Client.Graphics; using Robust.Shared.Configuration; using Robust.Shared.Enums; -using Robust.Shared.IoC; -using Robust.Shared.Maths; +using Robust.Shared.Map; using Robust.Shared.Prototypes; +using Robust.Shared.Timing; namespace Content.Client.Parallax; public sealed class ParallaxOverlay : Overlay { - [Dependency] private readonly IParallaxManager _parallaxManager = default!; + [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IConfigurationManager _configurationManager = default!; + [Dependency] private readonly IParallaxManager _manager = default!; + private readonly ParallaxSystem _parallax; public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowWorld; - private readonly ShaderInstance _shader; public ParallaxOverlay() { IoCManager.InjectDependencies(this); - _shader = _prototypeManager.Index("unshaded").Instance(); + _parallax = IoCManager.Resolve().GetEntitySystem(); + } protected override void Draw(in OverlayDrawArgs args) { - if (args.Viewport.Eye == null) - { + if (args.MapId == MapId.Nullspace) return; - } if (!_configurationManager.GetCVar(CCVars.ParallaxEnabled)) - { return; - } + var position = args.Viewport.Eye?.Position.Position ?? Vector2.Zero; var screenHandle = args.WorldHandle; - screenHandle.UseShader(_shader); - foreach (var layer in _parallaxManager.ParallaxLayers) + var layers = _parallax.GetParallaxLayers(args.MapId); + var realTime = (float) _timing.RealTime.TotalSeconds; + + foreach (var layer in layers) { + ShaderInstance? shader; + + if (!string.IsNullOrEmpty(layer.Config.Shader)) + shader = _prototypeManager.Index(layer.Config.Shader).Instance(); + else + shader = null; + + screenHandle.UseShader(shader); var tex = layer.Texture; // Size of the texture in world units. @@ -52,10 +60,11 @@ protected override void Draw(in OverlayDrawArgs args) // The effects of this are such that a slowness of 1 anchors the layer to the centre of the screen, while a slowness of 0 anchors the layer to the world. // (For values 0.0 to 1.0 this is in effect a lerp, but it's deliberately unclamped.) // The ParallaxAnchor adapts the parallax for station positioning and possibly map-specific tweaks. - var home = layer.Config.WorldHomePosition + _parallaxManager.ParallaxAnchor; + var home = layer.Config.WorldHomePosition + _manager.ParallaxAnchor; + var scrolled = layer.Config.Scrolling * realTime; // Origin - start with the parallax shift itself. - var originBL = (args.Viewport.Eye.Position.Position - home) * layer.Config.Slowness; + var originBL = (position - home) * layer.Config.Slowness + scrolled; // Place at the home. originBL += home; @@ -90,6 +99,8 @@ protected override void Draw(in OverlayDrawArgs args) screenHandle.DrawTextureRect(tex, Box2.FromDimensions(originBL, size)); } } + + screenHandle.UseShader(null); } } diff --git a/Content.Client/Parallax/ParallaxSystem.cs b/Content.Client/Parallax/ParallaxSystem.cs new file mode 100644 index 00000000000..d3320ce1f97 --- /dev/null +++ b/Content.Client/Parallax/ParallaxSystem.cs @@ -0,0 +1,71 @@ +using Content.Client.Parallax.Managers; +using Content.Shared.Parallax; +using Robust.Client.Graphics; +using Robust.Shared.GameStates; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Client.Parallax; + +public sealed class ParallaxSystem : SharedParallaxSystem +{ + [Dependency] private readonly IMapManager _map = default!; + [Dependency] private readonly IOverlayManager _overlay = default!; + [Dependency] private readonly IParallaxManager _parallax = default!; + [Dependency] private readonly IPrototypeManager _protoManager = default!; + + private const string Fallback = "Default"; + + public override void Initialize() + { + base.Initialize(); + _overlay.AddOverlay(new ParallaxOverlay()); + SubscribeLocalEvent(OnParallaxHandleState); + _protoManager.PrototypesReloaded += OnReload; + } + + private void OnReload(PrototypesReloadedEventArgs obj) + { + _parallax.UnloadParallax(Fallback); + _parallax.LoadDefaultParallax(); + + foreach (var comp in EntityQuery(true)) + { + _parallax.UnloadParallax(comp.Parallax); + _parallax.LoadParallaxByName(comp.Parallax); + } + } + + public override void Shutdown() + { + base.Shutdown(); + _overlay.RemoveOverlay(); + _protoManager.PrototypesReloaded -= OnReload; + } + + private void OnParallaxHandleState(EntityUid uid, ParallaxComponent component, ref ComponentHandleState args) + { + if (args.Current is not ParallaxComponentState state) return; + component.Parallax = state.Parallax; + + if (!_parallax.IsLoaded(component.Parallax)) + { + _parallax.LoadParallaxByName(component.Parallax); + } + } + + public ParallaxLayerPrepared[] GetParallaxLayers(MapId mapId) + { + return _parallax.GetParallaxLayers(GetParallax(_map.GetMapEntityId(mapId))); + } + + public string GetParallax(MapId mapId) + { + return GetParallax(_map.GetMapEntityId(mapId)); + } + + public string GetParallax(EntityUid mapUid) + { + return TryComp(mapUid, out var parallax) ? parallax.Parallax : Fallback; + } +} diff --git a/Content.Client/Physics/Controllers/MoverController.cs b/Content.Client/Physics/Controllers/MoverController.cs index 6db507f00ee..51292f767bb 100644 --- a/Content.Client/Physics/Controllers/MoverController.cs +++ b/Content.Client/Physics/Controllers/MoverController.cs @@ -1,10 +1,7 @@ -using Content.Shared.MobState.Components; -using Content.Shared.Movement; using Content.Shared.Movement.Components; using Content.Shared.Movement.Systems; using Content.Shared.Pulling.Components; using Robust.Client.Player; -using Robust.Shared.Map; using Robust.Shared.Physics; using Robust.Shared.Player; using Robust.Shared.Timing; @@ -20,14 +17,47 @@ public override void UpdateBeforeSolve(bool prediction, float frameTime) { base.UpdateBeforeSolve(prediction, frameTime); - if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} player || - !TryComp(player, out IMoverComponent? mover) || - !TryComp(player, out PhysicsComponent? body) || + if (_playerManager.LocalPlayer?.ControlledEntity is not {Valid: true} player) + return; + + if (TryComp(player, out var relayMover)) + { + if (relayMover.RelayEntity != null) + HandleClientsideMovement(relayMover.RelayEntity.Value, frameTime); + } + + HandleClientsideMovement(player, frameTime); + } + + private void HandleClientsideMovement(EntityUid player, float frameTime) + { + if (!TryComp(player, out InputMoverComponent? mover) || !TryComp(player, out TransformComponent? xform)) { return; } + PhysicsComponent? body = null; + TransformComponent? xformMover = xform; + + if (mover.ToParent && HasComp(xform.ParentUid)) + { + if (!TryComp(xform.ParentUid, out body) || + !TryComp(xform.ParentUid, out xformMover)) + { + return; + } + + if (TryComp(xform.ParentUid, out var parentMover)) + { + mover.LastGridAngle = parentMover.LastGridAngle; + } + } + else if (!TryComp(player, out body)) + { + return; + } + if (xform.GridUid != null) mover.LastGridAngle = GetParentGridAngle(xform, mover); @@ -65,13 +95,7 @@ public override void UpdateBeforeSolve(bool prediction, float frameTime) } // Server-side should just be handled on its own so we'll just do this shizznit - if (TryComp(player, out IMobMoverComponent? mobMover)) - { - HandleMobMovement(mover, body, mobMover, xform, frameTime); - return; - } - - HandleKinematicMovement(mover, body); + HandleMobMovement(mover, body, xformMover, frameTime); } protected override Filter GetSoundPlayers(EntityUid mover) diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index aea17fec808..3841164bcbf 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -157,7 +157,8 @@ private static string GetStyleClass(PopupType type) => public override void FrameUpdate(float frameTime) { - if (_aliveWorldLabels.Count == 0) return; + if (_aliveWorldLabels.Count == 0 && _aliveCursorLabels.Count == 0) + return; var player = _playerManager.LocalPlayer?.ControlledEntity; var playerPos = player != null ? Transform(player.Value).MapPosition : MapCoordinates.Nullspace; @@ -234,13 +235,13 @@ private sealed class CursorPopupLabel : PopupLabel public CursorPopupLabel(ScreenCoordinates screenCoords) : base() { - InitialPos = screenCoords.Position / UIScale - DesiredSize / 2; + InitialPos = screenCoords.Position - DesiredSize / 2; } protected override void FrameUpdate(FrameEventArgs eventArgs) { base.FrameUpdate(eventArgs); - LayoutContainer.SetPosition(this, InitialPos - (0, 20 * (TotalTime * TotalTime + TotalTime))); + LayoutContainer.SetPosition(this, InitialPos / UIScale - (0, 20 * (TotalTime * TotalTime + TotalTime))); } } diff --git a/Content.Client/Research/UI/ResearchClientServerSelectionMenu.xaml.cs b/Content.Client/Research/UI/ResearchClientServerSelectionMenu.xaml.cs index 755e277b7f9..ceaa965e59f 100644 --- a/Content.Client/Research/UI/ResearchClientServerSelectionMenu.xaml.cs +++ b/Content.Client/Research/UI/ResearchClientServerSelectionMenu.xaml.cs @@ -2,8 +2,6 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; -using Robust.Shared.IoC; -using Robust.Shared.Localization; namespace Content.Client.Research.UI { @@ -11,8 +9,8 @@ namespace Content.Client.Research.UI public sealed partial class ResearchClientServerSelectionMenu : DefaultWindow { private int _serverCount; - private string[] _serverNames = System.Array.Empty(); - private int[] _serverIds = System.Array.Empty(); + private string[] _serverNames = Array.Empty(); + private int[] _serverIds = Array.Empty(); private int _selectedServerId = -1; private ResearchClientBoundUserInterface Owner { get; } diff --git a/Content.Client/Shuttles/BUI/ShuttleConsoleBoundUserInterface.cs b/Content.Client/Shuttles/BUI/ShuttleConsoleBoundUserInterface.cs index 63f71f8dc2f..d4056584201 100644 --- a/Content.Client/Shuttles/BUI/ShuttleConsoleBoundUserInterface.cs +++ b/Content.Client/Shuttles/BUI/ShuttleConsoleBoundUserInterface.cs @@ -18,7 +18,6 @@ protected override void Open() { base.Open(); _window = new ShuttleConsoleWindow(); - _window.ShuttleModePressed += OnShuttleModePressed; _window.UndockPressed += OnUndockPressed; _window.StartAutodockPressed += OnAutodockPressed; _window.StopAutodockPressed += OnStopAutodockPressed; @@ -65,11 +64,6 @@ private void OnUndockPressed(EntityUid obj) SendMessage(new UndockRequestMessage() {DockEntity = obj}); } - private void OnShuttleModePressed(ShuttleMode obj) - { - SendMessage(new ShuttleModeRequestMessage() {Mode = obj}); - } - protected override void UpdateState(BoundUserInterfaceState state) { base.UpdateState(state); diff --git a/Content.Client/Shuttles/Systems/ShuttleConsoleSystem.cs b/Content.Client/Shuttles/Systems/ShuttleConsoleSystem.cs index 7ae419c358b..f9e01c09fd8 100644 --- a/Content.Client/Shuttles/Systems/ShuttleConsoleSystem.cs +++ b/Content.Client/Shuttles/Systems/ShuttleConsoleSystem.cs @@ -1,16 +1,43 @@ +using Content.Shared.Input; using Content.Shared.Shuttles.Components; -using Content.Shared.Shuttles.Events; using Content.Shared.Shuttles.Systems; +using Robust.Client.Input; +using Robust.Client.Player; using Robust.Shared.GameStates; namespace Content.Client.Shuttles.Systems { public sealed class ShuttleConsoleSystem : SharedShuttleConsoleSystem { + [Dependency] private readonly IInputManager _input = default!; + [Dependency] private readonly IPlayerManager _playerManager = default!; + public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnHandleState); + var shuttle = _input.Contexts.New("shuttle", "common"); + shuttle.AddFunction(ContentKeyFunctions.ShuttleStrafeUp); + shuttle.AddFunction(ContentKeyFunctions.ShuttleStrafeDown); + shuttle.AddFunction(ContentKeyFunctions.ShuttleStrafeLeft); + shuttle.AddFunction(ContentKeyFunctions.ShuttleStrafeRight); + shuttle.AddFunction(ContentKeyFunctions.ShuttleRotateLeft); + shuttle.AddFunction(ContentKeyFunctions.ShuttleRotateRight); + shuttle.AddFunction(ContentKeyFunctions.ShuttleBrake); + } + + public override void Shutdown() + { + base.Shutdown(); + _input.Contexts.Remove("shuttle"); + } + + protected override void HandlePilotShutdown(EntityUid uid, PilotComponent component, ComponentShutdown args) + { + base.HandlePilotShutdown(uid, component, args); + if (_playerManager.LocalPlayer?.ControlledEntity != uid) return; + + _input.Contexts.SetActiveContext("human"); } private void OnHandleState(EntityUid uid, PilotComponent component, ref ComponentHandleState args) @@ -21,6 +48,7 @@ private void OnHandleState(EntityUid uid, PilotComponent component, ref Componen if (!console.IsValid()) { component.Console = null; + _input.Contexts.SetActiveContext("human"); return; } @@ -32,6 +60,7 @@ private void OnHandleState(EntityUid uid, PilotComponent component, ref Componen component.Console = shuttleConsoleComponent; ActionBlockerSystem.UpdateCanMove(uid); + _input.Contexts.SetActiveContext("shuttle"); } } } diff --git a/Content.Client/Shuttles/UI/DockingControl.cs b/Content.Client/Shuttles/UI/DockingControl.cs index 2c37f623570..7daa9c18986 100644 --- a/Content.Client/Shuttles/UI/DockingControl.cs +++ b/Content.Client/Shuttles/UI/DockingControl.cs @@ -16,7 +16,6 @@ public class DockingControl : Control private readonly IEntityManager _entManager; private readonly IMapManager _mapManager; - private const int MinimapRadius = 384; private const int MinimapMargin = 4; private float _range = 8f; @@ -24,8 +23,8 @@ public class DockingControl : Control private const float GridLinesDistance = 32f; private int MidPoint => SizeFull / 2; - private int SizeFull => (int) ((MinimapRadius + MinimapMargin) * 2 * UIScale); - private int ScaledMinimapRadius => (int) (MinimapRadius * UIScale); + private int SizeFull => (int) ((RadarControl.MinimapRadius + MinimapMargin) * 2 * UIScale); + private int ScaledMinimapRadius => (int) (RadarControl.MinimapRadius * UIScale); private float MinimapScale => _range != 0 ? ScaledMinimapRadius / _range : 0f; public EntityUid? ViewedDock; diff --git a/Content.Client/Shuttles/UI/RadarControl.cs b/Content.Client/Shuttles/UI/RadarControl.cs index fd846746c03..01bd88fc25e 100644 --- a/Content.Client/Shuttles/UI/RadarControl.cs +++ b/Content.Client/Shuttles/UI/RadarControl.cs @@ -22,7 +22,7 @@ public sealed class RadarControl : Control private const float ScrollSensitivity = 8f; - private const int MinimapRadius = 320; + public const int MinimapRadius = 320; private const int MinimapMargin = 4; private const float GridLinesDistance = 32f; @@ -73,6 +73,7 @@ public RadarControl() { IoCManager.InjectDependencies(this); MinSize = (SizeFull, SizeFull); + RectClipContent = true; } public void SetMatrix(EntityCoordinates? coordinates, Angle? angle) diff --git a/Content.Client/Shuttles/UI/ShuttleConsoleWindow.xaml b/Content.Client/Shuttles/UI/ShuttleConsoleWindow.xaml index 548c136d0aa..fe80948aa86 100644 --- a/Content.Client/Shuttles/UI/ShuttleConsoleWindow.xaml +++ b/Content.Client/Shuttles/UI/ShuttleConsoleWindow.xaml @@ -83,10 +83,6 @@ Align="Right"/> -