From fd2cc8570dc8013a79ef9924e61593782a3cc9fd Mon Sep 17 00:00:00 2001 From: Debug <49997488+DebugOk@users.noreply.github.com> Date: Tue, 3 Oct 2023 21:15:46 +0200 Subject: [PATCH] Sync master up to 1/10 (#74) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Automatic changelog update * Make NPC names proper nouns & fix some genders (#20534) * Proper names & genders * Uppercase proper names * Make Smile female * fix bingus wrinkly head (#20531) * rouny meat and steak (#20526) * lost friendship flavor * add rouny steak * rouny special meat * rouny meat textures --------- Co-authored-by: deltanedas <@deltanedas:kde.org> * Automatic changelog update * Wearable Wet Floor Sign and 'Janitorial Suicide Vest' (#20311) * Explosive wet floor sign & janitorial suicide vest * fix attributions * Remove name & desc from explosive wet floor sign * Make wet floor sign chameleonable * Automatic changelog update * Minor slippery stuff (#20535) * Update submodule to 162.2.0 (#20570) * Predicted armor (#20560) * clean up some lines in smile the slime prototype (#20552) * Revert "Use full file path for temp replays (#19002)" (#20545) * Add EyesGlasses into ClothesMate (#20523) * Automatic changelog update * Fix Punpun crew monitor sensor (#20484) * Automatic changelog update * EasyPry airlocks for arrivals. Now also prying refactor I guess (#19394) Co-authored-by: metalgearsloth * Automatic changelog update * Make arcades hackable again (#20555) * Automatic changelog update * Health alert tweaks (#20557) * Automatic changelog update * Add active and ended game rule components, generic TryRoundStartAttempt and minPlayers field (#20564) * Improve active game rule querying, add generic try round start attempt method, move minPlayers to GameRuleComponent * Nukeops todo and cleanup * Remove Active field * Add EndedGameRuleComponent * bartender suit (#20521) * give me a drink bartender * guh * aARG * Necropolis and mine walls (#20578) * Automatic changelog update * archaic accent tweaks (#20567) * Automatic changelog update * Add confirmation to kick and respawn in the admin player actions panel (#20542) * Remove windows-latest CI runs, remove unused build-test-release.yml (#20540) * Change .editorconfig to keep existing attribute arrangement (#20538) * Automatic changelog update * Catch replay start and end errors on round restarts (#20565) * Update trivial components to use auto comp states (#20539) * Fix role unbans not applying in real time (#20547) * Disable AHelp buttons when no player is selected, update button styling (#20568) * Automatic changelog update * Added a toggle fullscreen button (default F11) (#20272) * Added a toggle fullscreen button (default F11) * Removed un-needed comments * Review Requested Changes * Fixed Acidental Spacing Change * bwoink, removed extraneous code * nothing, litterally * Automatic changelog update * Fix not networking markings (#20588) * Automatic changelog update * Update RobustToolbox to v162.2.1 (#20590) * Automatic changelog update * Glorfcode (force say on damage/stun/crit) (#20562) * Automatic changelog update * Fix AHelp progressively showing more AHelp panels (#20591) * Automatic changelog update * caninsert entitystorage tweaks (#20589) * Automatic changelog update * Fix mapping actions crashing on load (#20592) * Fix loading a map with a ThirstComponent crashing the game (#20594) * Fix electrocution displaying real name of disguised players (#20603) * Organ fixes (#20488) * Automatic changelog update * Kettle medical rework (#20435) * Initial try at medical rework for kettle * Re-add decal decorations to Kettle's medical * Add more lockers to kettle's med * Actually upload kettle's map, not its proto * Automatic changelog update * Added blocked visuals to volumetric pump (#20610) * Automatic changelog update * Move TimedDespawn to engine (#20515) * Update submodule to 163.0.0 (#20616) * Remove v0.1 version number from local main menu screen (#20617) * Remove cloneData parameter from AutoNetworkedField (#20596) * Update submodule to 164.0.0 (#20618) * fix cognizine ghost role (#20632) Co-authored-by: deltanedas <@deltanedas:kde.org> * Automatic changelog update * Move ID layer one pixel to correct alignment (#20630) * Update nukie hardsuit descriptions (#20529) * Make holofans destructable (#20445) * Automatic changelog update * bowl is open (#20453) Co-authored-by: deltanedas <@deltanedas:kde.org> * Add TestPair.WaitCommand() (#20615) * Rename ThreatPrototype and mark fields as required (#20611) * Adjust hard bomb shape (#20608) * dragon refactor, objectives and use GenericAntag (#20201) Co-authored-by: deltanedas <@deltanedas:kde.org> * Automatic changelog update * Added generic empty liquids tank (#20563) * Move view variables verb to the top of the list with no category and localize it (#20546) * saltern update (#20325) Co-authored-by: deltanedas <@deltanedas:kde.org> * Fix followers leaking (#20643) * Add Winter Boots (#20622) * add * fix prototype * Add QM mantle (#20621) * add * fix prototype * Automatic changelog update * Slime mobs breathe nitrogen and resprite their organs (#20577) * Slimes breathe nitrogen and resprite their organs * ups * mmm * Automatic changelog update * Fix the new lizard horn's consistency + issue (#20620) * fix * add * Revert "add" This reverts commit a054a3204a8f185a94ceb80b1bd3bc9f30423711. * Add RandomHumanoidAppearance component to for space ninjas (#20605) * Automatic changelog update * Space cat breathes space (#20550) * Space cat breathes space Made Space Cat lungs ROBUST * Made Space Cat's lungs ROBUST 2.0 * Automatic changelog update * Wide anomaly locator (#20581) * Add files via upload * Add files via upload * Add files via upload * Add files via upload * add textures * fix encoding * fix 2 * Automatic changelog update * Fixed Telescopic Shield Lighting (#20650) * Fixed Telescopic Shield Lighting Bug fix #20199 * no need for these at all --------- Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> * Automatic changelog update * Add a special hardsuit for nukie medic (#20471) * Automatic changelog update * Carry over other mutations when doing species mutation (#20551) * Automatic changelog update * Add Spanish accent to poncho and sombrero (#20377) --------- Co-authored-by: PJBot Co-authored-by: Psychpsyo <60073468+Psychpsyo@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Co-authored-by: ravage <142820619+ravage123321@users.noreply.github.com> Co-authored-by: Pieter-Jan Briers Co-authored-by: LEVELcat <68501903+LEVELcat@users.noreply.github.com> Co-authored-by: Repo <47093363+Titian3@users.noreply.github.com> Co-authored-by: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com> Co-authored-by: metalgearsloth Co-authored-by: Doru991 <75124791+Doru991@users.noreply.github.com> Co-authored-by: DrSmugleaf Co-authored-by: Skarletto <122584947+Skarletto@users.noreply.github.com> Co-authored-by: NULL882 <104377798+NULL882@users.noreply.github.com> Co-authored-by: lunarcomets <140772713+lunarcomets@users.noreply.github.com> Co-authored-by: Miro Kavaliou Co-authored-by: Kara Co-authored-by: Kacper Urbańczyk Co-authored-by: TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com> Co-authored-by: daerSeebaer <61566539+daerSeebaer@users.noreply.github.com> Co-authored-by: Fluffiest Floofers Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com> Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Co-authored-by: Kevin Zheng Co-authored-by: drteaspoon420 <87363733+drteaspoon420@users.noreply.github.com> Co-authored-by: Ubaser <134914314+UbaserB@users.noreply.github.com> Co-authored-by: Nim <128169402+Nimfar11@users.noreply.github.com> Co-authored-by: Kacper Urbańczyk Co-authored-by: Tox Cruize <141375638+TexCruize@users.noreply.github.com> Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com> Co-authored-by: Michael Cu <43478115+michaelcu@users.noreply.github.com> --- .editorconfig | 3 +- .github/workflows/build-map-renderer.yml | 2 +- .github/workflows/build-test-debug.yml | 2 +- .github/workflows/build-test-release.yml | 62 - .../UI/AccessOverriderBoundUserInterface.cs | 6 +- .../Access/UI/AccessOverriderWindow.xaml.cs | 4 +- .../UI/IdCardConsoleBoundUserInterface.cs | 6 +- .../Access/UI/IdCardConsoleWindow.xaml.cs | 2 +- .../Administration/Systems/AdminVerbSystem.cs | 5 +- .../Administration/UI/AdminUIHelpers.cs | 59 + .../UI/Bwoink/BwoinkControl.xaml | 17 +- .../UI/Bwoink/BwoinkControl.xaml.cs | 85 +- .../UI/Bwoink/BwoinkWindow.xaml.cs | 16 +- .../Tabs/AdminTab/PlayerActionsWindow.xaml.cs | 19 +- Content.Client/Alerts/ClientAlertsSystem.cs | 14 +- .../Animations/ReusableAnimations.cs | 3 +- Content.Client/Armor/ArmorSystem.cs | 9 + Content.Client/BarSign/BarSignSystem.cs | 23 +- Content.Client/Buckle/BuckleSystem.cs | 23 +- .../Visualizers/FoamVisualizerSystem.cs | 2 +- .../Systems/ChameleonClothingSystem.cs | 9 +- Content.Client/Content.Client.csproj | 3 + Content.Client/Cuffs/CuffableSystem.cs | 9 - Content.Client/Doors/AirlockSystem.cs | 8 + Content.Client/Entry/EntryPoint.cs | 3 + Content.Client/Fullscreen/FullscreenHook.cs | 43 + .../Humanoid/HumanoidAppearanceSystem.cs | 112 +- ...manoidMarkingModifierBoundUserInterface.cs | 2 - .../HumanoidMarkingModifierWindow.xaml.cs | 3 +- Content.Client/Implants/ImplanterSystem.cs | 10 +- Content.Client/Input/ContentContexts.cs | 1 + Content.Client/IoC/ClientContentIoC.cs | 3 + Content.Client/Lathe/UI/LatheMenu.xaml.cs | 5 +- .../MainMenu/UI/MainMenuControl.xaml | 1 - .../MainMenu/UI/MainMenuControl.xaml.cs | 39 +- .../Movement/Systems/ClimbSystem.cs | 11 - Content.Client/Options/UI/OptionsMenu.xaml | 8 +- Content.Client/Options/UI/OptionsMenu.xaml.cs | 10 + .../Options/UI/Tabs/GraphicsTab.xaml.cs | 6 + .../Options/UI/Tabs/KeyRebindTab.xaml.cs | 11 +- Content.Client/Points/PointSystem.cs | 10 +- .../Projectiles/ProjectileSystem.cs | 3 +- .../Radiation/Systems/GeigerSystem.cs | 15 +- Content.Client/Salvage/FultonSystem.cs | 3 +- Content.Client/Spawners/TimedDespawnSystem.cs | 11 - Content.Client/Tabletop/TabletopSystem.cs | 9 - .../Systems/Bwoink/AHelpUIController.cs | 8 + .../Systems/Chat/ChatUIController.cs | 34 + .../Systems/EscapeMenu/OptionsUIController.cs | 2 + .../Ranged/Systems/GunSystem.Ballistic.cs | 2 +- .../Weapons/Ranged/Systems/GunSystem.cs | 3 +- .../Pair/TestPair.Helpers.cs | 18 + .../Components/PresetIdCardComponent.cs | 3 + .../Access/Systems/AccessOverriderSystem.cs | 8 +- .../Access/Systems/PresetIdCardSystem.cs | 9 + .../Commands/RoleUnbanCommand.cs | 36 +- .../Administration/Managers/BanManager.cs | 64 +- .../Administration/Managers/IBanManager.cs | 15 +- Content.Server/Armor/ArmorComponent.cs | 11 - Content.Server/Armor/ArmorSystem.cs | 129 +- .../Components/GasVolumePumpComponent.cs | 3 + .../EntitySystems/GasVolumePumpSystem.cs | 22 +- .../BarSign/Systems/BarSignSystem.cs | 11 +- Content.Server/Body/Systems/BrainSystem.cs | 15 - Content.Server/Botany/SeedPrototype.cs | 95 + .../Botany/Systems/MutationSystem.cs | 13 +- .../Chemistry/EntitySystems/VaporSystem.cs | 3 +- .../Chemistry/ReagentEffects/MakeSentient.cs | 2 +- Content.Server/Climbing/ClimbSystem.cs | 7 - .../Systems/ChameleonClothingSystem.cs | 18 +- .../Communications/CommsHackerSystem.cs | 8 +- Content.Server/Cuffs/CuffableSystem.cs | 10 +- .../Damage/ForceSay/DamageForceSaySystem.cs | 126 + Content.Server/Database/ServerDbBase.cs | 2 +- Content.Server/Database/ServerDbManager.cs | 5 +- Content.Server/Database/ServerDbPostgres.cs | 10 +- Content.Server/Database/ServerDbSqlite.cs | 10 +- Content.Server/Doors/Systems/AirlockSystem.cs | 20 +- Content.Server/Doors/Systems/DoorSystem.cs | 132 +- .../Doors/Systems/FirelockSystem.cs | 7 +- Content.Server/Dragon/DragonRiftSystem.cs | 115 + Content.Server/Dragon/DragonSystem.Rule.cs | 52 - Content.Server/Dragon/DragonSystem.cs | 277 +- .../Electrocution/ElectrocutionSystem.cs | 8 +- .../Components/OnUseTimerTriggerComponent.cs | 6 + .../ExplosionSystem.Processing.cs | 3 +- .../EntitySystems/ExplosionSystem.cs | 1 + .../EntitySystems/TriggerSystem.OnUse.cs | 37 +- .../Fluids/EntitySystems/SmokeSystem.cs | 5 +- .../GameTicking/GameTicker.GameRule.cs | 23 +- .../GameTicking/GameTicker.Replays.cs | 74 +- .../Components/ActiveGameRuleComponent.cs | 10 + .../Components/EndedGameRuleComponent.cs | 10 + .../Rules/Components/GameRuleComponent.cs | 16 +- .../Rules/Components/NukeopsRuleComponent.cs | 96 +- .../GameTicking/Rules/GameRuleSystem.cs | 33 + .../GameTicking/Rules/NukeopsRuleSystem.cs | 30 +- Content.Server/Implants/ImplanterSystem.cs | 7 - Content.Server/Lathe/LatheSystem.cs | 14 +- Content.Server/Magic/MagicSystem.cs | 2 +- Content.Server/Morgue/CrematoriumSystem.cs | 2 +- .../Systems/NPCSteeringSystem.Obstacles.cs | 2 +- .../NPC/Systems/NPCSteeringSystem.cs | 6 +- .../Components/CarpRiftsConditionComponent.cs | 17 + .../Systems/CarpRiftsConditionSystem.cs | 56 + Content.Server/Points/PointSystem.cs | 7 - .../Radiation/Systems/GeigerSystem.cs | 14 - Content.Server/Roles/DragonRoleComponent.cs | 12 + Content.Server/Roles/RoleSystem.cs | 1 + .../Shuttles/Systems/ArrivalsSystem.cs | 3 +- .../Spawners/EntitySystems/SpawnerSystem.cs | 6 + .../EntitySystems/TimedDespawnSystem.cs | 23 - .../StationEvents/Events/ImmovableRodRule.cs | 3 +- .../StationEvents/Events/MeteorSwarmRule.cs | 3 +- .../Events/RandomEntityStorageSpawnRule.cs | 14 +- .../EntitySystems/EntityStorageSystem.cs | 2 +- .../Melee/EnergySword/EnergySwordSystem.cs | 4 +- .../Weapons/Melee/MeleeWeaponSystem.cs | 8 +- .../Ranged/Systems/GunSystem.Ballistic.cs | 2 +- .../Weapons/Ranged/Systems/GunSystem.cs | 6 +- .../Zombies/ZombieSystem.Transform.cs | 17 +- Content.Server/Zombies/ZombieSystem.cs | 2 +- .../Access/Components/AccessComponent.cs | 4 +- .../Components/AccessOverriderComponent.cs | 16 +- .../Components/IdCardConsoleComponent.cs | 12 +- .../Systems/SharedAccessOverriderSystem.cs | 25 - .../Systems/SharedIdCardConsoleSystem.cs | 26 - Content.Shared/Alert/AlertsComponent.cs | 7 +- Content.Shared/Alert/AlertsComponentState.cs | 14 - Content.Shared/Alert/AlertsSystem.cs | 7 - .../Anomaly/Components/AnomalyComponent.cs | 56 +- .../AnomalySupercriticalComponent.cs | 17 +- Content.Shared/Anomaly/SharedAnomalySystem.cs | 42 - Content.Shared/Armor/ArmorComponent.cs | 25 + Content.Shared/Armor/SharedArmorSystem.cs | 78 + .../Binary/Visuals/GasVolumePumpVisuals.cs | 18 + Content.Shared/BarSign/BarSignComponent.cs | 26 +- .../Bed/Sleep/SharedSleepingSystem.cs | 8 + .../Body/Components/BodyComponent.cs | 33 +- .../Body/Events/MechanismBodyEvents.cs | 32 +- Content.Shared/Body/Part/BodyPartComponent.cs | 4 +- .../Body/Systems/SharedBodySystem.Body.cs | 28 +- .../Body/Systems/SharedBodySystem.Organs.cs | 8 +- .../Body/Systems/SharedBodySystem.Parts.cs | 16 +- .../Buckle/Components/BuckleComponent.cs | 38 +- .../Buckle/Components/StrapComponent.cs | 52 +- .../Buckle/SharedBuckleSystem.Buckle.cs | 10 +- .../Buckle/SharedBuckleSystem.Strap.cs | 22 - Content.Shared/Buckle/SharedBuckleSystem.cs | 2 +- .../Cabinet/ItemCabinetComponent.cs | 34 +- .../Cabinet/SharedItemCabinetSystem.cs | 22 - .../CartridgeLoader/CartridgeComponent.cs | 14 +- .../SharedCartridgeLoaderSystem.cs | 22 - .../MovespeedModifierMetabolismComponent.cs | 25 +- .../MetabolismMovespeedModifierSystem.cs | 25 +- Content.Shared/Climbing/ClimbingComponent.cs | 20 +- .../Components/ChameleonClothingComponent.cs | 15 +- .../SharedChameleonClothingSystem.cs | 4 +- .../Communications/CommsHackerComponent.cs | 12 +- Content.Shared/Conveyor/ConveyorComponent.cs | 41 +- .../Cuffs/Components/HandcuffComponent.cs | 52 +- .../Damage/Components/StaminaComponent.cs | 18 +- .../ForceSay/AllowNextCritSpeechComponent.cs | 25 + .../ForceSay/DamageForceSayComponent.cs | 66 + .../Damage/ForceSay/DamageForceSayEvent.cs | 13 + .../Damage/Systems/StaminaSystem.cs | 44 +- .../Components/DeviceListComponent.cs | 29 +- .../NetworkConfiguratorComponent.cs | 41 +- .../Systems/SharedDeviceListSystem.cs | 24 - .../SharedNetworkConfiguratorSystem.cs | 27 - .../Doors/Components/AirlockComponent.cs | 51 +- .../Doors/Components/DoorComponent.cs | 90 +- Content.Shared/Doors/DoorEvents.cs | 31 - .../Doors/Systems/SharedAirlockSystem.cs | 18 - .../Doors/Systems/SharedDoorBoltSystem.cs | 11 +- .../Doors/Systems/SharedDoorSystem.cs | 73 +- .../Electrocution/InsulatedComponent.cs | 22 +- .../SharedElectrocutionSystem.cs | 21 +- Content.Shared/Emoting/EmoteSystem.cs | 68 +- Content.Shared/Emoting/EmotingComponent.cs | 15 +- .../Follower/Components/FollowedComponent.cs | 6 +- Content.Shared/Follower/FollowerSystem.cs | 38 +- .../Gravity/FloatingVisualsComponent.cs | 25 +- .../Gravity/GravityShakeComponent.cs | 6 +- .../Gravity/SharedFloatingVisualizerSystem.cs | 18 - .../Gravity/SharedGravitySystem.Shake.cs | 30 - .../Humanoid/HumanoidAppearanceComponent.cs | 109 +- .../Prototypes/HumanoidProfilePrototype.cs | 1 - .../SharedHumanoidAppearanceSystem.cs | 22 +- .../SharedHumanoidMarkingModifierSystem.cs | 1 - .../Implants/Components/ImplanterComponent.cs | 43 +- Content.Shared/Input/ContentKeyFunctions.cs | 1 + .../Components/InteractionRelayComponent.cs | 19 +- .../SharedInteractionSystem.Relay.cs | 22 +- .../Interaction/SharedInteractionSystem.cs | 4 - .../Jittering/JitteringComponent.cs | 39 +- .../Jittering/SharedJitteringSystem.cs | 17 - Content.Shared/Lathe/LatheComponent.cs | 40 +- Content.Shared/Lathe/LatheMessages.cs | 5 +- Content.Shared/Lathe/SharedLatheSystem.cs | 28 - .../InsertingMaterialStorageComponent.cs | 21 +- .../Materials/MaterialReclaimerComponent.cs | 61 +- .../Materials/MaterialStorageComponent.cs | 46 +- .../SharedMaterialReclaimerSystem.cs | 21 - .../Materials/SharedMaterialStorageSystem.cs | 37 +- .../Mech/Components/MechComponent.cs | 67 +- .../Mech/Components/MechPilotComponent.cs | 11 +- .../Mech/EntitySystems/SharedMechSystem.cs | 52 - .../Systems/MobStateSystem.Subscribers.cs | 14 +- .../Mobs/Systems/MobThresholdSystem.cs | 98 +- .../Components/FootstepModifierComponent.cs | 19 +- .../Components/InputMoverComponent.cs | 15 +- .../Components/JetpackUserComponent.cs | 3 +- .../Movement/Components/MobMoverComponent.cs | 11 +- .../MovementSpeedModifierComponent.cs | 29 +- .../Systems/MovementSpeedModifierSystem.cs | 39 - .../Movement/Systems/SharedJetpackSystem.cs | 25 - .../SharedMoverController.Footsteps.cs | 35 - .../Systems/SharedMoverController.Input.cs | 57 +- .../Systems/SharedMoverController.Mob.cs | 39 - .../Movement/Systems/SharedMoverController.cs | 22 +- .../Nutrition/Components/HungerComponent.cs | 6 +- .../Nutrition/Components/ThirstComponent.cs | 4 +- .../Controllers/SharedConveyorController.cs | 19 - .../Physics/PreventCollideComponent.cs | 14 +- .../Physics/SharedPreventCollideSystem.cs | 19 +- .../Placeable/ItemPlacerComponent.cs | 9 +- Content.Shared/Placeable/ItemPlacerSystem.cs | 32 - .../Placeable/PlaceableSurfaceComponent.cs | 39 +- .../Placeable/PlaceableSurfaceSystem.cs | 26 +- .../Points/PointManagerComponent.cs | 22 +- .../Components/PryUnpoweredComponent.cs | 11 + .../Prying/Components/PryingComponent.cs | 82 + Content.Shared/Prying/Systems/PryingSystem.cs | 162 + .../Radiation/Components/GeigerComponent.cs | 27 +- .../Components/RadiationPulseComponent.cs | 3 +- .../Radiation/Systems/RadiationPulseSystem.cs | 4 +- .../Components/TechnologyDatabaseComponent.cs | 8 +- .../Shuttles/Components/IFFComponent.cs | 7 +- .../Components/RadarConsoleComponent.cs | 5 +- .../Systems/SharedRadarConsoleSystem.cs | 31 - .../Systems/SharedShuttleSystem.IFF.cs | 33 - .../Shuttles/Systems/SharedShuttleSystem.cs | 5 - Content.Shared/Slippery/SlipperyComponent.cs | 25 +- Content.Shared/Slippery/SlipperySystem.cs | 26 - .../Components/TimedDespawnComponent.cs | 16 - .../EntitySystems/SharedTimedDespawnSystem.cs | 46 - Content.Shared/Spawners/TimedDespawnEvent.cs | 7 - Content.Shared/Speech/SpeechComponent.cs | 27 +- Content.Shared/Speech/SpeechSystem.cs | 29 - .../Standing/StandingStateComponent.cs | 8 +- .../Standing/StandingStateSystem.cs | 36 - .../StatusEffect/StatusEffectsSystem.cs | 3 +- .../Components/StepTriggerComponent.cs | 46 +- .../StepTrigger/Systems/StepTriggerSystem.cs | 38 +- .../Storage/Components/BinComponent.cs | 32 +- .../SharedEntityStorageComponent.cs | 31 +- .../Storage/EntitySystems/BinSystem.cs | 18 - .../SharedEntityStorageSystem.cs | 28 +- Content.Shared/Stunnable/SharedStunSystem.cs | 25 +- .../Components/TabletopDraggableComponent.cs | 5 +- .../Tabletop/SharedTabletopSystem.cs | 7 - .../Components/LinkedEntityComponent.cs | 20 +- .../Components/PortalTimeoutComponent.cs | 18 +- .../Systems/LinkedEntitySystem.cs | 19 +- .../Systems/SharedPortalSystem.cs | 16 - Content.Shared/Timing/UseDelayComponent.cs | 59 +- Content.Shared/Timing/UseDelaySystem.cs | 19 +- .../Tools/Components/MultipleToolComponent.cs | 68 +- .../Systems/SharedToolSystem.MultipleTool.cs | 35 +- Content.Shared/Vehicle/SharedVehicleSystem.cs | 12 +- Content.Shared/Verbs/Verb.cs | 15 +- .../Weapons/Melee/MeleeWeaponComponent.cs | 62 +- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 26 +- .../BallisticAmmoProviderComponent.cs | 27 +- .../Systems/SharedGunSystem.Ballistic.cs | 36 +- Content.Shared/Zombies/ZombieComponent.cs | 3 +- .../Alert/ServerAlertsComponentTests.cs | 6 +- .../Audio/Items/Janitor/floor_sign_beep.ogg | Bin 0 -> 4950 bytes Resources/Changelog/Changelog.yml | 388 +- Resources/Locale/en-US/accent/archaic.ftl | 15 +- .../Locale/en-US/actions/actions/dragon.ftl | 16 - .../Locale/en-US/damage/damage-force-say.ftl | 12 + Resources/Locale/en-US/dragon/dragon.ftl | 5 + Resources/Locale/en-US/dragon/rifts.ftl | 9 + .../Locale/en-US/flavors/flavor-profiles.ftl | 1 + .../interaction-popup-component.ftl | 1 + .../objectives/conditions/carp-rifts.ftl | 2 + .../en-US/weapons/grenades/timer-trigger.ftl | 2 + Resources/Maps/kettle.yml | 12332 ++++++++-------- Resources/Maps/saltern.yml | 598 +- .../Prototypes/Accents/word_replacements.yml | 1 - .../Prototypes/Body/Organs/Animal/slimes.yml | 56 + Resources/Prototypes/Body/Organs/slime.yml | 8 +- .../Body/Prototypes/Animal/slimes.yml | 18 + .../Inventories/clothesmate.yml | 1 + .../Inventories/winterdrobe.yml | 1 + .../Clothing/Head/hardsuit-helmets.yml | 132 +- .../Entities/Clothing/Head/hats.yml | 2 + .../Entities/Clothing/Neck/mantles.yml | 11 + .../Clothing/OuterClothing/hardsuits.yml | 70 +- .../Entities/Clothing/OuterClothing/misc.yml | 4 + .../Entities/Clothing/Shoes/boots.yml | 13 + .../Entities/Clothing/Uniforms/jumpsuits.yml | 4 + .../Entities/Debugging/spanisharmyknife.yml | 1 + .../Mobs/Customization/Markings/reptilian.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 2 + .../Prototypes/Entities/Mobs/NPCs/pets.yml | 35 +- .../Entities/Mobs/NPCs/regalrat.yml | 3 + .../Prototypes/Entities/Mobs/NPCs/slimes.yml | 3 + .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 10 + .../Entities/Mobs/Player/dragon.yml | 2 + .../Prototypes/Entities/Mobs/Player/human.yml | 2 + .../Prototypes/Entities/Mobs/Species/base.yml | 1 + .../Consumable/Food/Containers/bowl.yml | 10 +- .../Entities/Objects/Consumable/Food/egg.yml | 12 +- .../Objects/Consumable/Food/ingredients.yml | 127 +- .../Entities/Objects/Consumable/Food/meat.yml | 56 + .../Objects/Consumable/Food/produce.yml | 23 +- .../Objects/Misc/identification_cards.yml | 13 + .../Entities/Objects/Shields/shields.yml | 3 - .../Objects/Specific/Janitorial/janitor.yml | 29 +- .../Objects/Specific/Research/anomaly.yml | 33 + .../Entities/Objects/Tools/cowtools.yml | 3 +- .../Entities/Objects/Tools/jaws_of_life.yml | 8 +- .../Entities/Objects/Tools/tools.yml | 1 + .../Entities/Objects/Vehicles/buckleable.yml | 6 +- .../Objects/Weapons/Melee/armblade.yml | 1 + .../Objects/Weapons/Melee/fireaxe.yml | 1 + .../Entities/Objects/Weapons/Melee/mining.yml | 1 + .../Structures/Doors/Airlocks/easy_pry.yml | 63 + .../Structures/Holographic/projections.yml | 21 +- .../Entities/Structures/Machines/bombs.yml | 2 +- .../Entities/Structures/Machines/lathe.yml | 1 + .../Structures/Piping/Atmospherics/binary.yml | 7 +- .../Entities/Structures/Specific/dragon.yml | 72 +- .../Structures/Storage/Tanks/tanks.yml | 23 +- .../Structures/Wallmounts/Signs/signs.yml | 18 + .../Entities/Structures/Walls/walls.yml | 73 + Resources/Prototypes/Flavors/flavors.yml | 7 +- Resources/Prototypes/GameRules/events.yml | 3 +- Resources/Prototypes/GameRules/midround.yml | 12 + Resources/Prototypes/Objectives/dragon.yml | 42 + .../Construction/Graphs/food/steak.yml | 13 + .../Construction/Graphs/machines/computer.yml | 2 + .../Prototypes/Recipes/Lathes/clothing.yml | 9 + .../Prototypes/Recipes/Lathes/devices.yml | 8 + .../Prototypes/Research/experimental.yml | 1 + .../Roles/Jobs/Fun/misc_startinggear.yml | 4 +- Resources/Prototypes/threats.yml | 4 +- .../Hardsuits/syndiemedic.rsi/icon-flash.png | Bin 0 -> 851 bytes .../Head/Hardsuits/syndiemedic.rsi/icon.png | Bin 0 -> 559 bytes .../Head/Hardsuits/syndiemedic.rsi/meta.json | 41 + .../syndiemedic.rsi/off-equipped-HELMET.png | Bin 0 -> 1098 bytes .../syndiemedic.rsi/off-inhand-left.png | Bin 0 -> 912 bytes .../syndiemedic.rsi/off-inhand-right.png | Bin 0 -> 856 bytes .../syndiemedic.rsi/on-equipped-HELMET.png | Bin 0 -> 1688 bytes .../syndiemedic.rsi/on-inhand-left.png | Bin 0 -> 1325 bytes .../syndiemedic.rsi/on-inhand-right.png | Bin 0 -> 1311 bytes .../mantles/qmmantle.rsi/equipped-NECK.png | Bin 0 -> 2021 bytes .../Neck/mantles/qmmantle.rsi/icon.png | Bin 0 -> 1678 bytes .../Neck/mantles/qmmantle.rsi/meta.json | 18 + .../equipped-OUTERCLOTHING.png | Bin 0 -> 2486 bytes .../Hardsuits/syndiemedic.rsi/icon.png | Bin 0 -> 913 bytes .../Hardsuits/syndiemedic.rsi/inhand-left.png | Bin 0 -> 794 bytes .../syndiemedic.rsi/inhand-right.png | Bin 0 -> 837 bytes .../Hardsuits/syndiemedic.rsi/meta.json | 26 + .../Boots/winterboots.rsi/equipped-FEET.png | Bin 0 -> 1548 bytes .../Shoes/Boots/winterboots.rsi/icon.png | Bin 0 -> 1543 bytes .../Boots/winterboots.rsi/inhand-left.png | Bin 0 -> 1372 bytes .../Boots/winterboots.rsi/inhand-right.png | Bin 0 -> 1368 bytes .../Shoes/Boots/winterboots.rsi/meta.json | 26 + .../bartender.rsi/equipped-INNERCLOTHING.png | Bin 1284 -> 1281 bytes .../Uniforms/Jumpsuit/bartender.rsi/meta.json | 2 +- .../Alerts/human_alive.rsi/health0.png | Bin 2153 -> 2177 bytes .../Alerts/human_alive.rsi/health1.png | Bin 2155 -> 2267 bytes .../Alerts/human_alive.rsi/health2.png | Bin 2152 -> 2249 bytes .../Alerts/human_alive.rsi/health3.png | Bin 2207 -> 2331 bytes .../Alerts/human_alive.rsi/health4.png | Bin 2269 -> 2401 bytes .../reptilian_parts.rsi/horns_argali.png | Bin 1360 -> 1347 bytes .../reptilian_parts.rsi/horns_ayrshire.png | Bin 1273 -> 1271 bytes .../reptilian_parts.rsi/horns_bighorn.png | Bin 1430 -> 1463 bytes .../reptilian_parts.rsi/horns_myrsore.png | Bin 1294 -> 1307 bytes .../Slime/organs.rsi/brain-inhand-left.png | Bin 0 -> 228 bytes .../Slime/organs.rsi/brain-inhand-right.png | Bin 0 -> 220 bytes .../Species/Slime/organs.rsi/brain-slime.png | Bin 0 -> 442 bytes .../Species/Slime/organs.rsi/lung-l-slime.png | Bin 0 -> 271 bytes .../Species/Slime/organs.rsi/lung-r-slime.png | Bin 0 -> 273 bytes .../Mobs/Species/Slime/organs.rsi/meta.json | 28 + .../Consumable/Food/meat.rsi/meta.json | 8 +- .../Consumable/Food/meat.rsi/rouny-cooked.png | Bin 0 -> 654 bytes .../Consumable/Food/meat.rsi/rouny.png | Bin 0 -> 628 bytes .../Objects/Misc/id_cards.rsi/idbrigmedic.png | Bin 267 -> 242 bytes .../Misc/id_cards.rsi/idsecurityofficer.png | Bin 184 -> 252 bytes .../Janitorial/wet_floor_sign.rsi/caution.png | Bin 234 -> 0 bytes .../equipped-OUTERCLOTHING.png | Bin 0 -> 415 bytes .../Janitorial/wet_floor_sign.rsi/icon.png | Bin 0 -> 251 bytes .../wet_floor_sign.rsi/inhand-left.png | Bin 347 -> 329 bytes .../wet_floor_sign.rsi/inhand-right.png | Bin 366 -> 329 bytes .../Janitorial/wet_floor_sign.rsi/meta.json | 8 +- .../Research/anomalylocatorwide.rsi/icon.png | Bin 0 -> 500 bytes .../anomalylocatorwide.rsi/inhand-left.png | Bin 0 -> 316 bytes .../anomalylocatorwide.rsi/inhand-right.png | Bin 0 -> 307 bytes .../Research/anomalylocatorwide.rsi/meta.json | 33 + .../anomalylocatorwide.rsi/screen.png | Bin 0 -> 258 bytes .../Piping/Atmospherics/pump.rsi/meta.json | 5 + .../pump.rsi/pumpVolumeBlocked.png | Bin 0 -> 5060 bytes .../Specific/carp_rift.rsi/icon_blue.png | Bin 0 -> 8326 bytes .../Specific/carp_rift.rsi/meta.json | 14 +- .../Storage/tanks.rsi/generictank-1.png | Bin 0 -> 1077 bytes .../Structures/Storage/tanks.rsi/meta.json | 3 + .../Structures/Wallmounts/signs.rsi/meta.json | 18 +- .../Wallmounts/signs.rsi/ntmining.png | Bin 0 -> 519 bytes .../Wallmounts/signs.rsi/survival.png | Bin 0 -> 3164 bytes .../Structures/Walls/mining.rsi/full.png | Bin 0 -> 797 bytes .../Structures/Walls/mining.rsi/meta.json | 46 + .../Structures/Walls/mining.rsi/mining0.png | Bin 0 -> 1033 bytes .../Structures/Walls/mining.rsi/mining1.png | Bin 0 -> 1159 bytes .../Structures/Walls/mining.rsi/mining2.png | Bin 0 -> 1033 bytes .../Structures/Walls/mining.rsi/mining3.png | Bin 0 -> 1159 bytes .../Structures/Walls/mining.rsi/mining4.png | Bin 0 -> 1076 bytes .../Structures/Walls/mining.rsi/mining5.png | Bin 0 -> 1189 bytes .../Structures/Walls/mining.rsi/mining6.png | Bin 0 -> 1076 bytes .../Structures/Walls/mining.rsi/mining7.png | Bin 0 -> 879 bytes .../Walls/mining_diagonal.rsi/meta.json | 17 + .../Walls/mining_diagonal.rsi/state0.png | Bin 0 -> 3511 bytes .../Walls/mining_diagonal.rsi/state1.png | Bin 0 -> 3511 bytes .../Structures/Walls/necropolis.rsi/full.png | Bin 0 -> 1387 bytes .../Structures/Walls/necropolis.rsi/meta.json | 46 + .../Walls/necropolis.rsi/necropolis0.png | Bin 0 -> 4413 bytes .../Walls/necropolis.rsi/necropolis1.png | Bin 0 -> 3875 bytes .../Walls/necropolis.rsi/necropolis2.png | Bin 0 -> 4413 bytes .../Walls/necropolis.rsi/necropolis3.png | Bin 0 -> 3875 bytes .../Walls/necropolis.rsi/necropolis4.png | Bin 0 -> 3895 bytes .../Walls/necropolis.rsi/necropolis5.png | Bin 0 -> 3762 bytes .../Walls/necropolis.rsi/necropolis6.png | Bin 0 -> 3895 bytes .../Walls/necropolis.rsi/necropolis7.png | Bin 0 -> 2930 bytes Resources/keybinds.yml | 3 + Resources/mapping_actions.yml | 4 +- RobustToolbox | 2 +- 440 files changed, 10962 insertions(+), 10718 deletions(-) delete mode 100644 .github/workflows/build-test-release.yml create mode 100644 Content.Client/Administration/UI/AdminUIHelpers.cs create mode 100644 Content.Client/Armor/ArmorSystem.cs create mode 100644 Content.Client/Fullscreen/FullscreenHook.cs delete mode 100644 Content.Client/Spawners/TimedDespawnSystem.cs delete mode 100644 Content.Server/Armor/ArmorComponent.cs create mode 100644 Content.Server/Damage/ForceSay/DamageForceSaySystem.cs create mode 100644 Content.Server/Dragon/DragonRiftSystem.cs delete mode 100644 Content.Server/Dragon/DragonSystem.Rule.cs create mode 100644 Content.Server/GameTicking/Rules/Components/ActiveGameRuleComponent.cs create mode 100644 Content.Server/GameTicking/Rules/Components/EndedGameRuleComponent.cs create mode 100644 Content.Server/Objectives/Components/CarpRiftsConditionComponent.cs create mode 100644 Content.Server/Objectives/Systems/CarpRiftsConditionSystem.cs create mode 100644 Content.Server/Roles/DragonRoleComponent.cs delete mode 100644 Content.Server/Spawners/EntitySystems/TimedDespawnSystem.cs delete mode 100644 Content.Shared/Alert/AlertsComponentState.cs create mode 100644 Content.Shared/Armor/ArmorComponent.cs create mode 100644 Content.Shared/Armor/SharedArmorSystem.cs create mode 100644 Content.Shared/Atmos/Piping/Binary/Visuals/GasVolumePumpVisuals.cs create mode 100644 Content.Shared/Damage/ForceSay/AllowNextCritSpeechComponent.cs create mode 100644 Content.Shared/Damage/ForceSay/DamageForceSayComponent.cs create mode 100644 Content.Shared/Damage/ForceSay/DamageForceSayEvent.cs delete mode 100644 Content.Shared/Movement/Systems/SharedMoverController.Footsteps.cs delete mode 100644 Content.Shared/Movement/Systems/SharedMoverController.Mob.cs create mode 100644 Content.Shared/Prying/Components/PryUnpoweredComponent.cs create mode 100644 Content.Shared/Prying/Components/PryingComponent.cs create mode 100644 Content.Shared/Prying/Systems/PryingSystem.cs delete mode 100644 Content.Shared/Spawners/Components/TimedDespawnComponent.cs delete mode 100644 Content.Shared/Spawners/EntitySystems/SharedTimedDespawnSystem.cs delete mode 100644 Content.Shared/Spawners/TimedDespawnEvent.cs create mode 100644 Resources/Audio/Items/Janitor/floor_sign_beep.ogg create mode 100644 Resources/Locale/en-US/damage/damage-force-say.ftl create mode 100644 Resources/Locale/en-US/dragon/dragon.ftl create mode 100644 Resources/Locale/en-US/dragon/rifts.ftl create mode 100644 Resources/Locale/en-US/objectives/conditions/carp-rifts.ftl create mode 100644 Resources/Prototypes/Body/Organs/Animal/slimes.yml create mode 100644 Resources/Prototypes/Body/Prototypes/Animal/slimes.yml create mode 100644 Resources/Prototypes/Entities/Structures/Doors/Airlocks/easy_pry.yml create mode 100644 Resources/Prototypes/Objectives/dragon.yml create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/icon-flash.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/off-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/off-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/off-inhand-right.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/on-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/on-inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/on-inhand-right.png create mode 100644 Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/equipped-NECK.png create mode 100644 Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Neck/mantles/qmmantle.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Shoes/Boots/winterboots.rsi/equipped-FEET.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/winterboots.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/winterboots.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/winterboots.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Shoes/Boots/winterboots.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/brain-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/brain-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/brain-slime.png create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-l-slime.png create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-r-slime.png create mode 100644 Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Food/meat.rsi/rouny-cooked.png create mode 100644 Resources/Textures/Objects/Consumable/Food/meat.rsi/rouny.png delete mode 100644 Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/caution.png create mode 100644 Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Objects/Specific/Janitorial/wet_floor_sign.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Research/anomalylocatorwide.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Research/anomalylocatorwide.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Research/anomalylocatorwide.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Research/anomalylocatorwide.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Research/anomalylocatorwide.rsi/screen.png create mode 100644 Resources/Textures/Structures/Piping/Atmospherics/pump.rsi/pumpVolumeBlocked.png create mode 100644 Resources/Textures/Structures/Specific/carp_rift.rsi/icon_blue.png create mode 100644 Resources/Textures/Structures/Storage/tanks.rsi/generictank-1.png create mode 100644 Resources/Textures/Structures/Wallmounts/signs.rsi/ntmining.png create mode 100644 Resources/Textures/Structures/Wallmounts/signs.rsi/survival.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining0.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining1.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining2.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining3.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining4.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining5.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining6.png create mode 100644 Resources/Textures/Structures/Walls/mining.rsi/mining7.png create mode 100644 Resources/Textures/Structures/Walls/mining_diagonal.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/mining_diagonal.rsi/state0.png create mode 100644 Resources/Textures/Structures/Walls/mining_diagonal.rsi/state1.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/full.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/meta.json create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis0.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis1.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis2.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis3.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis4.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis5.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis6.png create mode 100644 Resources/Textures/Structures/Walls/necropolis.rsi/necropolis7.png diff --git a/.editorconfig b/.editorconfig index 0409377f1d..a8ce1d6b68 100644 --- a/.editorconfig +++ b/.editorconfig @@ -196,7 +196,7 @@ csharp_preserve_single_line_blocks = true #dotnet_naming_style.begins_with_i.word_separator = #dotnet_naming_style.begins_with_i.capitalization = pascal_case -dotnet_diagnostic.IDE0055.severity = warning +dotnet_diagnostic.ide0055.severity = warning dotnet_naming_rule.constants_rule.severity = warning dotnet_naming_rule.constants_rule.style = upper_camel_case_style @@ -336,6 +336,7 @@ dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter # ReSharper properties resharper_braces_for_ifelse = required_for_multiline +resharper_keep_existing_attribute_arrangement = true [*.{csproj,xml,yml,dll.config,msbuildproj,targets}] indent_size = 2 diff --git a/.github/workflows/build-map-renderer.yml b/.github/workflows/build-map-renderer.yml index 4aa4b29c85..e921bd2558 100644 --- a/.github/workflows/build-map-renderer.yml +++ b/.github/workflows/build-map-renderer.yml @@ -13,7 +13,7 @@ jobs: if: github.actor != 'PJBot' && github.event.pull_request.draft == false strategy: matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-latest] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/build-test-debug.yml b/.github/workflows/build-test-debug.yml index 12584c4da7..9abd4fbe17 100644 --- a/.github/workflows/build-test-debug.yml +++ b/.github/workflows/build-test-debug.yml @@ -13,7 +13,7 @@ jobs: if: github.actor != 'PJBot' && github.event.pull_request.draft == false strategy: matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-latest] runs-on: ${{ matrix.os }} diff --git a/.github/workflows/build-test-release.yml b/.github/workflows/build-test-release.yml deleted file mode 100644 index d62bed3a5d..0000000000 --- a/.github/workflows/build-test-release.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Build & Test Release - -on: - push: - branches: [ master, staging, trying ] - merge_group: - pull_request: - types: [ opened, reopened, synchronize, ready_for_review ] - branches: [ master ] - -jobs: - build: - if: github.actor != 'PJBot' && github.event.pull_request.draft == false - strategy: - matrix: - os: [ubuntu-latest, windows-latest] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Master - uses: actions/checkout@v3.6.0 - - - name: Setup Submodule - run: | - git submodule update --init --recursive - - - name: Pull engine updates - uses: space-wizards/submodule-dependency@v0.1.5 - - - name: Update Engine Submodules - run: | - cd RobustToolbox/ - git submodule update --init --recursive - - - name: Setup .NET Core - uses: actions/setup-dotnet@v3.2.0 - with: - dotnet-version: 7.0.x - - - name: Install dependencies - run: dotnet restore - - - name: Build Project - run: dotnet build --configuration Tools --no-restore /p:WarningsAsErrors=nullable /m - - - name: Run Content.Tests - run: dotnet test --configuration Tools --no-build Content.Tests/Content.Tests.csproj -- NUnit.ConsoleOut=0 - - - name: Run Content.IntegrationTests - shell: pwsh - run: | - $env:DOTNET_gcServer=1 - dotnet test --configuration Tools --no-build Content.IntegrationTests/Content.IntegrationTests.csproj -- NUnit.ConsoleOut=0 NUnit.MapWarningTo=Failed - ci-success: - name: Build & Test Release - needs: - - build - runs-on: ubuntu-latest - steps: - - name: CI succeeded - run: exit 0 diff --git a/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs b/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs index cb43185484..0c23542f79 100644 --- a/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs +++ b/Content.Client/Access/UI/AccessOverriderBoundUserInterface.cs @@ -1,7 +1,7 @@ +using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Containers.ItemSlots; -using Robust.Client.GameObjects; using Robust.Shared.Prototypes; using static Content.Shared.Access.Components.AccessOverriderComponent; @@ -23,7 +23,7 @@ namespace Content.Client.Access.UI { base.Open(); - List accessLevels; + List> accessLevels; if (EntMan.TryGetComponent(Owner, out var accessOverrider)) { @@ -33,7 +33,7 @@ namespace Content.Client.Access.UI else { - accessLevels = new List(); + accessLevels = new List>(); _accessOverriderSystem.Log.Error($"No AccessOverrider component found for {EntMan.ToPrettyString(Owner)}!"); } diff --git a/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs b/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs index 6a4dcba307..2fd0057121 100644 --- a/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs +++ b/Content.Client/Access/UI/AccessOverriderWindow.xaml.cs @@ -21,7 +21,7 @@ namespace Content.Client.Access.UI private readonly Dictionary _accessButtons = new(); public AccessOverriderWindow(AccessOverriderBoundUserInterface owner, IPrototypeManager prototypeManager, - List accessLevels) + List> accessLevels) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); @@ -31,7 +31,7 @@ namespace Content.Client.Access.UI foreach (var access in accessLevels) { - if (!prototypeManager.TryIndex(access, out var accessLevel)) + if (!prototypeManager.TryIndex(access, out var accessLevel)) { _logMill.Error($"Unable to find accesslevel for {access}"); continue; diff --git a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs index be45e57c8b..898792aa03 100644 --- a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs +++ b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs @@ -1,8 +1,8 @@ +using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Containers.ItemSlots; using Content.Shared.CrewManifest; -using Robust.Client.GameObjects; using Robust.Shared.Prototypes; using static Content.Shared.Access.Components.IdCardConsoleComponent; @@ -23,7 +23,7 @@ namespace Content.Client.Access.UI protected override void Open() { base.Open(); - List accessLevels; + List> accessLevels; if (EntMan.TryGetComponent(Owner, out var idCard)) { @@ -32,7 +32,7 @@ namespace Content.Client.Access.UI } else { - accessLevels = new List(); + accessLevels = new List>(); _idCardConsoleSystem.Log.Error($"No IdCardConsole component found for {EntMan.ToPrettyString(Owner)}!"); } diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs b/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs index f8450fe578..670ba08871 100644 --- a/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs +++ b/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs @@ -28,7 +28,7 @@ namespace Content.Client.Access.UI private string? _lastJobProto; public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeManager prototypeManager, - List accessLevels) + List> accessLevels) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); diff --git a/Content.Client/Administration/Systems/AdminVerbSystem.cs b/Content.Client/Administration/Systems/AdminVerbSystem.cs index d08ebc0fce..e0f84bc4f0 100644 --- a/Content.Client/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Client/Administration/Systems/AdminVerbSystem.cs @@ -24,10 +24,9 @@ namespace Content.Client.Administration.Systems // View variables verbs if (_clientConGroupController.CanViewVar()) { - Verb verb = new() + var verb = new VvVerb() { - Category = VerbCategory.Debug, - Text = "View Variables", + Text = Loc.GetString("view-variables"), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/vv.svg.192dpi.png")), Act = () => _clientConsoleHost.ExecuteCommand($"vv {GetNetEntity(args.Target)}"), ClientExclusive = true // opening VV window is client-side. Don't ask server to run this verb. diff --git a/Content.Client/Administration/UI/AdminUIHelpers.cs b/Content.Client/Administration/UI/AdminUIHelpers.cs new file mode 100644 index 0000000000..89ab33e931 --- /dev/null +++ b/Content.Client/Administration/UI/AdminUIHelpers.cs @@ -0,0 +1,59 @@ +using System.Threading; +using Content.Client.Stylesheets; +using Robust.Client.UserInterface.Controls; +using Timer = Robust.Shared.Timing.Timer; + +namespace Content.Client.Administration.UI; + +public static class AdminUIHelpers +{ + private static void ResetButton(Button button, ConfirmationData data) + { + data.Cancellation.Cancel(); + button.ModulateSelfOverride = null; + button.Text = data.OriginalText; + } + + public static bool RemoveConfirm(Button button, Dictionary confirmations) + { + if (confirmations.Remove(button, out var data)) + { + ResetButton(button, data); + return true; + } + + return false; + } + + public static void RemoveAllConfirms(Dictionary confirmations) + { + foreach (var (button, confirmation) in confirmations) + { + ResetButton(button, confirmation); + } + + confirmations.Clear(); + } + + public static bool TryConfirm(Button button, Dictionary confirmations) + { + if (RemoveConfirm(button, confirmations)) + return true; + + var data = new ConfirmationData(new CancellationTokenSource(), button.Text); + confirmations[button] = data; + + Timer.Spawn(TimeSpan.FromSeconds(5), () => + { + confirmations.Remove(button); + button.ModulateSelfOverride = null; + button.Text = data.OriginalText; + }, data.Cancellation.Token); + + button.ModulateSelfOverride = StyleNano.ButtonColorCautionDefault; + button.Text = Loc.GetString("admin-player-actions-confirm"); + return false; + } +} + +public readonly record struct ConfirmationData(CancellationTokenSource Cancellation, string? OriginalText); diff --git a/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml b/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml index 05c68615eb..28b55f987f 100644 --- a/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml +++ b/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml @@ -6,14 +6,15 @@ - -